Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Flipper-Zero/STM32CubeWB.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEya <aya.selmi1@st.com>2020-01-15 12:51:22 +0300
committerEya <aya.selmi1@st.com>2020-01-15 12:51:22 +0300
commitaaaf16b05617fb5717dd78087a914e684a1a4f22 (patch)
tree590e973d4f7f14bd89bcbfec6b17cbca069b7e49
parent96abbb67db97bc53e38f9727adfae0e5c70b1498 (diff)
Release v1.4.0v1.4.0
-rw-r--r--Drivers/CMSIS/DSP/DSP_Lib_TestSuite/buildDspLibs.bat116
-rw-r--r--Drivers/CMSIS/DSP/DSP_Lib_TestSuite/buildRefLibs.bat116
-rw-r--r--Drivers/CMSIS/DSP/DSP_Lib_TestSuite/runTest.bat129
-rw-r--r--Drivers/CMSIS/DSP/Projects/ARM/arm_cortexM_math_Build.bat83
-rw-r--r--Drivers/CMSIS/DSP/Projects/GCC/arm_cortexM_math_Build.bat83
-rw-r--r--Drivers/CMSIS/DSP/Projects/IAR/arm_cortexM_math_Build.bat104
-rw-r--r--Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/runTest.bat57
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h147
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_conf_template.h10
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_cryp.h2
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_i2c_ex.h3
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_ipcc.h6
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_lptim.h35
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_pka.h9
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_tsc.h6
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_adc.h77
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_comp.h8
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_ipcc.h16
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_lptim.h2
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_pka.h5
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Release_Notes.html74
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c2
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cryp.c13
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c29
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c7
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_lptim.c9
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pka.c185
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_usart_ex.c6
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_lptim.c17
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_pka.c1
-rw-r--r--Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_rng.c2
-rw-r--r--Middlewares/ST/STM32_WPAN/Release_Notes.html26
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.c317
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.h187
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.h8
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c2
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.h12
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.h10
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/auto/ble_types.h10
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/ble_bufsize.h2
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/ble_defs.h131
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/ble_legacy.h19
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/ble_std.h13
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/core/doc/STM32WB_BLE_Wireless_Interface.html91
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/Inc/serial_prvn.h59
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/Inc/serial_ut.h59
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/config_client.h409
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/generic_client.h99
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/config_client.c1568
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/generic_client.c412
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/Src/serial_prvn.c164
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/Src/serial_ut.c269
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/svc/Inc/bvopus_service_stm.h14
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/svc/Src/bvopus_service_stm.c50
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c8
-rw-r--r--Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/hw.h9
-rw-r--r--Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c24
-rw-r--r--Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.h59
-rw-r--r--Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c8
-rw-r--r--Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/mbox_def.h7
-rw-r--r--Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c8
-rw-r--r--Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl.h71
-rw-r--r--Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c59
-rw-r--r--Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_config.h127
-rw-r--r--Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_core.h45
-rw-r--r--Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_errors.h25
-rw-r--r--Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_types.h63
-rw-r--r--Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c77
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/core/inc/stm32wbxx_core_interface_def.h32
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_config.h24
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_types.h2
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/core/src/zigbee_core_wb.c1122
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/lib/stm32wb_zigbee_wb_lib.abin731540 -> 438816 bytes
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/M4/local.zigbee.h84
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.h349
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.onoff.h14
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.touchlink.h2
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.aps.h19
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.bdb.h1
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.h64
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.nwk.h19
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.startup.h2
-rw-r--r--Middlewares/ST/STM32_WPAN/zigbee/stack/zcl/local_zcl.h209
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/BLE_Beacon.ioc19
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/app_conf.h6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/stm32wbxx_hal_conf.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/stm32wbxx_hal_msp.c11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/App/app_ble.c14
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/BLE_BloodPressure.ioc20
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/app_conf.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/stm32wbxx_hal_conf.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/stm32wbxx_hal_msp.c11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/App/app_ble.c58
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewp34
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvoptx844
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvprojx212
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Inc/app_conf.h7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewp12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvoptx822
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvprojx212
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/readme.txt5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/BLE_HealthThermometer.ioc19
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/app_conf.h5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/stm32wbxx_hal_conf.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/stm32wbxx_hal_msp.c11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/App/app_ble.c59
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/BLE_HeartRate.ioc19
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Binary/BLE_HeartRate_reference.hex2063
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/app_conf.h3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/stm32wbxx_hal_conf.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/stm32wbxx_hal_msp.c11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/EWARM/stm32wb55xx_flash_cm4.icf2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/app_ble.c59
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/hrs_app.c1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/BLE_HeartRateFreeRTOS.ioc24
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/FreeRTOSConfig.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/app_conf.h13
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_entry.c15
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_freertos.c70
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/main.c17
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewp15
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvoptx1036
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvprojx210
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/App/app_ble.c24
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/.project354
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Binary/BLE_HeartRate_ota_reference.binbin16512 -> 16608 bytes
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/main.c2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewp10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvoptx16
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvprojx30
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/startup_stm32wb55xx_cm4.s15
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct38
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/App/app_ble.c2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.cproject105
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.project2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/stm32wb55xx_flash_cm4.ld39
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/startup_stm32wb55xx_cm4.s64
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/syscalls.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewp34
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvoptx122
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvprojx22
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/readme.txt5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx17
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/stm32wb55xx_flash_cm4.sct1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c19
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/.cproject)8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/main.c2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/BLE_MultiAppAt.ewd (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.ewd)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/BLE_MultiAppAt.ewp (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.ewp)12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/Project.eww (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.eww)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvoptx2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvprojx10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.cproject261
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.project2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/readme.txt1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Binary/BLE_Ota_reference.hex2117
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_debug.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_entry.c21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewp20
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvoptx2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvprojx8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/otas_app.c8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/readme.txt16
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/BLE_Peripheral_Lite.ewd1419
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/BLE_Peripheral_Lite.ewp1199
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/Project.eww7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/startup_stm32wb55xx_cm4.s (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/startup_stm32wb55xx_cm4.s)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/stm32wb55xx_flash_cm4.icf40
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_common.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_common.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_conf.h214
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_debug.h45
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/ble_conf.h65
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/ble_dbg_conf.h199
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/gatt_service.h52
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/hw_conf.h168
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/hw_if.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/hw_if.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/main.h80
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_hal_conf.h353
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_it.h71
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/utilities_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/utilities_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/BLE_Peripheral_Lite.uvoptx737
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/BLE_Peripheral_Lite.uvprojx636
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/startup_stm32wb55xx_cm4.s368
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/stm32wb55xx_flash_cm4.sct20
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/.cproject201
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/.project243
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/stm32wb55xx_flash_cm4.ld187
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/startup_stm32wb55xx_cm4.s445
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/syscalls.c207
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/app_debug.c349
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/gatt_service.c231
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/hw_ipcc.c263
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/main.c1115
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/stm32wbxx_hal_msp.c83
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/stm32wbxx_it.c219
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/system_stm32wbxx.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/system_stm32wbxx.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/readme.txt111
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewp42
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvoptx840
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvprojx212
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/BLE_TransparentMode.ioc119
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Binary/BLE_TransparentMode_reference.hex2282
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/app_conf.h3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/hw_conf.h8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_hal_conf.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_it.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/main.c164
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32_lpm_if.c1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_hal_msp.c191
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_it.c30
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/App/tm.c1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/BLE_p2pClient.ioc13
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex4011
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/app_conf.h6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/stm32wbxx_hal_conf.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/stm32wbxx_hal_msp.c11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx812
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx201
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/app_ble.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/p2p_client_app.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/BLE_p2pRouteur.ioc13
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/app_conf.h5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/stm32wbxx_hal_conf.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/stm32wbxx_hal_msp.c11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/app_ble.c57
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/p2p_routeur_app.c1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/BLE_p2pServer.ioc21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex4151
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/app_conf.h8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/stm32wbxx_hal_conf.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/stm32wbxx_hal_msp.c11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/App/app_ble.c91
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Binary/BLE_p2pServer_ota_reference.binbin33120 -> 33620 bytes
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewp34
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvoptx85
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvprojx64
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/startup_stm32wb55xx_cm4.s15
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct37
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/.cproject)102
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/stm32wb55xx_flash_cm4.ld202
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/startup_stm32wb55xx_cm4.s64
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/syscalls.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/Keys/Store_keys.bat21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvoptx15
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvprojx6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/.cproject (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/Core/Src/app_entry.c10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/Mac_802_15_4_FFD_Demo.uvoptx809
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/Mac_802_15_4_FFD_Demo.uvprojx676
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/startup_stm32wb55xx_cm4.s368
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/stm32wb55xx_flash_cm4.sct21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/.cproject152
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/.project253
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/stm32wb55xx_flash_cm4.ld187
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/startup_stm32wb55xx_cm4.s445
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/syscalls.c207
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/readme.txt14
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/Core/Src/app_entry.c10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/Mac_802_15_4_RFD_Demo.uvoptx809
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/Mac_802_15_4_RFD_Demo.uvprojx676
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/startup_stm32wb55xx_cm4.s368
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/stm32wb55xx_flash_cm4.sct21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/.cproject152
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/.project253
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/stm32wb55xx_flash_cm4.ld187
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/startup_stm32wb55xx_cm4.s445
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/syscalls.c207
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Inc/app_conf.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/EWARM/Thread_Cli_Cmd.ewp6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Thread_Cli_Cmd.ioc5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Inc/app_conf.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Thread_Coap_DataTransfer.ioc5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Inc/app_conf.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/EWARM/Thread_Coap_Generic.ewp6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Thread_Coap_Generic.ioc5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/main.c2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/EWARM/Thread_Coap_Generic_Ota.ewp6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/Thread_Coap_Generic_Ota.uvoptx1113
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/Thread_Coap_Generic_Ota.uvprojx798
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/startup_stm32wb55xx_cm4.s373
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/stm32wb55xx_flash_cm4.sct25
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/.cproject158
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/.project393
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/stm32wb55xx_flash_cm4.ld)39
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/startup_stm32wb55xx_cm4.s445
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/syscalls.c207
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Inc/app_conf.h5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/app_entry.c12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Thread_Coap_Multiboard.ioc5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/readme.txt1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Inc/app_conf.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/app_entry.c12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Thread_Commissioning.ioc5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/readme.txt1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Inc/app_conf.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/App/app_thread.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Thread_FTD_Coap_Multicast.ioc5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/app_entry.c21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/main.c2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/Thread_Ota.ewp6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/stm32wb55xx_sram_cm4.icf39
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/Thread_Ota.uvoptx1113
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/Thread_Ota.uvprojx795
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/startup_stm32wb55xx_cm4.s368
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/stm32wb55xx_flash_cm4.sct21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/.cproject157
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/.project (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/.project)253
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/stm32wb55xx_flash_cm4.ld187
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/startup_stm32wb55xx_cm4.s445
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/syscalls.c207
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/readme.txt1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/main.c2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/Thread_Ota_Server.ewp6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/stm32wb55xx_sram_cm4.icf39
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/Thread_Ota_Server.uvoptx1113
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/Thread_Ota_Server.uvprojx795
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/startup_stm32wb55xx_cm4.s368
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/stm32wb55xx_flash_cm4.sct21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/.cproject158
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/.project393
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/stm32wb55xx_flash_cm4.ld187
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/startup_stm32wb55xx_cm4.s445
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/syscalls.c207
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/readme.txt1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/FreeRTOSConfig.h1
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/app_conf.h3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/hw_conf.h8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/app_entry.c15
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/main.c30
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/App/app_thread.c2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Thread_SED_Coap_FreeRTOS.ioc5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Inc/app_conf.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c12
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/main.c9
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Thread_SED_Coap_Multicast.ioc5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/.extSettings.bak11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/DFU_Standalone/.extSettings.bak11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/HID_Standalone/.extSettings.bak11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/.extSettings.bak14
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_common.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_common.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_conf.h)11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_entry.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_entry.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/hw_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/hw_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/hw_if.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/hw_if.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/main.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/main.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32_lpm_if.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32_lpm_if.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32wbxx_hal_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32wbxx_hal_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32wbxx_it.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32wbxx_it.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm_logging.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm_logging.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/utilities_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/utilities_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/app_entry.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/app_entry.c)33
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/hw_timerserver.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/hw_timerserver.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/hw_uart.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/hw_uart.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/main.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/main.c)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32_lpm_if.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32_lpm_if.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32wbxx_hal_msp.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32wbxx_hal_msp.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32wbxx_it.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32wbxx_it.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm_logging.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm_logging.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/system_stm32wbxx.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/system_stm32wbxx.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Project.eww7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Zigbee_OnOff_Client_Distrib.ewd1419
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Zigbee_OnOff_Client_Distrib.ewp (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Zigbee_OnOff_Distrib.ewp)11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/startup_stm32wb55xx_cm4.s (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/startup_stm32wb55xx_cm4.s)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/stm32wb55xx_flash_cm4.icf (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/stm32wb55xx_flash_cm4.icf)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/App/app_zigbee.c542
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/App/app_zigbee.h60
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/Target/hw_ipcc.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/Target/hw_ipcc.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/readme.txt (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/readme.txt)59
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_common.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_common.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_conf.h348
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_entry.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_entry.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/hw_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_if.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/hw_if.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/main.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/main.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32_lpm_if.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32_lpm_if.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_hal_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32wbxx_hal_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_it.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32wbxx_it.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm_logging.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm_logging.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/utilities_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/utilities_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/app_entry.c429
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_timerserver.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/hw_timerserver.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_uart.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/hw_uart.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/main.c521
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32_lpm_if.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32_lpm_if.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_hal_msp.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32wbxx_hal_msp.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_it.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32wbxx_it.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm_logging.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm_logging.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/system_stm32wbxx.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/system_stm32wbxx.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Project.eww (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Project.eww)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewd (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Zigbee_OnOff_Distrib.ewd)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewp (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Zigbee_OnOff_Router.ewp)11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/startup_stm32wb55xx_cm4.s (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/startup_stm32wb55xx_cm4.s)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/stm32wb55xx_flash_cm4.icf (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/stm32wb55xx_flash_cm4.icf)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.c538
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/Target/hw_ipcc.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/Target/hw_ipcc.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/readme.txt (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/readme.txt)87
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee.c317
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee_demo.c393
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee_demo_complete.c506
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee.c317
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee_demo.c396
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee.c317
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee_demo.c402
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_common.h114
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_conf.h)10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_entry.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_entry.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/hw_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_if.h250
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/main.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/main.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32_lpm_if.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32_lpm_if.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_hal_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32wbxx_hal_conf.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_it.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32wbxx_it.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm_logging.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm_logging.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/utilities_conf.h68
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/app_entry.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/app_entry.c)32
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_timerserver.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/hw_timerserver.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_uart.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/hw_uart.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/main.c521
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32_lpm_if.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32_lpm_if.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_hal_msp.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32wbxx_hal_msp.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_it.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32wbxx_it.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm_logging.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm_logging.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/system_stm32wbxx.c353
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Project.eww (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Project.eww)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewd (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Zigbee_OnOff_Coord.ewd)2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewp (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Zigbee_OnOff_Coord.ewp)11
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/startup_stm32wb55xx_cm4.s517
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/stm32wb55xx_flash_cm4.icf (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/stm32wb55xx_flash_cm4.icf)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.c561
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/Target/hw_ipcc.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/Target/hw_ipcc.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/readme.txt133
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_common.h114
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_conf.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_conf.h)10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_entry.h68
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/hw_conf.h219
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/hw_if.h250
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/main.h71
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32_lpm_if.h81
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32wbxx_hal_conf.h353
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32wbxx_it.h83
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm_logging.h55
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/utilities_conf.h68
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/app_entry.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/app_entry.c)32
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/hw_timerserver.c893
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/hw_uart.c318
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/main.c521
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32_lpm_if.c275
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32wbxx_hal_msp.c334
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32wbxx_it.c411
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm_logging.c205
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/system_stm32wbxx.c353
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Project.eww7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Zigbee_OnOff_Server_Distrib.ewd1419
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Zigbee_OnOff_Server_Distrib.ewp1261
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/startup_stm32wb55xx_cm4.s517
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/stm32wb55xx_flash_cm4.icf47
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/App/app_zigbee.c564
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/App/app_zigbee.h (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee.h)0
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/Target/hw_ipcc.c491
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/readme.txt (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/readme.txt)86
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_AnalogWatchdog/Inc/stm32wbxx_hal_conf.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_MultiChannelSingleConversion/Inc/stm32wbxx_hal_conf.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_Oversampling/Inc/stm32wbxx_hal_conf.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerTimer_DMA/Inc/stm32wbxx_hal_conf.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Inc/stm32wbxx_hal_conf.h8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Src/stm32wbxx_it.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Src/stm32wbxx_it.c7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Src/stm32wbxx_it.c7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Src/stm32wbxx_it.c7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Src/stm32wbxx_it.c7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/I2C_TwoBoards_RestartAdvComIT.ioc2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Inc/stm32wbxx_hal_conf.h8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG_IT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Src/stm32wbxx_it.c5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Src/stm32wbxx_it.c7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Src/stm32wbxx_it.c7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Src/stm32wbxx_it.c5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Src/stm32wbxx_it.c5
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Src/stm32wbxx_it.c7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Src/stm32wbxx_it.c7
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_LowPower_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_Oversampling_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CORTEX/CORTEX_MPU/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/EWARM/Project.ewp8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/USART_Communication_Rx_IT_Continuous_Init.ioc16
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/USART_Communication_Rx_IT_Continuous_VCP_Init.ioc36
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/USART_Communication_Rx_IT_Init.ioc21
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/USART_Communication_Rx_IT_VCP_Init.ioc17
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/USART_Communication_TxRx_DMA_Init.ioc18
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/USART_Communication_Tx_IT_Init.ioc20
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/USART_Communication_Tx_IT_VCP_Init.ioc20
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/USART_Communication_Tx_Init.ioc16
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/USART_Communication_Tx_VCP_Init.ioc20
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/USART_WakeUpFromStop1_Init.ioc18
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/USART_WakeUpFromStop_Init.ioc18
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Inc/stm32wbxx_hal_conf.h8
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Src/stm32wbxx_it.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Src/stm32wbxx_it.c6
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Src/stm32wbxx_it.c3
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html22
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Templates/Inc/stm32wbxx_hal_conf.h10
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Templates/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Inc/stm32_assert.h2
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Src/stm32wbxx_it.c4
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewp28
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvoptx924
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvprojx211
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/.cproject (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/.project (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp20
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx17
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c21
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h4
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.cproject6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.project2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/TrueSTUDIO/.metadata/.lock0
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/Binary/BLE_TransparentModeVCP_reference.hex1891
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewp16
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvoptx2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvprojx8
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/.cproject (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/.project (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex2133
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewp18
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx884
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx203
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/.cproject (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/.project (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewp26
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvoptx912
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvprojx211
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/.cproject (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/.project (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex2108
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewd2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewp8
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvoptx896
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvprojx203
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c36
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/.cproject (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/.cproject)6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/.project (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/.project)2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/stm32wb55xx_flash_cm4.ld (renamed from Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/stm32wb55xx_flash_cm4.ld)0
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/readme.txt1
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt1
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/readme.txt1
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c9
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c6
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_common.h114
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_conf.h348
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_entry.h68
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_conf.h219
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_if.h250
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/main.h71
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32_lpm_if.h81
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_hal_conf.h353
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_it.h95
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm_logging.h55
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/utilities_conf.h68
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/vcp_conf.h54
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/app_entry.c436
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_timerserver.c893
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_uart.c318
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/main.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/main.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32_lpm_if.c275
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_hal_msp.c334
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_it.c426
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm_logging.c205
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/system_stm32wbxx.c353
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Project.eww7
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewd1419
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewp1310
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/startup_stm32wb55xx_cm4.s517
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/stm32wb55xx_flash_cm4.icf47
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.c538
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.h61
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/Target/hw_ipcc.c491
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/readme.txt118
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_common.h114
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_conf.h348
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_entry.h68
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_conf.h219
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_if.h250
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/main.h71
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32_lpm_if.h81
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_hal_conf.h353
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_it.h95
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm_logging.h55
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/utilities_conf.h68
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/vcp_conf.h54
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/app_entry.c436
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_timerserver.c893
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_uart.c318
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/main.c (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/main.c)0
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32_lpm_if.c275
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_hal_msp.c334
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_it.c426
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm_logging.c205
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/system_stm32wbxx.c353
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Project.eww (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Project.eww)2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewd (renamed from Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Zigbee_OnOff_Router.ewd)2
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewp1310
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/startup_stm32wb55xx_cm4.s517
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/stm32wb55xx_flash_cm4.icf47
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.c561
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.h61
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/Target/hw_ipcc.c491
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/readme.txt118
-rw-r--r--Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html27
-rw-r--r--Projects/STM32CubeProjectsList.html52
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html184
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_HCILayer_fw.binbin97156 -> 97080 bytes
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Stack_fw.binbin165144 -> 165772 bytes
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Thread_fw.binbin505732 -> 506060 bytes
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Mac_802_15_4_fw.binbin61356 -> 60928 bytes
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_FTD_fw.binbin346752 -> 346144 bytes
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_MTD_fw.binbin257612 -> 257016 bytes
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Zigbee_FFD_Full_fw.binbin0 -> 330020 bytes
-rw-r--r--Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_zigbee_full_fw.binbin420596 -> 0 bytes
-rw-r--r--Release_Notes.html400
-rw-r--r--Utilities/lpm/tiny_lpm/Release_Notes.md116
-rw-r--r--package.xml2
1098 files changed, 88512 insertions, 20806 deletions
diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/buildDspLibs.bat b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/buildDspLibs.bat
deleted file mode 100644
index 62d259de3..000000000
--- a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/buildDspLibs.bat
+++ /dev/null
@@ -1,116 +0,0 @@
-@echo off
-
-set UVEXE=C:\Keil_v5\UV4\UV4.EXE
-set CURDIR=%CD%
-
-if .%1==. goto help
-for %%a in (ARM GCC) do if %1==%%a goto startBuild
-goto help
-
-:startBuild
-echo.
-echo Building DSP Libraries %1
-
-if %1==ARM goto buildARM
-if %1==GCC goto buildGCC
-goto err
-
-:buildARM
-:buildGCC
-cd ..\DSP_Lib\Source\%1
-
-echo Building DSP Library for Cortex-M0 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM0l" -o "DspLib_cortexM0l_build.log"
-
-echo Building DSP Library for Cortex-M3 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM3l" -o "DspLib_cortexM3l_build.log"
-
-echo Building DSP Library for Cortex-M4 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4l" -o "DspLib_cortexM4l_build.log"
-
-echo Building DSP Library for Cortex-M4 Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4lf" -o "DspLib_cortexM4lf_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7l" -o "DspLib_cortexM7l_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7lfsp" -o "DspLib_cortexM7lfsp_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian with double precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7lfdp" -o "DspLib_cortexM7lfdp_build.log"
-
-echo Building DSP Library for ARMv8-M Baseline Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MBLl" -o "DspLib_ARMv8MBLl_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLl" -o "DspLib_ARMv8MMLl_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLlfsp" -o "DspLib_ARMv8MMLlfsp_build.log"
-
-REM echo Building DSP Library for ARMv8-M Mainline Little Endian with double precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLlfdp" -o "DspLib_ARMv8MMLlfdp_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLld" -o "DspLib_ARMv8MMLld_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions, single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLldfsp" -o "DspLib_ARMv8MMLldfsp_build.log"
-
-REM echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions, double precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLldfdp" -o "DspLib_ARMv8MMLldfdp_build.log"
-
-
-REM big endian libraries are skipped!
-
-REM echo Building DSP Library for Cortex-M0 Big Endian
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM0b" -o "DspLib_cortexM0b_build.log"
-
-REM echo Building DSP Library for Cortex-M3 Big Endian
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM3b" -o "DspLib_cortexM3b_build.log"
-
-REM echo Building DSP Library for Cortex-M4 Big Endian
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4b" -o "DspLib_cortexM4b_build.log"
-
-REM echo Building DSP Library for Cortex-M4 Big Endian with single precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4bf" -o "DspLib_cortexM4bf_build.log"
-
-REM echo Building DSP Library for Cortex-M7 Big Endian
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7b" -o "DspLib_cortexM7b_build.log"
-
-REM echo Building DSP Library for Cortex-M7 Big Endian with single precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7bfsp" -o "DspLib_cortexM7bfsp_build.log"
-
-REM echo Building DSP Library for Cortex-M7 Big Endian with double precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7bfdp" -o "DspLib_cortexM7bfdp_build.log"
-
-goto deleteIntermediateFiles
-
-
-:deleteIntermediateFiles
-echo.
-echo Deleting intermediate files
-rmdir /S /Q IntermediateFiles
-del /Q *.bak
-del /Q *.dep
-del /Q *.uvguix.*
-del /Q ArInp.*
-
-goto changeDir
-
-
-:changeDir
-cd %CURDIR%
-goto end
-
-:err
-
-:help
-echo Syntax: buildDspLibs toolchain
-echo.
-echo toolchain: ARM ^| GCC
-echo.
-echo e.g.: buildDspLibs ARM
-
-:end
diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/buildRefLibs.bat b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/buildRefLibs.bat
deleted file mode 100644
index 05bc66e7f..000000000
--- a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/buildRefLibs.bat
+++ /dev/null
@@ -1,116 +0,0 @@
-@echo off
-
-set UVEXE=C:\Keil_v5\UV4\UV4.EXE
-set CURDIR=%CD%
-
-if .%1==. goto help
-for %%a in (ARM GCC) do if %1==%%a goto startBuild
-goto help
-
-:startBuild
-echo.
-echo Building DSP Reference Libraries %1
-
-if %1==ARM goto buildARM
-if %1==GCC goto buildGCC
-goto err
-
-:buildARM
-:buildGCC
-cd .\RefLibs\%1
-
-echo Building DSP Reference Library for Cortex-M0 Little Endian
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM0l" -o "RefLib_cortexM0l_build.log"
-
-echo Building DSP Reference Library for Cortex-M3 Little Endian
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM3l" -o "RefLib_cortexM3l_build.log"
-
-echo Building DSP Reference Library for Cortex-M4 Little Endian
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM4l" -o "RefLib_cortexM4l_build.log"
-
-echo Building DSP Reference Library for Cortex-M4 Little Endian with single precision FPU
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM4lf" -o "RefLib_cortexM4lf_build.log"
-
-echo Building DSP Reference Library for Cortex-M7 Little Endian
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM7l" -o "RefLib_cortexM7l_build.log"
-
-echo Building DSP Reference Library for Cortex-M7 Little Endian with single precision FPU
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM7lfsp" -o "RefLib_cortexM7lfsp_build.log"
-
-echo Building DSP Reference Library for Cortex-M7 Little Endian with double precision FPU
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM7lfdp" -o "RefLib_cortexM7lfdp_build.log"
-
-echo Building DSP Reference Library for ARMv8-M Baseline Little Endian
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "ARMv8MBLl" -o "RefLib_ARMv8MBLl_build.log"
-
-echo Building DSP Reference Library for ARMv8-M Mainline Little Endian
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "ARMv8MMLl" -o "RefLib_ARMv8MMLl_build.log"
-
-echo Building DSP Reference Library for ARMv8-M Mainline Little Endian with single precision FPU
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "ARMv8MMLlfsp" -o "RefLib_ARMv8MMLlfsp_build.log"
-
-REM echo Building DSP Reference Library for ARMv8-M Mainline Little Endian with double precision FPU
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t "ARMv8MMLlfdp" -o "RefLib_ARMv8MMLlfdp_build.log"
-
-echo Building DSP Reference Library for ARMv8-M Mainline Little Endian with DSP instructions
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "ARMv8MMLld" -o "RefLib_ARMv8MMLld_build.log"
-
-echo Building DSP Reference Library for ARMv8-M Mainline Little Endian with DSP instructions, single precision FPU
-%UVEXE% -rb -j0 RefLibs.uvprojx -t "ARMv8MMLldfsp" -o "RefLib_ARMv8MMLldfsp_build.log"
-
-REM echo Building DSP Reference Library for ARMv8-M Mainline Little Endian with DSP instructions, double precision FPU
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t "ARMv8MMLldfdp" -o "RefLib_ARMv8MMLldfdp_build.log"
-
-
-REM big endian libraries are skipped!
-
-REM echo Building DSP Reference Library for Cortex-M0 Big Endian
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t"cortexM0b" -o "RefLib_cortexM0b_build.log"
-
-REM echo Building DSP Reference Library for Cortex-M3 Big Endian
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t"cortexM3b" -o "RefLib_cortexM3b_build.log"
-
-REM echo Building DSP Reference Library for Cortex-M4 Big Endian
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t"cortexM4b" -o "RefLib_cortexM4b_build.log"
-
-REM echo Building DSP Reference Library for Cortex-M4 Big Endian Big Endian with single precision FPU
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t"cortexM4bf" -o "RefLib_cortexM4bf_build.log"
-
-REM echo Building DSP Reference Library for Cortex-M7 Big Endian
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM7b" -o "RefLib_cortexM7b_build.log"
-
-REM echo Building DSP Reference Library for Cortex-M7 Big Endian with single precision FPU
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM7bfsp" -o "RefLib_cortexM7bfsp_build.log"
-
-REM echo Building DSP Reference Library for Cortex-M7 Big Endian with double precision FPU
-REM %UVEXE% -rb -j0 RefLibs.uvprojx -t "cortexM7bfdp" -o "RefLib_cortexM7bfdp_build.log"
-
-goto deleteIntermediateFiles
-
-
-:deleteIntermediateFiles
-echo.
-echo Deleting intermediate files
-rmdir /S /Q IntermediateFiles
-del /Q *.bak
-del /Q *.dep
-del /Q *.uvguix.*
-del /Q ArInp.*
-
-goto changeDir
-
-
-:changeDir
-cd %CURDIR%
-goto end
-
-:err
-
-:help
-echo Syntax: buildRefLibs toolchain
-echo.
-echo toolchain: ARM ^| GCC
-echo.
-echo e.g.: buildRefLibs ARM
-
-:end
diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/runTest.bat b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/runTest.bat
deleted file mode 100644
index 1d45a4c74..000000000
--- a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/runTest.bat
+++ /dev/null
@@ -1,129 +0,0 @@
-@echo off
-
-set UVEXE=C:\Keil_v5\UV4\UV4.EXE
-
-if .%1==. goto help
-for %%a in (ARM GCC) do if %1==%%a goto checkParam2
-echo parameter %1 not supported.
-goto help
-
-:checkParam2
-if .%2==. goto help
-for %%a in ( ^
- cortexM0l ^
- cortexM3l ^
- cortexM4l ^
- cortexM4lf ^
- cortexM7l ^
- cortexM7lfsp ^
- cortexM7lfdp ^
- ARMv8MBLl ^
- ARMv8MMLl ^
- ARMv8MMLlfsp ^
- ARMv8MMLlfdp ^
- ARMv8MMLld ^
- ARMv8MMLldfsp ^
- ARMv8MMLldfdp ^
- ) do if %2==%%a goto checkParam3
-echo parameter %2 not supported.
-goto help
-
-:checkParam3
-if .%3==. goto help
-for %%a in (MPS2 FVP Simulator) do if %3==%%a goto CheckLibraries
-echo parameter %3 not supported.
-goto help
-
-:CheckLibraries
-if %1==ARM goto CheckLibrariesARM
-if %1==GCC goto CheckLibrariesGCC
-
-:CheckLibrariesARM
-if not exist ".\RefLibs\%1\Lib\arm_%2_ref.lib" (echo ".\RefLibs\%1\Lib\arm_%2_ref.lib" not found. & goto end)
-if not exist "..\Lib\%1\arm_%2_math.lib" (echo "..\Lib\%1\arm_%2_ref.lib" not found. & goto end)
-goto CopyLibrariesARM
-
-:CheckLibrariesGCC
-if not exist ".\RefLibs\%1\Lib\libarm_%2_ref.a" (echo ".\RefLibs\%1\Lib\libarm_%2_ref.a" not found. & goto end)
-if not exist "..\Lib\%1\libarm_%2_math.a" (echo "..\Lib\%1\libarm_%2_math.a" not found. & goto end)
-goto CopyLibrariesGCC
-
-:CopyLibrariesARM
-copy /B ".\RefLibs\%1\Lib\arm_%2_ref.lib" .\DspLibTest_%3\%1\Lib\arm_ref.lib /B /Y
-copy /B "..\Lib\%1\arm_%2_math.lib" .\DspLibTest_%3\%1\Lib\arm_math.lib /B /Y
-goto buildProject
-
-:CopyLibrariesGCC
-copy /B ".\RefLibs\%1\Lib\libarm_%2_ref.a" .\DspLibTest_%3\%1\Lib\libarm_ref.a /B /Y
-copy /B "..\Lib\%1\libarm_%2_math.a" .\DspLibTest_%3\%1\Lib\libarm_math.a /B /Y
-goto buildProject
-
-:buildProject
- echo Build Test Project ...
-%UVEXE% -r -j0 .\DspLibTest_%3\%1\DspLibTest_%3.uvprojx -t "%2" -o ".\Logs\DspLibTest_%3_%2_build.log"
-
- echo Run Test ...
-del /Q ".\DspLibTest_%3\%1\Logs\DspLibTest_%3.log" 2>NUL
-del /Q ".\DspLibTest_%3\%1\Logs\DspLibTest_%3_%2.log" 2>NUL
-
-rem get start time (The format of %TIME% is HH:MM:SS,CS for example 23:59:59,99)
-set STARTTIME=%TIME%
-
-rem run the test
-%UVEXE% -d .\DspLibTest_%3\%1\DspLibTest_%3.uvprojx -t "%2"
-
-rem get end time
-set ENDTIME=%TIME%
-
-rem calculate duration
-rem Change formatting for the start and end times
-for /F "tokens=1-4 delims=:.," %%a in ("%STARTTIME%") do (
- set /A "start=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
-)
-
-for /F "tokens=1-4 delims=:.," %%a in ("%ENDTIME%") do (
- set /A "end=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
-)
-
-rem Test midnight rollover. If so, add 1 day=8640000 1/100ths secs
-if %end% lss %start% set /a end+=8640000
-
-rem Calculate the elapsed time by subtracting values
-set /A elapsed=end-start
-
-rem Format the results for output
-set /A hh=elapsed/(60*60*100), rest=elapsed%%(60*60*100), mm=rest/(60*100), rest%%=60*100, ss=rest/100, cc=rest%%100
-if %hh% lss 10 set hh=0%hh%
-if %mm% lss 10 set mm=0%mm%
-if %ss% lss 10 set ss=0%ss%
-if %cc% lss 10 set cc=0%cc%
-
-set DURATION=%hh%:%mm%:%ss%,%cc%
-
-rem write time to file
-echo Test %1 %2 : > ".\DspLibTest_%3\%1\Logs\DspLibTest_%3_%2_time.log"
-echo Start time: %STARTTIME% >> ".\DspLibTest_%3\%1\Logs\DspLibTest_%3_%2_time.log"
-echo End time: %ENDTIME% >> ".\DspLibTest_%3\%1\Logs\DspLibTest_%3_%2_time.log"
-echo Duration: %DURATION% >> ".\DspLibTest_%3\%1\Logs\DspLibTest_%3_%2_time.log"
-
- echo Copy Logfile ...
-copy /B ".\DspLibTest_%3\%1\Logs\DspLibTest_%3.log" ".\DspLibTest_%3\%1\Logs\DspLibTest_%3_%2.log"
-
-goto end
-
-
-:help
-echo.
-echo Syntax: runTest toolchain core test
-echo.
-echo toolchain: ARM ^| GCC
-echo core: cortexM0l ^| cortexM3l ^| cortexM4l ^| cortexM4lf ^| cortexM7l ^| cortexM7lfsp ^| cortexM7lfdp
-echo ARMv8MBLl
-echo ARMv8MMLl ^| ARMv8MMLlfsp ^| ARMv8MMLlfdp
-echo ARMv8MMLld ^| ARMv8MMLldfsp ^| ARMv8MMLldfdp
-echo test: MPS2 ^| FVP ^| Simulator
-echo.
-echo e.g.: runTest ARM cortexM3l Simulator
-
-:end
-@echo on
diff --git a/Drivers/CMSIS/DSP/Projects/ARM/arm_cortexM_math_Build.bat b/Drivers/CMSIS/DSP/Projects/ARM/arm_cortexM_math_Build.bat
deleted file mode 100644
index d521939d5..000000000
--- a/Drivers/CMSIS/DSP/Projects/ARM/arm_cortexM_math_Build.bat
+++ /dev/null
@@ -1,83 +0,0 @@
-@echo off
-
-mkdir Temp
-set TMP=Temp
-set TEMP=Temp
-set UVEXE=C:\Keil_v5\UV4\UV4.EXE
-
-echo.
-echo Building DSP Libraries ARM
-echo Building DSP Library for Cortex-M0 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM0l" -o "DspLib_cortexM0l_build.log"
-
-echo Building DSP Library for Cortex-M3 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM3l" -o "DspLib_cortexM3l_build.log"
-
-echo Building DSP Library for Cortex-M4 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4l" -o "DspLib_cortexM4l_build.log"
-
-echo Building DSP Library for Cortex-M4 Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4lf" -o "DspLib_cortexM4lf_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7l" -o "DspLib_cortexM7l_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7lfsp" -o "DspLib_cortexM7lfsp_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian with double precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7lfdp" -o "DspLib_cortexM7lfdp_build.log"
-
-echo Building DSP Library for ARMv8-M Baseline Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MBLl" -o "DspLib_ARMv8MBLl_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLl" -o "DspLib_ARMv8MMLl_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLlfsp" -o "DspLib_ARMv8MMLlfsp_build.log"
-
-REM echo Building DSP Library for ARMv8-M Mainline Little Endian with double precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLlfdp" -o "DspLib_ARMv8MMLlfdp_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLld" -o "DspLib_ARMv8MMLld_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions, single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLldfsp" -o "DspLib_ARMv8MMLldfsp_build.log"
-
-REM echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions, double precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLldfdp" -o "DspLib_ARMv8MMLldfdp_build.log"
-
-
-REM big endian libraries
-
-echo Building DSP Library for Cortex-M0 Big Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM0b" -o "DspLib_cortexM0b_build.log"
-
-echo Building DSP Library for Cortex-M3 Big Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM3b" -o "DspLib_cortexM3b_build.log"
-
-echo Building DSP Library for Cortex-M4 Big Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4b" -o "DspLib_cortexM4b_build.log"
-
-echo Building DSP Library for Cortex-M4 Big Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4bf" -o "DspLib_cortexM4bf_build.log"
-
-echo Building DSP Library for Cortex-M7 Big Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7b" -o "DspLib_cortexM7b_build.log"
-
-echo Building DSP Library for Cortex-M7 Big Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7bfsp" -o "DspLib_cortexM7bfsp_build.log"
-
-echo Building DSP Library for Cortex-M7 Big Endian with double precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7bfdp" -o "DspLib_cortexM7bfdp_build.log"
-
-echo.
-echo Deleting intermediate files
-rmdir /S /Q Temp
-rmdir /S /Q IntermediateFiles
-del /Q *.bak
-del /Q *.dep
-del /Q *.uvguix.*
-del /Q ArInp.* \ No newline at end of file
diff --git a/Drivers/CMSIS/DSP/Projects/GCC/arm_cortexM_math_Build.bat b/Drivers/CMSIS/DSP/Projects/GCC/arm_cortexM_math_Build.bat
deleted file mode 100644
index 7b3a44bfe..000000000
--- a/Drivers/CMSIS/DSP/Projects/GCC/arm_cortexM_math_Build.bat
+++ /dev/null
@@ -1,83 +0,0 @@
-@echo off
-
-mkdir Temp
-set TMP=Temp
-set TEMP=Temp
-set UVEXE=C:\Keil_v5\UV4\UV4.EXE
-
-echo.
-echo Building DSP Libraries GCC
-echo.
-echo Building DSP Library for Cortex-M0 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM0l" -o "DspLib_cortexM0l_build.log"
-
-echo Building DSP Library for Cortex-M3 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM3l" -o "DspLib_cortexM3l_build.log"
-
-echo Building DSP Library for Cortex-M4 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4l" -o "DspLib_cortexM4l_build.log"
-
-echo Building DSP Library for Cortex-M4 Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4lf" -o "DspLib_cortexM4lf_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7l" -o "DspLib_cortexM7l_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7lfsp" -o "DspLib_cortexM7lfsp_build.log"
-
-echo Building DSP Library for Cortex-M7 Little Endian with double precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7lfdp" -o "DspLib_cortexM7lfdp_build.log"
-
-echo Building DSP Library for ARMv8-M Baseline Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MBLl" -o "DspLib_ARMv8MBLl_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLl" -o "DspLib_ARMv8MMLl_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLlfsp" -o "DspLib_ARMv8MMLlfsp_build.log"
-
-REM echo Building DSP Library for ARMv8-M Mainline Little Endian with double precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLlfdp" -o "DspLib_ARMv8MMLlfdp_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLld" -o "DspLib_ARMv8MMLld_build.log"
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions, single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLldfsp" -o "DspLib_ARMv8MMLldfsp_build.log"
-
-REM echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions, double precision FPU
-REM %UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "ARMv8MMLldfdp" -o "DspLib_ARMv8MMLldfdp_build.log"
-
-REM big endian libraries
-
-echo Building DSP Library for Cortex-M0 Big Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM0b" -o "DspLib_cortexM0b_build.log"
-
-echo Building DSP Library for Cortex-M3 Big Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM3b" -o "DspLib_cortexM3b_build.log"
-
-echo Building DSP Library for Cortex-M4 Big Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4b" -o "DspLib_cortexM4b_build.log"
-
-echo Building DSP Library for Cortex-M4 Big Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM4bf" -o "DspLib_cortexM4bf_build.log"
-
-echo Building DSP Library for Cortex-M7 Big Endian
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7b" -o "DspLib_cortexM7b_build.log"
-
-echo Building DSP Library for Cortex-M7 Big Endian with single precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7bfsp" -o "DspLib_cortexM7bfsp_build.log"
-
-echo Building DSP Library for Cortex-M7 Big Endian with double precision FPU
-%UVEXE% -rb -j0 arm_cortexM_math.uvprojx -t "cortexM7bfdp" -o "DspLib_cortexM7bfdp_build.log"
-
-echo.
-echo Deleting intermediate files
-rmdir /S /Q Temp
-rmdir /S /Q IntermediateFiles
-del /Q *.bak
-del /Q *.dep
-del /Q *.uvguix.*
-del /Q ArInp.* \ No newline at end of file
diff --git a/Drivers/CMSIS/DSP/Projects/IAR/arm_cortexM_math_Build.bat b/Drivers/CMSIS/DSP/Projects/IAR/arm_cortexM_math_Build.bat
deleted file mode 100644
index 5e96c1971..000000000
--- a/Drivers/CMSIS/DSP/Projects/IAR/arm_cortexM_math_Build.bat
+++ /dev/null
@@ -1,104 +0,0 @@
-@echo off
-
-mkdir Temp
-set TMP=Temp
-set TEMP=Temp
-rem set IAREXE=..\..\..\..\..\common\bin\iarbuild.exe
-set IAREXE=iarbuild.exe
-
-echo.
-echo Building DSP Libraries ARM
-echo Building DSP Library for Cortex-M0 Little Endian
-%IAREXE% arm_cortexM_math.ewp -build cortexM0l
-
-echo Building DSP Library for Cortex-M3 Little Endian
-%IAREXE% arm_cortexM_math.ewp -build cortexM3l
-
-echo Building DSP Library for Cortex-M4 Little Endian
-%IAREXE% arm_cortexM_math.ewp -build cortexM4l
-
-echo Building DSP Library for Cortex-M4 Little Endian with single precision FPU
-%IAREXE% arm_cortexM_math.ewp -build cortexM4lf
-
-echo Building DSP Library for Cortex-M7 Little Endian
-%IAREXE% arm_cortexM_math.ewp -build cortexM7l
-
-echo Building DSP Library for Cortex-M7 Little Endian with single precision FPU
-%IAREXE% arm_cortexM_math.ewp -build cortexM7lfsp
-
-echo Building DSP Library for Cortex-M7 Little Endian with double precision FPU
-%IAREXE% arm_cortexM_math.ewp -build cortexM7lfdp
-
-echo Building DSP Library for ARMv8-M Baseline Little Endian
-%IAREXE% arm_cortexM_math.ewp -build ARMv8MBLl
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian
-%IAREXE% arm_cortexM_math.ewp -build ARMv8MMLl
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with single precision FPU
-%IAREXE% arm_cortexM_math.ewp -build ARMv8MMLlfsp
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with double precision FPU
-%IAREXE% arm_cortexM_math.ewp -build ARMv8MMLlfdp
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions
-%IAREXE% arm_cortexM_math.ewp -build ARMv8MMLld
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions, single precision FPU
-%IAREXE% arm_cortexM_math.ewp -build ARMv8MMLldfsp
-
-echo Building DSP Library for ARMv8-M Mainline Little Endian with DSP instructions, double precision FPU
-%IAREXE% arm_cortexM_math.ewp -build ARMv8MMLldfdp
-
-REM big endian libraries
-
-echo Building DSP Library for Cortex-M0 Big Endian
-%IAREXE% arm_cortexM_math.ewp -build cortexM0b
-
-echo Building DSP Library for Cortex-M3 Big Endian
-%IAREXE% arm_cortexM_math.ewp -build cortexM3b
-
-echo Building DSP Library for Cortex-M4 Big Endian
-%IAREXE% arm_cortexM_math.ewp -build cortexM4b
-
-echo Building DSP Library for Cortex-M4 Big Endian with single precision FPU
-%IAREXE% arm_cortexM_math.ewp -build cortexM4bf
-
-echo Building DSP Library for Cortex-M7 Big Endian
-%IAREXE% arm_cortexM_math.ewp -build cortexM7b
-
-echo Building DSP Library for Cortex-M7 Big Endian with single precision FPU
-%IAREXE% arm_cortexM_math.ewp -build cortexM7bfsp
-
-echo Building DSP Library for Cortex-M7 Big Endian with double precision FPU
-%IAREXE% arm_cortexM_math.ewp -build cortexM7bfdp
-
-echo Copy libs to CMSIS\lib\IAR
-mkdir ..\..\..\lib\IAR
-copy ReleaseM0BE\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM0LE\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM3BE\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM3LE\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM4BE\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM4BE_FPU\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM4LE\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM4LE_FPU\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM7BE\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM7BE_FPU_DP\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM7BE_FPU_SP\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM7LE\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM7LE_FPU_DP\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ReleaseM7LE_FPU_SP\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ARMv8MBLl\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ARMv8MMLl\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ARMv8MMLld\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ARMv8MMLldfdp\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ARMv8MMLldfsp\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ARMv8MMLlfdp\Exe\*.a ..\..\..\lib\IAR\ /Y
-copy ARMv8MMLlfsp\Exe\*.a ..\..\..\lib\IAR\ /Y
-
-echo.
-echo Deleting intermediate files
-for /d %%a in (Temp ARMv8M* ReleaseM*) do rmdir /s /q "%%~a"
-del /Q *.bak
-del /Q *.dep
diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/runTest.bat b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/runTest.bat
deleted file mode 100644
index fbf8cdb50..000000000
--- a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/runTest.bat
+++ /dev/null
@@ -1,57 +0,0 @@
-@echo off
-
-set UVEXE=C:\Keil_v5\UV4\UV4.EXE
-
-echo Building NN Test for Cortex-M7 Single Precision Little Endian
-%UVEXE% -rb -j0 arm_nnexamples_nn_test.uvprojx -t "ARMCM7_SP" -o "NN_Test_ARMCM7_SP_build.log"
-
-echo Running NN Test for Cortex-M7 Single Precision Little Endian
-%UVEXE% -d arm_nnexamples_nn_test.uvprojx -t "ARMCM7_SP" -j0
-
-type NN_TEST.log
-del NN_TEST.log
-
-echo Building NN Test for Cortex-M4 FP Little Endian
-%UVEXE% -rb -j0 arm_nnexamples_nn_test.uvprojx -t "ARMCM4_FP" -o "NN_Test_ARMCM4_FP_build.log"
-
-echo Running NN Test for Cortex-M4 FP Little Endian
-%UVEXE% -d arm_nnexamples_nn_test.uvprojx -t "ARMCM4_FP" -j0
-
-type NN_TEST.log
-del NN_TEST.log
-
-echo Building NN Test for Cortex-M4 FP Little Endian Truncate
-%UVEXE% -rb -j0 arm_nnexamples_nn_test.uvprojx -t "ARMCM4_FP_truncate" -o "NN_Test_ARMCM4_FP_truncate_build.log"
-
-echo Running NN Test for Cortex-M4 FP Little Endian Truncate
-%UVEXE% -d arm_nnexamples_nn_test.uvprojx -t "ARMCM4_FP_truncate" -j0
-
-type NN_TEST.log
-del NN_TEST.log
-
-echo Building NN Test for Cortex-M7 Single Precision Big Endian
-%UVEXE% -rb -j0 arm_nnexamples_nn_test.uvprojx -t "ARMCM7b_SP" -o "NN_Test_ARMCM7b_SP_build.log"
-
-echo Running NN Test for Cortex-M7 Single Precision Big Endian
-%UVEXE% -d arm_nnexamples_nn_test.uvprojx -t "ARMCM7b_SP" -j0
-
-type NN_TEST.log
-del NN_TEST.log
-
-echo Building NN Test for Cortex-M4 FP Big Endian
-%UVEXE% -rb -j0 arm_nnexamples_nn_test.uvprojx -t "ARMCM4b_FP" -o "NN_Test_ARMCM4b_FP_build.log"
-
-echo Running NN Test for Cortex-M4 FP Big Endian
-%UVEXE% -d arm_nnexamples_nn_test.uvprojx -t "ARMCM4b_FP" -j0
-
-type NN_TEST.log
-del NN_TEST.log
-
-echo Building NN Test for Cortex-M3
-%UVEXE% -rb -j0 arm_nnexamples_nn_test.uvprojx -t "ARMCM3" -o "NN_Test_ARMCM3_build.log"
-
-echo Running NN Test for Cortex-M3
-%UVEXE% -d arm_nnexamples_nn_test.uvprojx -t "ARMCM3" -j0
-
-type NN_TEST.log
-del NN_TEST.log \ No newline at end of file
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h b/Drivers/STM32WBxx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h
index 7e4d4585a..e6635d118 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h
@@ -236,12 +236,12 @@
#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE
#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE
-#if defined(STM32G4)
-#define DAC_CHIPCONNECT_DISABLE (DAC_CHIPCONNECT_EXTERNAL | DAC_CHIPCONNECT_BOTH)
-#define DAC_CHIPCONNECT_ENABLE (DAC_CHIPCONNECT_INTERNAL | DAC_CHIPCONNECT_BOTH)
+#if defined(STM32G4) || defined(STM32H7)
+#define DAC_CHIPCONNECT_DISABLE DAC_CHIPCONNECT_EXTERNAL
+#define DAC_CHIPCONNECT_ENABLE DAC_CHIPCONNECT_INTERNAL
#endif
-#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0)
+#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32H7) || defined(STM32F4)
#define HAL_DAC_MSP_INIT_CB_ID HAL_DAC_MSPINIT_CB_ID
#define HAL_DAC_MSP_DEINIT_CB_ID HAL_DAC_MSPDEINIT_CB_ID
#endif
@@ -306,8 +306,17 @@
#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING
#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING
+#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx)
+#define DMA_REQUEST_DCMI_PSSI DMA_REQUEST_DCMI
+#endif
+
#endif /* STM32L4 */
+#if defined(STM32G0)
+#define DMA_REQUEST_DAC1_CHANNEL1 DMA_REQUEST_DAC1_CH1
+#define DMA_REQUEST_DAC1_CHANNEL2 DMA_REQUEST_DAC1_CH2
+#endif
+
#if defined(STM32H7)
#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1
@@ -365,6 +374,9 @@
#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT
#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT
+#define DAC_TRIGGER_LP1_OUT DAC_TRIGGER_LPTIM1_OUT
+#define DAC_TRIGGER_LP2_OUT DAC_TRIGGER_LPTIM2_OUT
+
#endif /* STM32H7 */
/**
@@ -566,7 +578,14 @@
#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2
#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2
#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2
-#endif
+
+#if defined (STM32H743xx) || defined (STM32H753xx) || defined (STM32H750xx) || defined (STM32H742xx) \
+ || defined (STM32H745xx) || defined (STM32H755xx) || defined (STM32H747xx) || defined (STM32H757xx)
+#define GPIO_AF10_OTG2_HS GPIO_AF10_OTG2_FS
+#define GPIO_AF10_OTG1_FS GPIO_AF10_OTG1_HS
+#define GPIO_AF12_OTG2_FS GPIO_AF12_OTG1_FS
+#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || STM32H757xx */
+#endif /* STM32H7 */
#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1
#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1
@@ -737,32 +756,65 @@
#define HRTIM_OUTPUTRESET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
#define HRTIM_OUTPUTRESET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9
#endif /* STM32H7 */
-
+
#if defined(STM32F3)
-#define HRTIM_OUTPUTSET_TIMEV_1 HRTIM_OUTPUTSET_TIMAEV1_TIMBCMP1
-#define HRTIM_OUTPUTSET_TIMEV_2 HRTIM_OUTPUTSET_TIMAEV2_TIMBCMP2
-#define HRTIM_OUTPUTSET_TIMEV_3 HRTIM_OUTPUTSET_TIMAEV3_TIMBCMP4
-#define HRTIM_OUTPUTSET_TIMEV_4 HRTIM_OUTPUTSET_TIMAEV4_TIMCCMP2
-#define HRTIM_OUTPUTSET_TIMEV_5 HRTIM_OUTPUTSET_TIMAEV5_TIMCCMP3
-#define HRTIM_OUTPUTSET_TIMEV_6 HRTIM_OUTPUTSET_TIMAEV6_TIMDCMP1
-#define HRTIM_OUTPUTSET_TIMEV_7 HRTIM_OUTPUTSET_TIMAEV7_TIMDCMP2
-#define HRTIM_OUTPUTSET_TIMEV_8 HRTIM_OUTPUTSET_TIMAEV8_TIMECMP3
-#define HRTIM_OUTPUTSET_TIMEV_9 HRTIM_OUTPUTSET_TIMAEV9_TIMECMP4
-
-#define HRTIM_OUTPUTRESET_TIMEV_1 HRTIM_OUTPUTRESET_TIMAEV1_TIMBCMP1
-#define HRTIM_OUTPUTRESET_TIMEV_2 HRTIM_OUTPUTRESET_TIMAEV2_TIMBCMP2
-#define HRTIM_OUTPUTRESET_TIMEV_3 HRTIM_OUTPUTRESET_TIMAEV3_TIMBCMP4
-#define HRTIM_OUTPUTRESET_TIMEV_4 HRTIM_OUTPUTRESET_TIMAEV4_TIMCCMP2
-#define HRTIM_OUTPUTRESET_TIMEV_5 HRTIM_OUTPUTRESET_TIMAEV5_TIMCCMP3
-#define HRTIM_OUTPUTRESET_TIMEV_6 HRTIM_OUTPUTRESET_TIMAEV6_TIMDCMP1
-#define HRTIM_OUTPUTRESET_TIMEV_7 HRTIM_OUTPUTRESET_TIMAEV7_TIMDCMP2
-#define HRTIM_OUTPUTRESET_TIMEV_8 HRTIM_OUTPUTRESET_TIMAEV8_TIMECMP3
-#define HRTIM_OUTPUTRESET_TIMEV_9 HRTIM_OUTPUTRESET_TIMAEV9_TIMECMP4
-
-#define HRTIM_EVENTSRC_1 HRTIM_EEV1SRC_GPIO
-#define HRTIM_EVENTSRC_2 HRTIM_EEV2SRC_GPIO
-#define HRTIM_EVENTSRC_3 HRTIM_EEV3SRC_GPIO
-#define HRTIM_EVENTSRC_4 HRTIM_EEV4SRC_GPIO
+/** @brief Constants defining available sources associated to external events.
+ */
+#define HRTIM_EVENTSRC_1 (0x00000000U)
+#define HRTIM_EVENTSRC_2 (HRTIM_EECR1_EE1SRC_0)
+#define HRTIM_EVENTSRC_3 (HRTIM_EECR1_EE1SRC_1)
+#define HRTIM_EVENTSRC_4 (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0)
+
+/** @brief Constants defining the events that can be selected to configure the
+ * set/reset crossbar of a timer output
+ */
+#define HRTIM_OUTPUTSET_TIMEV_1 (HRTIM_SET1R_TIMEVNT1)
+#define HRTIM_OUTPUTSET_TIMEV_2 (HRTIM_SET1R_TIMEVNT2)
+#define HRTIM_OUTPUTSET_TIMEV_3 (HRTIM_SET1R_TIMEVNT3)
+#define HRTIM_OUTPUTSET_TIMEV_4 (HRTIM_SET1R_TIMEVNT4)
+#define HRTIM_OUTPUTSET_TIMEV_5 (HRTIM_SET1R_TIMEVNT5)
+#define HRTIM_OUTPUTSET_TIMEV_6 (HRTIM_SET1R_TIMEVNT6)
+#define HRTIM_OUTPUTSET_TIMEV_7 (HRTIM_SET1R_TIMEVNT7)
+#define HRTIM_OUTPUTSET_TIMEV_8 (HRTIM_SET1R_TIMEVNT8)
+#define HRTIM_OUTPUTSET_TIMEV_9 (HRTIM_SET1R_TIMEVNT9)
+
+#define HRTIM_OUTPUTRESET_TIMEV_1 (HRTIM_RST1R_TIMEVNT1)
+#define HRTIM_OUTPUTRESET_TIMEV_2 (HRTIM_RST1R_TIMEVNT2)
+#define HRTIM_OUTPUTRESET_TIMEV_3 (HRTIM_RST1R_TIMEVNT3)
+#define HRTIM_OUTPUTRESET_TIMEV_4 (HRTIM_RST1R_TIMEVNT4)
+#define HRTIM_OUTPUTRESET_TIMEV_5 (HRTIM_RST1R_TIMEVNT5)
+#define HRTIM_OUTPUTRESET_TIMEV_6 (HRTIM_RST1R_TIMEVNT6)
+#define HRTIM_OUTPUTRESET_TIMEV_7 (HRTIM_RST1R_TIMEVNT7)
+#define HRTIM_OUTPUTRESET_TIMEV_8 (HRTIM_RST1R_TIMEVNT8)
+#define HRTIM_OUTPUTRESET_TIMEV_9 (HRTIM_RST1R_TIMEVNT9)
+
+/** @brief Constants defining the event filtering applied to external events
+ * by a timer
+ */
+#define HRTIM_TIMEVENTFILTER_NONE (0x00000000U)
+#define HRTIM_TIMEVENTFILTER_BLANKINGCMP1 (HRTIM_EEFR1_EE1FLTR_0)
+#define HRTIM_TIMEVENTFILTER_BLANKINGCMP2 (HRTIM_EEFR1_EE1FLTR_1)
+#define HRTIM_TIMEVENTFILTER_BLANKINGCMP3 (HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
+#define HRTIM_TIMEVENTFILTER_BLANKINGCMP4 (HRTIM_EEFR1_EE1FLTR_2)
+#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR1 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0)
+#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR2 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1)
+#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR3 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
+#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR4 (HRTIM_EEFR1_EE1FLTR_3)
+#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR5 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_0)
+#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR6 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1)
+#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR7 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
+#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR8 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2)
+#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP2 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0)
+#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP3 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1)
+#define HRTIM_TIMEVENTFILTER_WINDOWINGTIM (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
+
+/** @brief Constants defining the DLL calibration periods (in micro seconds)
+ */
+#define HRTIM_CALIBRATIONRATE_7300 0x00000000U
+#define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0)
+#define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1)
+#define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0)
+
#endif /* STM32F3 */
/**
* @}
@@ -903,7 +955,7 @@
#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1
-#if defined(STM32L1) || defined(STM32L4)
+#if defined(STM32L1) || defined(STM32L4) || defined(STM32H7)
#define HAL_OPAMP_MSP_INIT_CB_ID HAL_OPAMP_MSPINIT_CB_ID
#define HAL_OPAMP_MSP_DEINIT_CB_ID HAL_OPAMP_MSPDEINIT_CB_ID
#endif
@@ -994,6 +1046,16 @@
#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1
#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1
+#if defined(STM32H7)
+#define RTC_TAMPCR_TAMPXE RTC_TAMPER_X
+#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_X_INTERRUPT
+
+#define RTC_TAMPER1_INTERRUPT RTC_IT_TAMP1
+#define RTC_TAMPER2_INTERRUPT RTC_IT_TAMP2
+#define RTC_TAMPER3_INTERRUPT RTC_IT_TAMP3
+#define RTC_ALL_TAMPER_INTERRUPT RTC_IT_TAMPALL
+#endif /* STM32H7 */
+
/**
* @}
*/
@@ -1409,12 +1471,12 @@
#endif
#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
-#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xxQ)
+#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ)
#define HAL_EnableSRDomainDBGStopMode HAL_EnableDomain3DBGStopMode
#define HAL_DisableSRDomainDBGStopMode HAL_DisableDomain3DBGStopMode
#define HAL_EnableSRDomainDBGStandbyMode HAL_EnableDomain3DBGStandbyMode
#define HAL_DisableSRDomainDBGStandbyMode HAL_DisableDomain3DBGStandbyMode
-#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7A3xxQ || STM32H7B3xxQ */
+#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7B0xx || STM32H7A3xxQ || STM32H7B3xxQ || STM32H7B0xxQ */
/**
* @}
@@ -1445,16 +1507,18 @@
#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
-#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32G4)
+#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32G4)
#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT
#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT
#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT
#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT
+#endif /* STM32H7 || STM32WB || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 */
+#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32G4)
#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA
#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA
#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA
#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA
-#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 */
+#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 */
#if defined(STM32F4)
#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT
@@ -1473,6 +1537,13 @@
/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose
* @{
*/
+
+#if defined(STM32G0)
+#define HAL_PWR_ConfigPVD HAL_PWREx_ConfigPVD
+#define HAL_PWR_EnablePVD HAL_PWREx_EnablePVD
+#define HAL_PWR_DisablePVD HAL_PWREx_DisablePVD
+#define HAL_PWR_PVD_IRQHandler HAL_PWREx_PVD_IRQHandler
+#endif
#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD
#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg
#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown
@@ -1545,14 +1616,14 @@
#define HAL_TIM_DMAError TIM_DMAError
#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt
#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt
-#if defined(STM32H7) || defined(STM32G0) || defined(STM32F7) || defined(STM32F4) || defined(STM32L0) || defined(STM32L4)
+#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4)
#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro
#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT
#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback
#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent
#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT
#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA
-#endif /* STM32H7 || STM32G0 || STM32F7 || STM32F4 || STM32L0 */
+#endif /* STM32H7 || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 */
/**
* @}
*/
@@ -3278,7 +3349,7 @@
/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
* @{
*/
-#if defined (STM32G0) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || defined (STM32G4)
+#if defined (STM32G0) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || defined STM32G4
#else
#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG
#endif
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_conf_template.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_conf_template.h
index 9926eb9d9..8f947e505 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_conf_template.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_conf_template.h
@@ -174,17 +174,17 @@
*/
#define VDD_VALUE (3300UL) /*!< Value of VDD in mv */
#define TICK_INT_PRIORITY ((1UL<<__NVIC_PRIO_BITS) - 1UL) /*!< tick interrupt priority (lowest by default) */
-#define USE_RTOS 0
-#define PREFETCH_ENABLE 0
-#define INSTRUCTION_CACHE_ENABLE 1
-#define DATA_CACHE_ENABLE 1
+#define USE_RTOS 0U
+#define PREFETCH_ENABLE 0U
+#define INSTRUCTION_CACHE_ENABLE 1U
+#define DATA_CACHE_ENABLE 1U
/* ########################## Assert Selection ############################## */
/**
* @brief Uncomment the line below to expanse the "assert_param" macro in the
* HAL drivers code
*/
-/* #define USE_FULL_ASSERT 1 */
+/* #define USE_FULL_ASSERT 1U */
/* ################## SPI peripheral configuration ########################## */
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_cryp.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_cryp.h
index 55fe0594c..ec5c1d4d1 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_cryp.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_cryp.h
@@ -186,6 +186,8 @@ typedef struct
uint16_t CrypHeaderCount_saved; /*!< copy of CRYP header data counter when processing is suspended */
+ uint32_t SizesSum_saved; /*!< copy of SizesSum when processing is suspended */
+
uint32_t ResumingFlag; /*!< resumption flag to bypass steps already carried out */
FunctionalState AutoKeyDerivation_saved; /*!< copy of CRYP handle auto key derivation parameter */
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_i2c_ex.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_i2c_ex.h
index 4b6975d3c..1ae6f8649 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_i2c_ex.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_i2c_ex.h
@@ -118,6 +118,9 @@ void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
(((__CONFIG__) & (I2C_FASTMODEPLUS_PB9)) == I2C_FASTMODEPLUS_PB9) || \
(((__CONFIG__) & (I2C_FASTMODEPLUS_I2C1)) == I2C_FASTMODEPLUS_I2C1) || \
(((__CONFIG__) & (I2C_FASTMODEPLUS_I2C3)) == I2C_FASTMODEPLUS_I2C3))
+
+
+
/**
* @}
*/
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_ipcc.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_ipcc.h
index bf6c9167d..6088c9e33 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_ipcc.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_ipcc.h
@@ -6,11 +6,11 @@
******************************************************************************
* @attention
*
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
+ * the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
@@ -28,6 +28,7 @@ extern "C" {
/* Includes ------------------------------------------------------------------*/
#include "stm32wbxx_hal_def.h"
+#if defined(IPCC)
/** @addtogroup STM32WBxx_HAL_Driver
* @{
@@ -253,6 +254,7 @@ void HAL_IPCC_RxCallback(IPCC_HandleTypeDef *hipcc, uint32_t ChannelIndex, IPCC_
/**
* @}
*/
+#endif /* IPCC */
#ifdef __cplusplus
}
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_lptim.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_lptim.h
index 8db74162c..60d90910a 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_lptim.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_lptim.h
@@ -592,6 +592,10 @@ typedef void (*pLPTIM_CallbackTypeDef)(LPTIM_HandleTypeDef *hlptim); /*!< poin
* @{
*/
+/** @addtogroup LPTIM_Exported_Functions_Group1
+ * @brief Initialization and Configuration functions.
+ * @{
+ */
/* Initialization/de-initialization functions ********************************/
HAL_StatusTypeDef HAL_LPTIM_Init(LPTIM_HandleTypeDef *hlptim);
HAL_StatusTypeDef HAL_LPTIM_DeInit(LPTIM_HandleTypeDef *hlptim);
@@ -599,7 +603,14 @@ HAL_StatusTypeDef HAL_LPTIM_DeInit(LPTIM_HandleTypeDef *hlptim);
/* MSP functions *************************************************************/
void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef *hlptim);
void HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef *hlptim);
+/**
+ * @}
+ */
+/** @addtogroup LPTIM_Exported_Functions_Group2
+ * @brief Start-Stop operation functions.
+ * @{
+ */
/* Start/Stop operation functions *********************************************/
/* ################################# PWM Mode ################################*/
/* Blocking mode: Polling */
@@ -648,12 +659,26 @@ HAL_StatusTypeDef HAL_LPTIM_Counter_Stop(LPTIM_HandleTypeDef *hlptim);
/* Non-Blocking mode: Interrupt */
HAL_StatusTypeDef HAL_LPTIM_Counter_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period);
HAL_StatusTypeDef HAL_LPTIM_Counter_Stop_IT(LPTIM_HandleTypeDef *hlptim);
+/**
+ * @}
+ */
+/** @addtogroup LPTIM_Exported_Functions_Group3
+ * @brief Read operation functions.
+ * @{
+ */
/* Reading operation functions ************************************************/
uint32_t HAL_LPTIM_ReadCounter(LPTIM_HandleTypeDef *hlptim);
uint32_t HAL_LPTIM_ReadAutoReload(LPTIM_HandleTypeDef *hlptim);
uint32_t HAL_LPTIM_ReadCompare(LPTIM_HandleTypeDef *hlptim);
+/**
+ * @}
+ */
+/** @addtogroup LPTIM_Exported_Functions_Group4
+ * @brief LPTIM IRQ handler and callback functions.
+ * @{
+ */
/* LPTIM IRQ functions *******************************************************/
void HAL_LPTIM_IRQHandler(LPTIM_HandleTypeDef *hlptim);
@@ -671,9 +696,19 @@ void HAL_LPTIM_DirectionDownCallback(LPTIM_HandleTypeDef *hlptim);
HAL_StatusTypeDef HAL_LPTIM_RegisterCallback(LPTIM_HandleTypeDef *lphtim, HAL_LPTIM_CallbackIDTypeDef CallbackID, pLPTIM_CallbackTypeDef pCallback);
HAL_StatusTypeDef HAL_LPTIM_UnRegisterCallback(LPTIM_HandleTypeDef *lphtim, HAL_LPTIM_CallbackIDTypeDef CallbackID);
#endif /* USE_HAL_LPTIM_REGISTER_CALLBACKS */
+/**
+ * @}
+ */
+/** @addtogroup LPTIM_Group5
+ * @brief Peripheral State functions.
+ * @{
+ */
/* Peripheral State functions ************************************************/
HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(LPTIM_HandleTypeDef *hlptim);
+/**
+ * @}
+ */
/**
* @}
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_pka.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_pka.h
index a3479529d..c6dc2d719 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_pka.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_pka.h
@@ -99,7 +99,11 @@ typedef enum
* @brief PKA handle Structure definition
* @{
*/
+#if (USE_HAL_PKA_REGISTER_CALLBACKS == 1)
typedef struct __PKA_HandleTypeDef
+#else
+typedef struct
+#endif /* USE_HAL_PKA_REGISTER_CALLBACKS */
{
PKA_TypeDef *Instance; /*!< Register base address */
__IO HAL_PKA_StateTypeDef State; /*!< PKA state */
@@ -220,6 +224,7 @@ typedef struct
uint8_t *ptY; /*!< Pointer to point P coordinate yP (Array of modulusSize elements) */
} PKA_ECDSASignOutExtParamTypeDef, PKA_ECCMulOutTypeDef;
+
typedef struct
{
uint32_t expSize; /*!< Number of element in pExp array */
@@ -229,6 +234,7 @@ typedef struct
const uint8_t *pMod; /*!< Pointer to modulus (Array of OpSize elements) */
} PKA_ModExpInTypeDef;
+
typedef struct
{
uint32_t expSize; /*!< Number of element in pExp and pMontgomeryParam arrays */
@@ -320,6 +326,7 @@ typedef struct
#define PKA_IT_PROCEND PKA_CR_PROCENDIE
#define PKA_IT_ADDRERR PKA_CR_ADDRERRIE
#define PKA_IT_RAMERR PKA_CR_RAMERRIE
+
/**
* @}
*/
@@ -330,6 +337,7 @@ typedef struct
#define PKA_FLAG_PROCEND PKA_SR_PROCENDF
#define PKA_FLAG_ADDRERR PKA_SR_ADDRERRF
#define PKA_FLAG_RAMERR PKA_SR_RAMERRF
+
/**
* @}
*/
@@ -516,6 +524,7 @@ HAL_StatusTypeDef HAL_PKA_MontgomeryParam(PKA_HandleTypeDef *hpka, PKA_Montgomer
HAL_StatusTypeDef HAL_PKA_MontgomeryParam_IT(PKA_HandleTypeDef *hpka, PKA_MontgomeryParamInTypeDef *in);
void HAL_PKA_MontgomeryParam_GetResult(PKA_HandleTypeDef *hpka, uint32_t *pRes);
+
HAL_StatusTypeDef HAL_PKA_Abort(PKA_HandleTypeDef *hpka);
void HAL_PKA_RAMReset(PKA_HandleTypeDef *hpka);
void HAL_PKA_OperationCpltCallback(PKA_HandleTypeDef *hpka);
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_tsc.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_tsc.h
index 81bc24e2a..1629e91f8 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_tsc.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_hal_tsc.h
@@ -108,13 +108,17 @@ typedef struct
/**
* @brief TSC handle Structure definition
*/
+#if (USE_HAL_TSC_REGISTER_CALLBACKS == 1)
typedef struct __TSC_HandleTypeDef
+#else
+typedef struct
+#endif /* USE_HAL_TSC_REGISTER_CALLBACKS */
{
TSC_TypeDef *Instance; /*!< Register base address */
TSC_InitTypeDef Init; /*!< Initialization parameters */
__IO HAL_TSC_StateTypeDef State; /*!< Peripheral state */
HAL_LockTypeDef Lock; /*!< Lock feature */
- __IO uint32_t ErrorCode; /*!< I2C Error code */
+ __IO uint32_t ErrorCode; /*!< TSC Error code */
#if (USE_HAL_TSC_REGISTER_CALLBACKS == 1)
void (* ConvCpltCallback)(struct __TSC_HandleTypeDef *htsc); /*!< TSC Conversion complete callback */
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_adc.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_adc.h
index 4ceebba94..e11d35cf8 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_adc.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_adc.h
@@ -2044,11 +2044,13 @@ __STATIC_INLINE uint32_t LL_ADC_GetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON)
}
/**
- * @brief Set parameter common to several ADC: measurement path to internal
- * channels (VrefInt, temperature sensor, ...).
+ * @brief Set parameter common to several ADC: measurement path to
+ * internal channels (VrefInt, temperature sensor, ...).
+ * Configure all paths (overwrite current configuration).
* @note One or several values can be selected.
* Example: (LL_ADC_PATH_INTERNAL_VREFINT |
* LL_ADC_PATH_INTERNAL_TEMPSENSOR)
+ * The values not selected are removed from configuration.
* @note Stabilization time of measurement path to internal channel:
* After enabling internal paths, before starting ADC conversion,
* a delay is required for internal voltage reference and
@@ -2084,6 +2086,77 @@ __STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_CO
}
/**
+ * @brief Set parameter common to several ADC: measurement path to
+ * internal channels (VrefInt, temperature sensor, ...).
+ * Add paths to the current configuration.
+ * @note One or several values can be selected.
+ * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
+ * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
+ * @note Stabilization time of measurement path to internal channel:
+ * After enabling internal paths, before starting ADC conversion,
+ * a delay is required for internal voltage reference and
+ * temperature sensor stabilization time.
+ * Refer to device datasheet.
+ * Refer to literal @ref LL_ADC_DELAY_VREFINT_STAB_US.
+ * Refer to literal @ref LL_ADC_DELAY_TEMPSENSOR_STAB_US.
+ * @note ADC internal channel sampling time constraint:
+ * For ADC conversion of internal channels,
+ * a sampling time minimum value is required.
+ * Refer to device datasheet.
+ * @note On this STM32 serie, setting of this feature is conditioned to
+ * ADC state:
+ * All ADC instances of the ADC common group must be disabled.
+ * This check can be done with function @ref LL_ADC_IsEnabled() for each
+ * ADC instance or by using helper macro helper macro
+ * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
+ * @rmtoll CCR VREFEN LL_ADC_SetCommonPathInternalChAdd\n
+ * CCR TSEN LL_ADC_SetCommonPathInternalChAdd\n
+ * CCR VBATEN LL_ADC_SetCommonPathInternalChAdd
+ * @param ADCxy_COMMON ADC common instance
+ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
+ * @param PathInternal This parameter can be a combination of the following values:
+ * @arg @ref LL_ADC_PATH_INTERNAL_NONE
+ * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
+ * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
+ * @arg @ref LL_ADC_PATH_INTERNAL_VBAT
+ * @retval None
+ */
+__STATIC_INLINE void LL_ADC_SetCommonPathInternalChAdd(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal)
+{
+ SET_BIT(ADCxy_COMMON->CCR, PathInternal);
+}
+
+/**
+ * @brief Set parameter common to several ADC: measurement path to
+ * internal channels (VrefInt, temperature sensor, ...).
+ * Remove paths to the current configuration.
+ * @note One or several values can be selected.
+ * Example: (LL_ADC_PATH_INTERNAL_VREFINT |
+ * LL_ADC_PATH_INTERNAL_TEMPSENSOR)
+ * @note On this STM32 serie, setting of this feature is conditioned to
+ * ADC state:
+ * All ADC instances of the ADC common group must be disabled.
+ * This check can be done with function @ref LL_ADC_IsEnabled() for each
+ * ADC instance or by using helper macro helper macro
+ * @ref __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE().
+ * @rmtoll CCR VREFEN LL_ADC_SetCommonPathInternalChRem\n
+ * CCR TSEN LL_ADC_SetCommonPathInternalChRem\n
+ * CCR VBATEN LL_ADC_SetCommonPathInternalChRem
+ * @param ADCxy_COMMON ADC common instance
+ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
+ * @param PathInternal This parameter can be a combination of the following values:
+ * @arg @ref LL_ADC_PATH_INTERNAL_NONE
+ * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT
+ * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR
+ * @arg @ref LL_ADC_PATH_INTERNAL_VBAT
+ * @retval None
+ */
+__STATIC_INLINE void LL_ADC_SetCommonPathInternalChRem(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal)
+{
+ CLEAR_BIT(ADCxy_COMMON->CCR, PathInternal);
+}
+
+/**
* @brief Get parameter common to several ADC: measurement path to internal
* channels (VrefInt, temperature sensor, ...).
* @note One or several values can be selected.
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_comp.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_comp.h
index fd8320a35..49d720eb8 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_comp.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_comp.h
@@ -53,6 +53,14 @@ extern "C" {
*/
/* Private macros ------------------------------------------------------------*/
+/** @defgroup COMP_LL_Private_Macros COMP Private Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
/* Exported types ------------------------------------------------------------*/
#if defined(USE_FULL_LL_DRIVER)
/** @defgroup COMP_LL_ES_INIT COMP Exported Init structure
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_ipcc.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_ipcc.h
index 5f8adb8da..95d831193 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_ipcc.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_ipcc.h
@@ -6,11 +6,11 @@
******************************************************************************
* @attention
*
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
+ * the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
@@ -696,6 +696,18 @@ __STATIC_INLINE uint32_t LL_C2_IPCC_IsActiveFlag_CHx(IPCC_TypeDef const *const
}
/**
+ * @brief Get the number of supported channels.
+ * @param IPCCx IPCC Instance.
+ * @retval Number of supported channels.
+ */
+__STATIC_INLINE uint32_t LL_IPCC_GetChannelNumber(IPCC_TypeDef *IPCCx)
+{
+ /* Added for compatibility with other STM32 series */
+ (void)(IPCCx); /* To avoid gcc/g++ warnings */
+ return 6U;
+}
+
+/**
* @}
*/
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_lptim.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_lptim.h
index 57ddd3852..5a0e72384 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_lptim.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_lptim.h
@@ -1080,7 +1080,7 @@ __STATIC_INLINE void LL_LPTIM_ClearFLAG_ARRM(LPTIM_TypeDef *LPTIMx)
}
/**
- * @brief Inform application whether a autoreload match interrupt has occured.
+ * @brief Inform application whether a autoreload match interrupt has occurred.
* @rmtoll ISR ARRM LL_LPTIM_IsActiveFlag_ARRM
* @param LPTIMx Low-Power Timer instance
* @retval State of bit (1 or 0).
diff --git a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_pka.h b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_pka.h
index c853a335f..21d0c50ca 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_pka.h
+++ b/Drivers/STM32WBxx_HAL_Driver/Inc/stm32wbxx_ll_pka.h
@@ -115,6 +115,7 @@ typedef struct
#define LL_PKA_MODE_MODULAR_ADD ((uint32_t)0x0000000EU) /*!< Modular addition */
#define LL_PKA_MODE_MODULAR_SUB ((uint32_t)0x0000000FU) /*!< Modular subtraction */
#define LL_PKA_MODE_MONTGOMERY_MUL ((uint32_t)0x00000010U) /*!< Montgomery multiplication */
+
/**
* @}
*/
@@ -328,6 +329,7 @@ __STATIC_INLINE void LL_PKA_EnableIT_RAMERR(PKA_TypeDef *PKAx)
SET_BIT(PKAx->CR, PKA_CR_RAMERRIE);
}
+
/**
* @brief Enable end of operation interrupt.
* @rmtoll CR PROCENDIE LL_PKA_EnableIT_PROCEND
@@ -394,6 +396,7 @@ __STATIC_INLINE uint32_t LL_PKA_IsEnabledIT_RAMERR(PKA_TypeDef *PKAx)
return ((READ_BIT(PKAx->CR, PKA_CR_RAMERRIE) == (PKA_CR_RAMERRIE)) ? 1UL : 0UL);
}
+
/**
* @brief Check if end of operation interrupt is enabled.
* @rmtoll CR PROCENDIE LL_PKA_IsEnabledIT_PROCEND
@@ -435,6 +438,7 @@ __STATIC_INLINE uint32_t LL_PKA_IsActiveFlag_RAMERR(PKA_TypeDef *PKAx)
return ((READ_BIT(PKAx->SR, PKA_SR_RAMERRF) == (PKA_SR_RAMERRF)) ? 1UL : 0UL);
}
+
/**
* @brief Get PKA end of operation flag.
* @rmtoll SR PROCENDF LL_PKA_IsActiveFlag_PROCEND
@@ -479,6 +483,7 @@ __STATIC_INLINE void LL_PKA_ClearFlag_RAMERR(PKA_TypeDef *PKAx)
SET_BIT(PKAx->CLRFR, PKA_CLRFR_RAMERRFC);
}
+
/**
* @brief Clear PKA end of operation flag.
* @rmtoll CLRFR PROCENDFC LL_PKA_ClearFlag_PROCEND
diff --git a/Drivers/STM32WBxx_HAL_Driver/Release_Notes.html b/Drivers/STM32WBxx_HAL_Driver/Release_Notes.html
index 9eb79c70c..b1fbd9f0c 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Release_Notes.html
+++ b/Drivers/STM32WBxx_HAL_Driver/Release_Notes.html
@@ -46,7 +46,7 @@
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
-<input type="checkbox" id="collapse-section4" checked aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">v1.3.0 / 11-September-2019</label>
+<input type="checkbox" id="collapse-section5" checked aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">v1.4.0 / 15-November-2019</label>
<div>
<h2 id="main-changes">Main Changes</h2>
<h3 id="maitenance-release">Maitenance release</h3>
@@ -60,6 +60,60 @@
<tbody>
<tr class="odd">
<td>CRYP</td>
+<td style="text-align: left;">Correct suspend and resume operation with a different parameter size.</td>
+</tr>
+<tr class="even">
+<td>I2C</td>
+<td style="text-align: left;">Correct MISRA error. The value assigned to variable tmpITFlags was never used.</td>
+</tr>
+<tr class="odd">
+<td>I2C</td>
+<td style="text-align: left;">Correct I2C slave interrupt handling issue.</td>
+</tr>
+<tr class="even">
+<td>IPCC</td>
+<td style="text-align: left;">Add LL_IPCC_GetChannelNumber API which return the number of channel supported by the device.</td>
+</tr>
+<tr class="odd">
+<td>LPTIM</td>
+<td style="text-align: left;">Correct doxygen group names.</td>
+</tr>
+<tr class="even">
+<td>PKA</td>
+<td style="text-align: left;">Use a macro __PKA_RAM_PARAM_END to clear the last word of any input parameters.</td>
+</tr>
+<tr class="odd">
+<td>TSC</td>
+<td style="text-align: left;">Correct MISRA error related to tag __TSC_HandleTypeDef which is unused.</td>
+</tr>
+<tr class="even">
+<td>ADC</td>
+<td style="text-align: left;">Add two functions to ease configuration of internal channels.</td>
+</tr>
+</tbody>
+</table>
+<h2 id="backward-compatibility">Backward Compatibility</h2>
+<p>This release is compatible with the previous versions.</p>
+<h2 id="dependencies">Dependencies</h2>
+<p>This software release is compatible with:</p>
+<p>STM32CubeMX V6.0.0</p>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">v1.3.0 / 11-September-2019</label>
+<div>
+<h2 id="main-changes-1">Main Changes</h2>
+<h3 id="maitenance-release-1">Maitenance release</h3>
+<table>
+<thead>
+<tr class="header">
+<th>Peripheral</th>
+<th style="text-align: left;">Headline</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td>CRYP</td>
<td style="text-align: left;">Document a restriction regarding size field on HAL_CRYP_Encrypt_DMA, HAL_CRYP_Decrypt_DMA API.</td>
</tr>
<tr class="even">
@@ -120,9 +174,9 @@
</tr>
</tbody>
</table>
-<h2 id="backward-compatibility">Backward Compatibility</h2>
+<h2 id="backward-compatibility-1">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
-<h2 id="dependencies">Dependencies</h2>
+<h2 id="dependencies-1">Dependencies</h2>
<p>This software release is compatible with:</p>
<p>STM32CubeMX V5.4.0</p>
</div>
@@ -130,7 +184,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.2.0 / 26-June-2019</label>
<div>
-<h2 id="main-changes-1">Main Changes</h2>
+<h2 id="main-changes-2">Main Changes</h2>
<h3 id="stm32wb50xx-introduction-and-maintenance-release">STM32WB50xx introduction and maintenance release</h3>
<p>First release for STM32WBxx HAL drivers introducing <strong>stm32wb50xx</strong> devices.</p>
<table>
@@ -199,9 +253,9 @@
</tr>
</tbody>
</table>
-<h2 id="backward-compatibility-1">Backward Compatibility</h2>
+<h2 id="backward-compatibility-2">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
-<h2 id="dependencies-1">Dependencies</h2>
+<h2 id="dependencies-2">Dependencies</h2>
<p>This software release is compatible with:</p>
<p>STM32CubeMX V5.3.0</p>
</div>
@@ -209,7 +263,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 05-April-2019</label>
<div>
-<h2 id="main-changes-2">Main Changes</h2>
+<h2 id="main-changes-3">Main Changes</h2>
<h3 id="maintenance-release">Maintenance release</h3>
<p>Maintenance release of HAL and Low layers drivers supporting STM32WB55xx devices.</p>
<table>
@@ -263,9 +317,9 @@
</tr>
</tbody>
</table>
-<h2 id="backward-compatibility-2">Backward Compatibility</h2>
+<h2 id="backward-compatibility-3">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
-<h2 id="dependencies-2">Dependencies</h2>
+<h2 id="dependencies-3">Dependencies</h2>
<p>This software release is compatible with:</p>
<p>STM32CubeMX V5.2.0</p>
</div>
@@ -273,7 +327,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 06-February-2019</label>
<div>
-<h2 id="main-changes-3">Main Changes</h2>
+<h2 id="main-changes-4">Main Changes</h2>
<h3 id="first-release">First release</h3>
<p>First official release of HAL (Hardware Abstraction Layer) and LL (Low layers) drivers to support STM32WB55xx.</p>
</div>
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c
index 8513cb7f7..4432f0b19 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c
@@ -56,7 +56,7 @@
* @brief STM32WBxx HAL Driver version number
*/
#define __STM32WBxx_HAL_VERSION_MAIN (0x01U) /*!< [31:24] main version */
-#define __STM32WBxx_HAL_VERSION_SUB1 (0x03U) /*!< [23:16] sub1 version */
+#define __STM32WBxx_HAL_VERSION_SUB1 (0x04U) /*!< [23:16] sub1 version */
#define __STM32WBxx_HAL_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */
#define __STM32WBxx_HAL_VERSION_RC (0x00U) /*!< [7:0] release candidate */
#define __STM32WBxx_HAL_VERSION ((__STM32WBxx_HAL_VERSION_MAIN << 24U)\
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cryp.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cryp.c
index fab75d482..1e8fe2ce6 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cryp.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cryp.c
@@ -965,6 +965,7 @@ HAL_StatusTypeDef HAL_CRYP_Suspend(CRYP_HandleTypeDef *hcryp)
hcryp->Phase_saved = hcryp->Phase;
hcryp->State_saved = hcryp->State;
hcryp->Size_saved = ( (hcryp->Init.DataWidthUnit == CRYP_DATAWIDTHUNIT_WORD) ? (hcryp->Size /4U) : hcryp->Size);
+ hcryp->SizesSum_saved = hcryp->SizesSum;
hcryp->AutoKeyDerivation_saved = hcryp->AutoKeyDerivation;
hcryp->CrypHeaderCount_saved = hcryp->CrypHeaderCount;
hcryp->SuspendRequest = HAL_CRYP_SUSPEND_NONE;
@@ -1033,6 +1034,7 @@ HAL_StatusTypeDef HAL_CRYP_Resume(CRYP_HandleTypeDef *hcryp)
/* Restore low-priority block CRYP handle parameters */
hcryp->Phase = hcryp->Phase_saved;
hcryp->CrypHeaderCount = hcryp->CrypHeaderCount_saved;
+ hcryp->SizesSum = hcryp->SizesSum_saved;
/* Disable AES and write-back SUSPxR registers */;
__HAL_CRYP_DISABLE(hcryp);
@@ -1042,8 +1044,6 @@ HAL_StatusTypeDef HAL_CRYP_Resume(CRYP_HandleTypeDef *hcryp)
hcryp->Instance->CR = hcryp->CR_saved;
CRYP_Write_KeyRegisters(hcryp, hcryp->Key_saved, hcryp->Init.KeySize);
CRYP_Write_IVRegisters(hcryp, hcryp->IV_saved);
- __HAL_CRYP_ENABLE_IT(hcryp,CRYP_IT_CCFIE | CRYP_IT_ERRIE);
- __HAL_CRYP_ENABLE(hcryp);
/* At the same time, set handle state back to READY to be able to resume the AES calculations
without the processing APIs returning HAL_BUSY when called. */
@@ -5234,6 +5234,15 @@ static void CRYP_PhaseProcessingResume(CRYP_HandleTypeDef *hcryp)
uint16_t npblb;
uint32_t cr_temp;
+
+ __HAL_CRYP_CLEAR_FLAG(hcryp, CRYP_ERR_CLEAR | CRYP_CCF_CLEAR);
+
+ /* Enable computation complete flag and error interrupts */
+ __HAL_CRYP_ENABLE_IT(hcryp, CRYP_IT_CCFIE | CRYP_IT_ERRIE);
+
+ /* Enable the CRYP peripheral */
+ __HAL_CRYP_ENABLE(hcryp);
+
/* Case of header phase resumption =================================================*/
if (hcryp->Phase == CRYP_PHASE_HEADER_SUSPENDED)
{
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c
index 5f5f17588..58a01f036 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_i2c.c
@@ -4737,6 +4737,13 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
/* Process locked */
__HAL_LOCK(hi2c);
+ /* Check if STOPF is set */
+ if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
+ {
+ /* Call I2C Slave complete process */
+ I2C_ITSlaveCplt(hi2c, tmpITFlags);
+ }
+
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
{
/* Check that I2C transfer finished */
@@ -4788,9 +4795,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
{
if (hi2c->XferCount > 0U)
{
- /* Remove RXNE flag on temporary variable as read done */
- tmpITFlags &= ~I2C_FLAG_RXNE;
-
/* Read data from RXDR */
*hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
@@ -4844,13 +4848,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
/* Nothing to do */
}
- /* Check if STOPF is set */
- if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
- {
- /* Call I2C Slave complete process */
- I2C_ITSlaveCplt(hi2c, tmpITFlags);
- }
-
/* Process Unlocked */
__HAL_UNLOCK(hi2c);
@@ -5008,6 +5005,13 @@ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uin
/* Process locked */
__HAL_LOCK(hi2c);
+ /* Check if STOPF is set */
+ if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
+ {
+ /* Call I2C Slave complete process */
+ I2C_ITSlaveCplt(hi2c, ITFlags);
+ }
+
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
{
/* Check that I2C transfer finished */
@@ -5092,11 +5096,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uin
{
I2C_ITAddrCplt(hi2c, ITFlags);
}
- else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
- {
- /* Call I2C Slave complete process */
- I2C_ITSlaveCplt(hi2c, ITFlags);
- }
else
{
/* Nothing to do */
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c
index 85993669e..7c6a4c507 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c
@@ -41,11 +41,11 @@
******************************************************************************
* @attention
*
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
+ * the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
@@ -55,6 +55,7 @@
/* Includes ------------------------------------------------------------------*/
#include "stm32wbxx_hal.h"
+#if defined(IPCC)
/** @addtogroup STM32WBxx_HAL_Driver
* @{
*/
@@ -742,5 +743,5 @@ void IPCC_Reset_Register(IPCC_CommonTypeDef *Instance)
/**
* @}
*/
-
+#endif /* IPCC */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_lptim.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_lptim.c
index 2bd7242b3..873f9630c 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_lptim.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_lptim.c
@@ -143,7 +143,7 @@
@endverbatim
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
@@ -175,7 +175,14 @@
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
+/** @addtogroup LPTIM_Private_Constants
+ * @{
+ */
#define TIMEOUT 1000UL /* Timeout is 1s */
+/**
+ * @}
+ */
+
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
#if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pka.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pka.c
index 429d2dfc4..cf93e7ce5 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pka.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pka.c
@@ -80,6 +80,7 @@
(++) HAL_PKA_ECCMulFastMode_IT().
(++) HAL_PKA_ECCMul_GetResult() to retrieve the result of the operation.
+
*** Low level operation ***
=================================
[..]
@@ -142,8 +143,6 @@
(++) HAL_PKA_MontgomeryParam().
(++) HAL_PKA_MontgomeryParam_IT().
(++) HAL_PKA_MontgomeryParam_GetResult() to retrieve the result of the operation.
- (+) You can save computation time by storing this parameter for a later usage.
- Use it again with HAL_PKA_MontgomeryParam_Set();
*** Polling mode operation ***
===================================
@@ -263,11 +262,15 @@
* @{
*/
#define PKA_RAM_SIZE 894U
+
+/* Private macro -------------------------------------------------------------*/
+#define __PKA_RAM_PARAM_END(TAB,INDEX) do{ \
+ TAB[INDEX] = 0UL; \
+ } while(0)
/**
* @}
*/
-/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/** @defgroup PKA_Private_Functions PKA Private Functions
@@ -320,9 +323,7 @@ void PKA_ARI_Set(PKA_HandleTypeDef *hpka, const uint32_t size, const uint32_t *p
(+) User must implement HAL_PKA_MspInit() function in which he configures
all related peripherals resources (CLOCK, IT and NVIC ).
- (+) Call the function HAL_PKA_Init() to configure the selected device with
- the selected configuration:
- (++) Security level
+ (+) Call the function HAL_PKA_Init() to configure the device.
(+) Call the function HAL_PKA_DeInit() to restore the default configuration
of the selected PKAx peripheral.
@@ -689,6 +690,7 @@ HAL_StatusTypeDef HAL_PKA_UnRegisterCallback(PKA_HandleTypeDef *hpka, HAL_PKA_Ca
(++) HAL_PKA_ECCMulFastMode()
(++) HAL_PKA_ECCMul_GetResult();
+
(++) HAL_PKA_Add()
(++) HAL_PKA_Sub()
(++) HAL_PKA_Cmp()
@@ -807,6 +809,7 @@ HAL_StatusTypeDef HAL_PKA_ModExpFastMode_IT(PKA_HandleTypeDef *hpka, PKA_ModExpF
return PKA_Process_IT(hpka, PKA_MODE_MODULAR_EXP_FAST_MODE);
}
+
/**
* @brief Retrieve operation result.
* @param hpka PKA handle
@@ -859,7 +862,7 @@ HAL_StatusTypeDef HAL_PKA_ECDSASign_IT(PKA_HandleTypeDef *hpka, PKA_ECDSASignInT
* @brief Retrieve operation result.
* @param hpka PKA handle
* @param out Output information
- * @param outExt Additionnal Output information (facultative)
+ * @param outExt Additional Output information (facultative)
*/
void HAL_PKA_ECDSASign_GetResult(PKA_HandleTypeDef *hpka, PKA_ECDSASignOutTypeDef *out, PKA_ECDSASignOutExtParamTypeDef *outExt)
{
@@ -873,7 +876,7 @@ void HAL_PKA_ECDSASign_GetResult(PKA_HandleTypeDef *hpka, PKA_ECDSASignOutTypeDe
PKA_Memcpy_u32_to_u8(out->SSign, &hpka->Instance->RAM[PKA_ECDSA_SIGN_OUT_SIGNATURE_S], size);
}
- /* If user requires the additionnal information */
+ /* If user requires the additional information */
if (outExt != NULL)
{
/* Move the result to appropriate location (indicated in outExt parameter) */
@@ -1009,8 +1012,9 @@ HAL_StatusTypeDef HAL_PKA_PointCheck_IT(PKA_HandleTypeDef *hpka, PKA_PointCheckI
*/
uint32_t HAL_PKA_PointCheck_IsOnCurve(PKA_HandleTypeDef const *const hpka)
{
+ #define PKA_POINT_IS_ON_CURVE 0UL
/* Invert the value of the PKA RAM containig the result of the operation */
- return (hpka->Instance->RAM[PKA_POINT_CHECK_OUT_ERROR] == 0UL) ? 1UL : 0UL;
+ return (hpka->Instance->RAM[PKA_POINT_CHECK_OUT_ERROR] == PKA_POINT_IS_ON_CURVE) ? 1UL : 0UL;
}
/**
@@ -1043,7 +1047,6 @@ HAL_StatusTypeDef HAL_PKA_ECCMul_IT(PKA_HandleTypeDef *hpka, PKA_ECCMulInTypeDef
/* Start the operation */
return PKA_Process_IT(hpka, PKA_MODE_ECC_MUL);
}
-
/**
* @brief ECC scalar multiplication in blocking mode.
* @param hpka PKA handle
@@ -1074,7 +1077,6 @@ HAL_StatusTypeDef HAL_PKA_ECCMulFastMode_IT(PKA_HandleTypeDef *hpka, PKA_ECCMulF
/* Start the operation */
return PKA_Process_IT(hpka, PKA_MODE_ECC_MUL_FAST_MODE);
}
-
/**
* @brief Retrieve operation result.
* @param hpka PKA handle
@@ -1469,6 +1471,7 @@ HAL_StatusTypeDef HAL_PKA_MontgomeryParam_IT(PKA_HandleTypeDef *hpka, PKA_Montgo
return PKA_Process_IT(hpka, PKA_MODE_MONTGOMERY_PARAM);
}
+
/**
* @brief Retrieve operation result.
* @param hpka PKA handle
@@ -1568,7 +1571,6 @@ void HAL_PKA_IRQHandler(PKA_HandleTypeDef *hpka)
hpka->ErrorCode |= HAL_PKA_ERROR_OPERATION;
}
}
-
/* Trigger the error callback if an error is present */
if (hpka->ErrorCode != HAL_PKA_ERROR_NONE)
{
@@ -1738,8 +1740,9 @@ uint32_t PKA_CheckError(PKA_HandleTypeDef *hpka, uint32_t mode)
/* Check the operation success in case of ECDSA signature */
if (mode == PKA_MODE_ECDSA_SIGNATURE)
{
- /* If error output result is different from 0, ecsa sign operation need to be repeated */
- if (hpka->Instance->RAM[PKA_ECDSA_SIGN_OUT_ERROR] != 0UL)
+#define EDCSA_SIGN_NOERROR 0UL
+ /* If error output result is different from no error, ecsa sign operation need to be repeated */
+ if (hpka->Instance->RAM[PKA_ECDSA_SIGN_OUT_ERROR] != EDCSA_SIGN_NOERROR)
{
err |= HAL_PKA_ERROR_OPERATION;
}
@@ -1767,7 +1770,46 @@ uint32_t PKA_GetOptBitSize_u8(uint32_t byteNumber, uint8_t msb)
{
uint32_t position;
+#if defined(CORE_CM0PLUS)
+ if (msb > 0x7FU)
+ {
+ position = 8UL;
+ }
+ else if (msb > 0x3FU)
+ {
+ position = 7UL;
+ }
+ else if (msb > 0x1FU)
+ {
+ position = 6UL;
+ }
+ else if (msb > 0x0FU)
+ {
+ position = 5UL;
+ }
+ else if (msb > 0x07U)
+ {
+ position = 4UL;
+ }
+ else if (msb > 0x03U)
+ {
+ position = 3UL;
+ }
+ else if (msb > 0x01U)
+ {
+ position = 2UL;
+ }
+ else if (msb > 0x00U)
+ {
+ position = 1UL;
+ }
+ else
+ {
+ position = 0UL;
+ }
+#else
position = 32UL - __CLZ(msb);
+#endif
return (((byteNumber - 1UL) * 8UL) + position);
}
@@ -2026,15 +2068,15 @@ void PKA_ModExp_Set(PKA_HandleTypeDef *hpka, PKA_ModExpInTypeDef *in)
/* Move the input parameters pOp1 to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MODULAR_EXP_IN_EXPONENT_BASE], in->pOp1, in->OpSize);
- hpka->Instance->RAM[PKA_MODULAR_EXP_IN_EXPONENT_BASE + (in->OpSize / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_EXP_IN_EXPONENT_BASE + (in->OpSize / 4UL));
/* Move the exponent to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MODULAR_EXP_IN_EXPONENT], in->pExp, in->expSize);
- hpka->Instance->RAM[PKA_MODULAR_EXP_IN_EXPONENT + (in->expSize / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_EXP_IN_EXPONENT + (in->expSize / 4UL));
/* Move the modulus to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MODULAR_EXP_IN_MODULUS], in->pMod, in->OpSize);
- hpka->Instance->RAM[PKA_MODULAR_EXP_IN_MODULUS + (in->OpSize / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_EXP_IN_MODULUS + (in->OpSize / 4UL));
}
/**
@@ -2052,21 +2094,22 @@ void PKA_ModExpFastMode_Set(PKA_HandleTypeDef *hpka, PKA_ModExpFastModeInTypeDef
/* Move the input parameters pOp1 to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MODULAR_EXP_IN_EXPONENT_BASE], in->pOp1, in->OpSize);
- hpka->Instance->RAM[PKA_MODULAR_EXP_IN_EXPONENT_BASE + (in->OpSize / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_EXP_IN_EXPONENT_BASE + (in->OpSize / 4UL));
/* Move the exponent to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MODULAR_EXP_IN_EXPONENT], in->pExp, in->expSize);
- hpka->Instance->RAM[PKA_MODULAR_EXP_IN_EXPONENT + (in->expSize / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_EXP_IN_EXPONENT + (in->expSize / 4UL));
/* Move the modulus to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MODULAR_EXP_IN_MODULUS], in->pMod, in->OpSize);
- hpka->Instance->RAM[PKA_MODULAR_EXP_IN_MODULUS + (in->OpSize / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_EXP_IN_MODULUS + (in->OpSize / 4UL));
/* Move the Montgomery parameter to PKA RAM */
PKA_Memcpy_u32_to_u32(&hpka->Instance->RAM[PKA_MODULAR_EXP_IN_MONTGOMERY_PARAM], in->pMontgomeryParam, in->expSize / 4UL);
- hpka->Instance->RAM[PKA_MODULAR_EXP_IN_MONTGOMERY_PARAM + (in->expSize / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_EXP_IN_MONTGOMERY_PARAM + (in->expSize / 4UL));
}
+
/**
* @brief Set input parameters.
* @param hpka PKA handle
@@ -2085,35 +2128,35 @@ void PKA_ECDSASign_Set(PKA_HandleTypeDef *hpka, PKA_ECDSASignInTypeDef *in)
/* Move the input parameters coefficient |a| to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_A_COEFF], in->coef, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_SIGN_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters modulus value p to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_MOD_GF], in->modulus, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_SIGN_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters integer k to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_K], in->integer, in->primeOrderSize);
- hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_K + ((in->primeOrderSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_SIGN_IN_K + ((in->primeOrderSize + 3UL) / 4UL));
/* Move the input parameters base point G coordinate x to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_INITIAL_POINT_X], in->basePointX, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_SIGN_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters base point G coordinate y to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_INITIAL_POINT_Y], in->basePointY, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_SIGN_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters hash of message z to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_HASH_E], in->hash, in->primeOrderSize);
- hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_HASH_E + ((in->primeOrderSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_SIGN_IN_HASH_E + ((in->primeOrderSize + 3UL) / 4UL));
/* Move the input parameters private key d to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_PRIVATE_KEY_D], in->privateKey, in->primeOrderSize);
- hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_PRIVATE_KEY_D + ((in->primeOrderSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_SIGN_IN_PRIVATE_KEY_D + ((in->primeOrderSize + 3UL) / 4UL));
/* Move the input parameters prime order n to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_ORDER_N], in->primeOrder, in->primeOrderSize);
- hpka->Instance->RAM[PKA_ECDSA_SIGN_IN_ORDER_N + ((in->primeOrderSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_SIGN_IN_ORDER_N + ((in->primeOrderSize + 3UL) / 4UL));
}
/**
@@ -2134,43 +2177,43 @@ void PKA_ECDSAVerif_Set(PKA_HandleTypeDef *hpka, PKA_ECDSAVerifInTypeDef *in)
/* Move the input parameters coefficient |a| to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_A_COEFF], in->coef, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters modulus value p to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_MOD_GF], in->modulus, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters base point G coordinate x to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_INITIAL_POINT_X], in->basePointX, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters base point G coordinate y to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_INITIAL_POINT_Y], in->basePointY, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters public-key curve point Q coordinate xQ to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_X], in->pPubKeyCurvePtX, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_X + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_X + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters public-key curve point Q coordinate xQ to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_Y], in->pPubKeyCurvePtY, in->modulusSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_Y + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_Y + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters signature part r to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_SIGNATURE_R], in->RSign, in->primeOrderSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_SIGNATURE_R + ((in->primeOrderSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_SIGNATURE_R + ((in->primeOrderSize + 3UL) / 4UL));
/* Move the input parameters signature part s to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_SIGNATURE_S], in->SSign, in->primeOrderSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_SIGNATURE_S + ((in->primeOrderSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_SIGNATURE_S + ((in->primeOrderSize + 3UL) / 4UL));
/* Move the input parameters hash of message z to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_HASH_E], in->hash, in->primeOrderSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_HASH_E + ((in->primeOrderSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_HASH_E + ((in->primeOrderSize + 3UL) / 4UL));
/* Move the input parameters curve prime order n to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_ORDER_N], in->primeOrder, in->primeOrderSize);
- hpka->Instance->RAM[PKA_ECDSA_VERIF_IN_ORDER_N + ((in->primeOrderSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECDSA_VERIF_IN_ORDER_N + ((in->primeOrderSize + 3UL) / 4UL));
}
/**
@@ -2185,27 +2228,27 @@ void PKA_RSACRTExp_Set(PKA_HandleTypeDef *hpka, PKA_RSACRTExpInTypeDef *in)
/* Move the input parameters operand dP to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_DP_CRT], in->pOpDp, in->size / 2UL);
- hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_DP_CRT + (in->size / 8UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_RSA_CRT_EXP_IN_DP_CRT + (in->size / 8UL));
/* Move the input parameters operand dQ to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_DQ_CRT], in->pOpDq, in->size / 2UL);
- hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_DQ_CRT + (in->size / 8UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_RSA_CRT_EXP_IN_DQ_CRT + (in->size / 8UL));
/* Move the input parameters operand qinv to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_QINV_CRT], in->pOpQinv, in->size / 2UL);
- hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_QINV_CRT + (in->size / 8UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_RSA_CRT_EXP_IN_QINV_CRT + (in->size / 8UL));
/* Move the input parameters prime p to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_PRIME_P], in->pPrimeP, in->size / 2UL);
- hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_PRIME_P + (in->size / 8UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_RSA_CRT_EXP_IN_PRIME_P + (in->size / 8UL));
/* Move the input parameters prime q to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_PRIME_Q], in->pPrimeQ, in->size / 2UL);
- hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_PRIME_Q + (in->size / 8UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_RSA_CRT_EXP_IN_PRIME_Q + (in->size / 8UL));
/* Move the input parameters operand A to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_EXPONENT_BASE], in->popA, in->size);
- hpka->Instance->RAM[PKA_RSA_CRT_EXP_IN_EXPONENT_BASE + (in->size / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_RSA_CRT_EXP_IN_EXPONENT_BASE + (in->size / 4UL));
}
/**
@@ -2223,23 +2266,23 @@ void PKA_PointCheck_Set(PKA_HandleTypeDef *hpka, PKA_PointCheckInTypeDef *in)
/* Move the input parameters coefficient |a| to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_A_COEFF], in->coefA, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters coefficient b to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_B_COEFF], in->coefB, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_B_COEFF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_B_COEFF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters modulus value p to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_MOD_GF], in->modulus, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters Point P coordinate x to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_X], in->pointX, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters Point P coordinate y to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_Y], in->pointY, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL));
}
/**
@@ -2260,25 +2303,28 @@ void PKA_ECCMul_Set(PKA_HandleTypeDef *hpka, PKA_ECCMulInTypeDef *in)
/* Move the input parameters coefficient |a| to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_A_COEFF], in->coefA, in->modulusSize);
- hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECC_SCALAR_MUL_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL));
+
/* Move the input parameters modulus value p to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_MOD_GF], in->modulus, in->modulusSize);
- hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECC_SCALAR_MUL_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters scalar multiplier k to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_K], in->scalarMul, in->scalarMulSize);
- hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_K + ((in->scalarMulSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECC_SCALAR_MUL_IN_K + ((in->scalarMulSize + 3UL) / 4UL));
/* Move the input parameters Point P coordinate x to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_X], in->pointX, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters Point P coordinate y to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_Y], in->pointY, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL));
+
}
+
/**
* @brief Set input parameters.
* @param hpka PKA handle
@@ -2297,29 +2343,28 @@ void PKA_ECCMulFastMode_Set(PKA_HandleTypeDef *hpka, PKA_ECCMulFastModeInTypeDef
/* Move the input parameters coefficient |a| to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_A_COEFF], in->coefA, in->modulusSize);
- hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECC_SCALAR_MUL_IN_A_COEFF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters modulus value p to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_MOD_GF], in->modulus, in->modulusSize);
- hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECC_SCALAR_MUL_IN_MOD_GF + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters scalar multiplier k to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_K], in->scalarMul, in->scalarMulSize);
- hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_K + ((in->scalarMulSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECC_SCALAR_MUL_IN_K + ((in->scalarMulSize + 3UL) / 4UL));
/* Move the input parameters Point P coordinate x to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_X], in->pointX, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_INITIAL_POINT_X + ((in->modulusSize + 3UL) / 4UL));
/* Move the input parameters Point P coordinate y to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_Y], in->pointY, in->modulusSize);
- hpka->Instance->RAM[PKA_POINT_CHECK_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_POINT_CHECK_IN_INITIAL_POINT_Y + ((in->modulusSize + 3UL) / 4UL));
/* Move the Montgomery parameter to PKA RAM */
PKA_Memcpy_u32_to_u32(&hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_MONTGOMERY_PARAM], in->pMontgomeryParam, (in->modulusSize + 3UL) / 4UL);
- hpka->Instance->RAM[PKA_ECC_SCALAR_MUL_IN_MONTGOMERY_PARAM + ((in->modulusSize + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ECC_SCALAR_MUL_IN_MONTGOMERY_PARAM + ((in->modulusSize + 3UL) / 4UL));
}
-
/**
* @brief Set input parameters.
* @param hpka PKA handle
@@ -2332,11 +2377,11 @@ void PKA_ModInv_Set(PKA_HandleTypeDef *hpka, PKA_ModInvInTypeDef *in)
/* Move the input parameters operand A to PKA RAM */
PKA_Memcpy_u32_to_u32(&hpka->Instance->RAM[PKA_MODULAR_INV_IN_OP1], in->pOp1, in->size);
- hpka->Instance->RAM[PKA_MODULAR_INV_IN_OP1 + in->size] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_INV_IN_OP1 + in->size);
/* Move the input parameters modulus value n to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MODULAR_INV_IN_OP2_MOD], in->pMod, in->size * 4UL);
- hpka->Instance->RAM[PKA_MODULAR_INV_IN_OP2_MOD + in->size] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_INV_IN_OP2_MOD + in->size);
}
/**
@@ -2354,11 +2399,11 @@ void PKA_ModRed_Set(PKA_HandleTypeDef *hpka, PKA_ModRedInTypeDef *in)
/* Move the input parameters operand A to PKA RAM */
PKA_Memcpy_u32_to_u32(&hpka->Instance->RAM[PKA_MODULAR_REDUC_IN_OPERAND], in->pOp1, in->OpSize);
- hpka->Instance->RAM[PKA_MODULAR_REDUC_IN_OPERAND + in->OpSize] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_REDUC_IN_OPERAND + in->OpSize);
/* Move the input parameters modulus value n to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MODULAR_REDUC_IN_MODULUS], in->pMod, in->modSize);
- hpka->Instance->RAM[PKA_MODULAR_REDUC_IN_MODULUS + (in->modSize / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MODULAR_REDUC_IN_MODULUS + (in->modSize / 4UL));
}
/**
@@ -2376,7 +2421,7 @@ void PKA_MontgomeryParam_Set(PKA_HandleTypeDef *hpka, const uint32_t size, const
/* Move the input parameters pOp1 to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_MONTGOMERY_PARAM_IN_MODULUS], pOp1, size);
- hpka->Instance->RAM[PKA_MONTGOMERY_PARAM_IN_MODULUS + ((size + 3UL) / 4UL)] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_MONTGOMERY_PARAM_IN_MODULUS + ((size + 3UL) / 4UL));
}
}
@@ -2397,21 +2442,21 @@ void PKA_ARI_Set(PKA_HandleTypeDef *hpka, const uint32_t size, const uint32_t *p
{
/* Move the input parameters pOp1 to PKA RAM */
PKA_Memcpy_u32_to_u32(&hpka->Instance->RAM[PKA_ARITHMETIC_ALL_OPS_IN_OP1], pOp1, size);
- hpka->Instance->RAM[PKA_ARITHMETIC_ALL_OPS_IN_OP1 + size] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ARITHMETIC_ALL_OPS_IN_OP1 + size);
}
if (pOp2 != NULL)
{
/* Move the input parameters pOp2 to PKA RAM */
PKA_Memcpy_u32_to_u32(&hpka->Instance->RAM[PKA_ARITHMETIC_ALL_OPS_IN_OP2], pOp2, size);
- hpka->Instance->RAM[PKA_ARITHMETIC_ALL_OPS_IN_OP2 + size] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ARITHMETIC_ALL_OPS_IN_OP2 + size);
}
if (pOp3 != NULL)
{
/* Move the input parameters pOp3 to PKA RAM */
PKA_Memcpy_u8_to_u32(&hpka->Instance->RAM[PKA_ARITHMETIC_ALL_OPS_IN_OP3], pOp3, size * 4UL);
- hpka->Instance->RAM[PKA_ARITHMETIC_ALL_OPS_IN_OP3 + size] = 0UL;
+ __PKA_RAM_PARAM_END(hpka->Instance->RAM, PKA_ARITHMETIC_ALL_OPS_IN_OP3 + size);
}
}
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_usart_ex.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_usart_ex.c
index 0cd893884..aaf694607 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_usart_ex.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_usart_ex.c
@@ -54,11 +54,17 @@
#ifdef HAL_USART_MODULE_ENABLED
/* Private typedef -----------------------------------------------------------*/
+/** @defgroup USARTEx_Private_Constants USARTEx Private Constants
+ * @{
+ */
/* UART RX FIFO depth */
#define RX_FIFO_DEPTH 8U
/* UART TX FIFO depth */
#define TX_FIFO_DEPTH 8U
+/**
+ * @}
+ */
/* Private define ------------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_lptim.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_lptim.c
index 07b94110a..16cde97df 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_lptim.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_lptim.c
@@ -180,14 +180,6 @@ ErrorStatus LL_LPTIM_Init(LPTIM_TypeDef *LPTIMx, LL_LPTIM_InitTypeDef *LPTIM_Ini
}
/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
* @brief Disable the LPTIM instance
* @rmtoll CR ENABLE LL_LPTIM_Disable
* @param LPTIMx Low-Power Timer instance
@@ -287,6 +279,7 @@ void LL_LPTIM_Disable(LPTIM_TypeDef *LPTIMx)
LL_LPTIM_ClearFlag_ARROK(LPTIMx);
}
+
/* Restore LPTIM source kernel clock */
LL_RCC_SetLPTIMClockSource(tmpclksource);
}
@@ -304,6 +297,14 @@ void LL_LPTIM_Disable(LPTIM_TypeDef *LPTIMx)
* @}
*/
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
#endif /* LPTIM1 || LPTIM2 */
/**
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_pka.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_pka.c
index fdb04ad9a..6f3b6617f 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_pka.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_pka.c
@@ -63,7 +63,6 @@
((__VALUE__) == LL_PKA_MODE_MODULAR_ADD) ||\
((__VALUE__) == LL_PKA_MODE_MODULAR_SUB) ||\
((__VALUE__) == LL_PKA_MODE_MONTGOMERY_MUL))
-
/**
* @}
*/
diff --git a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_rng.c b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_rng.c
index 330001220..07a660fd8 100644
--- a/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_rng.c
+++ b/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_rng.c
@@ -42,7 +42,7 @@
/* Private variables ---------------------------------------------------------*/
/* Private constants ---------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
-/** @addtogroup RNG_LL_Private_Macros
+/** @defgroup RNG_LL_Private_Macros RNG Private Macros
* @{
*/
#define IS_LL_RNG_CED(__MODE__) (((__MODE__) == LL_RNG_CED_ENABLE) || \
diff --git a/Middlewares/ST/STM32_WPAN/Release_Notes.html b/Middlewares/ST/STM32_WPAN/Release_Notes.html
index 1e16f0623..b20dbca29 100644
--- a/Middlewares/ST/STM32_WPAN/Release_Notes.html
+++ b/Middlewares/ST/STM32_WPAN/Release_Notes.html
@@ -49,9 +49,25 @@
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
-<input type="checkbox" id="collapse-section5" checked aria-hidden="true"> <label for="collapse-section5" aria-hidden="false">V1.3.0 / 4-September-2019</label>
+<input type="checkbox" id="collapse-section6" checked aria-hidden="true"> <label for="collapse-section6" aria-hidden="false">V1.4.0 / 22-November-2019</label>
<div>
<h2 id="main-changes">Main Changes</h2>
+<p>Interface:</p>
+<ul>
+<li>Added new commmand SHCI_C2_ExtpaConfig() to support external PA</li>
+<li>Update System and BLE transport layer so that a user event packet is released by default</li>
+</ul>
+<p>BLE:</p>
+<ul>
+<li>Added support to ACI_GATT_READ_EX_EVENT</li>
+<li>Added macro HCI_LE_ADVERTISING_REPORT_RSSI_0(p) to extract properly RSSI from the event packet</li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V1.3.0 / 4-September-2019</label>
+<div>
+<h2 id="main-changes-1">Main Changes</h2>
<p>General:</p>
<ul>
<li>Introducing support of Zigbee</li>
@@ -89,7 +105,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.2.0 / 27-June-2019</label>
<div>
-<h2 id="main-changes-1">Main Changes</h2>
+<h2 id="main-changes-2">Main Changes</h2>
<p>General:</p>
<ul>
<li>Following utilities : Scheduler and Low Power Manager reworked and moved to “Utilities” directory</li>
@@ -115,7 +131,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.1.1 / 10-May-2019</label>
<div>
-<h2 id="main-changes-2">Main Changes</h2>
+<h2 id="main-changes-3">Main Changes</h2>
<p>BLE:</p>
<ul>
<li>Fix race condition in transport layer when an operating system is used.</li>
@@ -161,7 +177,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 29-March-2019</label>
<div>
-<h2 id="main-changes-3">Main Changes</h2>
+<h2 id="main-changes-4">Main Changes</h2>
<p>General:</p>
<ul>
<li>Licenses in utilities and patterns moved from sla0044 to 3-clauses BSD</li>
@@ -187,7 +203,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 31-January-2019</label>
<div>
-<h2 id="main-changes-4">Main Changes</h2>
+<h2 id="main-changes-5">Main Changes</h2>
<p>First release</p>
</div>
</div>
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.c b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.c
index bbd3578b6..b0ebbd32a 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.c
+++ b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.c
@@ -1,7 +1,7 @@
/******************************************************************************
* @file ble_events.c
* @author MCD Application Team
- * @date 19 July 2019
+ * @date 08 November 2019
* @brief Source file for STM32WB (Event callbacks)
* Auto-generated file: do not edit!
******************************************************************************
@@ -67,6 +67,7 @@ void aci_gatt_read_multi_permit_req_event_process(uint8_t *buffer_in);
void aci_gatt_tx_pool_available_event_process(uint8_t *buffer_in);
void aci_gatt_server_confirmation_event_process(uint8_t *buffer_in);
void aci_gatt_prepare_write_permit_req_event_process(uint8_t *buffer_in);
+void aci_gatt_read_ext_event_process(uint8_t *buffer_in);
void aci_gatt_indication_ext_event_process(uint8_t *buffer_in);
void aci_gatt_notification_ext_event_process(uint8_t *buffer_in);
void hci_le_connection_complete_event_process(uint8_t *buffer_in);
@@ -84,133 +85,135 @@ void hci_le_phy_update_complete_event_process(uint8_t *buffer_in);
const hci_event_table_t hci_event_table[HCI_EVENT_TABLE_SIZE] =
{
/* hci_disconnection_complete_event */
- 0x0005, hci_disconnection_complete_event_process,
+ {0x0005, hci_disconnection_complete_event_process},
/* hci_encryption_change_event */
- 0x0008, hci_encryption_change_event_process,
+ {0x0008, hci_encryption_change_event_process},
/* hci_read_remote_version_information_complete_event */
- 0x000c, hci_read_remote_version_information_complete_event_process,
+ {0x000c, hci_read_remote_version_information_complete_event_process},
/* hci_hardware_error_event */
- 0x0010, hci_hardware_error_event_process,
+ {0x0010, hci_hardware_error_event_process},
/* hci_number_of_completed_packets_event */
- 0x0013, hci_number_of_completed_packets_event_process,
+ {0x0013, hci_number_of_completed_packets_event_process},
/* hci_data_buffer_overflow_event */
- 0x001a, hci_data_buffer_overflow_event_process,
+ {0x001a, hci_data_buffer_overflow_event_process},
/* hci_encryption_key_refresh_complete_event */
- 0x0030, hci_encryption_key_refresh_complete_event_process,
+ {0x0030, hci_encryption_key_refresh_complete_event_process},
};
const hci_event_table_t hci_le_meta_event_table[HCI_LE_META_EVENT_TABLE_SIZE] =
{
/* hci_le_connection_complete_event */
- 0x0001, hci_le_connection_complete_event_process,
+ {0x0001, hci_le_connection_complete_event_process},
/* hci_le_advertising_report_event */
- 0x0002, hci_le_advertising_report_event_process,
+ {0x0002, hci_le_advertising_report_event_process},
/* hci_le_connection_update_complete_event */
- 0x0003, hci_le_connection_update_complete_event_process,
+ {0x0003, hci_le_connection_update_complete_event_process},
/* hci_le_read_remote_used_features_complete_event */
- 0x0004, hci_le_read_remote_used_features_complete_event_process,
+ {0x0004, hci_le_read_remote_used_features_complete_event_process},
/* hci_le_long_term_key_request_event */
- 0x0005, hci_le_long_term_key_request_event_process,
+ {0x0005, hci_le_long_term_key_request_event_process},
/* hci_le_data_length_change_event */
- 0x0007, hci_le_data_length_change_event_process,
+ {0x0007, hci_le_data_length_change_event_process},
/* hci_le_read_local_p256_public_key_complete_event */
- 0x0008, hci_le_read_local_p256_public_key_complete_event_process,
+ {0x0008, hci_le_read_local_p256_public_key_complete_event_process},
/* hci_le_generate_dhkey_complete_event */
- 0x0009, hci_le_generate_dhkey_complete_event_process,
+ {0x0009, hci_le_generate_dhkey_complete_event_process},
/* hci_le_enhanced_connection_complete_event */
- 0x000a, hci_le_enhanced_connection_complete_event_process,
+ {0x000a, hci_le_enhanced_connection_complete_event_process},
/* hci_le_direct_advertising_report_event */
- 0x000b, hci_le_direct_advertising_report_event_process,
+ {0x000b, hci_le_direct_advertising_report_event_process},
/* hci_le_phy_update_complete_event */
- 0x000c, hci_le_phy_update_complete_event_process,
+ {0x000c, hci_le_phy_update_complete_event_process},
};
const hci_event_table_t hci_vendor_specific_event_table[HCI_VENDOR_SPECIFIC_EVENT_TABLE_SIZE] =
{
/* aci_hal_end_of_radio_activity_event */
- 0x0004, aci_hal_end_of_radio_activity_event_process,
+ {0x0004, aci_hal_end_of_radio_activity_event_process},
/* aci_hal_scan_req_report_event */
- 0x0005, aci_hal_scan_req_report_event_process,
+ {0x0005, aci_hal_scan_req_report_event_process},
/* aci_hal_fw_error_event */
- 0x0006, aci_hal_fw_error_event_process,
+ {0x0006, aci_hal_fw_error_event_process},
/* aci_gap_limited_discoverable_event */
- 0x0400, aci_gap_limited_discoverable_event_process,
+ {0x0400, aci_gap_limited_discoverable_event_process},
/* aci_gap_pairing_complete_event */
- 0x0401, aci_gap_pairing_complete_event_process,
+ {0x0401, aci_gap_pairing_complete_event_process},
/* aci_gap_pass_key_req_event */
- 0x0402, aci_gap_pass_key_req_event_process,
+ {0x0402, aci_gap_pass_key_req_event_process},
/* aci_gap_authorization_req_event */
- 0x0403, aci_gap_authorization_req_event_process,
+ {0x0403, aci_gap_authorization_req_event_process},
/* aci_gap_slave_security_initiated_event */
- 0x0404, aci_gap_slave_security_initiated_event_process,
+ {0x0404, aci_gap_slave_security_initiated_event_process},
/* aci_gap_bond_lost_event */
- 0x0405, aci_gap_bond_lost_event_process,
+ {0x0405, aci_gap_bond_lost_event_process},
/* aci_gap_proc_complete_event */
- 0x0407, aci_gap_proc_complete_event_process,
+ {0x0407, aci_gap_proc_complete_event_process},
/* aci_gap_addr_not_resolved_event */
- 0x0408, aci_gap_addr_not_resolved_event_process,
+ {0x0408, aci_gap_addr_not_resolved_event_process},
/* aci_gap_numeric_comparison_value_event */
- 0x0409, aci_gap_numeric_comparison_value_event_process,
+ {0x0409, aci_gap_numeric_comparison_value_event_process},
/* aci_gap_keypress_notification_event */
- 0x040a, aci_gap_keypress_notification_event_process,
+ {0x040a, aci_gap_keypress_notification_event_process},
/* aci_l2cap_connection_update_resp_event */
- 0x0800, aci_l2cap_connection_update_resp_event_process,
+ {0x0800, aci_l2cap_connection_update_resp_event_process},
/* aci_l2cap_proc_timeout_event */
- 0x0801, aci_l2cap_proc_timeout_event_process,
+ {0x0801, aci_l2cap_proc_timeout_event_process},
/* aci_l2cap_connection_update_req_event */
- 0x0802, aci_l2cap_connection_update_req_event_process,
+ {0x0802, aci_l2cap_connection_update_req_event_process},
/* aci_l2cap_command_reject_event */
- 0x080a, aci_l2cap_command_reject_event_process,
+ {0x080a, aci_l2cap_command_reject_event_process},
/* aci_gatt_attribute_modified_event */
- 0x0c01, aci_gatt_attribute_modified_event_process,
+ {0x0c01, aci_gatt_attribute_modified_event_process},
/* aci_gatt_proc_timeout_event */
- 0x0c02, aci_gatt_proc_timeout_event_process,
+ {0x0c02, aci_gatt_proc_timeout_event_process},
/* aci_att_exchange_mtu_resp_event */
- 0x0c03, aci_att_exchange_mtu_resp_event_process,
+ {0x0c03, aci_att_exchange_mtu_resp_event_process},
/* aci_att_find_info_resp_event */
- 0x0c04, aci_att_find_info_resp_event_process,
+ {0x0c04, aci_att_find_info_resp_event_process},
/* aci_att_find_by_type_value_resp_event */
- 0x0c05, aci_att_find_by_type_value_resp_event_process,
+ {0x0c05, aci_att_find_by_type_value_resp_event_process},
/* aci_att_read_by_type_resp_event */
- 0x0c06, aci_att_read_by_type_resp_event_process,
+ {0x0c06, aci_att_read_by_type_resp_event_process},
/* aci_att_read_resp_event */
- 0x0c07, aci_att_read_resp_event_process,
+ {0x0c07, aci_att_read_resp_event_process},
/* aci_att_read_blob_resp_event */
- 0x0c08, aci_att_read_blob_resp_event_process,
+ {0x0c08, aci_att_read_blob_resp_event_process},
/* aci_att_read_multiple_resp_event */
- 0x0c09, aci_att_read_multiple_resp_event_process,
+ {0x0c09, aci_att_read_multiple_resp_event_process},
/* aci_att_read_by_group_type_resp_event */
- 0x0c0a, aci_att_read_by_group_type_resp_event_process,
+ {0x0c0a, aci_att_read_by_group_type_resp_event_process},
/* aci_att_prepare_write_resp_event */
- 0x0c0c, aci_att_prepare_write_resp_event_process,
+ {0x0c0c, aci_att_prepare_write_resp_event_process},
/* aci_att_exec_write_resp_event */
- 0x0c0d, aci_att_exec_write_resp_event_process,
+ {0x0c0d, aci_att_exec_write_resp_event_process},
/* aci_gatt_indication_event */
- 0x0c0e, aci_gatt_indication_event_process,
+ {0x0c0e, aci_gatt_indication_event_process},
/* aci_gatt_notification_event */
- 0x0c0f, aci_gatt_notification_event_process,
+ {0x0c0f, aci_gatt_notification_event_process},
/* aci_gatt_proc_complete_event */
- 0x0c10, aci_gatt_proc_complete_event_process,
+ {0x0c10, aci_gatt_proc_complete_event_process},
/* aci_gatt_error_resp_event */
- 0x0c11, aci_gatt_error_resp_event_process,
+ {0x0c11, aci_gatt_error_resp_event_process},
/* aci_gatt_disc_read_char_by_uuid_resp_event */
- 0x0c12, aci_gatt_disc_read_char_by_uuid_resp_event_process,
+ {0x0c12, aci_gatt_disc_read_char_by_uuid_resp_event_process},
/* aci_gatt_write_permit_req_event */
- 0x0c13, aci_gatt_write_permit_req_event_process,
+ {0x0c13, aci_gatt_write_permit_req_event_process},
/* aci_gatt_read_permit_req_event */
- 0x0c14, aci_gatt_read_permit_req_event_process,
+ {0x0c14, aci_gatt_read_permit_req_event_process},
/* aci_gatt_read_multi_permit_req_event */
- 0x0c15, aci_gatt_read_multi_permit_req_event_process,
+ {0x0c15, aci_gatt_read_multi_permit_req_event_process},
/* aci_gatt_tx_pool_available_event */
- 0x0c16, aci_gatt_tx_pool_available_event_process,
+ {0x0c16, aci_gatt_tx_pool_available_event_process},
/* aci_gatt_server_confirmation_event */
- 0x0c17, aci_gatt_server_confirmation_event_process,
+ {0x0c17, aci_gatt_server_confirmation_event_process},
/* aci_gatt_prepare_write_permit_req_event */
- 0x0c18, aci_gatt_prepare_write_permit_req_event_process,
+ {0x0c18, aci_gatt_prepare_write_permit_req_event_process},
+ /* aci_gatt_read_ext_event */
+ {0x0c1d, aci_gatt_read_ext_event_process},
/* aci_gatt_indication_ext_event */
- 0x0c1e, aci_gatt_indication_ext_event_process,
+ {0x0c1e, aci_gatt_indication_ext_event_process},
/* aci_gatt_notification_ext_event */
- 0x0c1f, aci_gatt_notification_ext_event_process,
+ {0x0c1f, aci_gatt_notification_ext_event_process},
};
/* hci_disconnection_complete_event */
@@ -228,86 +231,7 @@ that didn't correspond to a connection was given.
* @param Connection_Handle Connection_Handle which was disconnected.
* Values:
- 0x0000 ... 0x0EFF
- * @param Reason Reason for disconnection.
- * Values:
- - 0x00: Success
- - 0x01: Unknown HCI Command
- - 0x02: Unknown Connection Identifier
- - 0x03: Hardware Failure
- - 0x05: Authentication Failure
- - 0x06: PIN or Key Missing
- - 0x07: Memory Capacity Exceeded
- - 0x08: Connection Timeout
- - 0x09: Connection Limit Exceeded
- - 0x0B: ACL Connection Already Exists
- - 0x0C: Command Disallowed
- - 0x0D: Connection Rejected Due To Limited Resources
- - 0x0E: Connection Rejected Due To Security Reasons
- - 0x0F: Connection Rejected due to Unacceptable BD_ADDR
- - 0x10: Connection Accept Timeout Exceeded
- - 0x11: Unsupported Feature Or Parameter Value
- - 0x12: Invalid HCI Command Parameters
- - 0x13: Remote User Terminated Connection
- - 0x14: Remote Device Terminated Connection due to Low Resources
- - 0x15: Remote Device Terminated Connection due to Power Off
- - 0x16: Connection Terminated By Local Host
- - 0x17: Repeated Attempts
- - 0x18: Pairing Not Allowed
- - 0x19: Unknown LMP PDU
- - 0x1A: Unsupported Remote Feature / Unsupported LMP Feature
- - 0x1E: Invalid LMP Parameters
- - 0x1F: Unspecified Error
- - 0x20: Unsupported LMP Parameter Value
- - 0x21: Role Change Not Allowed
- - 0x22: LMP Response Timeout / LL Response Timeout
- - 0x23: LMP Error Transaction Collision
- - 0x24: LMP PDU Not Allowed
- - 0x25: Encryption Mode Not Acceptable
- - 0x26: Link Key cannot be Changed
- - 0x28: Instant Passed
- - 0x29: Pairing With Unit Key Not Supported
- - 0x2A: Different Transaction Collision
- - 0x2E: Channel Assessment Not Supported
- - 0x2F: Insufficient Security
- - 0x30: Parameter Out Of Mandatory Range
- - 0x32: Role Switch Pending
- - 0x34: Reserved Slot Violation
- - 0x35: Role Switch Failed
- - 0x37: Secure Simple Pairing Not Supported by Host
- - 0x38: Host Busy - Pairing
- - 0x39: Connection Rejected due to No Suitable Channel Found
- - 0x3A: Controller Busy
- - 0x3B: Unacceptable Connection Interval
- - 0x3C: Directed Advertising Timeout
- - 0x3D: Connection Terminated Due to MIC Failure
- - 0x3E: Connection Failed to be Established
- - 0x41: Failed
- - 0x42: Invalid parameters
- - 0x43: Busy
- - 0x44: Invalid length
- - 0x45: Pending
- - 0x46: Not allowed
- - 0x47: GATT error
- - 0x48: Address not resolved
- - 0x50: Invalid CID
- - 0x5A: CSRK not found
- - 0x5B: IRK not found
- - 0x5C: Device not found in DB
- - 0x5D: Security DB full
- - 0x5E: Device not bonded
- - 0x5F: Device in blacklist
- - 0x60: Invalid handle
- - 0x61: Invalid parameter
- - 0x62: Out of handles
- - 0x63: Invalid operation
- - 0x64: Insufficient resources
- - 0x65: Insufficient encryption key size
- - 0x66: Characteristic already exist
- - 0x82: No valid slot
- - 0x83: Short window
- - 0x84: New interval failed
- - 0x85: Too large interval
- - 0x86: Slot length failed
+ * @param Reason Reason for disconnection (see Bluetooth Core Specification [Vol 2] Part D, Error Codes).
* @retval None
*/
@@ -616,15 +540,13 @@ procedure timeout has occurred or the pairing has failed. This is to notify the
we have paired with a remote device so that it can take further actions or to notify that a
timeout has occurred so that the upper layer can decide to disconnect the link.
* @param Connection_Handle Connection handle on which the pairing procedure completed
- * @param Status Pairing status
+ * @param Status Specific pairing status (0:Success,1:Timeout,2:Failed)
* Values:
- 0x00: Success
- 0x01: Timeout
- 0x02: Failed
* @param Reason Pairing reason error code
* Values:
- - 0x00
- - 0x01: PASSKEY_ENTRY_FAILED
- 0x02: OOB_NOT_AVAILABLE
- 0x03: AUTH_REQ_CANNOT_BE_MET
- 0x04: CONFIRM_VALUE_FAILED
@@ -1216,86 +1138,7 @@ successfully.
* @param Connection_Handle Connection handle related to the response.
* Values:
- 0x0000 ... 0x0EFF
- * @param Error_Code Indicates whether the procedure completed with an error or was successful
- * Values:
- - 0x00: Success
- - 0x01: Unknown HCI Command
- - 0x02: Unknown Connection Identifier
- - 0x03: Hardware Failure
- - 0x05: Authentication Failure
- - 0x06: PIN or Key Missing
- - 0x07: Memory Capacity Exceeded
- - 0x08: Connection Timeout
- - 0x09: Connection Limit Exceeded
- - 0x0B: ACL Connection Already Exists
- - 0x0C: Command Disallowed
- - 0x0D: Connection Rejected Due To Limited Resources
- - 0x0E: Connection Rejected Due To Security Reasons
- - 0x0F: Connection Rejected due to Unacceptable BD_ADDR
- - 0x10: Connection Accept Timeout Exceeded
- - 0x11: Unsupported Feature Or Parameter Value
- - 0x12: Invalid HCI Command Parameters
- - 0x13: Remote User Terminated Connection
- - 0x14: Remote Device Terminated Connection due to Low Resources
- - 0x15: Remote Device Terminated Connection due to Power Off
- - 0x16: Connection Terminated By Local Host
- - 0x17: Repeated Attempts
- - 0x18: Pairing Not Allowed
- - 0x19: Unknown LMP PDU
- - 0x1A: Unsupported Remote Feature / Unsupported LMP Feature
- - 0x1E: Invalid LMP Parameters
- - 0x1F: Unspecified Error
- - 0x20: Unsupported LMP Parameter Value
- - 0x21: Role Change Not Allowed
- - 0x22: LMP Response Timeout / LL Response Timeout
- - 0x23: LMP Error Transaction Collision
- - 0x24: LMP PDU Not Allowed
- - 0x25: Encryption Mode Not Acceptable
- - 0x26: Link Key cannot be Changed
- - 0x28: Instant Passed
- - 0x29: Pairing With Unit Key Not Supported
- - 0x2A: Different Transaction Collision
- - 0x2E: Channel Assessment Not Supported
- - 0x2F: Insufficient Security
- - 0x30: Parameter Out Of Mandatory Range
- - 0x32: Role Switch Pending
- - 0x34: Reserved Slot Violation
- - 0x35: Role Switch Failed
- - 0x37: Secure Simple Pairing Not Supported by Host
- - 0x38: Host Busy - Pairing
- - 0x39: Connection Rejected due to No Suitable Channel Found
- - 0x3A: Controller Busy
- - 0x3B: Unacceptable Connection Interval
- - 0x3C: Directed Advertising Timeout
- - 0x3D: Connection Terminated Due to MIC Failure
- - 0x3E: Connection Failed to be Established
- - 0x41: Failed
- - 0x42: Invalid parameters
- - 0x43: Busy
- - 0x44: Invalid length
- - 0x45: Pending
- - 0x46: Not allowed
- - 0x47: GATT error
- - 0x48: Address not resolved
- - 0x50: Invalid CID
- - 0x5A: CSRK not found
- - 0x5B: IRK not found
- - 0x5C: Device not found in DB
- - 0x5D: Security DB full
- - 0x5E: Device not bonded
- - 0x5F: Device in blacklist
- - 0x60: Invalid handle
- - 0x61: Invalid parameter
- - 0x62: Out of handles
- - 0x63: Invalid operation
- - 0x64: Insufficient resources
- - 0x65: Insufficient encryption key size
- - 0x66: Characteristic already exist
- - 0x82: No valid slot
- - 0x83: Short window
- - 0x84: New interval failed
- - 0x85: Too large interval
- - 0x86: Slot length failed
+ * @param Error_Code Indicates whether the procedure completed with an error or was successful (see "Status error codes" section)
* @retval None
*/
@@ -1527,6 +1370,32 @@ void aci_gatt_prepare_write_permit_req_event_process(uint8_t *buffer_in)
rp0->Data);
}
+/* aci_gatt_read_ext_event */
+/* Event len: 2 + 2 + 2 + rp0->Event_Data_Length * (sizeof(uint8_t)) */
+/**
+ * @brief When it is enabled with ACI_GATT_SET_EVENT_MASK, this event is generated instead of ACI_ATT_READ_RESP_EVENT / ACI_ATT_READ_BLOB_RESP_EVENT / ACI_ATT_READ_MULTIPLE_RESP_EVENT.
+This event should be used instead of those events when ATT_MTU > (BLE_EVT_MAX_PARAM_LEN - 4)
+i.e. ATT_MTU > 251 for BLE_EVT_MAX_PARAM_LEN default value.
+
+ * @param Connection_Handle Connection handle related to the response.
+ * Values:
+ - 0x0000 ... 0x0EFF
+ * @param Offset Bits 14-0: offset in octets from which Attribute_Value data starts. Bit 15 is used as flag: when set to 1 it indicates that more data are to come (fragmented event in case of long attribute data).
+ * @param Event_Data_Length Length of following data
+ * @param Attribute_Value The value of the attribute(s).
+ * @retval None
+*/
+
+void aci_gatt_read_ext_event_process(uint8_t *buffer_in)
+{
+ /* Input params */
+ aci_gatt_read_ext_event_rp0 *rp0 = (aci_gatt_read_ext_event_rp0 *)buffer_in;
+ aci_gatt_read_ext_event(rp0->Connection_Handle,
+ rp0->Offset,
+ rp0->Event_Data_Length,
+ rp0->Attribute_Value);
+}
+
/* aci_gatt_indication_ext_event */
/* Event len: 2 + 2 + 2 + 2 + rp0->Attribute_Value_Length * (sizeof(uint8_t)) */
/**
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.h b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.h
index 5a568f645..a5e9af49f 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.h
@@ -1,7 +1,7 @@
/******************************************************************************
* @file ble_events.h
* @author MCD Application Team
- * @date 19 July 2019
+ * @date 08 November 2019
* @brief Header file for STM32WB (Event callbacks)
* Auto-generated file: do not edit!
******************************************************************************
@@ -33,7 +33,7 @@ typedef struct
#define HCI_EVENT_TABLE_SIZE 7
#define HCI_LE_META_EVENT_TABLE_SIZE 11
-#define HCI_VENDOR_SPECIFIC_EVENT_TABLE_SIZE 42
+#define HCI_VENDOR_SPECIFIC_EVENT_TABLE_SIZE 43
extern const hci_event_table_t hci_event_table[HCI_EVENT_TABLE_SIZE];
extern const hci_event_table_t hci_le_meta_event_table[HCI_LE_META_EVENT_TABLE_SIZE];
extern const hci_event_table_t hci_vendor_specific_event_table[HCI_VENDOR_SPECIFIC_EVENT_TABLE_SIZE];
@@ -56,86 +56,7 @@ that didn't correspond to a connection was given.
* @param Connection_Handle Connection_Handle which was disconnected.
* Values:
- 0x0000 ... 0x0EFF
- * @param Reason Reason for disconnection.
- * Values:
- - 0x00: Success
- - 0x01: Unknown HCI Command
- - 0x02: Unknown Connection Identifier
- - 0x03: Hardware Failure
- - 0x05: Authentication Failure
- - 0x06: PIN or Key Missing
- - 0x07: Memory Capacity Exceeded
- - 0x08: Connection Timeout
- - 0x09: Connection Limit Exceeded
- - 0x0B: ACL Connection Already Exists
- - 0x0C: Command Disallowed
- - 0x0D: Connection Rejected Due To Limited Resources
- - 0x0E: Connection Rejected Due To Security Reasons
- - 0x0F: Connection Rejected due to Unacceptable BD_ADDR
- - 0x10: Connection Accept Timeout Exceeded
- - 0x11: Unsupported Feature Or Parameter Value
- - 0x12: Invalid HCI Command Parameters
- - 0x13: Remote User Terminated Connection
- - 0x14: Remote Device Terminated Connection due to Low Resources
- - 0x15: Remote Device Terminated Connection due to Power Off
- - 0x16: Connection Terminated By Local Host
- - 0x17: Repeated Attempts
- - 0x18: Pairing Not Allowed
- - 0x19: Unknown LMP PDU
- - 0x1A: Unsupported Remote Feature / Unsupported LMP Feature
- - 0x1E: Invalid LMP Parameters
- - 0x1F: Unspecified Error
- - 0x20: Unsupported LMP Parameter Value
- - 0x21: Role Change Not Allowed
- - 0x22: LMP Response Timeout / LL Response Timeout
- - 0x23: LMP Error Transaction Collision
- - 0x24: LMP PDU Not Allowed
- - 0x25: Encryption Mode Not Acceptable
- - 0x26: Link Key cannot be Changed
- - 0x28: Instant Passed
- - 0x29: Pairing With Unit Key Not Supported
- - 0x2A: Different Transaction Collision
- - 0x2E: Channel Assessment Not Supported
- - 0x2F: Insufficient Security
- - 0x30: Parameter Out Of Mandatory Range
- - 0x32: Role Switch Pending
- - 0x34: Reserved Slot Violation
- - 0x35: Role Switch Failed
- - 0x37: Secure Simple Pairing Not Supported by Host
- - 0x38: Host Busy - Pairing
- - 0x39: Connection Rejected due to No Suitable Channel Found
- - 0x3A: Controller Busy
- - 0x3B: Unacceptable Connection Interval
- - 0x3C: Directed Advertising Timeout
- - 0x3D: Connection Terminated Due to MIC Failure
- - 0x3E: Connection Failed to be Established
- - 0x41: Failed
- - 0x42: Invalid parameters
- - 0x43: Busy
- - 0x44: Invalid length
- - 0x45: Pending
- - 0x46: Not allowed
- - 0x47: GATT error
- - 0x48: Address not resolved
- - 0x50: Invalid CID
- - 0x5A: CSRK not found
- - 0x5B: IRK not found
- - 0x5C: Device not found in DB
- - 0x5D: Security DB full
- - 0x5E: Device not bonded
- - 0x5F: Device in blacklist
- - 0x60: Invalid handle
- - 0x61: Invalid parameter
- - 0x62: Out of handles
- - 0x63: Invalid operation
- - 0x64: Insufficient resources
- - 0x65: Insufficient encryption key size
- - 0x66: Characteristic already exist
- - 0x82: No valid slot
- - 0x83: Short window
- - 0x84: New interval failed
- - 0x85: Too large interval
- - 0x86: Slot length failed
+ * @param Reason Reason for disconnection (see Bluetooth Core Specification [Vol 2] Part D, Error Codes).
* @retval None
*/
WEAK_FUNCTION(void hci_disconnection_complete_event(uint8_t Status,
@@ -595,15 +516,13 @@ procedure timeout has occurred or the pairing has failed. This is to notify the
we have paired with a remote device so that it can take further actions or to notify that a
timeout has occurred so that the upper layer can decide to disconnect the link.
* @param Connection_Handle Connection handle on which the pairing procedure completed
- * @param Status Pairing status
+ * @param Status Specific pairing status (0:Success,1:Timeout,2:Failed)
* Values:
- 0x00: Success
- 0x01: Timeout
- 0x02: Failed
* @param Reason Pairing reason error code
* Values:
- - 0x00
- - 0x01: PASSKEY_ENTRY_FAILED
- 0x02: OOB_NOT_AVAILABLE
- 0x03: AUTH_REQ_CANNOT_BE_MET
- 0x04: CONFIRM_VALUE_FAILED
@@ -899,86 +818,7 @@ successfully.
* @param Connection_Handle Connection handle related to the response.
* Values:
- 0x0000 ... 0x0EFF
- * @param Error_Code Indicates whether the procedure completed with an error or was successful
- * Values:
- - 0x00: Success
- - 0x01: Unknown HCI Command
- - 0x02: Unknown Connection Identifier
- - 0x03: Hardware Failure
- - 0x05: Authentication Failure
- - 0x06: PIN or Key Missing
- - 0x07: Memory Capacity Exceeded
- - 0x08: Connection Timeout
- - 0x09: Connection Limit Exceeded
- - 0x0B: ACL Connection Already Exists
- - 0x0C: Command Disallowed
- - 0x0D: Connection Rejected Due To Limited Resources
- - 0x0E: Connection Rejected Due To Security Reasons
- - 0x0F: Connection Rejected due to Unacceptable BD_ADDR
- - 0x10: Connection Accept Timeout Exceeded
- - 0x11: Unsupported Feature Or Parameter Value
- - 0x12: Invalid HCI Command Parameters
- - 0x13: Remote User Terminated Connection
- - 0x14: Remote Device Terminated Connection due to Low Resources
- - 0x15: Remote Device Terminated Connection due to Power Off
- - 0x16: Connection Terminated By Local Host
- - 0x17: Repeated Attempts
- - 0x18: Pairing Not Allowed
- - 0x19: Unknown LMP PDU
- - 0x1A: Unsupported Remote Feature / Unsupported LMP Feature
- - 0x1E: Invalid LMP Parameters
- - 0x1F: Unspecified Error
- - 0x20: Unsupported LMP Parameter Value
- - 0x21: Role Change Not Allowed
- - 0x22: LMP Response Timeout / LL Response Timeout
- - 0x23: LMP Error Transaction Collision
- - 0x24: LMP PDU Not Allowed
- - 0x25: Encryption Mode Not Acceptable
- - 0x26: Link Key cannot be Changed
- - 0x28: Instant Passed
- - 0x29: Pairing With Unit Key Not Supported
- - 0x2A: Different Transaction Collision
- - 0x2E: Channel Assessment Not Supported
- - 0x2F: Insufficient Security
- - 0x30: Parameter Out Of Mandatory Range
- - 0x32: Role Switch Pending
- - 0x34: Reserved Slot Violation
- - 0x35: Role Switch Failed
- - 0x37: Secure Simple Pairing Not Supported by Host
- - 0x38: Host Busy - Pairing
- - 0x39: Connection Rejected due to No Suitable Channel Found
- - 0x3A: Controller Busy
- - 0x3B: Unacceptable Connection Interval
- - 0x3C: Directed Advertising Timeout
- - 0x3D: Connection Terminated Due to MIC Failure
- - 0x3E: Connection Failed to be Established
- - 0x41: Failed
- - 0x42: Invalid parameters
- - 0x43: Busy
- - 0x44: Invalid length
- - 0x45: Pending
- - 0x46: Not allowed
- - 0x47: GATT error
- - 0x48: Address not resolved
- - 0x50: Invalid CID
- - 0x5A: CSRK not found
- - 0x5B: IRK not found
- - 0x5C: Device not found in DB
- - 0x5D: Security DB full
- - 0x5E: Device not bonded
- - 0x5F: Device in blacklist
- - 0x60: Invalid handle
- - 0x61: Invalid parameter
- - 0x62: Out of handles
- - 0x63: Invalid operation
- - 0x64: Insufficient resources
- - 0x65: Insufficient encryption key size
- - 0x66: Characteristic already exist
- - 0x82: No valid slot
- - 0x83: Short window
- - 0x84: New interval failed
- - 0x85: Too large interval
- - 0x86: Slot length failed
+ * @param Error_Code Indicates whether the procedure completed with an error or was successful (see "Status error codes" section)
* @retval None
*/
WEAK_FUNCTION(void aci_gatt_proc_complete_event(uint16_t Connection_Handle,
@@ -1132,6 +972,23 @@ WEAK_FUNCTION(void aci_gatt_prepare_write_permit_req_event(uint16_t Connection_H
uint8_t Data_Length,
uint8_t Data[]));
/**
+ * @brief When it is enabled with ACI_GATT_SET_EVENT_MASK, this event is generated instead of ACI_ATT_READ_RESP_EVENT / ACI_ATT_READ_BLOB_RESP_EVENT / ACI_ATT_READ_MULTIPLE_RESP_EVENT.
+This event should be used instead of those events when ATT_MTU > (BLE_EVT_MAX_PARAM_LEN - 4)
+i.e. ATT_MTU > 251 for BLE_EVT_MAX_PARAM_LEN default value.
+
+ * @param Connection_Handle Connection handle related to the response.
+ * Values:
+ - 0x0000 ... 0x0EFF
+ * @param Offset Bits 14-0: offset in octets from which Attribute_Value data starts. Bit 15 is used as flag: when set to 1 it indicates that more data are to come (fragmented event in case of long attribute data).
+ * @param Event_Data_Length Length of following data
+ * @param Attribute_Value The value of the attribute(s).
+ * @retval None
+*/
+WEAK_FUNCTION(void aci_gatt_read_ext_event(uint16_t Connection_Handle,
+ uint16_t Offset,
+ uint16_t Event_Data_Length,
+ uint8_t Attribute_Value[]));
+/**
* @brief When it is enabled with ACI_GATT_SET_EVENT_MASK and when an indication is received from the server, this event is generated instead of ACI_GATT_INDICATION_EVENT.
This event should be used instead of ACI_GATT_INDICATION_EVENT when ATT_MTU > (BLE_EVT_MAX_PARAM_LEN - 4)
i.e. ATT_MTU > 251 for BLE_EVT_MAX_PARAM_LEN default value.
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.h b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.h
index 0e0d1de7d..3f0bfafe9 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.h
@@ -1,7 +1,7 @@
/******************************************************************************
* @file ble_gap_aci.h
* @author MCD Application Team
- * @date 19 July 2019
+ * @date 06 November 2019
* @brief Header file for STM32WB (gap_aci)
* Auto-generated file: do not edit!
******************************************************************************
@@ -375,7 +375,8 @@ tBleStatus aci_gap_authorization_resp(uint16_t Connection_Handle,
All the standard GAP characteristics will also be added:
- Device Name
- Appearance
-- Peripheral Preferred Connection Parameters (peripheral role only)
+- Peripheral Preferred Connection Parameters (peripheral role only).
+Note that if the Peripheral Preferred Connection Parameters characteristic is added, its handle is equal to the Appearance characteristic handle plus 2.
* @param Role Bitmap of allowed roles.
* Flags:
- 0x01: Peripheral
@@ -531,8 +532,7 @@ tBleStatus aci_gap_set_event_mask(uint16_t GAP_Evt_Mask);
/**
* @brief Add addresses of bonded devices into the controller's whitelist.
-The command will return an error if there are no devices in the database or if it was
-unable to add the device into the whitelist.
+The command returns an error if it was unable to add the bonded devices into the whitelist.
* @retval Value indicating success or error code.
*/
tBleStatus aci_gap_configure_whitelist(void);
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c
index 0abb4cc01..27d4275c4 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c
+++ b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c
@@ -1,7 +1,7 @@
/******************************************************************************
* @file ble_gatt_aci.c
* @author MCD Application Team
- * @date 23 May 2019
+ * @date 06 September 2019
* @brief Source file for ble api STM32WB (gatt_aci)
* Auto-generated file: do not edit!
******************************************************************************
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.h b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.h
index 320a51fc3..98c7e1baa 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.h
@@ -1,7 +1,7 @@
/******************************************************************************
* @file ble_gatt_aci.h
* @author MCD Application Team
- * @date 14 June 2019
+ * @date 08 October 2019
* @brief Header file for STM32WB (gatt_aci)
* Auto-generated file: do not edit!
******************************************************************************
@@ -269,6 +269,7 @@ tBleStatus aci_gatt_del_include_service(uint16_t Serv_Handle,
- 0x00010000: ACI_GATT_PROC_COMPLETE_EVENT
- 0x00020000: ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT
- 0x00040000: ACI_GATT_TX_POOL_AVAILABLE_EVENT
+ - 0x00100000: ACI_GATT_READ_EXT_EVENT
- 0x00200000: ACI_GATT_INDICATION_EXT_EVENT
- 0x00400000: ACI_GATT_NOTIFICATION_EXT_EVENT
* @retval Value indicating success or error code.
@@ -688,13 +689,12 @@ tBleStatus aci_gatt_read_char_desc(uint16_t Connection_Handle,
uint16_t Attr_Handle);
/**
- * @brief Start the procedure to write a characteristic value without waiting for any response from the
-server. No events are generated after this command is executed.
+ * @brief Start the procedure to write a characteristic value without waiting for any response from the server. No events are generated after this command is executed. The length of the value to be written must not exceed (ATT_MTU - 3); it must also not exceed (BLE_EVT_MAX_PARAM_LEN - 5) i.e. 250 for BLE_EVT_MAX_PARAM_LEN default value.
* @param Connection_Handle Connection handle for which the command is given.
* Values:
- 0x0000 ... 0x0EFF
* @param Attr_Handle Handle of the characteristic value to be written
- * @param Attribute_Val_Length Length of the value to be written (maximum value is ATT_MTU - 3)
+ * @param Attribute_Val_Length Length of the value to be written
* @param Attribute_Val Value to be written
* @retval Value indicating success or error code.
*/
@@ -706,12 +706,12 @@ tBleStatus aci_gatt_write_without_resp(uint16_t Connection_Handle,
/**
* @brief Start a signed write without response from the server.
The procedure is used to write a characteristic value with an authentication signature without waiting
-for any response from the server. It cannot be used when the link is encrypted.
+for any response from the server. It cannot be used when the link is encrypted. The length of the value to be written must not exceed (ATT_MTU - 15); it must also not exceed (BLE_EVT_MAX_PARAM_LEN - 5) i.e. 250 for BLE_EVT_MAX_PARAM_LEN default value.
* @param Connection_Handle Connection handle for which the command is given.
* Values:
- 0x0000 ... 0x0EFF
* @param Attr_Handle Handle of the characteristic value to be written
- * @param Attribute_Val_Length Length of the value to be written (up to ATT_MTU - 13)
+ * @param Attribute_Val_Length Length of the value to be written
* @param Attribute_Val Value to be written
* @retval Value indicating success or error code.
*/
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.h b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.h
index 915fd8519..4406208a7 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.h
@@ -1,7 +1,7 @@
/******************************************************************************
* @file ble_hal_aci.h
* @author MCD Application Team
- * @date 23 May 2019
+ * @date 06 November 2019
* @brief Header file for STM32WB (hal_aci)
* Auto-generated file: do not edit!
******************************************************************************
@@ -41,17 +41,13 @@ which has to be written. The valid offsets are:
- 0x06: DIV used to derive CSRK, Value length to be written: 2 bytes
- 0x08: Encryption root key used to derive LTK and CSRK, Value length to be written: 16 bytes
- 0x18: Identity root key used to derive LTK and CSRK, Value length to be written: 16 bytes
-- 0x2C: Link layer without host (for certification purposes), Value length to be written: 1 byte
- 0x2E: Static Random Address: 6 bytes
-- 0x2F: Disable watchdog (1=disable, 0=enable). Value length to be written: 1 byte
* Values:
- 0x00: CONFIG_DATA_PUBADDR_OFFSET
- 0x06: CONFIG_DATA_DIV_OFFSET
- 0x08: CONFIG_DATA_ER_OFFSET
- 0x18: CONFIG_DATA_IR_OFFSET
- - 0x2C: LL_WITHOUT_HOST
- 0x2E: CONFIG_DATA_RANDOM_ADDRESS_WR
- - 0x2F: CONFIG_DATA_WATCHDOG_DISABLE
* @param Length Length of data to be written
* @param Value Data to be written
* @retval Value indicating success or error code.
@@ -70,16 +66,12 @@ which has to be read. The valid offsets are:
* 0x06: DIV used to derive CSRK, Value length returned: 2 bytes
* 0x08: Encryption root key used to derive LTK and CSRK, Value length returned: 16 bytes
* 0x18: Identity root key used to derive LTK and CSRK, Value length returned: 16 bytes
-* 0x2C: Link layer without host (for certification purposes), Value length returned: 1 byte
-* 0x2F: Disable watchdog (1=disabled, 0=enable). Value length returned: 1 byte
* 0x80: Static random address. Value length returned: 6 bytes (read-only)
* Values:
- 0x00: CONFIG_DATA_PUBADDR_OFFSET
- 0x06: CONFIG_DATA_DIV_OFFSET
- 0x08: CONFIG_DATA_ER_OFFSET
- 0x18: CONFIG_DATA_IR_OFFSET
- - 0x2C: LL_WITHOUT_HOST
- - 0x2F: CONFIG_DATA_WATCHDOG_DISABLE
- 0x80: CONFIG_DATA_RANDOM_ADDRESS
* @param[out] Data_Length Length of Data in octets
* @param[out] Data Data field associated with Offset parameter
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_types.h b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_types.h
index 9f8b8e719..a1c3db62a 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_types.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_types.h
@@ -1,7 +1,7 @@
/******************************************************************************
* @file ble_types.h
* @author MCD Application Team
- * @date 27 May 2019
+ * @date 06 September 2019
* @brief Auto-generated file: do not edit!
******************************************************************************
* @attention
@@ -2572,6 +2572,14 @@ typedef PACKED(struct)
typedef PACKED(struct)
{
uint16_t Connection_Handle;
+ uint16_t Offset;
+ uint16_t Event_Data_Length;
+ uint8_t Attribute_Value[((BLE_EVT_MAX_PARAM_LEN - 2) - 6)/sizeof(uint8_t)];
+} aci_gatt_read_ext_event_rp0;
+
+typedef PACKED(struct)
+{
+ uint16_t Connection_Handle;
uint16_t Attribute_Handle;
uint16_t Offset;
uint16_t Attribute_Value_Length;
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/ble_bufsize.h b/Middlewares/ST/STM32_WPAN/ble/core/ble_bufsize.h
index 3135910c1..45dfc2a81 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/ble_bufsize.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/ble_bufsize.h
@@ -102,7 +102,7 @@
* - a part, that may be considered "fixed", i.e. independent from the above
* mentioned parameters.
*/
-#define BLE_FIXED_BUFFER_SIZE_BYTES(llo) ((llo) ? 6064 : 6504)
+#define BLE_FIXED_BUFFER_SIZE_BYTES(llo) ((llo) ? 6104 : 6544)
/*
* BLE_PER_LINK_SIZE_BYTES: additional memory size used per link
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/ble_defs.h b/Middlewares/ST/STM32_WPAN/ble/core/ble_defs.h
index 2c9a00f5a..675a1c689 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/ble_defs.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/ble_defs.h
@@ -22,33 +22,87 @@
/* ------------------------------------------------------------------------- */
+/* ACI vendor specific event codes */
+
+/* ACI GAP events */
+#define ACI_GAP_LIMITED_DISCOVERABLE_VSEVT_CODE 0x0400
+#define ACI_GAP_PAIRING_COMPLETE_VSEVT_CODE 0x0401
+#define ACI_GAP_PASS_KEY_REQ_VSEVT_CODE 0x0402
+#define ACI_GAP_AUTHORIZATION_REQ_VSEVT_CODE 0x0403
+#define ACI_GAP_SLAVE_SECURITY_INITIATED_VSEVT_CODE 0x0404
+#define ACI_GAP_BOND_LOST_VSEVT_CODE 0x0405
+#define ACI_GAP_PROC_COMPLETE_VSEVT_CODE 0x0407
+#define ACI_GAP_ADDR_NOT_RESOLVED_VSEVT_CODE 0x0408
+#define ACI_GAP_NUMERIC_COMPARISON_VALUE_VSEVT_CODE 0x0409
+#define ACI_GAP_KEYPRESS_NOTIFICATION_VSEVT_CODE 0x040A
+
+/* ACI GATT/ATT events */
+#define ACI_GATT_ATTRIBUTE_MODIFIED_VSEVT_CODE 0x0C01
+#define ACI_GATT_PROC_TIMEOUT_VSEVT_CODE 0x0C02
+#define ACI_ATT_EXCHANGE_MTU_RESP_VSEVT_CODE 0x0C03
+#define ACI_ATT_FIND_INFO_RESP_VSEVT_CODE 0x0C04
+#define ACI_ATT_FIND_BY_TYPE_VALUE_RESP_VSEVT_CODE 0x0C05
+#define ACI_ATT_READ_BY_TYPE_RESP_VSEVT_CODE 0x0C06
+#define ACI_ATT_READ_RESP_VSEVT_CODE 0x0C07
+#define ACI_ATT_READ_BLOB_RESP_VSEVT_CODE 0x0C08
+#define ACI_ATT_READ_MULTIPLE_RESP_VSEVT_CODE 0x0C09
+#define ACI_ATT_READ_BY_GROUP_TYPE_RESP_VSEVT_CODE 0x0C0A
+#define ACI_ATT_PREPARE_WRITE_RESP_VSEVT_CODE 0x0C0C
+#define ACI_ATT_EXEC_WRITE_RESP_VSEVT_CODE 0x0C0D
+#define ACI_GATT_INDICATION_VSEVT_CODE 0x0C0E
+#define ACI_GATT_NOTIFICATION_VSEVT_CODE 0x0C0F
+#define ACI_GATT_PROC_COMPLETE_VSEVT_CODE 0x0C10
+#define ACI_GATT_ERROR_RESP_VSEVT_CODE 0x0C11
+#define ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_VSEVT_CODE 0x0C12
+#define ACI_GATT_WRITE_PERMIT_REQ_VSEVT_CODE 0x0C13
+#define ACI_GATT_READ_PERMIT_REQ_VSEVT_CODE 0x0C14
+#define ACI_GATT_READ_MULTI_PERMIT_REQ_VSEVT_CODE 0x0C15
+#define ACI_GATT_TX_POOL_AVAILABLE_VSEVT_CODE 0x0C16
+#define ACI_GATT_SERVER_CONFIRMATION_VSEVT_CODE 0x0C17
+#define ACI_GATT_PREPARE_WRITE_PERMIT_REQ_VSEVT_CODE 0x0C18
+#define ACI_GATT_READ_EXT_VSEVT_CODE 0x0C1D
+#define ACI_GATT_INDICATION_EXT_VSEVT_CODE 0x0C1E
+#define ACI_GATT_NOTIFICATION_EXT_VSEVT_CODE 0x0C1F
+
+/* ACI L2CAP events */
+#define ACI_L2CAP_CONNECTION_UPDATE_RESP_VSEVT_CODE 0x0800
+#define ACI_L2CAP_PROC_TIMEOUT_VSEVT_CODE 0x0801
+#define ACI_L2CAP_CONNECTION_UPDATE_REQ_VSEVT_CODE 0x0802
+#define ACI_L2CAP_COMMAND_REJECT_VSEVT_CODE 0x080A
+
+/* ACI HAL events */
+#define ACI_HAL_END_OF_RADIO_ACTIVITY_VSEVT_CODE 0x0004
+#define ACI_HAL_SCAN_REQ_REPORT_VSEVT_CODE 0x0005
+#define ACI_HAL_FW_ERROR_VSEVT_CODE 0x0006
+
+
+/* ------------------------------------------------------------------------- */
/* Status codes */
#define BLE_STATUS_SUCCESS 0x00
+#define BLE_STATUS_SEC_UNKNOWN_CONNECTION_ID 0x40
#define BLE_STATUS_FAILED 0x41
#define BLE_STATUS_INVALID_PARAMS 0x42
#define BLE_STATUS_BUSY 0x43
-#define BLE_STATUS_INVALID_LEN_PDU 0x44
#define BLE_STATUS_PENDING 0x45
#define BLE_STATUS_NOT_ALLOWED 0x46
#define BLE_STATUS_ERROR 0x47
-#define BLE_STATUS_ADDR_NOT_RESOLVED 0x48
+#define BLE_STATUS_OUT_OF_MEMORY 0x48
#define BLE_STATUS_INVALID_CID 0x50
-#define TIMER_NOT_VALID_LAYER 0x54
-#define TIMER_INSUFFICIENT_RESOURCES 0x55
+#define BLE_STATUS_DEV_IN_BLACKLIST 0x59
#define BLE_STATUS_CSRK_NOT_FOUND 0x5A
#define BLE_STATUS_IRK_NOT_FOUND 0x5B
#define BLE_STATUS_DEV_NOT_FOUND_IN_DB 0x5C
#define BLE_STATUS_SEC_DB_FULL 0x5D
#define BLE_STATUS_DEV_NOT_BONDED 0x5E
-#define BLE_STATUS_DEV_IN_BLACKLIST 0x5F
+#define BLE_STATUS_INSUFFICIENT_ENC_KEYSIZE 0x5F
#define BLE_STATUS_INVALID_HANDLE 0x60
-#define BLE_STATUS_INVALID_PARAMETER 0x61
-#define BLE_STATUS_OUT_OF_HANDLE 0x62
-#define BLE_STATUS_INVALID_OPERATION 0x63
+#define BLE_STATUS_OUT_OF_HANDLE 0x61
+#define BLE_STATUS_INVALID_OPERATION 0x62
+#define BLE_STATUS_CHARAC_ALREADY_EXISTS 0x63
#define BLE_STATUS_INSUFFICIENT_RESOURCES 0x64
-#define BLE_INSUFFICIENT_ENC_KEYSIZE 0x65
-#define BLE_STATUS_CHARAC_ALREADY_EXISTS 0x66
+#define BLE_STATUS_SEC_PERMISSION_ERROR 0x65
+#define BLE_STATUS_ADDR_NOT_RESOLVED 0x70
/* Returned when no valid slots are available
* (e.g. when there are no available state machines).
@@ -84,8 +138,6 @@
* Library Error Codes
*/
#define BLE_STATUS_TIMEOUT 0xFF
-#define BLE_STATUS_PROFILE_ALREADY_INITIALIZED 0xF0
-#define BLE_STATUS_NULL_PARAM 0xF1
/* ------------------------------------------------------------------------- */
@@ -153,6 +205,60 @@
#define FLAG_BIT_LE_BR_EDR_HOST 0x10
+/* Appearance values
+ */
+#define GAP_APPEARANCE_UNKNOWN 0x0000
+#define GAP_APPEARANCE_GENERIC_PHONE 0x0040
+#define GAP_APPEARANCE_GENERIC_COMPUTER 0x0080
+#define GAP_APPEARANCE_GENERIC_WATCH 0x00C0
+#define GAP_APPEARANCE_WATCH_SPORT_WATCH 0x00C1
+#define GAP_APPEARANCE_GENERIC_CLOCK 0x0100
+#define GAP_APPEARANCE_GENERIC_DISPLAY 0x0140
+#define GAP_APPEARANCE_GENERIC_REMOTE_CONTROL 0x0180
+#define GAP_APPEARANCE_GENERIC_EYE_GLASSES 0x01C0
+#define GAP_APPEARANCE_GENERIC_TAG 0x0200
+#define GAP_APPEARANCE_GENERIC_KEYRING 0x0240
+#define GAP_APPEARANCE_GENERIC_MEDIA_PLAYER 0x0280
+#define GAP_APPEARANCE_GENERIC_BARCODE_SCANNER 0x02C0
+#define GAP_APPEARANCE_GENERIC_THERMOMETER 0x0300
+#define GAP_APPEARANCE_THERMOMETER_EAR 0x0301
+#define GAP_APPEARANCE_GENERIC_HEART_RATE_SENSOR 0x0340
+#define GAP_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT 0x0341
+#define GAP_APPEARANCE_GENERIC_BLOOD_PRESSURE 0x0380
+#define GAP_APPEARANCE_BLOOD_PRESSURE_ARM 0x0381
+#define GAP_APPEARANCE_BLOOD_PRESSURE_WRIST 0x0382
+#define GAP_APPEARANCE_HUMAN_INTERFACE_DEVICE 0x03C0
+#define GAP_APPEARANCE_KEYBOARD 0x03C1
+#define GAP_APPEARANCE_MOUSE 0x03C2
+#define GAP_APPEARANCE_JOYSTICK 0x03C3
+#define GAP_APPEARANCE_GAMEPAD 0x03C4
+#define GAP_APPEARANCE_DIGITIZER_TABLET 0x03C5
+#define GAP_APPEARANCE_CARD_READER 0x03C6
+#define GAP_APPEARANCE_DIGITAL_PEN 0x03C7
+#define GAP_APPEARANCE_BARCODE_SCANNER 0x03C8
+#define GAP_APPEARANCE_GENERIC_GLUCOSE_METER 0x0400
+#define GAP_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR 0x0440
+#define GAP_APPEARANCE_RUNNING_WALKING_IN_SHOE 0x0441
+#define GAP_APPEARANCE_RUNNING_WALKING_ON_SHOE 0x0442
+#define GAP_APPEARANCE_RUNNING_WALKING_ON_HIP 0x0443
+#define GAP_APPEARANCE_GENERIC_CYCLING 0x0480
+#define GAP_APPEARANCE_CYCLING_CYCLING_COMPUTER 0x0481
+#define GAP_APPEARANCE_CYCLING_SPEED_SENSOR 0x0482
+#define GAP_APPEARANCE_CYCLING_CADENCE_SENSOR 0x0483
+#define GAP_APPEARANCE_CYCLING_POWER_SENSOR 0x0484
+#define GAP_APPEARANCE_CYCLING_SPEED_AND_CADENCE_SENSOR 0x0485
+#define GAP_APPEARANCE_GENERIC_PULSE_OXYMETER 0x0C40
+#define GAP_APPEARANCE_FINGERTIP 0x0C41
+#define GAP_APPEARANCE_WRIST_WORN 0x0C42
+#define GAP_APPEARANCE_GENERIC_WEIGHT_SCALE 0x0C80
+#define GAP_APPEARANCE_GENERIC_OUTDOOR_SPORT_ACTIVITY 0x1440
+#define GAP_APPEARANCE_LOCATION_DISPLAY_DEVICE 0x1441
+#define GAP_APPEARANCE_LOCATION_AND_NAVIGATION_DISPLAY_DEVICE 0x1442
+#define GAP_APPEARANCE_LOCATION_POD 0x1443
+#define GAP_APPEARANCE_LOCATION_AND_NAVIGATION_POD 0x1444
+#define GAP_APPEARANCE_GENERIC_ENVIRONMENTAL_SENSOR 0x1640
+
+
/* Privacy flag values
*/
#define PRIVACY_ENABLED 0x02
@@ -309,6 +415,7 @@
/* Characteristic properties.
*/
+#define CHAR_PROP_NONE 0x00
#define CHAR_PROP_BROADCAST 0x01
#define CHAR_PROP_READ 0x02
#define CHAR_PROP_WRITE_WITHOUT_RESP 0x04
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/ble_legacy.h b/Middlewares/ST/STM32_WPAN/ble/core/ble_legacy.h
index 297687a5f..6569de531 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/ble_legacy.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/ble_legacy.h
@@ -107,6 +107,16 @@ typedef PACKED(struct) _evt_blue_aci
#define EVT_BLUE_L2CAP_CONNECTION_UPDATE_RESP (0x0800)
+/* Macro to get RSSI from advertising report #0.
+ * "p" must be a pointer to the event parameters buffer
+ */
+#define HCI_LE_ADVERTISING_REPORT_RSSI_0(p) \
+ (*(int8_t*)((&((hci_le_advertising_report_event_rp0*)(p))-> \
+ Advertising_Report[0].Length_Data) + 1 + \
+ ((hci_le_advertising_report_event_rp0*)(p))-> \
+ Advertising_Report[0].Length_Data))
+
+
/* ------------------------------------------------------------------------- */
@@ -158,9 +168,18 @@ typedef uint8_t tBDAddr[6];
/* ------------------------------------------------------------------------- */
+/* Obsolete error codes
+ */
+#define BLE_STATUS_INVALID_LEN_PDU 0x44
#define FLASH_READ_FAILED 0x49
#define FLASH_WRITE_FAILED 0x4A
#define FLASH_ERASE_FAILED 0x4B
+#define TIMER_NOT_VALID_LAYER 0x54
+#define TIMER_INSUFFICIENT_RESOURCES 0x55
+#define BLE_STATUS_INVALID_PARAMETER 0x61
+#define BLE_INSUFFICIENT_ENC_KEYSIZE 0x65
+#define BLE_STATUS_PROFILE_ALREADY_INITIALIZED 0xF0
+#define BLE_STATUS_NULL_PARAM 0xF1
/* ------------------------------------------------------------------------- */
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/ble_std.h b/Middlewares/ST/STM32_WPAN/ble/core/ble_std.h
index 269443bf3..6bfc25211 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/ble_std.h
+++ b/Middlewares/ST/STM32_WPAN/ble/core/ble_std.h
@@ -56,6 +56,19 @@
#define HCI_LE_META_EVT_CODE 0x3E
#define HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE 0xFF
+/* HCI subevent code */
+#define HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE 0x01
+#define HCI_LE_ADVERTISING_REPORT_SUBEVT_CODE 0x02
+#define HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE 0x03
+#define HCI_LE_READ_REMOTE_FEATURES_COMPLETE_SUBEVT_CODE 0x04
+#define HCI_LE_LONG_TERM_KEY_REQUEST_SUBEVT_CODE 0x05
+#define HCI_LE_DATA_LENGTH_CHANGE_SUBEVT_CODE 0x07
+#define HCI_LE_READ_LOCAL_P256_PUBLIC_KEY_COMPLETE_SUBEVT_CODE 0x08
+#define HCI_LE_GENERATE_DHKEY_COMPLETE_SUBEVT_CODE 0x09
+#define HCI_LE_ENHANCED_CONNECTION_COMPLETE_SUBEVT_CODE 0x0A
+#define HCI_LE_DIRECT_ADVERTISING_REPORT_SUBEVT_CODE 0x0B
+#define HCI_LE_PHY_UPDATE_COMPLETE_SUBEVT_CODE 0x0C
+
/* HCI error code */
#define HCI_SUCCESS_ERR_CODE 0x00
#define HCI_UNKNOWN_HCI_COMMAND_ERR_CODE 0x01
diff --git a/Middlewares/ST/STM32_WPAN/ble/core/doc/STM32WB_BLE_Wireless_Interface.html b/Middlewares/ST/STM32_WPAN/ble/core/doc/STM32WB_BLE_Wireless_Interface.html
index ea0bccc7c..467f5f8d3 100644
--- a/Middlewares/ST/STM32_WPAN/ble/core/doc/STM32WB_BLE_Wireless_Interface.html
+++ b/Middlewares/ST/STM32_WPAN/ble/core/doc/STM32WB_BLE_Wireless_Interface.html
@@ -636,7 +636,7 @@ padding-right: 0px;
}
td.gsib_a {padding:0px;padding-top:4px;padding-left:3px;}
-</style></head><body><font face="arial"><h1>STM32WB BLE Wireless Interface</h1><p>This document describes the STM32WB BLE Application Commands Interface (ACI) and Host Commands Interface (HCI).</p><p><a href="https://www.st.com/en/microcontrollers/stm32wb-series.html">STM32WB Series website</a></p><h2>Revision history</h2><p>December 2018 - Rev 1.0 - Rational: 1st Release for interface 1.0 </p><p>February 2019 - Rev 1.1 - Modified hci_hardware_event comments</p><p>March 2019 - Rev 1.2 - Removed hal datapump event documentation </p><p>March 2019 - Rev 1.3 - Modification ACI_HAL_FW_ERROR_EVENT error code</p><p>March 2019 - Rev 1.4 - Change default mask of HCI_SET_EVENT_MASK </p><p>May 2019 - Rev 1.5 - ACI_GATT_NOTIFICATION_EXT_EVENT added</p><p>June 2019 - Rev 1.6 - Change comment on usage of Char Handles in multiple ACI_GATT commands + Added ACI_GATT_NOTIFICATION_EXT_EVENT</p><p>June 2019 - Rev 1.7 - Change descriptions of ACI_ATT_READ_BY_TYPE_REQ and ACI_GATT_READ_USING_CHAR_UUID</p><p>July 2019 - Rev 1.8 - Reworked error codes section + Added GAP_ prefix to the GAP procedure bitmap definitions</p><h2>Contents</h2><p><a href="#HCI/ACI commands_anchor">HCI/ACI commands</a></p><p><a href="#HCI/ACI events_anchor">HCI/ACI events</a></p><p><a href="#Status error codes_anchor">Status error codes</a></p><h1><a name="HCI/ACI commands_anchor">HCI/ACI commands</a></h1><p><a href="#HCI commands_anchor">HCI commands</a></p><p><a href="#HCI TESTING commands_anchor">HCI TESTING commands</a></p><p><a href="#ACI HAL commands_anchor">ACI HAL commands</a></p><p><a href="#ACI GAP commands_anchor">ACI GAP commands</a></p><p><a href="#ACI GATT/ATT commands_anchor">ACI GATT/ATT commands</a></p><p><a href="#ACI L2CAP commands_anchor">ACI L2CAP commands</a></p><h2><a name="HCI commands_anchor">HCI commands</a></h2><h3>HCI commands</h3><table width="800" border="1" class="reference">
+</style></head><body><font face="arial"><h1>STM32WB BLE Wireless Interface</h1><p>This document describes the STM32WB BLE Application Commands Interface (ACI) and Host Commands Interface (HCI).</p><p><a href="https://www.st.com/en/microcontrollers/stm32wb-series.html">STM32WB Series website</a></p><h2>Revision history</h2><p>December 2018 - Rev 1.0 - First release for interface 1.0 </p><p>February 2019 - Rev 1.1 - Modified HCI_HARDWARE_ERROR_EVENT comment</p><p>March 2019 - Rev 1.2 - Removed unused event documentation </p><p>March 2019 - Rev 1.3 - Modification ACI_HAL_FW_ERROR_EVENT error code</p><p>March 2019 - Rev 1.4 - Changed default mask of HCI_SET_EVENT_MASK </p><p>May 2019 - Rev 1.5 - ACI_GATT_NOTIFICATION_EXT_EVENT added</p><p>June 2019 - Rev 1.6 - Changed comment on usage of Char Handles in multiple ACI_GATT commands; Added ACI_GATT_INDICATION_EXT_EVENT</p><p>June 2019 - Rev 1.7 - Changed descriptions of ACI_ATT_READ_BY_TYPE_REQ and ACI_GATT_READ_USING_CHAR_UUID</p><p>July 2019 - Rev 1.8 - Reworked error codes section; Added GAP_ prefix to the GAP procedure bitmap definitions</p><p>September 2019 - Rev 1.9 - Added ACI_GATT_READ_EXT_EVENT; Modified ACI_GAP_CONFIGURE_WHITELIST comment</p><p>October 2019 - Rev 1.10 - Changed descriptions of ACI_GATT_WRITE_WITHOUT_RESP and ACI_GATT_SIGNED_WRITE_WITHOUT_RESP; Removed obsolete configuration data elements</p><p>November 2019 - Rev 1.11 - Completed description of ACI_GAP_INIT; Added specific pairing status definitions</p><p>November 2019 - Rev 1.12 - Fixed status error codes</p><h2>Contents</h2><p><a href="#HCI/ACI commands_anchor">HCI/ACI commands</a></p><p><a href="#HCI/ACI events_anchor">HCI/ACI events</a></p><p><a href="#Status error codes_anchor">Status error codes</a></p><h1><a name="HCI/ACI commands_anchor">HCI/ACI commands</a></h1><p><a href="#HCI commands_anchor">HCI commands</a></p><p><a href="#HCI TESTING commands_anchor">HCI TESTING commands</a></p><p><a href="#ACI HAL commands_anchor">ACI HAL commands</a></p><p><a href="#ACI GAP commands_anchor">ACI GAP commands</a></p><p><a href="#ACI GATT/ATT commands_anchor">ACI GATT/ATT commands</a></p><p><a href="#ACI L2CAP commands_anchor">ACI L2CAP commands</a></p><h2><a name="HCI commands_anchor">HCI commands</a></h2><h3>HCI commands</h3><table width="800" border="1" class="reference">
<tr><th>Command</th><th>OpCode</th></tr>
<tr><td><a href="#HCI_DISCONNECT_anchor">HCI_DISCONNECT</a></td><td><p>0x0406</p>
</td></tr>
@@ -2545,11 +2545,9 @@ which has to be written. The valid offsets are:</p>
<li>0x06: DIV used to derive CSRK, Value length to be written: 2 bytes</li>
<li>0x08: Encryption root key used to derive LTK and CSRK, Value length to be written: 16 bytes</li>
<li>0x18: Identity root key used to derive LTK and CSRK, Value length to be written: 16 bytes</li>
-<li>0x2C: Link layer without host (for certification purposes), Value length to be written: 1 byte</li>
<li>0x2E: Static Random Address: 6 bytes</li>
-<li>0x2F: Disable watchdog (1=disable, 0=enable). Value length to be written: 1 byte</li>
</ul>
-</td><td><li>0x00: CONFIG_DATA_PUBADDR_OFFSET</li><li>0x06: CONFIG_DATA_DIV_OFFSET</li><li>0x08: CONFIG_DATA_ER_OFFSET</li><li>0x18: CONFIG_DATA_IR_OFFSET</li><li>0x2C: LL_WITHOUT_HOST</li><li>0x2E: CONFIG_DATA_RANDOM_ADDRESS_WR</li><li>0x2F: CONFIG_DATA_WATCHDOG_DISABLE</li></td></tr>
+</td><td><li>0x00: CONFIG_DATA_PUBADDR_OFFSET</li><li>0x06: CONFIG_DATA_DIV_OFFSET</li><li>0x08: CONFIG_DATA_ER_OFFSET</li><li>0x18: CONFIG_DATA_IR_OFFSET</li><li>0x2E: CONFIG_DATA_RANDOM_ADDRESS_WR</li></td></tr>
<tr><td><p>Length</p>
</td><td><p>1</p>
</td><td><p>Length of data to be written</p>
@@ -2576,11 +2574,9 @@ which has to be read. The valid offsets are:</p>
<li>0x06: DIV used to derive CSRK, Value length returned: 2 bytes</li>
<li>0x08: Encryption root key used to derive LTK and CSRK, Value length returned: 16 bytes</li>
<li>0x18: Identity root key used to derive LTK and CSRK, Value length returned: 16 bytes</li>
-<li>0x2C: Link layer without host (for certification purposes), Value length returned: 1 byte</li>
-<li>0x2F: Disable watchdog (1=disabled, 0=enable). Value length returned: 1 byte</li>
<li>0x80: Static random address. Value length returned: 6 bytes (read-only)</li>
</ul>
-</td><td><li>0x00: CONFIG_DATA_PUBADDR_OFFSET</li><li>0x06: CONFIG_DATA_DIV_OFFSET</li><li>0x08: CONFIG_DATA_ER_OFFSET</li><li>0x18: CONFIG_DATA_IR_OFFSET</li><li>0x2C: LL_WITHOUT_HOST</li><li>0x2F: CONFIG_DATA_WATCHDOG_DISABLE</li><li>0x80: CONFIG_DATA_RANDOM_ADDRESS</li></td></tr>
+</td><td><li>0x00: CONFIG_DATA_PUBADDR_OFFSET</li><li>0x06: CONFIG_DATA_DIV_OFFSET</li><li>0x08: CONFIG_DATA_ER_OFFSET</li><li>0x18: CONFIG_DATA_IR_OFFSET</li><li>0x80: CONFIG_DATA_RANDOM_ADDRESS</li></td></tr>
</table><h3>Output parameters</h3><table width="800" border="1" class="reference">
<tr><th>Parameter</th><th>Size</th><th>Description</th><th>Possible values</th></tr>
<tr><td><p>Status</p>
@@ -3284,7 +3280,8 @@ response to <a href="#ACI_GAP_AUTHORIZATION_REQ_EVENT_anchor">ACI_GAP_AUTHORIZAT
All the standard GAP characteristics will also be added:
- Device Name
- Appearance
-- Peripheral Preferred Connection Parameters (peripheral role only)</p><h3>Input parameters</h3><table width="800" border="1" class="reference">
+- Peripheral Preferred Connection Parameters (peripheral role only).
+Note that if the Peripheral Preferred Connection Parameters characteristic is added, its handle is equal to the Appearance characteristic handle plus 2.</p><h3>Input parameters</h3><table width="800" border="1" class="reference">
<tr><th>Parameter</th><th>Size</th><th>Description</th><th>Possible values</th></tr>
<tr><td><p>Role</p>
</td><td><p>1</p>
@@ -3460,8 +3457,7 @@ present.</p><h3>Input parameters</h3><table width="800" border="1" class="refere
</td><td><p>Status error code.</p>
</td><td></td></tr>
</table><h3>Events generated</h3><li><a href="#HCI_COMMAND_COMPLETE_EVENT_anchor">HCI_COMMAND_COMPLETE_EVENT</a></li><h2><a name="ACI_GAP_CONFIGURE_WHITELIST_anchor">ACI_GAP_CONFIGURE_WHITELIST</a></h2><h3>Description</h3><p>Add addresses of bonded devices into the controller's whitelist.
-The command will return an error if there are no devices in the database or if it was
-unable to add the device into the whitelist.</p><h3>Input parameters</h3><p>None</p><h3>Output parameters</h3><table width="800" border="1" class="reference">
+The command returns an error if it was unable to add the bonded devices into the whitelist.</p><h3>Input parameters</h3><p>None</p><h3>Output parameters</h3><table width="800" border="1" class="reference">
<tr><th>Parameter</th><th>Size</th><th>Description</th><th>Possible values</th></tr>
<tr><td><p>Status</p>
</td><td><p>1</p>
@@ -4756,7 +4752,7 @@ specified for the attribute while adding the characteristic.</p>
<tr><td><p>GATT_Evt_Mask</p>
</td><td><p>4</p>
</td><td><p>GATT/ATT event mask.</p>
-</td><td><li>0x00000001: ACI_GATT_ATTRIBUTE_MODIFIED_EVENT</li><li>0x00000002: ACI_GATT_PROC_TIMEOUT_EVENT</li><li>0x00000004: ACI_ATT_EXCHANGE_MTU_RESP_EVENT</li><li>0x00000008: ACI_ATT_FIND_INFO_RESP_EVENT</li><li>0x00000010: ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT</li><li>0x00000020: ACI_ATT_READ_BY_TYPE_RESP_EVENT</li><li>0x00000040: ACI_ATT_READ_RESP_EVENT</li><li>0x00000080: ACI_ATT_READ_BLOB_RESP_EVENT</li><li>0x00000100: ACI_ATT_READ_MULTIPLE_RESP_EVENT</li><li>0x00000200: ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT</li><li>0x00000800: ACI_ATT_PREPARE_WRITE_RESP_EVENT</li><li>0x00001000: ACI_ATT_EXEC_WRITE_RESP_EVENT</li><li>0x00002000: ACI_GATT_INDICATION_EVENT</li><li>0x00004000: ACI_GATT_NOTIFICATION_EVENT</li><li>0x00008000: ACI_GATT_ERROR_RESP_EVENT</li><li>0x00010000: ACI_GATT_PROC_COMPLETE_EVENT</li><li>0x00020000: ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT</li><li>0x00040000: ACI_GATT_TX_POOL_AVAILABLE_EVENT</li><li>0x00200000: ACI_GATT_INDICATION_EXT_EVENT</li><li>0x00400000: ACI_GATT_NOTIFICATION_EXT_EVENT</li></td></tr>
+</td><td><li>0x00000001: ACI_GATT_ATTRIBUTE_MODIFIED_EVENT</li><li>0x00000002: ACI_GATT_PROC_TIMEOUT_EVENT</li><li>0x00000004: ACI_ATT_EXCHANGE_MTU_RESP_EVENT</li><li>0x00000008: ACI_ATT_FIND_INFO_RESP_EVENT</li><li>0x00000010: ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT</li><li>0x00000020: ACI_ATT_READ_BY_TYPE_RESP_EVENT</li><li>0x00000040: ACI_ATT_READ_RESP_EVENT</li><li>0x00000080: ACI_ATT_READ_BLOB_RESP_EVENT</li><li>0x00000100: ACI_ATT_READ_MULTIPLE_RESP_EVENT</li><li>0x00000200: ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT</li><li>0x00000800: ACI_ATT_PREPARE_WRITE_RESP_EVENT</li><li>0x00001000: ACI_ATT_EXEC_WRITE_RESP_EVENT</li><li>0x00002000: ACI_GATT_INDICATION_EVENT</li><li>0x00004000: ACI_GATT_NOTIFICATION_EVENT</li><li>0x00008000: ACI_GATT_ERROR_RESP_EVENT</li><li>0x00010000: ACI_GATT_PROC_COMPLETE_EVENT</li><li>0x00020000: ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT</li><li>0x00040000: ACI_GATT_TX_POOL_AVAILABLE_EVENT</li><li>0x00100000: ACI_GATT_READ_EXT_EVENT</li><li>0x00200000: ACI_GATT_INDICATION_EXT_EVENT</li><li>0x00400000: ACI_GATT_NOTIFICATION_EXT_EVENT</li></td></tr>
</table><h3>Output parameters</h3><table width="800" border="1" class="reference">
<tr><th>Parameter</th><th>Size</th><th>Description</th><th>Possible values</th></tr>
<tr><td><p>Status</p>
@@ -5368,8 +5364,7 @@ Before procedure completion the response packet is given through <a href="#ACI_A
</td><td><p>1</p>
</td><td><p>Status error code.</p>
</td><td></td></tr>
-</table><h3>Events generated</h3><li><a href="#HCI_COMMAND_STATUS_EVENT_anchor">HCI_COMMAND_STATUS_EVENT</a></li><li><a href="#ACI_ATT_READ_RESP_EVENT_anchor">ACI_ATT_READ_RESP_EVENT</a></li><li><a href="#ACI_GATT_PROC_COMPLETE_EVENT_anchor">ACI_GATT_PROC_COMPLETE_EVENT</a></li><h2><a name="ACI_GATT_WRITE_WITHOUT_RESP_anchor">ACI_GATT_WRITE_WITHOUT_RESP</a></h2><h3>Description</h3><p>Start the procedure to write a characteristic value without waiting for any response from the
-server. No events are generated after this command is executed.</p><h3>Input parameters</h3><table width="800" border="1" class="reference">
+</table><h3>Events generated</h3><li><a href="#HCI_COMMAND_STATUS_EVENT_anchor">HCI_COMMAND_STATUS_EVENT</a></li><li><a href="#ACI_ATT_READ_RESP_EVENT_anchor">ACI_ATT_READ_RESP_EVENT</a></li><li><a href="#ACI_GATT_PROC_COMPLETE_EVENT_anchor">ACI_GATT_PROC_COMPLETE_EVENT</a></li><h2><a name="ACI_GATT_WRITE_WITHOUT_RESP_anchor">ACI_GATT_WRITE_WITHOUT_RESP</a></h2><h3>Description</h3><p>Start the procedure to write a characteristic value without waiting for any response from the server. No events are generated after this command is executed. The length of the value to be written must not exceed (ATT_MTU - 3); it must also not exceed (BLE_EVT_MAX_PARAM_LEN - 5) i.e. 250 for BLE_EVT_MAX_PARAM_LEN default value.</p><h3>Input parameters</h3><table width="800" border="1" class="reference">
<tr><th>Parameter</th><th>Size</th><th>Description</th><th>Possible values</th></tr>
<tr><td><p>Connection_Handle</p>
</td><td><p>2</p>
@@ -5381,7 +5376,7 @@ server. No events are generated after this command is executed.</p><h3>Input par
</td><td></tr>
<tr><td><p>Attribute_Val_Length</p>
</td><td><p>1</p>
-</td><td><p>Length of the value to be written (maximum value is ATT_MTU - 3)</p>
+</td><td><p>Length of the value to be written</p>
</td><td></tr>
<tr><td><p>Attribute_Val</p>
</td><td><p>Attribute_Val_Length</p>
@@ -5395,7 +5390,7 @@ server. No events are generated after this command is executed.</p><h3>Input par
</td><td></td></tr>
</table><h3>Events generated</h3><li><a href="#HCI_COMMAND_COMPLETE_EVENT_anchor">HCI_COMMAND_COMPLETE_EVENT</a></li><h2><a name="ACI_GATT_SIGNED_WRITE_WITHOUT_RESP_anchor">ACI_GATT_SIGNED_WRITE_WITHOUT_RESP</a></h2><h3>Description</h3><p>Start a signed write without response from the server.
The procedure is used to write a characteristic value with an authentication signature without waiting
-for any response from the server. It cannot be used when the link is encrypted.</p><h3>Input parameters</h3><table width="800" border="1" class="reference">
+for any response from the server. It cannot be used when the link is encrypted. The length of the value to be written must not exceed (ATT_MTU - 15); it must also not exceed (BLE_EVT_MAX_PARAM_LEN - 5) i.e. 250 for BLE_EVT_MAX_PARAM_LEN default value.</p><h3>Input parameters</h3><table width="800" border="1" class="reference">
<tr><th>Parameter</th><th>Size</th><th>Description</th><th>Possible values</th></tr>
<tr><td><p>Connection_Handle</p>
</td><td><p>2</p>
@@ -5407,7 +5402,7 @@ for any response from the server. It cannot be used when the link is encrypted.<
</td><td></tr>
<tr><td><p>Attribute_Val_Length</p>
</td><td><p>1</p>
-</td><td><p>Length of the value to be written (up to ATT_MTU - 13)</p>
+</td><td><p>Length of the value to be written</p>
</td><td></tr>
<tr><td><p>Attribute_Val</p>
</td><td><p>Attribute_Val_Length</p>
@@ -5793,8 +5788,8 @@ that didn't correspond to a connection was given.</p><h3>Event parameters</h3><t
</td><td><li>0x0000 ... 0x0EFF</li></td></tr>
<tr><td><p>Reason</p>
</td><td><p>1</p>
-</td><td><p>Reason for disconnection.</p>
-</td><td><li>0x00: Success</li><li>0x01: Unknown HCI Command</li><li>0x02: Unknown Connection Identifier</li><li>0x03: Hardware Failure</li><li>0x05: Authentication Failure</li><li>0x06: PIN or Key Missing</li><li>0x07: Memory Capacity Exceeded</li><li>0x08: Connection Timeout</li><li>0x09: Connection Limit Exceeded</li><li>0x0B: ACL Connection Already Exists</li><li>0x0C: Command Disallowed</li><li>0x0D: Connection Rejected Due To Limited Resources</li><li>0x0E: Connection Rejected Due To Security Reasons</li><li>0x0F: Connection Rejected due to Unacceptable BD_ADDR</li><li>0x10: Connection Accept Timeout Exceeded</li><li>0x11: Unsupported Feature Or Parameter Value</li><li>0x12: Invalid HCI Command Parameters</li><li>0x13: Remote User Terminated Connection</li><li>0x14: Remote Device Terminated Connection due to Low Resources</li><li>0x15: Remote Device Terminated Connection due to Power Off</li><li>0x16: Connection Terminated By Local Host</li><li>0x17: Repeated Attempts</li><li>0x18: Pairing Not Allowed</li><li>0x19: Unknown LMP PDU</li><li>0x1A: Unsupported Remote Feature / Unsupported LMP Feature</li><li>0x1E: Invalid LMP Parameters</li><li>0x1F: Unspecified Error</li><li>0x20: Unsupported LMP Parameter Value</li><li>0x21: Role Change Not Allowed</li><li>0x22: LMP Response Timeout / LL Response Timeout</li><li>0x23: LMP Error Transaction Collision</li><li>0x24: LMP PDU Not Allowed</li><li>0x25: Encryption Mode Not Acceptable</li><li>0x26: Link Key cannot be Changed</li><li>0x28: Instant Passed</li><li>0x29: Pairing With Unit Key Not Supported</li><li>0x2A: Different Transaction Collision</li><li>0x2E: Channel Assessment Not Supported</li><li>0x2F: Insufficient Security</li><li>0x30: Parameter Out Of Mandatory Range</li><li>0x32: Role Switch Pending</li><li>0x34: Reserved Slot Violation</li><li>0x35: Role Switch Failed</li><li>0x37: Secure Simple Pairing Not Supported by Host</li><li>0x38: Host Busy - Pairing</li><li>0x39: Connection Rejected due to No Suitable Channel Found</li><li>0x3A: Controller Busy</li><li>0x3B: Unacceptable Connection Interval</li><li>0x3C: Directed Advertising Timeout</li><li>0x3D: Connection Terminated Due to MIC Failure</li><li>0x3E: Connection Failed to be Established</li><li>0x41: Failed</li><li>0x42: Invalid parameters</li><li>0x43: Busy</li><li>0x44: Invalid length</li><li>0x45: Pending</li><li>0x46: Not allowed</li><li>0x47: GATT error</li><li>0x48: Address not resolved</li><li>0x50: Invalid CID</li><li>0x5A: CSRK not found</li><li>0x5B: IRK not found</li><li>0x5C: Device not found in DB</li><li>0x5D: Security DB full</li><li>0x5E: Device not bonded</li><li>0x5F: Device in blacklist</li><li>0x60: Invalid handle</li><li>0x61: Invalid parameter</li><li>0x62: Out of handles</li><li>0x63: Invalid operation</li><li>0x64: Insufficient resources</li><li>0x65: Insufficient encryption key size</li><li>0x66: Characteristic already exist</li><li>0x82: No valid slot</li><li>0x83: Short window</li><li>0x84: New interval failed</li><li>0x85: Too large interval</li><li>0x86: Slot length failed</li></td></tr>
+</td><td><p>Reason for disconnection (see Bluetooth Core Specification [Vol 2] Part D, Error Codes).</p>
+</td><td></tr>
</table><h2><a name="HCI_ENCRYPTION_CHANGE_EVENT_anchor">HCI_ENCRYPTION_CHANGE_EVENT</a></h2><h3>Description</h3><p>The Encryption Change event is used to indicate that the change of the encryption
mode has been completed. The Connection_Handle will be a Connection_Handle
for an ACL connection. The Encryption_Enabled event parameter
@@ -6387,12 +6382,12 @@ timeout has occurred so that the upper layer can decide to disconnect the link.<
</td><td></tr>
<tr><td><p>Status</p>
</td><td><p>1</p>
-</td><td><p>Pairing status</p>
+</td><td><p>Specific pairing status (0:Success,1:Timeout,2:Failed)</p>
</td><td></td></tr>
<tr><td><p>Reason</p>
</td><td><p>1</p>
</td><td><p>Pairing reason error code</p>
-</td><td><li>0x00</li><li>0x01: PASSKEY_ENTRY_FAILED</li><li>0x02: OOB_NOT_AVAILABLE</li><li>0x03: AUTH_REQ_CANNOT_BE_MET</li><li>0x04: CONFIRM_VALUE_FAILED</li><li>0x05: PAIRING_NOT_SUPPORTED</li><li>0x06: INSUFF_ENCRYPTION_KEY_SIZE</li><li>0x07: CMD_NOT_SUPPORTED</li><li>0x08: UNSPECIFIED_REASON</li><li>0x09: VERY_EARLY_NEXT_ATTEMPT</li><li>0x0A: SM_INVALID_PARAMS</li><li>0x0B: SMP_SC_DHKEY_CHECK_FAILED</li><li>0x0C: SMP_SC_NUMCOMPARISON_FAILED</li></td></tr>
+</td><td><li>0x02: OOB_NOT_AVAILABLE</li><li>0x03: AUTH_REQ_CANNOT_BE_MET</li><li>0x04: CONFIRM_VALUE_FAILED</li><li>0x05: PAIRING_NOT_SUPPORTED</li><li>0x06: INSUFF_ENCRYPTION_KEY_SIZE</li><li>0x07: CMD_NOT_SUPPORTED</li><li>0x08: UNSPECIFIED_REASON</li><li>0x09: VERY_EARLY_NEXT_ATTEMPT</li><li>0x0A: SM_INVALID_PARAMS</li><li>0x0B: SMP_SC_DHKEY_CHECK_FAILED</li><li>0x0C: SMP_SC_NUMCOMPARISON_FAILED</li></td></tr>
</table><h2><a name="ACI_GAP_PASS_KEY_REQ_EVENT_anchor">ACI_GAP_PASS_KEY_REQ_EVENT</a></h2><h3>Description</h3><p>This event is generated by the Security manager to the application when a passkey is
required for pairing. When this event is received, the application has to respond with the
<a href="#ACI_GAP_PASS_KEY_RESP_anchor">ACI_GAP_PASS_KEY_RESP</a> command.</p><h3>Event parameters</h3><table width="800" border="1" class="reference">
@@ -6510,6 +6505,8 @@ resolved with any of the stored IRK's.</p>
</td></tr>
<tr><td><a href="#ACI_GATT_PREPARE_WRITE_PERMIT_REQ_EVENT_anchor">ACI_GATT_PREPARE_WRITE_PERMIT_REQ_EVENT</a></td><td><p>0x0C18</p>
</td></tr>
+<tr><td><a href="#ACI_GATT_READ_EXT_EVENT_anchor">ACI_GATT_READ_EXT_EVENT</a></td><td><p>0x0C1D</p>
+</td></tr>
<tr><td><a href="#ACI_GATT_INDICATION_EXT_EVENT_anchor">ACI_GATT_INDICATION_EXT_EVENT</a></td><td><p>0x0C1E</p>
</td></tr>
<tr><td><a href="#ACI_GATT_NOTIFICATION_EXT_EVENT_anchor">ACI_GATT_NOTIFICATION_EXT_EVENT</a></td><td><p>0x0C1F</p>
@@ -6752,8 +6749,8 @@ successfully.</p><h3>Event parameters</h3><table width="800" border="1" class="r
</td><td><li>0x0000 ... 0x0EFF</li></td></tr>
<tr><td><p>Error_Code</p>
</td><td><p>1</p>
-</td><td><p>Indicates whether the procedure completed with an error or was successful</p>
-</td><td><li>0x00: Success</li><li>0x01: Unknown HCI Command</li><li>0x02: Unknown Connection Identifier</li><li>0x03: Hardware Failure</li><li>0x05: Authentication Failure</li><li>0x06: PIN or Key Missing</li><li>0x07: Memory Capacity Exceeded</li><li>0x08: Connection Timeout</li><li>0x09: Connection Limit Exceeded</li><li>0x0B: ACL Connection Already Exists</li><li>0x0C: Command Disallowed</li><li>0x0D: Connection Rejected Due To Limited Resources</li><li>0x0E: Connection Rejected Due To Security Reasons</li><li>0x0F: Connection Rejected due to Unacceptable BD_ADDR</li><li>0x10: Connection Accept Timeout Exceeded</li><li>0x11: Unsupported Feature Or Parameter Value</li><li>0x12: Invalid HCI Command Parameters</li><li>0x13: Remote User Terminated Connection</li><li>0x14: Remote Device Terminated Connection due to Low Resources</li><li>0x15: Remote Device Terminated Connection due to Power Off</li><li>0x16: Connection Terminated By Local Host</li><li>0x17: Repeated Attempts</li><li>0x18: Pairing Not Allowed</li><li>0x19: Unknown LMP PDU</li><li>0x1A: Unsupported Remote Feature / Unsupported LMP Feature</li><li>0x1E: Invalid LMP Parameters</li><li>0x1F: Unspecified Error</li><li>0x20: Unsupported LMP Parameter Value</li><li>0x21: Role Change Not Allowed</li><li>0x22: LMP Response Timeout / LL Response Timeout</li><li>0x23: LMP Error Transaction Collision</li><li>0x24: LMP PDU Not Allowed</li><li>0x25: Encryption Mode Not Acceptable</li><li>0x26: Link Key cannot be Changed</li><li>0x28: Instant Passed</li><li>0x29: Pairing With Unit Key Not Supported</li><li>0x2A: Different Transaction Collision</li><li>0x2E: Channel Assessment Not Supported</li><li>0x2F: Insufficient Security</li><li>0x30: Parameter Out Of Mandatory Range</li><li>0x32: Role Switch Pending</li><li>0x34: Reserved Slot Violation</li><li>0x35: Role Switch Failed</li><li>0x37: Secure Simple Pairing Not Supported by Host</li><li>0x38: Host Busy - Pairing</li><li>0x39: Connection Rejected due to No Suitable Channel Found</li><li>0x3A: Controller Busy</li><li>0x3B: Unacceptable Connection Interval</li><li>0x3C: Directed Advertising Timeout</li><li>0x3D: Connection Terminated Due to MIC Failure</li><li>0x3E: Connection Failed to be Established</li><li>0x41: Failed</li><li>0x42: Invalid parameters</li><li>0x43: Busy</li><li>0x44: Invalid length</li><li>0x45: Pending</li><li>0x46: Not allowed</li><li>0x47: GATT error</li><li>0x48: Address not resolved</li><li>0x50: Invalid CID</li><li>0x5A: CSRK not found</li><li>0x5B: IRK not found</li><li>0x5C: Device not found in DB</li><li>0x5D: Security DB full</li><li>0x5E: Device not bonded</li><li>0x5F: Device in blacklist</li><li>0x60: Invalid handle</li><li>0x61: Invalid parameter</li><li>0x62: Out of handles</li><li>0x63: Invalid operation</li><li>0x64: Insufficient resources</li><li>0x65: Insufficient encryption key size</li><li>0x66: Characteristic already exist</li><li>0x82: No valid slot</li><li>0x83: Short window</li><li>0x84: New interval failed</li><li>0x85: Too large interval</li><li>0x86: Slot length failed</li></td></tr>
+</td><td><p>Indicates whether the procedure completed with an error or was successful (see &quot;Status error codes&quot; section)</p>
+</td><td></tr>
</table><h2><a name="ACI_GATT_ERROR_RESP_EVENT_anchor">ACI_GATT_ERROR_RESP_EVENT</a></h2><h3>Description</h3><p>This event is generated when an Error Response is received from the server. The error
response can be given by the server at the end of one of the GATT discovery procedures.
This does not mean that the procedure ended with an error, but this error event is part of the
@@ -6914,6 +6911,27 @@ and an error response will be sent to the client, with the error code as specifi
</td><td><p>Data_Length</p>
</td><td><p>The data that the client has requested to write</p>
</td><td></tr>
+</table><h2><a name="ACI_GATT_READ_EXT_EVENT_anchor">ACI_GATT_READ_EXT_EVENT</a></h2><h3>Description</h3><p>When it is enabled with ACI_GATT_SET_EVENT_MASK, this event is generated instead of ACI_ATT_READ_RESP_EVENT / ACI_ATT_READ_BLOB_RESP_EVENT / ACI_ATT_READ_MULTIPLE_RESP_EVENT.
+This event should be used instead of those events when ATT_MTU &gt; (BLE_EVT_MAX_PARAM_LEN - 4)
+i.e. ATT_MTU &gt; 251 for BLE_EVT_MAX_PARAM_LEN default value.
+</p><h3>Event parameters</h3><table width="800" border="1" class="reference">
+<tr><th>Parameter</th><th>Size</th><th>Description</th><th>Possible values</th></tr>
+<tr><td><p>Connection_Handle</p>
+</td><td><p>2</p>
+</td><td><p>Connection handle related to the response.</p>
+</td><td><li>0x0000 ... 0x0EFF</li></td></tr>
+<tr><td><p>Offset</p>
+</td><td><p>2</p>
+</td><td><p>Bits 14-0: offset in octets from which Attribute_Value data starts. Bit 15 is used as flag: when set to 1 it indicates that more data are to come (fragmented event in case of long attribute data).</p>
+</td><td></tr>
+<tr><td><p>Event_Data_Length</p>
+</td><td><p>2</p>
+</td><td><p>Length of following data</p>
+</td><td></tr>
+<tr><td><p>Attribute_Value</p>
+</td><td><p>Event_Data_Length</p>
+</td><td><p>The value of the attribute(s).</p>
+</td><td></tr>
</table><h2><a name="ACI_GATT_INDICATION_EXT_EVENT_anchor">ACI_GATT_INDICATION_EXT_EVENT</a></h2><h3>Description</h3><p>When it is enabled with ACI_GATT_SET_EVENT_MASK and when an indication is received from the server, this event is generated instead of ACI_GATT_INDICATION_EVENT.
This event should be used instead of ACI_GATT_INDICATION_EVENT when ATT_MTU &gt; (BLE_EVT_MAX_PARAM_LEN - 4)
i.e. ATT_MTU &gt; 251 for BLE_EVT_MAX_PARAM_LEN default value.
@@ -7116,7 +7134,7 @@ Units: dBm</p>
</td><td><p>Data_Length</p>
</td><td><p>The error event info</p>
</td><td></tr>
-</table><h1><a name="Status error codes_anchor">Status error codes</a></h1><p>Status error codes are used for the return status of all commands. Only the codes from 0 to 0x3E are used for HCI commands (see Core Specification v5.0, Vol. 2, part D), while more codes are defined for ACI commands (see table below).</p><h2></h2><table width="800" border="1" class="reference">
+</table><p></p><h1><a name="Status error codes_anchor">Status error codes</a></h1><p>Status error codes are used for the return status of all commands. Only the codes from 0 to 0x3E are used for HCI commands (see Core Specification v5.0, Vol. 2, part D), while more codes are defined for ACI commands (see table below).</p><h2></h2><table width="800" border="1" class="reference">
<tr><th>Status error code</th><th>Description</th></tr>
<tr><td><p>0x00</p>
</td><td><p>Success</p>
@@ -7271,6 +7289,9 @@ Units: dBm</p>
<tr><td><p>0x3E</p>
</td><td><p>Connection Failed to be Established</p>
</td></tr>
+<tr><td><p>0x40</p>
+</td><td><p>Unknown connection identifier at SMP level</p>
+</td></tr>
<tr><td><p>0x41</p>
</td><td><p>Failed</p>
</td></tr>
@@ -7280,9 +7301,6 @@ Units: dBm</p>
<tr><td><p>0x43</p>
</td><td><p>Busy</p>
</td></tr>
-<tr><td><p>0x44</p>
-</td><td><p>Invalid length</p>
-</td></tr>
<tr><td><p>0x45</p>
</td><td><p>Pending</p>
</td></tr>
@@ -7290,14 +7308,17 @@ Units: dBm</p>
</td><td><p>Not allowed</p>
</td></tr>
<tr><td><p>0x47</p>
-</td><td><p>GATT error</p>
+</td><td><p>Host error</p>
</td></tr>
<tr><td><p>0x48</p>
-</td><td><p>Address not resolved</p>
+</td><td><p>Out of memory</p>
</td></tr>
<tr><td><p>0x50</p>
</td><td><p>Invalid CID</p>
</td></tr>
+<tr><td><p>0x59</p>
+</td><td><p>Device in blacklist</p>
+</td></tr>
<tr><td><p>0x5A</p>
</td><td><p>CSRK not found</p>
</td></tr>
@@ -7314,28 +7335,28 @@ Units: dBm</p>
</td><td><p>Device not bonded</p>
</td></tr>
<tr><td><p>0x5F</p>
-</td><td><p>Device in blacklist</p>
+</td><td><p>Insufficient encryption key size</p>
</td></tr>
<tr><td><p>0x60</p>
</td><td><p>Invalid handle</p>
</td></tr>
<tr><td><p>0x61</p>
-</td><td><p>Invalid parameter</p>
+</td><td><p>Out of handles</p>
</td></tr>
<tr><td><p>0x62</p>
-</td><td><p>Out of handles</p>
+</td><td><p>Invalid operation</p>
</td></tr>
<tr><td><p>0x63</p>
-</td><td><p>Invalid operation</p>
+</td><td><p>Characteristic already exist</p>
</td></tr>
<tr><td><p>0x64</p>
</td><td><p>Insufficient resources</p>
</td></tr>
<tr><td><p>0x65</p>
-</td><td><p>Insufficient encryption key size</p>
+</td><td><p>Security permission error</p>
</td></tr>
-<tr><td><p>0x66</p>
-</td><td><p>Characteristic already exist</p>
+<tr><td><p>0x70</p>
+</td><td><p>Address not resolved</p>
</td></tr>
<tr><td><p>0x82</p>
</td><td><p>No valid slot</p>
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/Inc/serial_prvn.h b/Middlewares/ST/STM32_WPAN/ble/mesh/Inc/serial_prvn.h
new file mode 100644
index 000000000..a33f9bcb4
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/Inc/serial_prvn.h
@@ -0,0 +1,59 @@
+/**
+******************************************************************************
+* @file embd_provision.h
+* @author BLE Mesh Team
+* @version V1.11.000
+* @date 25-07-2019
+* @brief Header file for the serial interface file
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; COPYRIGHT(c) 2018 STMicroelectronics</center></h2>
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+* 3. Neither the name of STMicroelectronics nor the names of its contributors
+* may be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Initial BLE-Mesh is built over Motorolas Mesh over Bluetooth Low Energy
+* (MoBLE) technology. The present solution is developed and maintained for both
+* Mesh library and Applications solely by STMicroelectronics.
+*
+******************************************************************************
+*/
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __EMBD_PROVISION_H
+#define __EMBD_PROVISION_H
+
+/* Includes ------------------------------------------------------------------*/
+#include "types.h"
+
+/* Exported macro ------------------------------------------------------------*/
+#define COMMAND_OFFSET 5
+/* Exported variables ------------------------------------------------------- */
+/* Exported Functions Prototypes ---------------------------------------------*/
+void SerialPrvn_Process(char *rcvdStringBuff, uint16_t rcvdStringSize);
+
+
+#endif /* __EMBD_PROVISION_H */
+
+/******************* (C) COPYRIGHT 2018 STMicroelectronics *****END OF FILE****/
+
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/Inc/serial_ut.h b/Middlewares/ST/STM32_WPAN/ble/mesh/Inc/serial_ut.h
new file mode 100644
index 000000000..f5c4dc814
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/Inc/serial_ut.h
@@ -0,0 +1,59 @@
+/**
+******************************************************************************
+* @file serial_ut.h
+* @author BLE Mesh Team
+* @version V1.07.000
+* @date 15-June-2018
+* @brief Header file for the upper tester file
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+* 3. Neither the name of STMicroelectronics nor the names of its contributors
+* may be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Initial BlueNRG-Mesh is built over Motorolas Mesh over Bluetooth Low Energy
+* (MoBLE) technology. The present solution is developed and maintained for both
+* Mesh library and Applications solely by STMicroelectronics.
+*
+******************************************************************************
+*/
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __UPPER_TESTER_H
+#define __UPPER_TESTER_H
+
+/* Includes ------------------------------------------------------------------*/
+#include "types.h"
+
+/* Exported macro ------------------------------------------------------------*/
+/* Exported variables ------------------------------------------------------- */
+
+
+/* Exported Functions Prototypes ---------------------------------------------*/
+void SerialUt_Process(char *rcvdStringBuff, uint16_t rcvdStringSize);
+
+#endif /* __UPPER_TESTER_H */
+
+/******************* (C) COPYRIGHT 2018 STMicroelectronics *****END OF FILE****/
+
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/config_client.h b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/config_client.h
new file mode 100644
index 000000000..d5e73b5cd
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/config_client.h
@@ -0,0 +1,409 @@
+/**
+******************************************************************************
+* @file config_client.h
+* @author BLE Mesh Team
+* @version V1.11.000
+* @date 25-07-2019
+* @brief Header file for the Config Model Client
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+* 3. Neither the name of STMicroelectronics nor the names of its contributors
+* may be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Initial BLE-Mesh is built over Motorola�s Mesh over Bluetooth Low Energy
+* (MoBLE) technology. The present solution is developed and maintained for both
+* Mesh library and Applications solely by STMicroelectronics.
+*
+******************************************************************************
+*/
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __CONFIG_CLIENT_H
+#define __CONFIG_CLIENT_H
+
+/* Includes ------------------------------------------------------------------*/
+#include "types.h"
+#include "ble_mesh.h"
+
+
+/* Exported macro ------------------------------------------------------------*/
+
+#define CONFIG_CLIENT_UNICAST_ADDR 0x0001
+
+#define MAX_SIG_MODELS_PER_ELEMENT 12 // Number of SIG Models to support
+#define MAX_VENDOR_MODELS_PER_ELEMENT 1 // Number of Vendor Models to support
+#define MAX_ELEMENTS_PER_NODE 1
+#define CONFIG_COMPOSITION_DATA_GET_PAGE_SIZE 1
+#define COMPOSITION_PAGE0 0
+
+#define MAX_CONFIG_CLIENT_MODEL_TX_MSG_SIZE 20
+#define NETKEY_SIZE 16
+#define APPKEY_SIZE 16
+
+#define CONFIGURATION_START_DELAY 2000
+#define CONFIGCLIENT_RESPONSE_TIMEOUT 10000 /* 10 sec Timeout */
+#define CONFIGCLIENT_MAX_TRIALS 5 /* Attempt 5 times retries */
+#define CONFIGCLIENT_RE_TRIALS 3
+
+#define CLIENT_TX_INPROGRESS 0
+#define CLIENT_TX_TIMEOUT 1
+#define CLIENT_TX_RETRY_ENDS 2
+
+
+#define SIG_MODEL_ID_CONFIG_SERVER 0x0000
+#define SIG_MODEL_ID_CONFIG_CLIENT 0x0001
+#define SIG_MODEL_ID_HEALTH_SERVER 0x0002
+#define SIG_MODEL_ID_HEALTH_CLIENT 0x0003
+
+/* 4.3.4.1 Alphabetical summary of opcodes */
+#define OPCODE_CONFIG_COMPOSITION_DATA_GET 0x8008
+#define OPCODE_CONFIG_APPKEY_ADD 0x0000
+#define OPCODE_CONFIG_APPKEY_DELETE 0x8000
+#define OPCODE_CONFIG_MODEL_APP_BIND 0x803D
+
+#define OPCODE_CONFIG_MODEL_APP_UNBIND 0x803F
+#define OPCODE_CONFIG_MODEL_PUBLI_GET 0x8018
+#define OPCODE_CONFIG_MODEL_PUBLI_SET 0x03
+#define OPCODE_CONFIG_MODEL_SUBSCR_ADD 0x801B
+#define OPCODE_CONFIG_MODEL_SUBSCR_DEL 0x801C
+#define OPCODE_CONFIG_MODEL_SUBSCR_DEL_ALL 0x801D
+#define OPCODE_CONFIG_MODEL_SUBSCR_OWR 0x801E
+
+/* Status message list : These are required for Node configuration */
+#define OPCODE_CONFIG_COMPOSITION_DATA_STATUS 0x02
+#define OPCODE_CONFIG_APPKEY_STATUS 0x8003
+#define OPCODE_CONFIG_SUBSCRIPTION_STATUS 0x801F
+#define OPCODE_CONFIG_MODEL_PUBLI_STATUS 0x8019
+#define OPCODE_CONFIG_MODEL_APP_STATUS 0x803E
+
+/* Macros for usage in models ************************************************/
+
+#define CHKSIGMODEL(a) (a&0xffff0000)==0
+#define ADDRESS_IS_GROUP(a) (((MOBLEINT16)(a) & 0xC000) == 0xC000)
+#define ADDRESS_UNASSIGNED 0x0000U
+#define ADDRESS_IS_UNASSIGNED(a) ((MOBLEINT16)(a) == ADDRESS_UNASSIGNED)
+
+
+/* Exported structure --------------------------------------------------------*/
+
+#pragma pack(1)
+typedef struct {
+ MOBLEUINT16 nodePrimaryAddress;
+ MOBLEUINT8 NbOfelements;
+ MOBLEUINT8 numberOfAttemptsTx;
+ MOBLEUINT32 Initial_time; /* Initial time for the Message */
+
+ MOBLEUINT8 NbOfSIGModelsToConfigure;
+ MOBLEUINT8 NbOfSIGModelsToAppBind;
+ MOBLEUINT8 NbOfSIGModelsToPublish;
+ MOBLEUINT8 NbOfSIGModelsToSubscribe;
+
+ MOBLEUINT8 NbOfVendorModelsToConfigure;
+ MOBLEUINT8 NbOfVendorModelsToAppBind;
+ MOBLEUINT8 NbOfVendorModelsToPublish;
+ MOBLEUINT8 NbOfVendorModelsToSubscribe;
+} NodeInfo_t;
+
+typedef struct {
+ MOBLEUINT16 Loc; /* Contains a location descriptor */
+ MOBLEUINT8 NumSIGmodels; /* Contains a count of SIG Model IDs in this element */
+ MOBLEUINT8 NumVendorModels; /* Contains a count of Vendor Model IDs in this element */
+ MOBLEUINT16 aSIGModels[MAX_SIG_MODELS_PER_ELEMENT];
+ MOBLEUINT32 aVendorModels[MAX_VENDOR_MODELS_PER_ELEMENT];
+} Elements_Page0_t;
+
+typedef struct {
+ MOBLEUINT8 DataPage;
+ MOBLEUINT16 NodeCID;
+ MOBLEUINT16 NodePID;
+ MOBLEUINT16 NodeVID;
+ MOBLEUINT16 NodeCRPL;
+ MOBLEUINT16 NodeFeatures;
+} Composition_Header_Page0_t;
+#pragma pack(4)
+
+/*
+#define MAX_SIG_MODELS_PER_ELEMENT 10 // Number of SIG Models to support
+#define MAX_VENDOR_MODELS_PER_ELEMENT 1 // Number of Vendor Models to support
+#define MAX_ELEMENTS_PER_NODE 1
+*/
+
+#define DEVICE_COMPOSITION_HEADER_SIZE sizeof(Composition_Header_Page0_t)
+#define DEVICE_COMPOSITION_ELEMENTS_DESC sizeof(Elements_Page0_t)
+#define DEVICE_COMPOSITION_MAX_SIZE (DEVICE_COMPOSITION_HEADER_SIZE + (MAX_ELEMENTS_PER_NODE*DEVICE_COMPOSITION_ELEMENTS_DESC))
+
+#pragma pack(1)
+typedef struct {
+ Composition_Header_Page0_t sheader;
+ //Elements_Page0_t aNodeElements[MAX_ELEMENTS_PER_NODE];
+} _Composition_Data_Page0_t;
+#pragma pack(4)
+
+//#pragma pack(1)
+typedef union {
+ _Composition_Data_Page0_t sComposition_Data_Page0;
+ MOBLEUINT8 aComposition_Data_Page0[DEVICE_COMPOSITION_MAX_SIZE];
+} Composition_Data_Page0_t;
+
+#pragma pack(1)
+typedef struct {
+ MOBLEUINT16 Opcode;
+ MOBLEUINT8 page;
+} configClientGetCompositionMsg_t;
+
+
+typedef struct {
+ MOBLEUINT16 elementAddr;
+ MOBLEUINT16 publishAddr;
+ MOBLEUINT16 appKeyIndex:12;
+ MOBLEUINT8 credentialFlag:1;
+ MOBLEUINT8 rfu:3;
+ MOBLEUINT8 publishTTL;
+ MOBLEUINT8 publishPeriod;
+ MOBLEUINT8 publishRetransmitCount:3;
+ MOBLEUINT8 publishRetransmitIntervalSteps:5;
+ MOBLEUINT32 modelIdentifier;
+} configClientModelPublication_t;
+
+
+typedef struct {
+ MOBLEUINT8 Status;
+ MOBLEUINT16 elementAddr;
+ MOBLEUINT16 publishAddr;
+ MOBLEUINT16 appKeyIndex:12;
+ MOBLEUINT8 credentialFlag:1;
+ MOBLEUINT8 rfu:3;
+ MOBLEUINT8 publishTTL;
+ MOBLEUINT8 publishPeriod;
+ MOBLEUINT8 publishRetransmitCount:3;
+ MOBLEUINT8 publishRetransmitIntervalSteps:5;
+ MOBLEUINT32 modelIdentifier;
+} configClientPublicationStatus_t;
+
+typedef struct {
+ MOBLEUINT16 netKeyIndex:12;
+ MOBLEUINT16 appKeyIndex:12;
+ MOBLEUINT8 a_Appkeybuffer[APPKEY_SIZE];
+} configClientAppKeyAdd_t;
+#pragma pack(4)
+
+typedef struct {
+ MOBLEUINT8 Status;
+ MOBLEUINT16 netKeyIndex:12;
+ MOBLEUINT16 appKeyIndex:12;
+} configClientAppKeyStatus_t;
+
+#pragma pack(1)
+typedef struct {
+ MOBLEUINT16 elementAddress;
+ MOBLEUINT16 appKeyIndex;
+ MOBLEUINT32 modelIdentifier;
+} configClientModelAppBind_t;
+
+/* 4.3.2.48 Config Model App Status */
+typedef struct {
+ MOBLEUINT8 Status;
+ MOBLEUINT16 elementAddress;
+ MOBLEUINT16 appKeyIndex;
+ MOBLEUINT32 modelIdentifier;
+} configClientModelAppStatus_t;
+
+typedef struct {
+ MOBLEUINT16 elementAddress;
+ MOBLEUINT16 address;
+ MOBLEUINT32 modelIdentifier;
+} configClientModelSubscriptionAdd_t;
+
+/* 4.3.2.26 Config Model Subscription Status */
+typedef struct {
+ MOBLEUINT8 Status;
+ MOBLEUINT16 elementAddress;
+ MOBLEUINT16 address;
+ MOBLEUINT32 modelIdentifier;
+} configClientSubscriptionStatus_t;
+#pragma pack(4)
+
+typedef union ConfigClientTxMsg_s {
+ configClientAppKeyAdd_t sConfigClientAppKeyAdd;
+ configClientModelPublication_t sConfigClientModelPublication;
+ MOBLEUINT8 a_ConfigClientSendPacket[MAX_CONFIG_CLIENT_MODEL_TX_MSG_SIZE];
+} uConfigClientTxMsg_t;
+
+
+/* These states are used for configuration messages sending after Provisioner */
+typedef enum
+{
+ ClientIdle_State,
+ ProvisioningDone_State,
+ CompositionGet_State,
+ AppKeyAdd_State,
+ AppBindModel_State,
+ AddSubscription_State,
+ SetPublication_State,
+ ConfigurationDone_State,
+}eClientSendMsgState_t;
+
+/* These states are used for configuration messages responses after Provisioner */
+typedef enum
+{
+ NodeIdle_State,
+ InProgress_State,
+ CompositionRecd_State,
+ CompositionRecdCompleted_State,
+ AppkeyAck_State,
+ AppkeyAckCompleted_State,
+ AppBindModelAck_State,
+ AppBindModelAckCompleted_State,
+ SubscriptionAck_State,
+ SubscriptionAckCompleted_State,
+ PublicationStatus_State,
+ PublicationStatusCompleted_State,
+ NodeNoResponse_State
+}eServerRespRecdState_t;
+
+
+/* This states are used for checking individual message sending and
+ response synchronisation */
+
+typedef enum
+{
+ SuccessStatus = 0x00,
+ InvalidAddressStatus = 0x01,
+ InvalidModelStatus = 0x02,
+ InvalidAppKeyIndexStatus = 0x03,
+ InvalidNetKeyIndexStatus = 0x04,
+ InsufficientResourcesStatus =0x05,
+ KeyIndexAlreadyStoredStatus =0x06,
+ InvalidPublishParametersStatus =0x07,
+ NotSubscribeModelStatus = 0x08,
+ StorageFailureStatus = 0x09,
+ FeatureNotSupportedStatus = 0x0A,
+ CannotUpdateStatus = 0x0B,
+ CannotRemoveStatus = 0x0C,
+ CannotBindStatus = 0x0D,
+ TemporarilyUnabletoChangeStateStatus = 0x0E,
+ CannotSetStatus = 0x0F,
+ UnspecifiedErrorStatus = 0x10,
+ InvalidBindingStatus = 0x11,
+} ConfigModelStatusCode_t;
+
+/******************************************************************************/
+/********** Following Section defines the Opcodes for the Messages ************/
+/******************************************************************************/
+
+extern NodeInfo_t NodeInfo;
+
+/* Exported Functions Prototypes ---------------------------------------------*/
+void CopyU8LittleEndienArray_fromU16word (MOBLEUINT8* pArray, MOBLEUINT16 inputWord);
+void CopyU8LittleEndienArray_fromU32word (MOBLEUINT8* pArray, MOBLEUINT32 inputWord);
+void CopyU8LittleEndienArray_2B_fromU32word (MOBLEUINT8* pArray, MOBLEUINT32 inputWord);
+MOBLEUINT16 CopyU8LittleEndienArrayToU16word (MOBLEUINT8* pArray);
+MOBLEUINT32 CopyU8LittleEndienArrayToU32word (MOBLEUINT8* pArray);
+
+MOBLE_RESULT ConfigClientModel_SendMessage(MOBLE_ADDRESS dst_peer ,
+ MOBLEUINT16 opcode, MOBLEUINT8 *pData,
+ MOBLEUINT32 length);
+
+
+MOBLE_RESULT ConfigClient_CompositionDataGet(void);
+
+MOBLE_RESULT ConfigClient_CompositionDataStatusResponse(MOBLEUINT8 const *pCompositionData,
+ MOBLEUINT32 length);
+
+MOBLEUINT8 ConfigClient_GetNodeElements(void);
+MOBLEUINT16 GetSIGModelFromCompositionData(MOBLEUINT8 elementIdx, MOBLEUINT8 idxSIG);
+MOBLEUINT32 GetVendorModelFromCompositionData(MOBLEUINT8 elementIdx, MOBLEUINT8 idxVendor);
+MOBLEUINT16 GetNodeElementAddress(void);
+MOBLEUINT8 GetTotalSIGModelsCount(MOBLEUINT8 elementIdx);
+MOBLEUINT8 GetTotalVendorModelsCount(MOBLEUINT8 elementIdx);
+MOBLEUINT8 GetNumberofSIGModels(MOBLEUINT8 elementIdx);
+MOBLEUINT8 GetNumberofVendorModels(MOBLEUINT8 elementIdx);
+void SetSIGModelCountToConfigure(MOBLEUINT8 count);
+void SetVendorModelCountToConfigure(MOBLEUINT8 count);
+MOBLEUINT8 ConfigClient_ChkRetrialState (eServerRespRecdState_t* eRespRecdState);
+void ConfigClient_SaveMsgSendingTime (void);
+void ConfigClient_ResetTrials (void);
+void ConfigClient_ErrorState (void);
+
+MOBLE_RESULT ConfigClient_AppKeyAdd (MOBLEUINT16 netKeyIndex, MOBLEUINT16 appKeyIndex,
+ MOBLEUINT8* appkey);
+MOBLE_RESULT _ConfigClient_AppKeyAdd (configClientAppKeyAdd_t* pClientAppKey);
+
+MOBLE_RESULT ConfigClient_ModelAppBind (MOBLEUINT16 elementAddress,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT32 modelIdentifier);
+
+MOBLE_RESULT _ConfigClient_ModelAppBind (configClientModelAppBind_t* modelAppBind);
+
+MOBLE_RESULT ConfigClient_ModelAppStatus(MOBLEUINT8 const *pSrcModelAppStatus,
+ MOBLEUINT32 length);
+
+
+MOBLE_RESULT ConfigClient_SubscriptionAdd (MOBLEUINT16 elementAddress,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT32 modelIdentifier);
+
+MOBLE_RESULT ConfigClient_SubscriptionStatus(MOBLEUINT8 const *pSrcSubscriptionStatus,
+ MOBLEUINT32 length);
+
+
+
+MOBLE_RESULT _ConfigClient_PublicationSet (configClientModelPublication_t *pClientPublicationMsg);
+
+MOBLE_RESULT ConfigClient_PublicationSet (MOBLEUINT16 elementAddress,
+ MOBLEUINT16 publishAddress,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT8 credentialFlag,
+ MOBLEUINT8 publishTTL,
+ MOBLEUINT8 publishPeriod,
+ MOBLEUINT8 publishRetransmitCount,
+ MOBLEUINT8 publishRetransmitIntervalSteps,
+ MOBLEUINT32 modelIdentifier);
+
+MOBLE_RESULT ConfigClient_PublicationStatus(MOBLEUINT8 const *pPublicationStatus,
+ MOBLEUINT32 length);
+
+MOBLE_RESULT ConfigClientModel_GetOpcodeTableCb(const MODEL_OpcodeTableParam_t **data,
+ MOBLEUINT16 *length);
+
+MOBLE_RESULT ConfigClientModel_GetStatusRequestCb(MOBLE_ADDRESS peer_addr,
+ MOBLE_ADDRESS dst_peer,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 *pResponsedata,
+ MOBLEUINT32 *plength,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response);
+
+MOBLE_RESULT ConfigClientModel_ProcessMessageCb(MOBLE_ADDRESS peer_addr,
+ MOBLE_ADDRESS dst_peer,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response);
+#endif /* __CONFIG_CLIENT_H */
+
+/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/
+
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/generic_client.h b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/generic_client.h
new file mode 100644
index 000000000..cabad069c
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/generic_client.h
@@ -0,0 +1,99 @@
+/**
+******************************************************************************
+* @file generic_client.h
+* @author BLE Mesh Team
+* @version V1.11.000
+* @date 25-07-2019
+* @brief Header file for the user application file
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+* 3. Neither the name of STMicroelectronics nor the names of its contributors
+* may be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Initial BLE-Mesh is built over Motorolas Mesh over Bluetooth Low Energy
+* (MoBLE) technology. The present solution is developed and maintained for both
+* Mesh library and Applications solely by STMicroelectronics.
+*
+******************************************************************************
+*/
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __GENERIC_CLIENT_H
+#define __GENERIC_CLIENT_H
+
+/* Includes ------------------------------------------------------------------*/
+#include "types.h"
+#include "ble_mesh.h"
+
+
+/* Exported macro ------------------------------------------------------------*/
+
+/******************************************************************************/
+/********** Following Section defines the Opcodes for the Messages ************/
+/******************************************************************************/
+
+
+/* Exported Functions Prototypes ---------------------------------------------*/
+MOBLE_RESULT GenericModelClient_GetOpcodeTableCb(const MODEL_OpcodeTableParam_t **data,
+ MOBLEUINT16 *length);
+
+MOBLE_RESULT GenericModelClient_GetStatusRequestCb(MOBLE_ADDRESS peer_addr,
+ MOBLE_ADDRESS dst_peer,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 *pResponsedata,
+ MOBLEUINT32 *plength,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response);
+
+MOBLE_RESULT GenericModelClient_ProcessMessageCb(MOBLE_ADDRESS peer_addr,
+ MOBLE_ADDRESS dst_peer,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response
+ );
+
+MOBLE_RESULT GenericClient_OnOff_Set(MOBLE_ADDRESS element_number,
+ _Generic_OnOffParam *pOnOff_param,
+ MOBLEUINT32 length);
+
+MOBLE_RESULT GenericClient_OnOff_Set_Unack(MOBLE_ADDRESS element_number,
+ _Generic_OnOffParam *pOnOff_param,
+ MOBLEUINT32 length);
+MOBLE_RESULT GenericClient_Level_Set_Unack(MOBLE_ADDRESS element_number,
+ _Generic_LevelParam *plevel_param,
+ MOBLEUINT32 length);
+
+
+MOBLE_RESULT Generic_Client_OnOff_Status(MOBLEUINT8 const *pOnOff_status, MOBLEUINT32 plength);
+MOBLE_RESULT Generic_Client_Level_Status(MOBLEUINT8 const *plevel_status, MOBLEUINT32 plength);
+MOBLE_RESULT Generic_Client_PowerOnOff_Status(MOBLEUINT8 const *powerOnOff_status , MOBLEUINT32 plength);
+MOBLE_RESULT Generic_Client_DefaultTransitionTime_Status(MOBLEUINT8 const *pTransition_status , MOBLEUINT32 plength);
+
+#endif /* __GENERIC_H */
+
+/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/
+
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/config_client.c b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/config_client.c
new file mode 100644
index 000000000..ed074f915
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/config_client.c
@@ -0,0 +1,1568 @@
+/**
+******************************************************************************
+* @file config_client.c
+* @author BLE Mesh Team
+* @version V1.11.002
+* @date 27-09-2019
+* @brief Config model Client middleware file
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+* 3. Neither the name of STMicroelectronics nor the names of its contributors
+* may be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Initial BLE-Mesh is built over Motorolas Mesh over Bluetooth Low Energy
+* (MoBLE) technology. The present solution is developed and maintained for both
+* Mesh library and Applications solely by STMicroelectronics.
+*
+******************************************************************************
+*/
+/* Includes ------------------------------------------------------------------*/
+#include "hal_common.h"
+#include "mesh_cfg.h"
+#include "config_client.h"
+#include "common.h"
+#include "models_if.h"
+#include <string.h>
+#include "compiler.h"
+#include "appli_config_client.h"
+#include "ble_mesh.h"
+#include "appli_mesh.h"
+
+/** @addtogroup MODEL_CONFIG
+* @{
+*/
+
+/** @addtogroup Config_Model_Callbacks
+* @{
+*/
+
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+/* ALIGN(4) */
+__attribute__((aligned(4))) Composition_Data_Page0_t NodeCompositionPage0; /* Storage of the Node Page0 */
+
+/* ALIGN(4) */
+__attribute__((aligned(4)))Elements_Page0_t aNodeElements[MAX_ELEMENTS_PER_NODE];
+
+/* ALIGN(4)*/
+__attribute__((aligned(4)))NodeInfo_t NodeInfo;
+
+const MODEL_OpcodeTableParam_t Config_Client_Opcodes_Table[] = {
+ /* MOBLEUINT32 opcode, MOBLEBOOL reliable, MOBLEUINT16 min_payload_size,
+ MOBLEUINT16 max_payload_size;
+ Here in this array, Handler is not defined; */
+#ifdef ENABLE_CONFIG_MODEL_CLIENT
+ {OPCODE_CONFIG_COMPOSITION_DATA_STATUS, MOBLE_FALSE, 10, 100, 0x8FFF , 0, 0},
+ {OPCODE_CONFIG_APPKEY_STATUS, MOBLE_FALSE, 4, 4, 0x8FFF , 0, 0},
+ {OPCODE_CONFIG_SUBSCRIPTION_STATUS, MOBLE_FALSE, 7, 9, 0x8FFF , 0, 0},
+ {OPCODE_CONFIG_MODEL_PUBLI_STATUS, MOBLE_FALSE, 12, 14, 0x8FFF , 0, 0},
+ {OPCODE_CONFIG_MODEL_APP_STATUS, MOBLE_FALSE, 7, 9, 0x8FFF , 0, 0},
+#endif
+ {0}
+};
+
+/* Private function prototypes -----------------------------------------------*/
+void PackNetkeyAppkeyInto3Bytes (MOBLEUINT16 netKeyIndex,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT8* keysArray3B);
+void NetkeyAppkeyUnpack (MOBLEUINT16 *pnetKeyIndex,
+ MOBLEUINT16 *pappKeyIndex,
+ MOBLEUINT8* keysArray3B);
+MOBLE_RESULT ConfigClient_AppKeyAdd (MOBLEUINT16 netKeyIndex,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT8* appkey);
+MOBLE_RESULT ConfigClient_AppKeyStatus(MOBLEUINT8 const *pSrcAppKeyStatus,
+ MOBLEUINT32 length);
+MOBLE_RESULT ConfigClient_AppKeyUpdate (MOBLEUINT8* appkey);
+MOBLE_RESULT ConfigClient_AppKeyDelete (MOBLEUINT8* appkey);
+MOBLE_RESULT ConfigClient_AppKeyGet (MOBLEUINT8* appkey);
+MOBLE_RESULT ConfigClient_AppKeyList (MOBLEUINT8* appkey);
+MOBLE_RESULT _ConfigClient_SubscriptionAdd (configClientModelSubscriptionAdd_t *modelSubscription);
+MOBLE_RESULT ConfigClient_SubscriptionDelete (void);
+MOBLE_RESULT ConfigClient_SubscriptionDeleteAll (void);
+MOBLE_RESULT ConfigClient_SubscriptionOverwrite (void);
+MOBLE_RESULT ConfigClient_SubscriptionGet (void);
+MOBLE_RESULT ConfigClient_SubscriptionList (void);
+MOBLE_RESULT ConfigClient_ModelAppUnbind (void);
+MOBLEUINT16 CopyU8LittleEndienArrayToU16word (MOBLEUINT8* pArray);
+MOBLEUINT32 CopyU8LittleEndienArrayToU32word (MOBLEUINT8* pArray);
+WEAK_FUNCTION (MOBLEUINT8* GetNewProvNodeDevKey(void));
+
+/* Private functions ---------------------------------------------------------*/
+
+/**
+* @brief ConfigClient_CompositionDataGet: This function is called to read the
+ composition data of the node
+* @param None: No parameter for this function
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_CompositionDataGet(void)
+{
+
+ /* 4.3.2.4 Config Composition Data Get
+ The Config Composition Data Get is an acknowledged message used to read one
+ page of the Composition Data (see Section 4.2.1).
+ The response to a Config Composition Data Get message is a
+ Config Composition Data Status message
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8* pConfigData;
+ MOBLEUINT32 dataLength;
+ MOBLE_ADDRESS dst_peer;
+
+ configClientGetCompositionMsg_t ccGetCompositionMsg;
+
+ TRACE_M(TF_CONFIG_CLIENT,"Config CompositionDataGet Message \r\n");
+ ccGetCompositionMsg.Opcode = OPCODE_CONFIG_COMPOSITION_DATA_GET;
+ ccGetCompositionMsg.page = COMPOSITION_PAGE0;
+
+
+ if(result)
+ {
+ TRACE_M(TF_CONFIG_CLIENT,"Get Composition Data Error \r\n");
+ }
+
+ msg_opcode = OPCODE_CONFIG_COMPOSITION_DATA_GET;
+ pConfigData = (MOBLEUINT8*) &(ccGetCompositionMsg.page);
+ dataLength = sizeof(ccGetCompositionMsg.page);
+ dst_peer = NodeInfo.nodePrimaryAddress;
+
+ ConfigClientModel_SendMessage(dst_peer,msg_opcode,pConfigData,dataLength);
+
+ return result;
+}
+
+
+/**
+* @brief ConfigClient_CompositionDataStatusResponse: This function is a call
+ back when the response is received for Composition
+* @param configClientAppKeyAdd_t: Structure of the AppKey add message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_CompositionDataStatusResponse(MOBLEUINT8 const *pSrcComposition,
+ MOBLEUINT32 length)
+{
+ MOBLEUINT8 *pSrcElements;
+ MOBLEUINT8 elementIndex;
+ MOBLEUINT8 numNodeSIGmodels;
+ MOBLEUINT8 numNodeVendormodels;
+ MOBLEUINT8 varModels;
+ MOBLEUINT8 indexModels;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+
+ TRACE_M(TF_CONFIG_CLIENT,"Composition Status Cb \r\n");
+
+ /* Copy the header of the Composition page */
+ NodeCompositionPage0.sComposition_Data_Page0.sheader.DataPage = *pSrcComposition;
+ NodeCompositionPage0.sComposition_Data_Page0.sheader.NodeCID = CopyU8LittleEndienArrayToU16word((MOBLEUINT8*)(pSrcComposition+1));
+ NodeCompositionPage0.sComposition_Data_Page0.sheader.NodePID = CopyU8LittleEndienArrayToU16word((MOBLEUINT8*)(pSrcComposition+3));
+ NodeCompositionPage0.sComposition_Data_Page0.sheader.NodeVID = CopyU8LittleEndienArrayToU16word((MOBLEUINT8*)(pSrcComposition+5));
+ NodeCompositionPage0.sComposition_Data_Page0.sheader.NodeCRPL = CopyU8LittleEndienArrayToU16word((MOBLEUINT8*)(pSrcComposition+7));
+ NodeCompositionPage0.sComposition_Data_Page0.sheader.NodeFeatures = CopyU8LittleEndienArrayToU16word((MOBLEUINT8*)(pSrcComposition+9));
+
+ /* Point to the Start of Elements data from source */
+ /* Point after the Header and Loc , NumS, NumV */
+ pSrcElements = (MOBLEUINT8*)(pSrcComposition+11);
+
+ for (elementIndex =0; elementIndex < MAX_ELEMENTS_PER_NODE; elementIndex++ )
+ {
+ /* Point to the destination address in Global Variable */
+ /* Copy Loc, NumSIGmodels, NumVendorModels in Composition page */
+ aNodeElements[elementIndex].Loc = CopyU8LittleEndienArrayToU16word((MOBLEUINT8*)pSrcElements);
+
+ pSrcElements += 2;
+ aNodeElements[elementIndex].NumSIGmodels = *(pSrcElements);
+
+ pSrcElements++;
+ aNodeElements[elementIndex].NumVendorModels = *(pSrcElements);
+
+ pSrcElements++;
+
+ /******************* Copy the SIG Models **********************************/
+ /* Prepare the variables to find the number of SIG Models, SInce header is already copied,
+ it can use used directly for the comparision */
+ /* This is to be used for running the loop for data copy */
+ numNodeSIGmodels = aNodeElements[elementIndex].NumSIGmodels;
+ varModels = numNodeSIGmodels;
+
+ /* Point to the Elements array for the SIG Models */
+
+ if (numNodeSIGmodels > MAX_SIG_MODELS_PER_ELEMENT)
+ { /* Number of models of Node is more than storage capacity */
+ varModels = MAX_SIG_MODELS_PER_ELEMENT;
+ }
+
+ for (indexModels=0; indexModels< varModels; indexModels++)
+ {
+ aNodeElements[elementIndex].aSIGModels[indexModels] = CopyU8LittleEndienArrayToU16word((MOBLEUINT8*)pSrcElements);
+ pSrcElements +=2; /* Increment by 2 Bytes for next Model */
+ }
+
+ /* If the source has more SIG Model IDs, then keep reading them till next address */
+ if (numNodeSIGmodels > MAX_SIG_MODELS_PER_ELEMENT)
+ {
+ for (; indexModels< numNodeSIGmodels; indexModels++)
+ {
+ /* Increase the Source address pointer ONLY */
+ pSrcElements +=2;
+ }
+ }
+
+ /******************* Copy the Vendor Models *******************************/
+ numNodeVendormodels = aNodeElements[elementIndex].NumVendorModels;
+ varModels = numNodeVendormodels;
+
+ /* Point to the destination address in Global Variable */
+ if (numNodeVendormodels > MAX_VENDOR_MODELS_PER_ELEMENT)
+ {
+ varModels = MAX_VENDOR_MODELS_PER_ELEMENT;
+ }
+
+ /* Start copying the Vendor Models */
+ for (indexModels=0; indexModels < varModels; indexModels++)
+ {
+ aNodeElements[elementIndex].aVendorModels[indexModels] = CopyU8LittleEndienArrayToU32word(pSrcElements);
+ pSrcElements +=4;
+ }
+
+ /* If the source has more Vendor Model IDs, then keep reading them till next Element */
+ if (numNodeVendormodels > MAX_VENDOR_MODELS_PER_ELEMENT)
+ {
+ for (; indexModels< numNodeVendormodels; indexModels++)
+ {
+ /* Increase the Source address pointer only */
+ pSrcElements +=4;
+ }
+ }
+
+ } /* for (elementIndex =0; elementIndex < MAX_ELEMENTS_PER_NODE; elementIndex++ ) */
+
+
+ NodeInfo.NbOfelements = elementIndex; /* Save number of elements available in node for later use */
+ /* Element index is already incremented by 1 after 'for' loop */
+ Appli_CompositionDataStatusCb(result);
+ return result;
+
+}
+
+
+/**
+* @brief GetNodeElementAddress: This function gets the element address
+ from last known address saved in the flash
+* @param None
+* @retval MOBLE_RESULT
+*/
+MOBLEUINT16 GetNodeElementAddress(void)
+{
+ return NodeInfo.nodePrimaryAddress;
+}
+
+/**
+* @brief GetNodeElementAddress: This function gets the element address
+ from last known address saved in the flash
+* @param None
+* @retval MOBLE_RESULT
+*/
+MOBLEUINT8 ConfigClient_GetNodeElements(void)
+{
+ return NodeInfo.NbOfelements;
+}
+
+/**
+* @brief GetSIGModelFromCompositionData: This function gets the element address
+ from last known address saved in the flash
+* @param None
+* @retval MOBLE_RESULT
+*/
+MOBLEUINT16 GetSIGModelFromCompositionData(MOBLEUINT8 elementIdx, MOBLEUINT8 idxSIG)
+{
+ MOBLEUINT16 model;
+
+ model = aNodeElements[elementIdx].aSIGModels[idxSIG+2];
+ return model;
+}
+
+
+/**
+* @brief SetSigModelsNodeElementAddress: This function gets the element address
+ from last known address saved in the flash
+* @param None
+* @retval MOBLE_RESULT
+*/
+void SetSIGModelCountToConfigure(MOBLEUINT8 count)
+{
+ MOBLEUINT8 sigModelsCount;
+
+ sigModelsCount = GetTotalSIGModelsCount(0);
+ if (count > sigModelsCount)
+ { /* if count required by application is more than Element's SIG Models,
+ keep the low value */
+ count = sigModelsCount;
+ }
+
+ NodeInfo.NbOfSIGModelsToConfigure = count;
+}
+
+/**
+* @brief SetVendorModelsNodeElementAddress: This function gets the element address
+ from last known address saved in the flash
+* @param None
+* @retval MOBLE_RESULT
+*/
+void SetVendorModelCountToConfigure(MOBLEUINT8 count)
+{
+ MOBLEUINT8 vendorModelsCount;
+
+ vendorModelsCount = GetTotalVendorModelsCount(0);
+ if (count > vendorModelsCount)
+ { /* if count required by application is more than Element's SIG Models,
+ keep the low value */
+ count = vendorModelsCount;
+ }
+
+ NodeInfo.NbOfVendorModelsToConfigure = count;
+}
+
+/**
+* @brief GetNodeElementAddress: This function gets the element address
+ from last known address saved in the flash
+* @param None
+* @retval MOBLE_RESULT
+*/
+MOBLEUINT32 GetVendorModelFromCompositionData(MOBLEUINT8 elementIdx, MOBLEUINT8 idxVendor)
+{
+ MOBLEUINT32 model;
+
+ model = aNodeElements[elementIdx].aVendorModels[idxVendor];
+ /* Maybe little endien conversion may be needed */
+
+ return model;
+}
+
+/**
+* @brief GetTotalSIGModelsCount: This function gets the Total number of
+ SIG Models available in the node
+* @param None
+* @retval MOBLE_RESULT
+*/
+MOBLEUINT8 GetTotalSIGModelsCount(MOBLEUINT8 elementIdx)
+{
+ MOBLEUINT8 sigModelsCount;
+
+ sigModelsCount = aNodeElements[elementIdx].NumSIGmodels;
+ return sigModelsCount;
+}
+
+/**
+* @brief GetTotalSIGModelsCount: This function gets the Total number of
+ SIG Models available in the node
+* @param None
+* @retval MOBLE_RESULT
+*/
+MOBLEUINT8 GetTotalVendorModelsCount(MOBLEUINT8 elementIdx)
+{
+ return aNodeElements[elementIdx].NumVendorModels ;
+}
+
+/**
+* @brief GetNodeElementAddress: This function gets the element address
+ from last known address saved in the flash
+* @param None
+* @retval MOBLE_RESULT
+*/
+MOBLEUINT8 GetNumberofSIGModels(MOBLEUINT8 elementIdx)
+{
+ return NodeInfo.NbOfSIGModelsToConfigure;
+}
+
+/**
+* @brief GetNodeElementAddress: This function gets the element address
+ from last known address saved in the flash
+* @param None
+* @retval MOBLE_RESULT
+*/
+MOBLEUINT8 GetNumberofVendorModels(MOBLEUINT8 elementIdx)
+{
+ return NodeInfo.NbOfVendorModelsToConfigure;
+}
+
+/**
+* @brief PackNetkeyAppkeyInto3Bytes: This function is called to pack the
+ 2 key Index into 3Bytes
+* @param netKeyIndex: keyIndex to be packed
+* @param appKeyIndex: keyIndex to be packed
+* @retval MOBLE_RESULT
+*/
+void PackNetkeyAppkeyInto3Bytes (MOBLEUINT16 netKeyIndex,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT8* keysArray3B)
+{
+ /*
+ 4.3.1.1 Key indexes
+ Global key indexes are 12 bits long. Some messages include
+ one, two or multiple key indexes.
+ To enable efficient packing, two key indexes are packed into three octets.
+ */
+
+ /*
+ To pack two key indexes into three octets...
+ 8 LSbs of first key index value are packed into the first octet
+ placing the remaining 4 MSbs into 4 LSbs of the second octet.
+ The first 4 LSbs of the second 12-bit key index are packed into
+ the 4 MSbs of the second octet with the remaining 8 MSbs into the third octet.
+ */
+ keysArray3B[0] = (MOBLEUINT8) (netKeyIndex & 0x00ff);
+ keysArray3B[1] = (MOBLEUINT8) ((netKeyIndex & 0x0f00) >> 8); /* Take 4bit Nibble to 4LSb nibble */
+ keysArray3B[1] |= (MOBLEUINT8) ((appKeyIndex & 0x000f) << 4); /* Take 4LSb to upper Nibble */
+ keysArray3B[2] = (MOBLEUINT8) ((appKeyIndex >>4) & 0xff); /* Take 8MSb to a byte */
+
+}
+
+/**
+* @brief PackNetkeyAppkeyInto3Bytes: This function is called to pack the
+ 2 key Index into 3Bytes
+* @param netKeyIndex: keyIndex to be packed
+* @param appKeyIndex: keyIndex to be packed
+* @retval MOBLE_RESULT
+*/
+void NetkeyAppkeyUnpack (MOBLEUINT16 *pnetKeyIndex,
+ MOBLEUINT16 *pappKeyIndex,
+ MOBLEUINT8* keysArray3B)
+{
+ /*
+ 4.3.1.1 Key indexes
+ Global key indexes are 12 bits long. Some messages include
+ one, two or multiple key indexes.
+ To enable efficient packing, two key indexes are packed into three octets.
+ */
+ MOBLEUINT16 netKeyIndex;
+ MOBLEUINT16 appKeyIndex;
+ /*
+ To pack two key indexes into three octets...
+ 8 LSbs of first key index value are packed into the first octet
+ placing the remaining 4 MSbs into 4 LSbs of the second octet.
+ The first 4 LSbs of the second 12-bit key index are packed into
+ the 4 MSbs of the second octet with the remaining 8 MSbs into the third octet.
+ */
+ netKeyIndex = keysArray3B[1] & 0x0f; /* Take 4MSb from 2nd octet */
+ netKeyIndex <<= 8;
+ netKeyIndex |= keysArray3B[0];
+
+ appKeyIndex = keysArray3B[1] & 0xf0; /* Take LSb from 2nd octet */
+ appKeyIndex >>= 4;
+ appKeyIndex |= (keysArray3B[2] << 0x04);
+
+ *pnetKeyIndex = netKeyIndex;
+ *pappKeyIndex = appKeyIndex;
+}
+
+
+/**
+* @brief ConfigClient_AppKeyAdd: This function is called to
+ add the default AppKeys and net keys to a node under configuration
+* @param configClientAppKeyAdd_t: Structure of the AppKey add message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_AppKeyAdd (MOBLEUINT16 netKeyIndex,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT8* appkey)
+{
+ /*
+4.3.2.37 Config AppKey Add
+The Config AppKey Add is an acknowledged message used to add an AppKey to
+the AppKey List on a node and bind it to the NetKey identified by NetKeyIndex.
+The added AppKey can be used by the node only as a pair with the specified NetKey. The AppKey is used to authenticate and decrypt messages it receives, as well as authenticate and encrypt messages it sends.
+The response to a Config AppKey Add message is a Config AppKey Status message.
+
+NetKeyIndexAndAppKeyIndex: 3B : Index of the NetKey and index of the AppKey
+AppKey 16B : AppKey value
+ */
+
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ configClientAppKeyAdd_t configClientAppKeyAdd;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8* pConfigData;
+ MOBLEUINT32 dataLength;
+ MOBLE_ADDRESS dst_peer;
+
+ configClientAppKeyAdd.netKeyIndex = netKeyIndex;
+ configClientAppKeyAdd.appKeyIndex = appKeyIndex;
+ memcpy (configClientAppKeyAdd.a_Appkeybuffer, appkey, APPKEY_SIZE );
+
+ msg_opcode = OPCODE_CONFIG_APPKEY_ADD;
+ pConfigData = (MOBLEUINT8*) &(configClientAppKeyAdd);
+ dataLength = sizeof(configClientAppKeyAdd_t);
+ dst_peer = NodeInfo.nodePrimaryAddress;
+
+ TRACE_M(TF_CONFIG_CLIENT,"Config Client App Key Add \r\n");
+ ConfigClientModel_SendMessage(dst_peer,msg_opcode,pConfigData,dataLength);
+
+ return result;
+}
+
+/**
+* @brief ConfigClient_AppKeyStatus: This function is a call
+ back when the response is received for AppKey Add
+* @param configClientAppKeyAdd_t: Structure of the AppKey add message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_AppKeyStatus(MOBLEUINT8 const *pSrcAppKeyStatus,
+ MOBLEUINT32 length)
+{
+ /*
+ 4.3.2.40 Config AppKey Status
+ The Config AppKey Status is an unacknowledged message used to report a status
+ for the requesting message, based on the
+ NetKey Index identifying the NetKey on the NetKey List and on the
+ AppKey Index identifying the AppKey on the AppKey List.
+ */
+
+ /*
+Status : 1B : Status Code for the requesting message
+NetKeyIndexAndAppKeyIndex : 3B : Index of the NetKey and index of the AppKey
+ */
+ configClientAppKeyStatus_t configClientAppKeyStatus;
+ MOBLEUINT16 netKeyIndex;
+ MOBLEUINT16 appKeyIndex;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+
+ /* Config AppKey Status 0x80 0x03*/
+ configClientAppKeyStatus.Status = pSrcAppKeyStatus[0]; /* Ignoring the OpCode */
+
+ if ((ConfigModelStatusCode_t)SuccessStatus != configClientAppKeyStatus.Status)
+ {
+ /* Status returned is an error */
+ }
+
+ NetkeyAppkeyUnpack (&netKeyIndex, &appKeyIndex, (MOBLEUINT8*) (pSrcAppKeyStatus+1));
+ configClientAppKeyStatus.appKeyIndex = appKeyIndex;
+ configClientAppKeyStatus.netKeyIndex = netKeyIndex;
+ Appli_AppKeyStatusCb(configClientAppKeyStatus.Status);
+ /* The Netkey and AppKey can be compared with what was issued */
+
+ return result;
+}
+
+/**
+* @brief ConfigClient_AppKeyUpdate: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_AppKeyUpdate (MOBLEUINT8* appkey)
+{
+ /*
+4.3.2.38 Config AppKey Update
+The Config AppKey Update is an acknowledged message used to update an AppKey value on the AppKey List on a node. The updated AppKey is used by the node to authenticate and decrypt messages it receives, as well as authenticate and encrypt messages it sends, as defined by the Key Refresh procedure (see Section 3.10.4).
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+}
+
+
+/**
+* @brief ConfigClient_AppKeyDelete: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_AppKeyDelete (MOBLEUINT8* appkey)
+{
+/*
+4.3.2.39 Config AppKey Delete
+The Config AppKey Delete is an acknowledged message used to delete an AppKey from the AppKey List on a node.
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+}
+
+
+/**
+* @brief ConfigClient_AppKeyGet: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_AppKeyGet (MOBLEUINT8* appkey)
+{
+/*
+4.3.2.41 Config AppKey Get
+The AppKey Get is an acknowledged message used to report all AppKeys bound to the NetKey.
+The response to a Config AppKey Get message is a Config AppKey List message.
+*/
+
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+}
+
+/**
+* @brief ConfigClient_AppKeyList: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_AppKeyList (MOBLEUINT8* appkey)
+{
+/*
+4.3.2.42 Config AppKey List
+The Config AppKey List is an unacknowledged message reporting all AppKeys that are bound to the NetKey.
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+}
+
+
+/**
+* @brief ConfigClient_PublicationSet: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_PublicationSet (MOBLEUINT16 elementAddress,
+ MOBLEUINT16 publishAddress,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT8 credentialFlag,
+ MOBLEUINT8 publishTTL,
+ MOBLEUINT8 publishPeriod,
+ MOBLEUINT8 publishRetransmitCount,
+ MOBLEUINT8 publishRetransmitIntervalSteps,
+ MOBLEUINT32 modelIdentifier)
+{
+ /*
+4.3.2.16 Config Model Publication Set
+The Config Model Publication Set is an acknowledged message used to set the Model
+Publication state (see Section 4.2.2) of an outgoing message that originates
+from a model.
+
+The response to a Config Model Publication Set message is a Config Model
+Publication Status message.
+The Config Model Publication Set message uses a single octet opcode to
+maximize the size of a payload.
+
+ ElementAddress : 16b : Address of the element
+ PublishAddress : 16b : Value of the publish address
+ AppKeyIndex : 12b : Index of the application key
+ CredentialFlag : 1b : Value of the Friendship Credential Flag
+ RFU : 3b : Reserved for Future Use
+ PublishTTL : 8b : Default TTL value for the outgoing messages
+ PublishPeriod : 8b : Period for periodic status publishing
+ PublishRetransmitCount : 3b : Number of retransmissions for each published message
+ PublishRetransmitIntervalSteps : 5b: Number of 50-millisecond steps between retransmissions
+ ModelIdentifier: 16 or 32b: SIG Model ID or Vendor Model ID
+ */
+
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8* pConfigData;
+ MOBLEUINT32 dataLength;
+ MOBLE_ADDRESS dst_peer;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ configClientModelPublication_t configClientModelPublication;
+
+ TRACE_M(TF_CONFIG_CLIENT,"Config Client Publication Add Message \r\n");
+ dataLength = sizeof(configClientModelPublication_t);
+
+
+ if ( (ADDRESS_IS_GROUP(elementAddress)) || (ADDRESS_IS_UNASSIGNED(elementAddress)) )
+ {
+ /* The ElementAddress field is the unicast address of the element,
+ all other address types are Prohibited. */
+ result = MOBLE_RESULT_INVALIDARG;
+ }
+ else{
+
+ configClientModelPublication.elementAddr = elementAddress;
+ configClientModelPublication.publishAddr = publishAddress;
+ configClientModelPublication.appKeyIndex = appKeyIndex;
+ configClientModelPublication.credentialFlag = credentialFlag;
+ configClientModelPublication.rfu = 0;
+ configClientModelPublication.publishTTL=publishTTL;
+ configClientModelPublication.publishPeriod=publishPeriod;
+ configClientModelPublication.publishRetransmitCount=publishRetransmitCount;
+ configClientModelPublication.publishRetransmitIntervalSteps=publishRetransmitIntervalSteps;
+ configClientModelPublication.modelIdentifier=modelIdentifier;
+
+
+ if(CHKSIGMODEL(modelIdentifier))
+ {
+ /* if upper 16b are 0, then it's a SIG Model */
+ dataLength -= 2;
+ }
+ }
+
+
+ msg_opcode = OPCODE_CONFIG_MODEL_PUBLI_SET;
+ pConfigData = (MOBLEUINT8*) &(configClientModelPublication);
+ dst_peer = NodeInfo.nodePrimaryAddress;
+
+ TRACE_M(TF_CONFIG_CLIENT,"Config Client Publication Add \r\n");
+ TRACE_M(TF_CONFIG_CLIENT,"elementAddr = [%04x]\r\n", elementAddress);
+ TRACE_M(TF_CONFIG_CLIENT,"publishAddress = [%04x]\r\n", publishAddress);
+ TRACE_M(TF_CONFIG_CLIENT,"modelIdentifier = [%08x]\r\n", modelIdentifier);
+
+ TRACE_I(TF_CONFIG_CLIENT,"Publication Set buffer ");
+
+ for (MOBLEUINT8 count=0 ; count<dataLength; count++)
+ {
+ TRACE_I(TF_CONFIG_CLIENT,"%.2x ", pConfigData[count]);
+ }
+
+ if (elementAddress == CONFIG_CLIENT_UNICAST_ADDR)
+ {
+ /* Provisioner needs to be configured */
+ ConfigModel_SelfPublishConfig(CONFIG_CLIENT_UNICAST_ADDR,
+ msg_opcode,pConfigData,dataLength);
+ }
+ else
+ {
+ /* Node address to be configured */
+ ConfigClientModel_SendMessage(dst_peer,msg_opcode,pConfigData,dataLength);
+ }
+
+ return result;
+}
+
+
+/**
+* @brief ConfigClient_PublicationStatus: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_PublicationStatus(MOBLEUINT8 const *pPublicationStatus,
+ MOBLEUINT32 length)
+{
+ /*
+ 4.3.2.18 Config Model Publication Status
+ The Config Model Publication Status is an unacknowledged message used to report
+ the model Publication state (see Section 4.2.2) of an outgoing message that is
+ published by the model.
+ */
+
+ /*
+
+ Status : 8b : Status Code for the requesting message
+ ElementAddress : 16b : Address of the element
+ PublishAddress : 16b : Value of the publish address
+ AppKeyIndex : 12b : Index of the application key
+ CredentialFlag : 1b : Value of the Friendship Credential Flag
+ RFU : 3b : Reserved for Future Use
+ PublishTTL : 8b : Default TTL value for the outgoing messages
+ PublishPeriod : 8b : Period for periodic status publishing
+ PublishRetransmitCount : 3b : Number of retransmissions for each published message
+ PublishRetransmitIntervalSteps : 5b: Number of 50-millisecond steps between retransmissions
+ ModelIdentifier: 16 or 32b: SIG Model ID or Vendor Model ID
+ */
+ configClientPublicationStatus_t configClientPublicationStatus;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT8 temp_var=0;
+ MOBLEUINT16 u16temp_var=0;
+ MOBLEUINT32 modelIdentifier=0;
+ MOBLEUINT8* pSrc;
+
+ pSrc = (MOBLEUINT8*)pPublicationStatus;
+ configClientPublicationStatus.Status = *pPublicationStatus;
+ configClientPublicationStatus.elementAddr = CopyU8LittleEndienArrayToU16word(pSrc+1);
+ configClientPublicationStatus.publishAddr = CopyU8LittleEndienArrayToU16word(pSrc+3);
+ u16temp_var = CopyU8LittleEndienArrayToU16word(pSrc+5);
+ u16temp_var &= 0x0FFF; /* Take 12b only*/
+ configClientPublicationStatus.appKeyIndex = u16temp_var;
+
+ temp_var = *(pSrc+6) & 0x10;
+ configClientPublicationStatus.credentialFlag = temp_var >> 4;
+ configClientPublicationStatus.publishTTL = *(pSrc+7);
+ configClientPublicationStatus.publishPeriod = *(pSrc+8);
+ configClientPublicationStatus.publishRetransmitCount = *(pSrc+9) & 0x07;
+ temp_var = *(pSrc+9) & 0xf8;
+ temp_var>>= 3;
+ configClientPublicationStatus.publishRetransmitIntervalSteps = temp_var;
+
+ if (length == 12 )
+ {
+ modelIdentifier = CopyU8LittleEndienArrayToU16word(pSrc+10);
+ }
+ else
+ {
+ modelIdentifier = CopyU8LittleEndienArrayToU32word(pSrc+10);
+ }
+
+ configClientPublicationStatus.modelIdentifier = modelIdentifier;
+
+ if ((ConfigModelStatusCode_t)SuccessStatus != configClientPublicationStatus.Status)
+ {
+ /* Status returned is an error */
+ }
+
+ TRACE_M(TF_CONFIG_CLIENT,"\r\n Config Client Publication Status Recd \r\n");
+ TRACE_I(TF_CONFIG_CLIENT,"Publication Status buffer: ");
+ for (MOBLEUINT8 count=0 ; count<length; count++)
+ {
+ TRACE_I(TF_CONFIG_CLIENT,"%.2x ", pPublicationStatus[count]);
+ }
+ TRACE_M(TF_CONFIG_CLIENT,"elementAddr = [%04x]\r\n", configClientPublicationStatus.elementAddr);
+ TRACE_M(TF_CONFIG_CLIENT,"publishAddress = [%04x]\r\n", configClientPublicationStatus.publishAddr);
+ TRACE_M(TF_CONFIG_CLIENT,"modelIdentifier = [%08x]\r\n", configClientPublicationStatus.modelIdentifier);
+ TRACE_M(TF_CONFIG_CLIENT,"status = [%02x]\r\n", configClientPublicationStatus.Status);
+
+ Appli_PublicationStatusCb(configClientPublicationStatus.Status);
+
+ return result;
+}
+
+
+
+/**
+* @brief ConfigClient_SubscriptionAdd: This function is called for issuing
+ add subscribe message to an element(node) for Models and AppKey binding
+* @param elementAddress: Element address of node for model binding
+* @param appKeyIndex: Index of App key
+* @param MOBLEUINT32: Model to be subscribed
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_SubscriptionAdd (MOBLEUINT16 elementAddress,
+ MOBLEUINT16 address,
+ MOBLEUINT32 modelIdentifier)
+{
+/*
+4.3.2.19 Config Model Subscription Add
+The Config Model Subscription Add is an acknowledged message used to add an
+address to a Subscription List of a model (see Section 4.2.3).
+
+The response to a Config Model Subscription Add message is a
+Config Model Subscription Status message.
+
+ ElementAddress : 2B : Address of the element
+ address : 2B : Value of the address
+ ModelIdentifier : 2B or 4B : SIG Model ID or Vendor Model ID
+*/
+
+ MOBLEUINT32 dataLength;
+ MOBLE_ADDRESS dst_peer;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8* pConfigData;
+ configClientModelSubscriptionAdd_t modelSubscription;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+
+ TRACE_M(TF_CONFIG_CLIENT,"Config Client Subscription Add Message \r\n");
+
+ /* The ElementAddress field is the unicast address of the element,
+ all other address types are Prohibited.
+ The Address field shall contain the new address to be added to the
+ Subscription List.
+ The value of the Address field shall not be an unassigned address,
+ unicast address, all-nodes address or virtual address.
+ */
+
+ if ( (ADDRESS_IS_GROUP(elementAddress)) || (ADDRESS_IS_UNASSIGNED(elementAddress)) )
+ {
+ result = MOBLE_RESULT_INVALIDARG;
+ }
+ else
+ {
+ modelSubscription.elementAddress = elementAddress;
+ modelSubscription.address = address;
+ modelSubscription.modelIdentifier = modelIdentifier;
+
+ /*
+ The ModelIdentifier field is either a SIG Model ID or a Vendor Model ID
+ that shall identify the model within the element.
+ */
+
+ if(CHKSIGMODEL(modelIdentifier))
+ {
+ /* if upper 16b are 0, then it's a SIG Model */
+ dataLength = sizeof(configClientModelSubscriptionAdd_t) - 2;
+ }
+ else
+ {
+ dataLength = sizeof(configClientModelSubscriptionAdd_t);
+ }
+ } /* else: address is valid */
+
+ msg_opcode = OPCODE_CONFIG_MODEL_SUBSCR_ADD;
+ pConfigData = (MOBLEUINT8*) &(modelSubscription);
+ dst_peer = NodeInfo.nodePrimaryAddress;
+
+ TRACE_I(TF_CONFIG_CLIENT,"Subscription Set buffer ");
+
+ for (MOBLEUINT8 count=0 ; count<dataLength; count++)
+ {
+ TRACE_I(TF_CONFIG_CLIENT,"%.2x ", pConfigData[count]);
+ }
+
+ TRACE_M(TF_CONFIG_CLIENT,"elementAddr = [%04x]\r\n", elementAddress);
+ TRACE_M(TF_CONFIG_CLIENT,"SubscriptionAddress = [%04x]\r\n", address);
+ TRACE_M(TF_CONFIG_CLIENT,"modelIdentifier = [%08x]\r\n", modelIdentifier);
+
+ if (elementAddress == CONFIG_CLIENT_UNICAST_ADDR)
+ {
+ /* Provisioner needs to be configured */
+ ConfigModel_SelfSubscriptionConfig(CONFIG_CLIENT_UNICAST_ADDR,
+ msg_opcode,pConfigData,dataLength);
+ }
+ else
+ {
+ ConfigClientModel_SendMessage(dst_peer,msg_opcode,pConfigData,dataLength);
+ }
+
+ return result;
+
+}
+
+/**
+* @brief ConfigClient_SubscriptionDelete: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_SubscriptionDelete (void)
+{
+/*
+4.3.2.21 Config Model Subscription Delete
+The Config Model Subscription Delete is an acknowledged message used to delete a subscription address from the Subscription List of a model (see Section 4.2.3).
+The response to a Config Model Subscription Delete message is a Config Model Subscription Status message.
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+}
+
+/**
+* @brief ConfigClient_SubscriptionDeleteAll: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_SubscriptionDeleteAll (void)
+{
+/*
+4.3.2.25 Config Model Subscription Delete All
+The Config Model Subscription Delete All is an acknowledged message used to discard the Subscription List of a model (see Section 4.2.3).
+The response to a Config Model Subscription Delete All message is a Config Model Subscription Status message.
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+
+}
+
+/**
+* @brief ConfigClient_SubscriptionOverwrite: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_SubscriptionOverwrite (void)
+{
+ /*
+4.3.2.23 Config Model Subscription Overwrite
+The Config Model Subscription Overwrite is an acknowledged message used to discard the Subscription List and add an address to the cleared Subscription List of a model (see Section 4.2.3).
+The response to a Config Model Subscription Overwrite message is a Config Model Subscription Status message.
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+
+}
+
+
+/**
+* @brief ConfigClient_SubscriptionStatus: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_SubscriptionStatus(MOBLEUINT8 const *pSrcSubscriptionStatus,
+ MOBLEUINT32 length)
+{
+ /*
+ 4.3.2.26 Config Model Subscription Status
+ The Config Model Subscription Status is an unacknowledged message used to report
+ a status of the operation on the Subscription List (see Section 4.2.3).
+ */
+
+ /*
+ Status : 1B : Status Code for the requesting message
+ ElementAddress : 2B : Address of the element
+ Address : 2B : Value of the address
+ ModelIdentifier : 2B or 4B: SIG Model ID or Vendor Model ID
+ */
+ configClientSubscriptionStatus_t configClientSubscriptionStatus;
+ MOBLEUINT8 *pSrc;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT32 modelIdentifier=0;
+
+ pSrc = (MOBLEUINT8*) pSrcSubscriptionStatus;
+ configClientSubscriptionStatus.Status = *pSrc;
+ configClientSubscriptionStatus.elementAddress = CopyU8LittleEndienArrayToU16word(pSrc+1);
+ configClientSubscriptionStatus.address = CopyU8LittleEndienArrayToU16word(pSrc+3);
+
+ if (length == 7 )
+ {
+ modelIdentifier = CopyU8LittleEndienArrayToU16word(pSrc+5);
+ }
+ else
+ {
+ modelIdentifier = CopyU8LittleEndienArrayToU32word(pSrc+5);
+ }
+
+ configClientSubscriptionStatus.modelIdentifier = modelIdentifier;
+
+
+ if ((ConfigModelStatusCode_t)SuccessStatus != configClientSubscriptionStatus.Status)
+ {
+ /* Status returned is an error */
+ }
+
+ TRACE_M(TF_CONFIG_CLIENT,"ConfigClient_SubscriptionStatus \r\n");
+ TRACE_I(TF_CONFIG_CLIENT,"SubscriptionStatus buffer ");
+
+ for (MOBLEUINT8 count=0 ; count<length; count++)
+ {
+ TRACE_I(TF_CONFIG_CLIENT,"%.2x ", pSrcSubscriptionStatus[count]);
+ }
+
+ TRACE_M(TF_CONFIG_CLIENT,"elementAddr = [%04x]\r\n", configClientSubscriptionStatus.elementAddress);
+ TRACE_M(TF_CONFIG_CLIENT,"SubscriptionAddress = [%04x]\r\n", configClientSubscriptionStatus.address);
+ TRACE_M(TF_CONFIG_CLIENT,"modelIdentifier = [%08x]\r\n", configClientSubscriptionStatus.modelIdentifier);
+ TRACE_M(TF_CONFIG_CLIENT,"subscription status = [%02x]\r\n", configClientSubscriptionStatus.Status);
+
+ Appli_SubscriptionAddStatusCb(configClientSubscriptionStatus.Status);
+
+ return result;
+
+
+}
+
+
+/**
+* @brief ConfigClient_SubscriptionGet: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_SubscriptionGet (void)
+{
+/*
+4.3.2.27 Config SIG Model Subscription Get
+The Config SIG Model Subscription Get is an acknowledged message used to get the list of subscription addresses of a model within the element. This message is only for SIG Models.
+The response to a Config SIG Model Subscription Get message is a Config SIG Model Subscription List message.
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+}
+
+
+/**
+* @brief ConfigClient_SubscriptionList: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_SubscriptionList (void)
+{
+/*
+4.3.2.28 Config SIG Model Subscription List
+The Config SIG Model Subscription List is an unacknowledged message used to
+report all addresses from the Subscription List of the model (see Section 4.2.3). This message is only for SIG Models.
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+
+}
+
+
+/**
+* @brief ConfigClient_ModelAppBind: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_ModelAppBind (MOBLEUINT16 elementAddress,
+ MOBLEUINT16 appKeyIndex,
+ MOBLEUINT32 modelIdentifier)
+{
+/*
+4.3.2.46 Config Model App Bind
+The Config Model App Bind is an acknowledged message used to bind an AppKey to a model.
+The response to a Config Model App Bind message is a Config Model App Status message.
+
+ ElementAddress : 2B : Address of the element
+ AppKeyIndex : 2B : Index of the AppKey
+ ModelIdentifier : 2 or 4: SIG Model ID or Vendor Model ID
+*/
+
+ MOBLEUINT32 dataLength;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8* pConfigData;
+ MOBLE_ADDRESS dst_peer;
+ configClientModelAppBind_t modelAppBind;
+
+ modelAppBind.appKeyIndex = appKeyIndex;
+ modelAppBind.elementAddress = elementAddress; /* Will be converted to address inside lib */
+ modelAppBind.modelIdentifier = modelIdentifier;
+ dataLength = sizeof(configClientModelAppBind_t);
+
+ if(CHKSIGMODEL(modelIdentifier))
+ {
+ /* if upper 16b are 0, then it's a SIG Model */
+ dataLength -= 2; /* reduce 2 bytes when it's SIG Model */
+ }
+
+ msg_opcode = OPCODE_CONFIG_MODEL_APP_BIND;
+ pConfigData = (MOBLEUINT8*) &(modelAppBind);
+
+ dst_peer = NodeInfo.nodePrimaryAddress;
+
+ TRACE_M(TF_CONFIG_CLIENT,"Config Client App Key Bind message \r\n");
+ TRACE_M(TF_CONFIG_CLIENT,"Model = 0x%8x \r\n", modelIdentifier );
+
+ if (elementAddress == CONFIG_CLIENT_UNICAST_ADDR)
+ {
+ /* Provisioner needs to be configured */
+ ConfigClient_SelfModelAppBindConfig(CONFIG_CLIENT_UNICAST_ADDR,
+ msg_opcode,pConfigData,dataLength);
+ }
+ else
+ {
+ /* Node address to be configured */
+ ConfigClientModel_SendMessage(dst_peer,msg_opcode,pConfigData,dataLength);
+ }
+
+ return result;
+}
+
+
+/**
+* @brief ConfigClient_ModelAppUnbind: This function is called for both Acknowledged and
+unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_ModelAppUnbind (void)
+{
+/*
+4.3.2.47 Config Model App Unbind
+The Config Model App Unbind is an acknowledged message used to remove the binding between an AppKey and a model.
+The response to a Config Model App Unbind message is a Config Model App Status message.
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ return result;
+}
+
+
+
+/**
+* @brief ConfigClient_ModelAppStatus: This function is a call
+ back when the response is received for AppKey Add
+* @param configClientAppKeyAdd_t: Structure of the AppKey add message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClient_ModelAppStatus(MOBLEUINT8 const *pSrcModelAppStatus,
+ MOBLEUINT32 length)
+{
+ /*
+ 4.3.2.48 Config Model App Status
+ The Config Model App Status is an unacknowledged message used to report a status
+ for the requesting message, based on the element address,
+ the AppKeyIndex identifying the AppKey on the AppKey List,
+ and the ModelIdentifier.
+ */
+
+ /*
+ Status : 1B : Status Code for the requesting message
+ ElementAddress : 2B : Address of the element
+ AppKeyIndex : 2B : Index of the AppKey
+ ModelIdentifier : 2B or 4B: SIG Model ID or Vendor Model ID
+ */
+ configClientModelAppStatus_t configClientModelAppStatus;
+ MOBLEUINT8* pSrcAppStatus;
+ MOBLEUINT32 modelIdentifier;
+
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ pSrcAppStatus = (MOBLEUINT8*)pSrcModelAppStatus;
+
+ configClientModelAppStatus.Status = *pSrcAppStatus;
+ configClientModelAppStatus.elementAddress = CopyU8LittleEndienArrayToU16word(pSrcAppStatus+1);
+ configClientModelAppStatus.appKeyIndex = CopyU8LittleEndienArrayToU16word(pSrcAppStatus+3);
+
+ if (length == 7 )
+ {
+ modelIdentifier = CopyU8LittleEndienArrayToU16word(pSrcAppStatus+5);
+ }
+ else
+ {
+ modelIdentifier = CopyU8LittleEndienArrayToU32word(pSrcAppStatus+5);
+ }
+
+ configClientModelAppStatus.modelIdentifier = modelIdentifier;
+
+ if ((ConfigModelStatusCode_t)SuccessStatus != configClientModelAppStatus.Status)
+ {
+ /* Status returned is an error */
+ }
+
+ TRACE_M(TF_CONFIG_CLIENT,"ConfigClient_ModelAppStatus = %d \r\n", configClientModelAppStatus.Status);
+ Appli_AppBindModelStatusCb(configClientModelAppStatus.Status);
+
+ return result;
+}
+
+
+void CopyU8LittleEndienArray_fromU16word (MOBLEUINT8* pArray, MOBLEUINT16 inputWord)
+{
+ *(pArray+1) = (MOBLEUINT8)(inputWord & 0x00ff); /* Copy the LSB first */
+ *pArray = (MOBLEUINT8)((inputWord & 0xff00) >> 0x08); /* Copy the MSB later */
+}
+
+MOBLEUINT16 CopyU8LittleEndienArrayToU16word (MOBLEUINT8* pArray)
+{
+ MOBLEUINT16 u16Word=0;
+ MOBLEUINT8 lsb_byte=0;
+ MOBLEUINT8 msb_byte=0;
+
+ lsb_byte = *pArray;
+ pArray++;
+ msb_byte = *pArray;
+ u16Word = (msb_byte<<8);
+ u16Word &= 0xFF00;
+ u16Word |= lsb_byte;
+
+ return u16Word;
+}
+
+MOBLEUINT32 CopyU8LittleEndienArrayToU32word (MOBLEUINT8* pArray)
+{
+ MOBLEUINT32 u32Word=0;
+
+ u32Word = *(pArray+3);
+ u32Word <<= 8;
+ u32Word |= *(pArray+2);
+ u32Word <<= 8;
+ u32Word |= *(pArray+1);
+ u32Word <<= 8;
+ u32Word |= *pArray;
+ return u32Word;
+}
+
+void CopyU8LittleEndienArray_fromU32word (MOBLEUINT8* pArray, MOBLEUINT32 inputWord)
+{
+ *pArray = (MOBLEUINT8)(inputWord & 0x000000ff); /* Copy the LSB first */
+ *(pArray+1) = (MOBLEUINT8)((inputWord & 0x0000ff00) >> 8); /* Copy the MSB later */
+ *(pArray+2) = (MOBLEUINT8)((inputWord & 0x00ff0000) >> 16); /* Copy the MSB later */
+ *(pArray+3) = (MOBLEUINT8)((inputWord & 0xff000000) >> 24); /* Copy the MSB later */
+}
+
+void CopyU8LittleEndienArray_2B_fromU32word (MOBLEUINT8* pArray, MOBLEUINT32 inputWord)
+{
+ *pArray = (MOBLEUINT8)(inputWord & 0x000000ff); /* Copy the LSB first */
+ *(pArray+1) = (MOBLEUINT8)((inputWord & 0x0000ff00) >> 8); /* Copy the MSB later */
+}
+
+/**
+* @brief GenericModelServer_GetOpcodeTableCb: This function is call-back
+* from the library to send Model Opcode Table info to library
+* @param MODEL_OpcodeTableParam_t: Pointer to the Generic Model opcode array
+* @param length: Pointer to the Length of Generic Model opcode array
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClientModel_SendMessage(MOBLE_ADDRESS dst_peer ,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 *pData,
+ MOBLEUINT32 dataLength)
+{
+ MOBLE_ADDRESS peer_addr;
+ peer_addr = 0; //inside the library, it is taken as index
+ MOBLEUINT8 *pTargetDevKey;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+
+ pTargetDevKey = GetNewProvNodeDevKey();
+
+ ConfigModel_SendMessage(peer_addr, dst_peer, opcode,
+ pData, dataLength, pTargetDevKey);
+ return result;
+}
+
+/**
+* @brief ApplicationGetConfigServerDeviceKey: This function is call-back
+* from the library to Get the Device Keys from the application
+* @param MOBLE_ADDRESS src: Source address of the Config Server for which
+ device key is required
+* @param pkeyTbUse: Pointer to the Device key to be updated
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ApplicationGetConfigServerDeviceKey(MOBLE_ADDRESS src,
+ const MOBLEUINT8 **ppkeyTbUse)
+{
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ *ppkeyTbUse= GetNewProvNodeDevKey();
+
+ return result;
+}
+
+
+
+/**
+* @brief ConfigClient_SaveMsgSendingTime: This function is used by application to save
+ the Initial time of message issue
+* @param None
+* @retval None
+*/
+void ConfigClient_SaveMsgSendingTime (void)
+{
+ NodeInfo.Initial_time = Clock_Time(); /* Get the current time to see the
+ Timeout later */
+}
+
+/**
+* @brief ConfigClient_ChkRetrialState: This function is used by application
+ to check if there is a timeout of the Config Client Message sending
+* @param None
+* @retval None
+*/
+MOBLEUINT8 ConfigClient_ChkRetrialState (eServerRespRecdState_t* peRespRecdState)
+{
+ MOBLEUINT8 retry_state = CLIENT_TX_INPROGRESS;
+ MOBLEUINT32 nowClockTime;
+
+ nowClockTime = Clock_Time();
+ if(( (nowClockTime - NodeInfo.Initial_time) >= CONFIGCLIENT_RESPONSE_TIMEOUT))
+ {
+ /* Timeout occured, Do retry or enter the error state */
+ NodeInfo.numberOfAttemptsTx++;
+
+ if (NodeInfo.numberOfAttemptsTx >= CONFIGCLIENT_MAX_TRIALS)
+ {
+ NodeInfo.numberOfAttemptsTx = 0;
+ retry_state = CLIENT_TX_RETRY_ENDS; /* re-trial cycle ends, no response */
+ *peRespRecdState = NodeNoResponse_State;
+ ConfigClient_ErrorState();
+ }
+ else //(NodeInfo.numberOfAttemptsTx >= CONFIGCLIENT_RE_TRIALS)
+ {
+ retry_state = CLIENT_TX_TIMEOUT;
+ *peRespRecdState = NodeIdle_State; /* Run next re-trial cycle again */
+ TRACE_M(TF_CONFIG_CLIENT,"Retry started \n\r");
+ }
+
+ ConfigClient_SaveMsgSendingTime(); /* Save the time again for next loop */
+ }
+
+ return retry_state;
+}
+
+/**
+* @brief ConfigClient_ErrorState: This function is used by application to save
+ the Initial time of message issue
+* @param None
+* @retval None
+*/
+void ConfigClient_ErrorState (void)
+{
+ /* No Response from the Node under provisioning after trials */
+ TRACE_M(TF_CONFIG_CLIENT,"No response from Node \n\r");
+}
+
+/**
+* @brief ConfigClient_ResetTrials: This function is used by application to
+ Reset the Number of attempts of transmissions
+* @param None
+* @retval None
+*/
+void ConfigClient_ResetTrials (void)
+{
+ NodeInfo.numberOfAttemptsTx = 0;
+}
+
+
+/**
+* @brief ConfigClientModel_GetOpcodeTableCb: This function is call-back
+* from the library to process the Config Client Status messages
+* @param MODEL_OpcodeTableParam_t: Pointer to the Generic Model opcode array
+* @param length: Pointer to the Length of Generic Model opcode array
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClientModel_GetOpcodeTableCb(const MODEL_OpcodeTableParam_t **data,
+ MOBLEUINT16 *length)
+{
+ *data = Config_Client_Opcodes_Table;
+ *length = sizeof(Config_Client_Opcodes_Table)/sizeof(Config_Client_Opcodes_Table[0]);
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+
+/**
+* @brief ConfigClientModel_GetStatusRequestCb : This function is call-back
+from the library to send response to the message from peer
+* @param peer_addr: Address of the peer
+* @param dst_peer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param opcode: Received opcode of the Status message callback
+* @param pResponsedata: Pointer to the buffer to be updated with status
+* @param plength: Pointer to the Length of the data, to be updated by application
+* @param pRxData: Pointer to the data received in packet.
+* @param dataLength: length of the data in packet.
+* @param response: Value to indicate wheather message is acknowledged meassage or not.
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClientModel_GetStatusRequestCb(MOBLE_ADDRESS peer_addr,
+ MOBLE_ADDRESS dst_peer,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 *pResponsedata,
+ MOBLEUINT32 *plength,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response)
+
+{
+ TRACE_M(TF_CONFIG_CLIENT,"Response **Should Never enter here \n\r");
+ switch(opcode)
+ {
+
+ case 0:
+ {
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ }
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief GenericModelServer_ProcessMessageCb: This is a callback function from
+the library whenever a Generic Model message is received
+* @param peer_addr: Address of the peer
+* @param dst_peer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param opcode: Received opcode of the Status message callback
+* @param pData: Pointer to the buffer to be updated with status
+* @param length: Length of the parameters received
+* @param response: if TRUE, the message is an acknowledged message
+* @param pRxData: Pointer to the data received in packet.
+* @param dataLength: length of the data in packet.
+* @param response: Value to indicate wheather message is acknowledged meassage or not.
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT ConfigClientModel_ProcessMessageCb(MOBLE_ADDRESS peer_addr,
+ MOBLE_ADDRESS dst_peer,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response
+ )
+{
+
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ tClockTime delay_t = Clock_Time();
+
+ TRACE_M(TF_CONFIG_CLIENT,"dst_peer = %.2X , peer_add = %.2X, opcode= %.2X ,response= %.2X \r\n ",
+ dst_peer, peer_addr, opcode , response);
+
+ switch(opcode)
+ {
+
+ case OPCODE_CONFIG_COMPOSITION_DATA_STATUS:
+ {
+ ConfigClient_CompositionDataStatusResponse(pRxData, dataLength);
+ if(result == MOBLE_RESULT_SUCCESS)
+ {
+ /*
+ when device is working as proxy and is a part of node
+ delay will be included in the toggelinf of led.
+ */
+ }
+
+ break;
+ }
+
+ case OPCODE_CONFIG_APPKEY_STATUS:
+ {
+ ConfigClient_AppKeyStatus(pRxData, dataLength);
+ break;
+ }
+
+ case OPCODE_CONFIG_SUBSCRIPTION_STATUS:
+ {
+ ConfigClient_SubscriptionStatus(pRxData, dataLength);
+
+ break;
+ }
+
+ case OPCODE_CONFIG_MODEL_PUBLI_STATUS:
+ {
+ ConfigClient_PublicationStatus(pRxData, dataLength);
+ break;
+ }
+
+ case OPCODE_CONFIG_MODEL_APP_STATUS:
+ {
+ ConfigClient_ModelAppStatus(pRxData, dataLength);
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ } /* Switch ends */
+
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+WEAK_FUNCTION (MOBLEUINT8* GetNewProvNodeDevKey(void))
+{
+ return 0;
+}
+
+/**
+* @}
+*/
+
+/**
+* @}
+*/
+
+/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/
+
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/generic_client.c b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/generic_client.c
new file mode 100644
index 000000000..d87e28582
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/generic_client.c
@@ -0,0 +1,412 @@
+/**
+******************************************************************************
+* @file generic_client.c
+* @author BLE Mesh Team
+* @version V1.11.002
+* @date 27-09-2019
+* @brief Generic model client middleware file
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+* 3. Neither the name of STMicroelectronics nor the names of its contributors
+* may be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Initial BLE-Mesh is built over Motorola�s Mesh over Bluetooth Low Energy
+* (MoBLE) technology. The present solution is developed and maintained for both
+* Mesh library and Applications solely by STMicroelectronics.
+*
+******************************************************************************
+*/
+/* Includes ------------------------------------------------------------------*/
+#include "hal_common.h"
+#include "mesh_cfg.h"
+#include "generic.h"
+#include "generic_client.h"
+//#include "light.h"
+#include "common.h"
+#include "models_if.h"
+#include <string.h>
+#include "compiler.h"
+
+
+/** @addtogroup MODEL_GENERIC
+* @{
+*/
+
+/** @addtogroup Generic_Model_Callbacks
+* @{
+*/
+
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+
+/* Private variables ---------------------------------------------------------*/
+
+const MODEL_OpcodeTableParam_t Generic_Client_Opcodes_Table[] = {
+ /* Generic OnOff Client */
+ /* MOBLEUINT32 opcode, MOBLEBOOL reliable, MOBLEUINT16 min_payload_size,
+ MOBLEUINT16 max_payload_size;
+ Here in this array, Handler is not defined; */
+#ifdef ENABLE_GENERIC_MODEL_CLIENT_ONOFF
+ {GENERIC_ON_OFF_STATUS, MOBLE_FALSE, 1, 3, NULL , 1, 3},
+#endif
+#ifdef ENABLE_GENERIC_MODEL_CLIENT_LEVEL
+ {GENERIC_LEVEL_STATUS, MOBLE_FALSE, 2, 5, NULL , 2 , 5},
+#endif
+ {0}
+};
+
+/* Private function prototypes -----------------------------------------------*/
+WEAK_FUNCTION (MOBLE_RESULT Appli_Generic_OnOff_Set(Generic_OnOffStatus_t* pGeneric_OnOffParam,
+ MOBLEUINT8 OptionalValid));
+WEAK_FUNCTION (MOBLE_RESULT Appli_Generic_Level_Set(Generic_LevelStatus_t* plevelParam,
+ MOBLEUINT8 OptionalValid));
+WEAK_FUNCTION (MOBLE_RESULT Appli_Generic_LevelDelta_Set(Generic_LevelStatus_t* pdeltalevelParam,
+ MOBLEUINT8 OptionalValid));
+WEAK_FUNCTION (MOBLE_RESULT Appli_Generic_LevelMove_Set(Generic_LevelStatus_t* pdeltaMoveParam,
+ MOBLEUINT8 OptionalValid));
+WEAK_FUNCTION (MOBLE_RESULT Appli_Generic_PowerOnOff_Set(Generic_PowerOnOffParam_t* pPowerOnOffParam,
+ MOBLEUINT8 OptionalValid));
+WEAK_FUNCTION (MOBLE_RESULT Appli_Generic_DefaultTransitionTime_Set(Generic_DefaultTransitionParam_t* pDefaultTimeParam,
+ MOBLEUINT8 OptionalValid));
+WEAK_FUNCTION (void Appli_Generic_Restore_PowerOn_Value(MOBLEUINT8 restoreValue));
+
+/* Private functions ---------------------------------------------------------*/
+
+/**
+* @brief Generic_OnOff_Set: This function is called for Acknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT GenericClient_OnOff_Set(MOBLE_ADDRESS element_number,
+ _Generic_OnOffParam *pOnOff_param,
+ MOBLEUINT32 length)
+
+{
+
+ /* 3.2.1.2 Generic OnOff Set
+ OnOff: 1B The target value of the Generic OnOff state
+ TID : 1B Transaction Identifier
+ Transition Time: 1B Format as defined in Section 3.1.3. (Optional)
+ Delay: 1B Message execution delay in 5 millisecond steps (C.1)
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT8 const *msg_buff;
+ MOBLEUINT16 msg_opcode;
+ MOBLEBOOL ack_flag;
+
+ TRACE_M(TF_GENERIC_CLIENT,"Generic_OnOff_Set Client Message \r\n");
+
+ msg_buff = pOnOff_param->a_OnOff_param;
+ ack_flag = MOBLE_TRUE;
+ msg_opcode = GENERIC_ON_OFF_SET_ACK;
+
+ /*
+ Manage the TID Here....
+ */
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) GENERIC_MODEL_SERVER_ONOFF_MODEL_ID,
+ element_number ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_GENERIC_CLIENT,"Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief GenericClient_OnOff_Set_Unack: This function is called for unacknowledged message
+* @param pOnOff_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT GenericClient_OnOff_Set_Unack(MOBLE_ADDRESS element_number,
+ _Generic_OnOffParam *pOnOff_param,
+ MOBLEUINT32 length)
+
+{
+
+ /* 3.2.1.2 Generic OnOff Set unack
+ OnOff: 1B The target value of the Generic OnOff state
+ TID : 1B Transaction Identifier
+ Transition Time: 1B Format as defined in Section 3.1.3. (Optional)
+ Delay: 1B Message execution delay in 5 millisecond steps (C.1)
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT8 const *msg_buff;
+ MOBLEUINT16 msg_opcode;
+ MOBLEBOOL ack_flag;
+
+ TRACE_M(TF_GENERIC_CLIENT,"Generic_OnOff_Set Client Message \r\n");
+
+ msg_buff = pOnOff_param->a_OnOff_param;
+ ack_flag = MOBLE_FALSE;
+ msg_opcode = GENERIC_ON_OFF_SET_UNACK;
+
+ /*
+ Manage the TID Here....
+ */
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) GENERIC_MODEL_CLIENT_ONOFF_MODEL_ID,
+ element_number ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_GENERIC_CLIENT,"Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief GenericClient_Level_Set_unack: This function is called for Acknowledged
+* @param plevel_paramr: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT GenericClient_Level_Set_Unack(MOBLE_ADDRESS element_number,
+ _Generic_LevelParam *plevel_param,
+ MOBLEUINT32 length)
+
+{
+/*
+ 3.2.2.2 Generic Level Set unack
+ Level: 2B The target value of the Generic Level state
+ TID : 1B Transaction Identifier
+ Transition Time: 1B Format as defined in Section 3.1.3. (Optional)
+ Delay:1B Message execution delay in 5 milliseconds steps (C.1)
+*/
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT8 const *msg_buff;
+ MOBLEUINT16 msg_opcode;
+ MOBLEBOOL ack_flag;
+
+ TRACE_M(TF_GENERIC_CLIENT,"Generic_Level_Set Client Message \r\n");
+
+ msg_buff = plevel_param->a_Level_param;
+ ack_flag = MOBLE_TRUE;
+ msg_opcode = GENERIC_LEVEL_SET_UNACK;
+
+ /*
+ Manage the TID Here....
+ */
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) GENERIC_MODEL_SERVER_LEVEL_MODEL_ID,
+ element_number ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_GENERIC_CLIENT,"Publication Error \r\n");
+ }
+
+ return result;
+}
+
+/**
+* @brief GenericModelServer_GetOpcodeTableCb: This function is call-back
+* from the library to send Model Opcode Table info to library
+* @param MODEL_OpcodeTableParam_t: Pointer to the Generic Model opcode array
+* @param length: Pointer to the Length of Generic Model opcode array
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT GenericModelClient_GetOpcodeTableCb(const MODEL_OpcodeTableParam_t **data,
+ MOBLEUINT16 *length)
+{
+ *data = Generic_Client_Opcodes_Table;
+ *length = sizeof(Generic_Client_Opcodes_Table)/sizeof(Generic_Client_Opcodes_Table[0]);
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief GenericModelClient_GetStatusRequestCb : This function is call-back
+from the library to send response to the message from peer
+* @param peer_addr: Address of the peer
+* @param dst_peer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param opcode: Received opcode of the Status message callback
+* @param pResponsedata: Pointer to the buffer to be updated with status
+* @param plength: Pointer to the Length of the data, to be updated by application
+* @param pRxData: Pointer to the data received in packet.
+* @param dataLength: length of the data in packet.
+* @param response: Value to indicate wheather message is acknowledged meassage or not.
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT GenericModelClient_GetStatusRequestCb(MOBLE_ADDRESS peer_addr,
+ MOBLE_ADDRESS dst_peer,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 *pResponsedata,
+ MOBLEUINT32 *plength,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response)
+
+{
+ TRACE_M(TF_GENERIC,"response status enable \n\r");
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+
+/**
+* @brief GenericModelClient_ProcessMessageCb: This is a callback function from
+the library whenever a Generic Model message is received
+* @param peer_addr: Address of the peer
+* @param dst_peer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param opcode: Received opcode of the Status message callback
+* @param pData: Pointer to the buffer to be updated with status
+* @param length: Length of the parameters received
+* @param response: if TRUE, the message is an acknowledged message
+* @param pRxData: Pointer to the data received in packet.
+* @param dataLength: length of the data in packet.
+* @param response: Value to indicate wheather message is acknowledged meassage or not.
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT GenericModelClient_ProcessMessageCb(MOBLE_ADDRESS peer_addr,
+ MOBLE_ADDRESS dst_peer,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response
+ )
+{
+
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ tClockTime delay_t = Clock_Time();
+
+ TRACE_M(TF_GENERIC,"dst_peer = %.2X , peer_add = %.2X, opcode= %.2X ,response= %.2X \r\n ",
+ dst_peer, peer_addr, opcode , response);
+
+ switch(opcode)
+ {
+ case GENERIC_ON_OFF_STATUS:
+ {
+ Generic_Client_OnOff_Status(pRxData, dataLength);
+ break;
+ }
+ case GENERIC_LEVEL_STATUS:
+ {
+ Generic_Client_Level_Status(pRxData, dataLength);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
+ if((result == MOBLE_RESULT_SUCCESS) && (response == MOBLE_TRUE))
+ {
+ Model_SendResponse(peer_addr,dst_peer,opcode,pRxData,dataLength);
+ }
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/*
+* @brief Generic_Client_OnOff_Status: Function called when status of the model
+received on the client.
+* @param pOnOff_status: ointer to the parameters received for message
+* @param plength: Length of the parameters received for message
+* return MOBLE_RESULT_SUCCESS.
+*/
+MOBLE_RESULT Generic_Client_OnOff_Status(MOBLEUINT8 const *pOnOff_status, MOBLEUINT32 plength)
+{
+ TRACE_M(TF_GENERIC,"Generic_OnOff_Status callback received \r\n");
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/*
+* @brief Generic_Client_Level_Status: Function called when status of the model
+received on the client.
+* @param plevel_status: ointer to the parameters received for message
+* @param plength: Length of the parameters received for message
+* return MOBLE_RESULT_SUCCESS.
+*/
+MOBLE_RESULT Generic_Client_Level_Status(MOBLEUINT8 const *plevel_status, MOBLEUINT32 plength)
+{
+
+ TRACE_M(TF_GENERIC,"Generic_Level_Status callback received \r\n");
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/*
+* @brief Generic_Client_PowerOnOff_Status: Function called when status of the model
+received on the client.
+* @param powerOnOff_status: ointer to the parameters received for message
+* @param plength: Length of the parameters received for message
+* return MOBLE_RESULT_SUCCESS.
+*/
+MOBLE_RESULT Generic_Client_PowerOnOff_Status(MOBLEUINT8 const *powerOnOff_status , MOBLEUINT32 plength)
+{
+
+ TRACE_M(TF_GENERIC,"Generic_PowerOnOff_Status callback received \r\n");
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/*
+* @brief Generic_Client_DefaultTransitionTime_Status: Function called when status of the model
+received on the client.
+* @param pTransition_status: ointer to the parameters received for message
+* @param plength: Length of the parameters received for message
+* return MOBLE_RESULT_SUCCESS.
+*/
+MOBLE_RESULT Generic_Client_DefaultTransitionTime_Status(MOBLEUINT8 const *pTransition_status , MOBLEUINT32 plength)
+{
+
+ TRACE_M(TF_GENERIC,"Generic_DefaultTransitionTime_Status callback received \r\n");
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+Weak function are defined to support the original function if they are not
+included in firmware.
+There is no use of this function for application development purpose.
+**/
+
+/**
+* @}
+*/
+
+/**
+* @}
+*/
+
+/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/
+
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/Src/serial_prvn.c b/Middlewares/ST/STM32_WPAN/ble/mesh/Src/serial_prvn.c
new file mode 100644
index 000000000..894bf8ba3
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/Src/serial_prvn.c
@@ -0,0 +1,164 @@
+/**
+******************************************************************************
+* @file serial_prvn.c
+* @author BLE Mesh Team
+* @version V1.11.000
+* @date 25-07-2019
+* @brief Embedded provisioner Serial Control file
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; COPYRIGHT(c) 2018 STMicroelectronics</center></h2>
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+* 3. Neither the name of STMicroelectronics nor the names of its contributors
+* may be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Initial BLE-Mesh is built over Motorolas Mesh over Bluetooth Low Energy
+* (MoBLE) technology. The present solution is developed and maintained for both
+* Mesh library and Applications solely by STMicroelectronics.
+*
+******************************************************************************
+*/
+/* Includes ------------------------------------------------------------------*/
+#include <string.h>
+#include <stdio.h>
+#include <errno.h>
+#include "hal_common.h"
+#include "serial_if.h"
+#include "serial_ctrl.h"
+#include "mesh_cfg.h"
+#include "ble_mesh.h"
+
+/** @addtogroup BlueNRG_Mesh
+* @{
+*/
+
+/** @addtogroup Middlewares_Serial_Interface
+* @{
+*/
+
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+static neighbor_params_t NeighborTable[5];
+static MOBLEUINT8 NoOfNeighborPresent;
+
+/* Private function prototypes -----------------------------------------------*/
+static MOBLE_RESULT SerialPrvn_ProvisionDevice(char *text);
+static MOBLE_RESULT SerialPrvn_ScanDevices(char *text);
+/* Private functions ---------------------------------------------------------*/
+/**
+* @brief This funcrion is used to parse the string given by the user
+* @param rcvdStringBuff: buffer to store input string
+* @param rcvdStringSize: length of the input string
+* @retval void
+*/
+void SerialPrvn_Process(char *rcvdStringBuff, uint16_t rcvdStringSize)
+{
+ MOBLE_RESULT result;
+
+ /* Command to scan the unprovisioned devices */
+ if (!strncmp(rcvdStringBuff+COMMAND_OFFSET, "SCAN",4))
+ {
+ result = SerialPrvn_ScanDevices(rcvdStringBuff+COMMAND_OFFSET);
+ }
+ /* Command to start the unprovisioned devices */
+ else if (!strncmp(rcvdStringBuff+COMMAND_OFFSET, "PRVN-",4))
+ {
+ result = SerialPrvn_ProvisionDevice(rcvdStringBuff+COMMAND_OFFSET);
+ }
+ else
+ {
+ BLEMesh_PrintStringCb("Invalid Command\r\n");
+ return;
+ }
+
+ /* Check the result of command processing */
+ if(result == MOBLE_RESULT_SUCCESS)
+ {
+ BLEMesh_PrintStringCb("Test command executed successfully\r\n");
+ }
+ else if(result == MOBLE_RESULT_OUTOFMEMORY)
+ {
+ BLEMesh_PrintStringCb("Test command Failed. Out of memory\r\n");
+ }
+ else if(result == MOBLE_RESULT_INVALIDARG)
+ {
+ BLEMesh_PrintStringCb("Test command Failed. Invalid Argument\r\n");
+ }
+ else
+ {
+ BLEMesh_PrintStringCb("Test command Failed.\r\n");
+ }
+}
+
+/**
+* @brief This function returns starts the provisioning of one of the devices
+* @param text: recieved array
+* @retval MOBLE_RESULT
+*/
+static MOBLE_RESULT SerialPrvn_ProvisionDevice(char *text)
+{
+ MOBLEINT16 index = 0;
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+
+ sscanf(text, "PRVN-%hd", &index);
+ result = BLEMesh_ProvisionRemote(NeighborTable[index].uuid);
+
+ return result;
+}
+
+/**
+* @brief This function scans and prints unprovisioned devices
+* @param text: recieved array
+* @retval MOBLE_RESULT
+*/
+static MOBLE_RESULT SerialPrvn_ScanDevices(char *text)
+{
+ MOBLE_RESULT result;
+
+ result = BLEMesh_GetNeighborState(NeighborTable,&NoOfNeighborPresent);
+ /* Check if any unprovisioned device is available */
+ if(!NoOfNeighborPresent)
+ {
+ TRACE_I(TF_PROVISION,"No Unprovisioned Device Nearby\r\n");
+ }
+ else
+ {
+ for(MOBLEINT8 count=0; count < NoOfNeighborPresent; count++)
+ {
+ BLEMesh_PrintStringCb("");
+ TRACE_I(TF_PROVISION,"Device-%d -> ", count);
+ BLEMesh_PrintDataCb(NeighborTable[count].uuid, 16);
+ }
+ }
+ return result;
+ }
+
+/**
+* @}
+*/
+
+/**
+* @}
+*/
+/******************* (C) COPYRIGHT 2018 STMicroelectronics *****END OF FILE****/
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/Src/serial_ut.c b/Middlewares/ST/STM32_WPAN/ble/mesh/Src/serial_ut.c
new file mode 100644
index 000000000..10542ca1f
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/Src/serial_ut.c
@@ -0,0 +1,269 @@
+/**
+******************************************************************************
+* @file serial_ut.c
+* @author BLE Mesh Team
+* @version V1.07.000
+* @date 15-June-2018
+* @brief Upper Tester file
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+* 3. Neither the name of STMicroelectronics nor the names of its contributors
+* may be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Initial BLE-Mesh is built over Motorolas Mesh over Bluetooth Low Energy
+* (MoBLE) technology. The present solution is developed and maintained for both
+* Mesh library and Applications solely by STMicroelectronics.
+*
+******************************************************************************
+*/
+
+/* Includes ------------------------------------------------------------------*/
+#include <string.h>
+#include <stdio.h>
+#include <errno.h>
+#include "hal_common.h"
+#include "serial_ut.h"
+#if (ENABLE_UT)
+#include "serial_ctrl.h"
+#endif
+/** @addtogroup BLE_Mesh
+* @{
+*/
+
+/** @addtogroup Application_Callbacks_BLENRG2
+* @{
+*/
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+#define CMD_INDEX_SEND_01 1
+#define CMD_INDEX_SEND_02 2
+#define CMD_INDEX_SET_01 3
+#define CMD_INDEX_SET_02 4
+#define CMD_INDEX_SET_03 5
+#define CMD_INDEX_SET_04 6
+#define CMD_INDEX_SET_05 7
+#define CMD_INDEX_SET_06 8
+#define CMD_INDEX_SET_07 9
+#define CMD_INDEX_SET_08 10
+#define CMD_INDEX_SET_09 11
+#define CMD_INDEX_SET_10 12
+#define CMD_INDEX_SET_11 13
+#define CMD_INDEX_SET_12 14
+#define CMD_INDEX_SET_13 15
+#define CMD_INDEX_SET_14 16
+#define CMD_INDEX_SET_15 17
+#define CMD_INDEX_PRINT_01 18
+
+#define CMD_SET_COUNT 15
+#define CMD_SEND_COUNT 2
+#define CMD_PRINT_COUNT 1
+
+#define CMD_SET_OFFSET 7
+#define CMD_SEND_OFFSET 8
+#define CMD_SET_OFFSET 7
+#define CMD_PRINT_OFFSET 9
+#define CMD_CTRL_OFFSET 5
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+static void SerialUt_doubleHexToHex(MOBLEUINT8* hexArray,MOBLEUINT8* outputArray, MOBLEUINT8 length);
+static MOBLEUINT16 SerialUt_GetFunctionIndex(char *text);
+/* Private functions ---------------------------------------------------------*/
+
+/**
+* @brief SerialUt_Process: This function extracts the command and variables from
+the recieved string and passes it to BLEMesh library.
+* @param rcvdStringBuff: Pointer to the recieved ascii character array from the user
+* @param rcvdStringSize: Size of the recieved array
+* @retval void
+*/
+void SerialUt_Process(char *rcvdStringBuff, uint16_t rcvdStringSize)
+{
+ MOBLEUINT16 commandIndex = SerialUt_GetFunctionIndex(rcvdStringBuff+5);
+ MOBLEUINT8 testFunctionParm[6]= {'\0'} ;
+ MOBLEUINT8 asciiFunctionParameter[7] = {'\0'} ;
+ MOBLE_RESULT result;
+ switch (commandIndex)
+ {
+ case CMD_INDEX_SEND_01:
+ sscanf(rcvdStringBuff + CMD_CTRL_OFFSET + CMD_SEND_OFFSET, "%2s %4s", asciiFunctionParameter,asciiFunctionParameter+2);
+ /*SerialUt_doubleHexToHex
+ Function will convert the asci string into orinal hex format.
+ eg- send-01 12 3456
+ return 0x12,0x34,0x56
+ */
+ SerialUt_doubleHexToHex(asciiFunctionParameter,testFunctionParm,6);
+ /*BLEMesh_UpperTesterDataProcess
+ this function will take action and execute some other functions
+ */
+ result = BLEMesh_UpperTesterDataProcess( commandIndex, testFunctionParm);
+ break;
+
+ case CMD_INDEX_SEND_02:
+ sscanf(rcvdStringBuff + CMD_CTRL_OFFSET + CMD_SEND_OFFSET, "%2s %4s", asciiFunctionParameter,asciiFunctionParameter+2);
+ SerialUt_doubleHexToHex(asciiFunctionParameter,testFunctionParm,6);
+ result = BLEMesh_UpperTesterDataProcess( commandIndex, testFunctionParm);
+ break;
+ /* Resets the Board */
+ case CMD_INDEX_SET_01:
+ /* Unprovisions the Node */
+ case CMD_INDEX_SET_02:
+ /* test signal in IV Update */
+ case CMD_INDEX_SET_04:
+ /* Breakes the exsisting friendship */
+ case CMD_INDEX_SET_06:
+ /* Clears the reply protection list */
+ case CMD_INDEX_SET_07:
+ /* Orders IUT to allow only one NetKeyIndex */
+ case CMD_INDEX_SET_08:
+ /* Clears the heartbeat subscription count */
+ case CMD_INDEX_SET_09:
+ /* Order IUT to clear the Net & App Keys Buffer */
+ case CMD_INDEX_SET_13:
+ /* Order IUT to update the NetKeyIndex */
+ case CMD_INDEX_SET_14:
+ /* Order IUT to clear Publication & Subscription List*/
+ case CMD_INDEX_SET_15:
+ result = BLEMesh_UpperTesterDataProcess(commandIndex, testFunctionParm);
+ break;
+
+ /* Updates the 96 hour IV Update limit */
+ case CMD_INDEX_SET_03:
+ /* Subscribe/Un-Subscribe to group address */
+ case CMD_INDEX_SET_05:
+ /* Sets all node identity for all Networks */
+ case CMD_INDEX_SET_11:
+ /* Updates the features supported by the library */
+ case CMD_INDEX_SET_12:
+ sscanf(rcvdStringBuff + CMD_CTRL_OFFSET + CMD_SET_OFFSET, "%1c", testFunctionParm);
+ result = BLEMesh_UpperTesterDataProcess( commandIndex, testFunctionParm);
+ break;
+
+ /* Sets system faults for Health Model*/
+ case CMD_INDEX_SET_10:
+ sscanf(rcvdStringBuff + CMD_CTRL_OFFSET + CMD_SET_OFFSET, "%2s %1c", asciiFunctionParameter, testFunctionParm+1);
+ SerialUt_doubleHexToHex(asciiFunctionParameter,testFunctionParm,2);
+ result = BLEMesh_UpperTesterDataProcess( commandIndex, testFunctionParm);
+ break;
+
+ /* Print Security Credentials */
+ case CMD_INDEX_PRINT_01:
+ result = BLEMesh_UpperTesterDataProcess( commandIndex, testFunctionParm);
+ break;
+
+ default:
+ printf("Invalid Command\r\n");
+ }
+ if (result == MOBLE_RESULT_SUCCESS)
+ {
+ BLEMesh_PrintStringCb("Test command executed successfully\r\n");
+ }
+ else if(result == MOBLE_RESULT_OUTOFMEMORY)
+ {
+ BLEMesh_PrintStringCb("Test command Failed. Out of memory\r\n");
+}
+ else if(result == MOBLE_RESULT_INVALIDARG)
+{
+ BLEMesh_PrintStringCb("Test command Failed. Invalid Argument\r\n");
+ }
+ else
+ {
+ BLEMesh_PrintStringCb("Test command Failed.\r\n");
+ }
+ }
+
+/**
+* @brief SerialUt_GetFunctionIndex: This function returns the calculated index
+of the command recieved by the user
+* @param rcvdStringBuff: Pointer to the recieved ascii character array from the user
+* @param rcvdStringSize: Size of the recieved array
+* @retval MOBLEUINT16
+*/
+static MOBLEUINT16 SerialUt_GetFunctionIndex(char *text)
+{
+ MOBLEINT16 index = 0;
+
+ if (!strncmp(text, "SEND-",5))
+{
+ /* sscanf is to extract the integeer value from the string */
+ sscanf(text, "SEND-%hd", &index);
+ index = (index<=CMD_SEND_COUNT) ? index : 0;
+
+}
+ else if (!strncmp(text, "SET-",4))
+{
+ sscanf(text, "SET-%hd", &index);
+ index = (index<=CMD_SET_COUNT)? index + CMD_SEND_COUNT : 0;
+
+ }
+ else if (!strncmp(text, "PRINT-",6))
+ {
+ sscanf(text, "PRINT-%hd", &index);
+ index = (index<=CMD_PRINT_COUNT)?
+ index + CMD_SET_COUNT + CMD_SEND_COUNT : 0;
+ }
+ return index;
+ }
+
+/**
+* @brief SerialUt_doubleHexToHex: This function converts two 4-bit hex integers
+to one 8-bit hex integer
+* @param hexArray: Pointer to input hex array
+* @param outputArray: Pointer to output hex array
+* @param length: length of the input hex array
+* @retval void
+*/
+static void SerialUt_doubleHexToHex(MOBLEUINT8* hexArray,MOBLEUINT8* outputArray, MOBLEUINT8 length)
+{
+ MOBLEUINT8 counter =0,position = 0;
+ MOBLEUINT8 msb,lsb;;
+ while (counter <length)
+ {
+ msb = Serial_CharToHexConvert(hexArray[counter]);
+ lsb = Serial_CharToHexConvert(hexArray[counter + 1 ]);
+ outputArray[position] = msb<<4;
+ outputArray[position] |= lsb;
+ printf("data scanned is %02hx \n\r",outputArray[position]);
+ counter+=2;
+ position++;
+ }
+}
+
+/**
+* @brief BLEMesh_UpperTesterDataProcess:THis funcrion is for testing ,If implemented in library,
+* linker would replace weak linking from here.
+* @param testFunctionIndex: Index of the command to be executed by the user
+* @param testFunctionParm: Pointer to recieved parameters from the user
+* @retval MOBLE_RESULT
+*/
+__weak MOBLE_RESULT BLEMesh_UpperTesterDataProcess(MOBLEUINT8 testFunctionIndex, MOBLEUINT8* testFunctionParm)
+{
+ printf("RECIEVED FUNCTION INDEX = %d\r\n",testFunctionIndex);
+ printf("RECIEVED FUNCTION PARAMETER = %s\r\n",testFunctionParm);
+ printf("\r\n");
+
+ return MOBLE_RESULT_SUCCESS;
+} \ No newline at end of file
diff --git a/Middlewares/ST/STM32_WPAN/ble/svc/Inc/bvopus_service_stm.h b/Middlewares/ST/STM32_WPAN/ble/svc/Inc/bvopus_service_stm.h
index f323a4803..1973b79d5 100644
--- a/Middlewares/ST/STM32_WPAN/ble/svc/Inc/bvopus_service_stm.h
+++ b/Middlewares/ST/STM32_WPAN/ble/svc/Inc/bvopus_service_stm.h
@@ -2,8 +2,8 @@
******************************************************************************
* @file bluevoice_opus.h
* @author SRA-A&SP
- * @version V1.0.0
- * @date 08-May-2019
+ * @version V1.0.1
+ * @date 22-Oct-2019
* @brief This file contains definitions for BlueVoiceOPUS service.
******************************************************************************
* @attention
@@ -86,6 +86,7 @@ typedef struct
typedef struct
{
uint16_t ServiceHandle; /*!< Service handle.*/
+ uint16_t ServiceEndHandle; /*!< Service End handle.*/
uint16_t CharAudioHandle; /*!< Audio characteristic handle.*/
uint16_t CharCtrlHandle; /*!< Control characteristic handle.*/
} BV_OPUS_ProfileHandle_t;
@@ -94,7 +95,7 @@ typedef struct
/* Define --------------------------------------------------------------------*/
/*!< BlueNRG low-level communication timeout.*/
-#define BV_OPUS_SENDING_TIMEOUT 0xFF
+#define BV_OPUS_SENDING_TIMEOUT 0xFF
/*!< Control message type */
#define BV_OPUS_CONTROL (uint8_t)0x0A
@@ -137,6 +138,13 @@ BV_OPUS_Status BVOPUS_CodecEncInit(OPUS_IF_ENC_ConfigTypeDef *ENC_configOpus);
BV_OPUS_Status BVOPUS_CodecDecInit(OPUS_IF_DEC_ConfigTypeDef *DEC_configOpus);
/**
+ * @brief This function sets the maximum ble packet size.
+ * @param max_length: maximum ble packet size.
+ * @retval None.
+ */
+void BluevoiceOPUS_SetMaxDataLength(uint16_t max_length);
+
+/**
* @brief This function returns the audio notification status.
* @param None.
* @retval 1 if audio notification are enabled, 0 otherwise.
diff --git a/Middlewares/ST/STM32_WPAN/ble/svc/Src/bvopus_service_stm.c b/Middlewares/ST/STM32_WPAN/ble/svc/Src/bvopus_service_stm.c
index 1ee8b7e23..bbb630c9c 100644
--- a/Middlewares/ST/STM32_WPAN/ble/svc/Src/bvopus_service_stm.c
+++ b/Middlewares/ST/STM32_WPAN/ble/svc/Src/bvopus_service_stm.c
@@ -2,8 +2,8 @@
******************************************************************************
* @file bvopus_service_stm.c
* @author SRA-A&SP
- * @version V1.0.0
- * @date 08-May-2019
+ * @version V1.0.1
+ * @date 22-Oct-2019
* @brief This file contains definitions for BlueVoice opus service.
******************************************************************************
* @attention
@@ -39,8 +39,7 @@
#include "bvopus_service_stm.h"
#include "opus_interface_stm.h"
#include "common_blesvc.h"
-
-
+
#ifndef MIN
#define MIN(a,b) ((a) < (b) )? (a) : (b)
#endif
@@ -76,6 +75,8 @@ typedef struct
uint8_t CtrlNotifEnabled; /*!< Control characteristic enabled. */
+ uint8_t MaxDataLength; /*!< Maximum ble packet length. */
+
uint8_t *pInternalMemory_dec; /*!< Pointer to the internal memory used for the BlueVoice decoding. */
uint8_t *pInternalMemory_enc; /*!< Pointer to the internal memory used for the BlueVoice encoding. */
@@ -182,6 +183,9 @@ void BVOPUS_STM_Init(void)
SVCCTL_RegisterSvcHandler(BVOPUS_Event_Handler);
memset(&hBV_OPUS, 0, sizeof(hBV_OPUS));
+
+ /* Set default ble packet size equal to 20B*/
+ hBV_OPUS.MaxDataLength = 20;
BluevoiceOPUS_AddService();
@@ -215,6 +219,14 @@ static SVCCTL_EvtAckStatus_t BVOPUS_Event_Handler(void *Event)
{
aci_gatt_attribute_modified_event_rp0 *pr = (aci_gatt_attribute_modified_event_rp0*)blue_evt->data;
Evt_code = BluevoiceOPUS_AttributeModified_CB(pr->Attr_Handle, pr->Attr_Data_Length, pr->Attr_Data);
+ if(Evt_code == BVOPUS_STM_START_STREAMING_EVT)
+ {
+ hBV_OPUS.AudioNotifEnabled = 1;
+ }
+ if(Evt_code == BVOPUS_STM_STOP_STREAMING_EVT)
+ {
+ hBV_OPUS.AudioNotifEnabled = 0;
+ }
BVOPUS_STM_APP_Notification(Evt_code);
}
break;
@@ -244,13 +256,11 @@ BVOPUS_STM_evt_code_t BluevoiceOPUS_AttributeModified_CB(uint16_t attr_handle, u
if (attr_handle == (hBV_OPUS.BV_handle.CharAudioHandle + 2))
{
if (attr_value[0] == 0x01)
- {
- hBV_OPUS.AudioNotifEnabled = 1;
+ {
return BVOPUS_STM_START_STREAMING_EVT;
}
else if(attr_value[0] == 0x00)
{
- hBV_OPUS.AudioNotifEnabled = 0;
return BVOPUS_STM_STOP_STREAMING_EVT;
}
}
@@ -359,7 +369,7 @@ BV_OPUS_Status BluevoiceOPUS_AddChar(uint16_t service_handle)
memcpy(hBV_OPUS.BV_uuid.audio_uuid.Char_UUID_128, bvopus_audio_char_uuid, sizeof(bvopus_audio_char_uuid));
ret = aci_gatt_add_char(hBV_OPUS.BV_handle.ServiceHandle, UUID_TYPE_128, &hBV_OPUS.BV_uuid.audio_uuid,
- 20, CHAR_PROP_NOTIFY, ATTR_PERMISSION_NONE, GATT_DONT_NOTIFY_EVENTS, 16, 1,
+ (CFG_BLE_MAX_ATT_MTU-3), CHAR_PROP_NOTIFY, ATTR_PERMISSION_NONE, GATT_DONT_NOTIFY_EVENTS, 16, 1,
&hBV_OPUS.BV_handle.CharAudioHandle);
if (ret != BLE_STATUS_SUCCESS)
@@ -444,6 +454,18 @@ BV_OPUS_Status BVOPUS_CodecDecInit(OPUS_IF_DEC_ConfigTypeDef *DEC_configOpus)
return BV_OPUS_SUCCESS;
}
+
+/**
+ * @brief This function sets the maximum ble packet size.
+ * @param max_length: maximum ble packet size.
+ * @retval None.
+ */
+void BluevoiceOPUS_SetMaxDataLength(uint16_t max_length)
+{
+ hBV_OPUS.MaxDataLength = (max_length-3);
+}
+
+
/**
* @brief This function returns the audio notification status.
* @param None.
@@ -533,7 +555,7 @@ BV_OPUS_Status BluevoiceOPUS_SendAudioData(uint8_t *data_buffer, int *opus_err)
*opus_err = 0;
OpusEncBufLen = OPUS_IF_ENC_Encode((uint8_t *) data_buffer, hBV_OPUS.pInternalMemory_enc);
-
+
if(OpusEncBufLen<=0)
{
*opus_err = OpusEncBufLen;
@@ -548,10 +570,10 @@ BV_OPUS_Status BluevoiceOPUS_SendAudioData(uint8_t *data_buffer, int *opus_err)
/* Data are sent as notifications*/
while (j < tot_len)
{
- len = MIN(20, tot_len - j);
+ len = MIN(hBV_OPUS.MaxDataLength, tot_len - j);
while(aci_gatt_update_char_value(hBV_OPUS.BV_handle.ServiceHandle, hBV_OPUS.BV_handle.CharAudioHandle, 0,
- len,(uint8_t*) &OpusEncBuf_BV_OPUS_TP[j]) == BLE_STATUS_NOT_ALLOWED)
+ len,(uint8_t*) &OpusEncBuf_BV_OPUS_TP[j]) != BLE_STATUS_SUCCESS)
{
/* Radio is busy */
/*-------------------------------------------------------*/
@@ -594,7 +616,7 @@ BV_OPUS_Status BluevoiceOPUS_SendCtrlData(uint8_t* data_buffer, uint8_t Nb_bytes
/* Data are sent as notifications*/
while (aci_gatt_update_char_value(hBV_OPUS.BV_handle.ServiceHandle, hBV_OPUS.BV_handle.CharCtrlHandle, 0,
- Nb_bytes, (uint8_t *)data_buffer) == BLE_STATUS_NOT_ALLOWED)
+ Nb_bytes, (uint8_t *)data_buffer) != BLE_STATUS_SUCCESS)
{
/* Radio is busy */
/*-------------------------------------------------------*/
@@ -754,9 +776,9 @@ uint32_t BluevoiceOPUS_TP_Encapsulate(uint8_t* buffer_out, uint8_t* buffer_in, u
while (counter < len)
{
- size = MIN(19, len - counter);
+ size = MIN((hBV_OPUS.MaxDataLength-1), len - counter);
- if (len - counter <= 19)
+ if (len - counter <= (hBV_OPUS.MaxDataLength-1))
{
if (counter == 0)
{
diff --git a/Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c b/Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c
index 1b9aeaeb0..1a7e653c8 100644
--- a/Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c
+++ b/Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c
@@ -190,8 +190,10 @@ void SVCCTL_RegisterSvcHandler( SVC_CTL_p_EvtHandler_t pfBLE_SVC_Service_Event_H
{
#if (BLE_CFG_SVC_MAX_NBR_CB > 0)
SVCCTL_EvtHandler.SVCCTL__SvcHandlerTab[SVCCTL_EvtHandler.NbreOfRegisteredHandler] = pfBLE_SVC_Service_Event_Handler;
-#endif
SVCCTL_EvtHandler.NbreOfRegisteredHandler++;
+#else
+ (void)(pfBLE_SVC_Service_Event_Handler);
+#endif
return;
}
@@ -205,8 +207,10 @@ void SVCCTL_RegisterCltHandler( SVC_CTL_p_EvtHandler_t pfBLE_SVC_Client_Event_Ha
{
#if (BLE_CFG_CLT_MAX_NBR_CB > 0)
SVCCTL_CltHandler.SVCCTL_CltHandlerTable[SVCCTL_CltHandler.NbreOfRegisteredHandler] = pfBLE_SVC_Client_Event_Handler;
-#endif
SVCCTL_CltHandler.NbreOfRegisteredHandler++;
+#else
+ (void)(pfBLE_SVC_Client_Event_Handler);
+#endif
return;
}
diff --git a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/hw.h b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/hw.h
index efcfd5010..101029647 100644
--- a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/hw.h
+++ b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/hw.h
@@ -59,10 +59,11 @@ extern "C" {
void HW_IPCC_THREAD_CliEvtNot( void );
void HW_IPCC_LLDTESTS_Init( void );
- void HW_IPCC_LLDTESTS_CliSendCmd( void );
- void HW_IPCC_LLDTESTS_EvtNot( void );
- void HW_IPCC_LLDTESTS_CliSendAck( void );
- void HW_IPCC_LLDTESTS_CliEvtNot( void );
+ void HW_IPCC_LLDTESTS_SendCliCmd( void );
+ void HW_IPCC_LLDTESTS_ReceiveCliRsp( void );
+ void HW_IPCC_LLDTESTS_SendCliRspAck( void );
+ void HW_IPCC_LLDTESTS_ReceiveM0Cmd( void );
+ void HW_IPCC_LLDTESTS_SendM0CmdAck( void );
void HW_IPCC_TRACES_Init( void );
void HW_IPCC_TRACES_EvtNot( void );
diff --git a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c
index 0247fe8a7..964109840 100644
--- a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c
+++ b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c
@@ -470,6 +470,30 @@ SHCI_CmdStatus_t SHCI_C2_Reinit( void )
return (SHCI_CmdStatus_t)(((TL_CcEvt_t*)(p_rsp->evtserial.evt.payload))->payload[0]);
}
+SHCI_CmdStatus_t SHCI_C2_ExtpaConfig(uint32_t gpio_port, uint16_t gpio_pin_number, uint8_t gpio_polarity, uint8_t gpio_status)
+{
+ /**
+ * TL_BLEEVT_CS_BUFFER_SIZE is 15 bytes so it is large enough to hold the 8 bytes of command parameters
+ * Buffer is large enough to hold command complete without payload
+ */
+ uint8_t local_buffer[TL_BLEEVT_CS_BUFFER_SIZE];
+ TL_EvtPacket_t * p_rsp;
+
+ p_rsp = (TL_EvtPacket_t *)local_buffer;
+
+ ((SHCI_C2_EXTPA_CONFIG_Cmd_Param_t*)local_buffer)->gpio_port = gpio_port;
+ ((SHCI_C2_EXTPA_CONFIG_Cmd_Param_t*)local_buffer)->gpio_pin_number = gpio_pin_number;
+ ((SHCI_C2_EXTPA_CONFIG_Cmd_Param_t*)local_buffer)->gpio_polarity = gpio_polarity;
+ ((SHCI_C2_EXTPA_CONFIG_Cmd_Param_t*)local_buffer)->gpio_status = gpio_status;
+
+ shci_send( SHCI_OPCODE_C2_EXTPA_CONFIG,
+ 8,
+ local_buffer,
+ p_rsp );
+
+ return (SHCI_CmdStatus_t)(((TL_CcEvt_t*)(p_rsp->evtserial.evt.payload))->payload[0]);
+}
+
/**
* Local System COMMAND
* These commands are NOT sent to the CPU2
diff --git a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.h b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.h
index 65f48cc62..308c1d143 100644
--- a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.h
+++ b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.h
@@ -50,6 +50,7 @@ extern "C" {
ERR_BLE_INIT = 0,
ERR_THREAD_LLD_FATAL_ERROR = 125, /* The LLD driver used on 802_15_4 detected a fatal error */
ERR_THREAD_UNKNOWN_CMD = 126, /* The command send by the M4 to control the Thread stack is unknown */
+ ERR_ZIGBEE_UNKNOWN_CMD = 200, /* The command send by the M4 to control the Zigbee stack is unknown */
} SCHI_SystemErrCode_t;
#define SHCI_EVTCODE ( 0xFF )
@@ -135,7 +136,8 @@ extern "C" {
SHCI_OCF_C2_MAC_802_15_4_INIT,
SHCI_OCF_C2_REINIT,
SHCI_OCF_C2_ZIGBEE_INIT,
- SHCI_OCF_C2_LLD_TESTS_INIT
+ SHCI_OCF_C2_LLD_TESTS_INIT,
+ SHCI_OCF_C2_EXTPA_CONFIG
} SHCI_OCF_t;
#define SHCI_OPCODE_C2_FUS_GET_STATE (( SHCI_OGF << 10) + SHCI_OCF_C2_FUS_GET_STATE)
@@ -325,6 +327,7 @@ extern "C" {
{
BLE_ENABLE,
THREAD_ENABLE,
+ ZIGBEE_ENABLE,
} SHCI_C2_CONCURRENT_Mode_Param_t;
/** No response parameters*/
@@ -335,18 +338,42 @@ extern "C" {
{
BLE_IP,
THREAD_IP,
+ ZIGBEE_IP,
} SHCI_C2_FLASH_Ip_t;
/** No response parameters*/
-#define SHCI_OPCODE_C2_RADIO_ALLOW_LOW_POWER (( SHCI_OGF << 10) + SHCI_OCF_C2_RADIO_ALLOW_LOW_POWER)
+#define SHCI_OPCODE_C2_RADIO_ALLOW_LOW_POWER (( SHCI_OGF << 10) + SHCI_OCF_C2_RADIO_ALLOW_LOW_POWER)
#define SHCI_OPCODE_C2_MAC_802_15_4_INIT (( SHCI_OGF << 10) + SHCI_OCF_C2_MAC_802_15_4_INIT)
#define SHCI_OPCODE_C2_REINIT (( SHCI_OGF << 10) + SHCI_OCF_C2_REINIT)
-#define SHCI_OPCODE_C2_ZIGBEE_INIT (( SHCI_OGF << 10) + SHCI_OCF_C2_ZIGBEE_INIT)
+#define SHCI_OPCODE_C2_ZIGBEE_INIT (( SHCI_OGF << 10) + SHCI_OCF_C2_ZIGBEE_INIT)
-#define SHCI_OPCODE_C2_LLD_TESTS_INIT (( SHCI_OGF << 10) + SHCI_OCF_C2_LLD_TESTS_INIT)
+#define SHCI_OPCODE_C2_LLD_TESTS_INIT (( SHCI_OGF << 10) + SHCI_OCF_C2_LLD_TESTS_INIT)
+
+#define SHCI_OPCODE_C2_EXTPA_CONFIG (( SHCI_OGF << 10) + SHCI_OCF_C2_EXTPA_CONFIG)
+ /** Command parameters */
+ enum
+ {
+ EXT_PA_ENABLED_LOW,
+ EXT_PA_ENABLED_HIGH,
+ }/* gpio_polarity */;
+
+ enum
+ {
+ EXT_PA_DISABLED,
+ EXT_PA_ENABLED,
+ }/* gpio_status */;
+
+ typedef PACKED_STRUCT{
+ uint32_t gpio_port;
+ uint16_t gpio_pin_number;
+ uint8_t gpio_polarity;
+ uint8_t gpio_status;
+ } SHCI_C2_EXTPA_CONFIG_Cmd_Param_t;
+
+ /** No response parameters*/
/* Exported type --------------------------------------------------------*/
@@ -408,6 +435,9 @@ typedef MB_WirelessFwInfoTable_t SHCI_WirelessFwInfoTable_t;
#define INFO_STACK_TYPE_MAC 0x40
#define INFO_STACK_TYPE_BLE_THREAD_FTD_STATIC 0x50
#define INFO_STACK_TYPE_802154_LLD_TESTS 0x60
+#define INFO_STACK_TYPE_802154_PHY_VALID 0x61
+#define INFO_STACK_TYPE_BLE_PHY_VALID 0x62
+#define INFO_STACK_TYPE_BLE_ZIGBEE_FFD_STATIC 0x70
typedef struct {
/**
@@ -656,6 +686,27 @@ typedef struct {
*/
SHCI_CmdStatus_t SHCI_C2_Reinit( void );
+ /**
+ * SHCI_C2_ExtpaConfig
+ * @brief Send the Ext PA configuration
+ * When the CPU2 receives the command, it controls the Ext PA as requested by the configuration
+ * This configures only which IO is used to enable/disable the ExtPA and the associated polarity
+ * This command has no effect on the other IO that is used to control the mode of the Ext PA (Rx/Tx)
+ *
+ * @param gpio_port: GPIOx where x can be (A..F) to select the GPIO peripheral for STM32WBxx family
+ * @param gpio_pin_number: This parameter can be one of GPIO_PIN_x (= LL_GPIO_PIN_x) where x can be (0..15).
+ * @param gpio_polarity: This parameter can be either
+ * - EXT_PA_ENABLED_LOW: ExtPA is enabled when GPIO is low
+ * - EXT_PA_ENABLED_HIGH: ExtPA is enabled when GPIO is high
+ * @param gpio_status: This parameter can be either
+ * - EXT_PA_DISABLED: Stop driving the ExtPA
+ * - EXT_PA_ENABLED: Drive the ExtPA according to radio activity
+ * (ON before the Event and OFF at the end of the event)
+ * @retval Status
+ */
+ SHCI_CmdStatus_t SHCI_C2_ExtpaConfig(uint32_t gpio_port, uint16_t gpio_pin_number, uint8_t gpio_polarity, uint8_t gpio_status);
+
+
#ifdef __cplusplus
}
#endif
diff --git a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c
index 7aebe4deb..6012bf4d8 100644
--- a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c
+++ b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c
@@ -96,14 +96,17 @@ void hci_user_evt_proc(void)
{
LST_remove_head ( &HciAsynchEventQueue, (tListNode **)&phcievtbuffer );
- UserEventFlow = HCI_TL_UserEventFlow_Enable;
-
if (hciContext.UserEvtRx != NULL)
{
UserEvtRxParam.pckt = phcievtbuffer;
+ UserEvtRxParam.status = HCI_TL_UserEventFlow_Enable;
hciContext.UserEvtRx((void *)&UserEvtRxParam);
UserEventFlow = UserEvtRxParam.status;
}
+ else
+ {
+ UserEventFlow = HCI_TL_UserEventFlow_Enable;
+ }
if(UserEventFlow != HCI_TL_UserEventFlow_Disable)
{
@@ -142,6 +145,7 @@ void hci_resume_flow( void )
int hci_send_req(struct hci_request *p_cmd, uint8_t async)
{
+ (void)(async);
uint16_t opcode;
TL_CcEvt_t *pcommand_complete_event;
TL_CsEvt_t *pcommand_status_event;
diff --git a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/mbox_def.h b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/mbox_def.h
index 290017f1f..efd22fc08 100644
--- a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/mbox_def.h
+++ b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/mbox_def.h
@@ -96,8 +96,8 @@ extern "C" {
typedef struct
{
- uint8_t *notack_buffer;
uint8_t *clicmdrsp_buffer;
+ uint8_t *m0cmd_buffer;
} MB_LldTestsTable_t;
typedef struct
@@ -218,8 +218,9 @@ extern "C" {
#define HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL LL_IPCC_CHANNEL_3
#define HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL LL_IPCC_CHANNEL_3
#define HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL LL_IPCC_CHANNEL_3
-#define HW_IPCC_THREAD_CLI_CMD_CHANNEL LL_IPCC_CHANNEL_5
#define HW_IPCC_MM_RELEASE_BUFFER_CHANNEL LL_IPCC_CHANNEL_4
+#define HW_IPCC_THREAD_CLI_CMD_CHANNEL LL_IPCC_CHANNEL_5
+#define HW_IPCC_LLDTESTS_CLI_CMD_CHANNEL LL_IPCC_CHANNEL_5
#define HW_IPCC_HCI_ACL_DATA_CHANNEL LL_IPCC_CHANNEL_6
/** CPU2 */
@@ -228,8 +229,10 @@ extern "C" {
#define HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL LL_IPCC_CHANNEL_3
#define HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL LL_IPCC_CHANNEL_3
#define HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL LL_IPCC_CHANNEL_3
+#define HW_IPCC_LLDTESTS_M0_CMD_CHANNEL LL_IPCC_CHANNEL_3
#define HW_IPCC_TRACES_CHANNEL LL_IPCC_CHANNEL_4
#define HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL LL_IPCC_CHANNEL_5
+#define HW_IPCC_LLDTESTS_CLI_RSP_CHANNEL LL_IPCC_CHANNEL_5
#define HW_IPCC_ZIGBEE_APPLI_LOGGING_CHANNEL LL_IPCC_CHANNEL_5
#endif /*__MBOX_H */
diff --git a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c
index 7ab1e068f..5c663711d 100644
--- a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c
+++ b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c
@@ -91,14 +91,17 @@ void shci_user_evt_proc(void)
{
LST_remove_head ( &SHciAsynchEventQueue, (tListNode **)&phcievtbuffer );
- SHCI_TL_UserEventFlow = SHCI_TL_UserEventFlow_Enable;
-
if (shciContext.UserEvtRx != NULL)
{
UserEvtRxParam.pckt = phcievtbuffer;
+ UserEvtRxParam.status = SHCI_TL_UserEventFlow_Enable;
shciContext.UserEvtRx((void *)&UserEvtRxParam);
SHCI_TL_UserEventFlow = UserEvtRxParam.status;
}
+ else
+ {
+ SHCI_TL_UserEventFlow = SHCI_TL_UserEventFlow_Enable;
+ }
if(SHCI_TL_UserEventFlow != SHCI_TL_UserEventFlow_Disable)
{
@@ -209,6 +212,7 @@ static void Cmd_SetStatus(SHCI_TL_CmdStatus_t shcicmdstatus)
static void TlCmdEvtReceived(TL_EvtPacket_t *shcievt)
{
+ (void)(shcievt);
shci_cmd_resp_release(0); /**< Notify the application the Cmd response has been received */
return;
diff --git a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl.h b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl.h
index e7b006e4b..a5a395ac2 100644
--- a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl.h
+++ b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl.h
@@ -31,33 +31,35 @@ extern "C" {
#include "stm32_wpan_common.h"
/* Exported defines -----------------------------------------------------------*/
-#define TL_BLECMD_PKT_TYPE ( 0x01 )
-#define TL_ACL_DATA_PKT_TYPE ( 0x02 )
-#define TL_BLEEVT_PKT_TYPE ( 0x04 )
-#define TL_OTCMD_PKT_TYPE ( 0x08 )
-#define TL_OTRSP_PKT_TYPE ( 0x09 )
-#define TL_CLICMD_PKT_TYPE ( 0x0A )
-#define TL_OTNOT_PKT_TYPE ( 0x0C )
-#define TL_OTACK_PKT_TYPE ( 0x0D )
-#define TL_CLINOT_PKT_TYPE ( 0x0E )
-#define TL_CLIACK_PKT_TYPE ( 0x0F )
-#define TL_SYSCMD_PKT_TYPE ( 0x10 )
-#define TL_SYSRSP_PKT_TYPE ( 0x11 )
-#define TL_SYSEVT_PKT_TYPE ( 0x12 )
-#define TL_LOCCMD_PKT_TYPE ( 0x20 )
-#define TL_LOCRSP_PKT_TYPE ( 0x21 )
-#define TL_TRACES_APP_PKT_TYPE ( 0x40 )
-#define TL_TRACES_WL_PKT_TYPE ( 0x41 )
-
-#define TL_CMD_HDR_SIZE (4)
-#define TL_EVT_HDR_SIZE (3)
-#define TL_EVT_CS_PAYLOAD_SIZE (4)
-
-#define TL_BLEEVT_CC_OPCODE (0x0E)
-#define TL_BLEEVT_CS_OPCODE (0x0F)
-
-#define TL_BLEEVT_CS_PACKET_SIZE (TL_EVT_HDR_SIZE + sizeof(TL_CsEvt_t))
-#define TL_BLEEVT_CS_BUFFER_SIZE (sizeof(TL_PacketHeader_t) + TL_BLEEVT_CS_PACKET_SIZE)
+#define TL_BLECMD_PKT_TYPE ( 0x01 )
+#define TL_ACL_DATA_PKT_TYPE ( 0x02 )
+#define TL_BLEEVT_PKT_TYPE ( 0x04 )
+#define TL_OTCMD_PKT_TYPE ( 0x08 )
+#define TL_OTRSP_PKT_TYPE ( 0x09 )
+#define TL_CLICMD_PKT_TYPE ( 0x0A )
+#define TL_OTNOT_PKT_TYPE ( 0x0C )
+#define TL_OTACK_PKT_TYPE ( 0x0D )
+#define TL_CLINOT_PKT_TYPE ( 0x0E )
+#define TL_CLIACK_PKT_TYPE ( 0x0F )
+#define TL_SYSCMD_PKT_TYPE ( 0x10 )
+#define TL_SYSRSP_PKT_TYPE ( 0x11 )
+#define TL_SYSEVT_PKT_TYPE ( 0x12 )
+#define TL_CLIRESP_PKT_TYPE ( 0x15 )
+#define TL_M0CMD_PKT_TYPE ( 0x16 )
+#define TL_LOCCMD_PKT_TYPE ( 0x20 )
+#define TL_LOCRSP_PKT_TYPE ( 0x21 )
+#define TL_TRACES_APP_PKT_TYPE ( 0x40 )
+#define TL_TRACES_WL_PKT_TYPE ( 0x41 )
+
+#define TL_CMD_HDR_SIZE (4)
+#define TL_EVT_HDR_SIZE (3)
+#define TL_EVT_CS_PAYLOAD_SIZE (4)
+
+#define TL_BLEEVT_CC_OPCODE (0x0E)
+#define TL_BLEEVT_CS_OPCODE (0x0F)
+
+#define TL_BLEEVT_CS_PACKET_SIZE (TL_EVT_HDR_SIZE + sizeof(TL_CsEvt_t))
+#define TL_BLEEVT_CS_BUFFER_SIZE (sizeof(TL_PacketHeader_t) + TL_BLEEVT_CS_PACKET_SIZE)
/* Exported types ------------------------------------------------------------*/
/**< Packet header */
@@ -186,8 +188,8 @@ typedef struct
typedef struct
{
- uint8_t *p_LldTestsCliRspBuffer;
- uint8_t *p_LldTestsNotAckBuffer;
+ uint8_t *p_LldTestsCliCmdRspBuffer;
+ uint8_t *p_LldTestsM0CmdBuffer;
} TL_LLD_tests_Config_t;
typedef struct
@@ -263,13 +265,14 @@ void TL_THREAD_CliSendAck ( void );
void TL_THREAD_CliNotReceived( TL_EvtPacket_t * Notbuffer );
/******************************************************************************
- * LLD tests
+ * LLD TESTS
******************************************************************************/
void TL_LLDTESTS_Init( TL_LLD_tests_Config_t *p_Config );
-void TL_LLDTESTS_CliSendCmd( void );
-void TL_LLDTESTS_NotReceived( TL_EvtPacket_t * Notbuffer );
-void TL_LLDTESTS_CliSendAck ( void );
-void TL_LLDTESTS_CliNotReceived( TL_EvtPacket_t * Notbuffer );
+void TL_LLDTESTS_SendCliCmd( void );
+void TL_LLDTESTS_ReceiveCliRsp( TL_CmdPacket_t * Notbuffer );
+void TL_LLDTESTS_SendCliRspAck( void );
+void TL_LLDTESTS_ReceiveM0Cmd( TL_CmdPacket_t * Notbuffer );
+void TL_LLDTESTS_SendM0CmdAck( void );
/******************************************************************************
* MEMORY MANAGER
diff --git a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c
index 340b5ac92..0b5d1f5dd 100644
--- a/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c
+++ b/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c
@@ -120,6 +120,9 @@ int32_t TL_BLE_Init( void* pConf )
int32_t TL_BLE_SendCmd( uint8_t* buffer, uint16_t size )
{
+ (void)(buffer);
+ (void)(size);
+
((TL_CmdPacket_t*)(TL_RefTable.p_ble_table->pcmd_buffer))->cmdserial.type = TL_BLECMD_PKT_TYPE;
HW_IPCC_BLE_SendCmd();
@@ -143,6 +146,9 @@ void HW_IPCC_BLE_RxEvtNot(void)
int32_t TL_BLE_SendAclData( uint8_t* buffer, uint16_t size )
{
+ (void)(buffer);
+ (void)(size);
+
((TL_AclDataPacket_t *)(TL_RefTable.p_ble_table->phci_acl_data_buffer))->AclDataSerial.type = TL_ACL_DATA_PKT_TYPE;
HW_IPCC_BLE_SendAclData();
@@ -181,6 +187,9 @@ int32_t TL_SYS_Init( void* pConf )
int32_t TL_SYS_SendCmd( uint8_t* buffer, uint16_t size )
{
+ (void)(buffer);
+ (void)(size);
+
((TL_CmdPacket_t *)(TL_RefTable.p_sys_table->pcmd_buffer))->cmdserial.type = TL_SYSCMD_PKT_TYPE;
HW_IPCC_SYS_SendCmd();
@@ -291,58 +300,55 @@ __WEAK void TL_THREAD_CliNotReceived( TL_EvtPacket_t * Notbuffer ){};
#endif /* THREAD_WB */
/******************************************************************************
- * LLD 802.15.4
+ * LLD TESTS
******************************************************************************/
-#ifdef LLD_802_15_4_WB
+#ifdef LLD_TESTS_WB
void TL_LLDTESTS_Init( TL_LLD_tests_Config_t *p_Config )
{
MB_LldTestsTable_t * p_lld_tests_table;
p_lld_tests_table = TL_RefTable.p_lld_tests_table;
-
- p_lld_tests_table->clicmdrsp_buffer = p_Config->p_LldTestsCliRspBuffer;
- p_lld_tests_table->notack_buffer = p_Config->p_LldTestsNotAckBuffer;
-
+ p_lld_tests_table->clicmdrsp_buffer = p_Config->p_LldTestsCliCmdRspBuffer;
+ p_lld_tests_table->m0cmd_buffer = p_Config->p_LldTestsM0CmdBuffer;
HW_IPCC_LLDTESTS_Init();
-
return;
}
-void TL_LLDTESTS_CliSendCmd( void )
+void TL_LLDTESTS_SendCliCmd( void )
{
((TL_CmdPacket_t *)(TL_RefTable.p_lld_tests_table->clicmdrsp_buffer))->cmdserial.type = TL_CLICMD_PKT_TYPE;
-
- HW_IPCC_LLDTESTS_CliSendCmd();
-
+ HW_IPCC_LLDTESTS_SendCliCmd();
return;
}
-void TL_LLDTESTS_CliSendAck ( void )
+void HW_IPCC_LLDTESTS_ReceiveCliRsp( void )
{
- ((TL_CmdPacket_t *)(TL_RefTable.p_lld_tests_table->notack_buffer))->cmdserial.type = TL_OTACK_PKT_TYPE;
-
- HW_IPCC_LLDTESTS_CliSendAck();
-
+ TL_LLDTESTS_ReceiveCliRsp( (TL_CmdPacket_t*)(TL_RefTable.p_lld_tests_table->clicmdrsp_buffer) );
return;
}
-void HW_IPCC_LLDTESTS_EvtNot( void )
+void TL_LLDTESTS_SendCliRspAck( void )
{
- TL_LLDTESTS_NotReceived( (TL_EvtPacket_t*)(TL_RefTable.p_lld_tests_table->notack_buffer) );
-
+ HW_IPCC_LLDTESTS_SendCliRspAck();
return;
}
-void HW_IPCC_LLDTESTS_CliEvtNot( void )
+void HW_IPCC_LLDTESTS_ReceiveM0Cmd( void )
{
- TL_LLDTESTS_CliNotReceived( (TL_EvtPacket_t*)(TL_RefTable.p_lld_tests_table->clicmdrsp_buffer) );
+ TL_LLDTESTS_ReceiveM0Cmd( (TL_CmdPacket_t*)(TL_RefTable.p_lld_tests_table->m0cmd_buffer) );
+ return;
+}
+
+void TL_LLDTESTS_SendM0CmdAck( void )
+{
+ HW_IPCC_LLDTESTS_SendM0CmdAck();
return;
}
-__WEAK void TL_LLDTESTS_NotReceived( TL_EvtPacket_t * Notbuffer ){};
-__WEAK void TL_LLDTESTS_CliNotReceived( TL_EvtPacket_t * Notbuffer ){};
-#endif /* LLD_802_15_4_WB */
+__WEAK void TL_LLDTESTS_ReceiveCliRsp( TL_CmdPacket_t * Notbuffer ){};
+__WEAK void TL_LLDTESTS_ReceiveM0Cmd( TL_CmdPacket_t * Notbuffer ){};
+#endif /* LLD_TESTS_WB */
#ifdef MAC_802_15_4_WB
/******************************************************************************
@@ -550,6 +556,9 @@ void HW_IPCC_TRACES_EvtNot(void)
return;
}
-__WEAK void TL_TRACES_EvtReceived( TL_EvtPacket_t * hcievt ){};
+__WEAK void TL_TRACES_EvtReceived( TL_EvtPacket_t * hcievt )
+{
+ (void)(hcievt);
+}
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_config.h b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_config.h
index 1773385da..16f06d3ba 100644
--- a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_config.h
+++ b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_config.h
@@ -170,7 +170,10 @@ typedef enum MAC_Message_ID_Tag {
g_MLME_POLL_REQUEST_c,
/*! -MLME Poll Confirm */
- g_MLME_POLL_CONFIRM_c
+ g_MLME_POLL_CONFIRM_c,
+
+ /*! -MLME Poll Indication */
+ g_MLME_POLL_INDICATION_c
} MAC_Message_ID_t;
/******************************************************************************/
@@ -234,131 +237,173 @@ typedef enum MAC_Security_Mode_Tag {
*/
#define aMaxSIFSFrameSize (18)
+/** @defgroup MAC 802.15.4 MAC PIB IDs
+ * @brief identifier list of the MAC PIB attributes
+ * @{
+ */
+
/******************************************************************************/
/** @brief This enum contains all the mac pib Ids */
typedef enum MAC_Pib_Ids_Tag {
- /*! -Id of mac attribute mac_ack_wait_duration */
+ /*! Attribute ID of mac attribute mac_ack_wait_duration */
g_MAC_ACK_WAIT_DURATION_c = (uint8_t) 0x40,
- /*! -Id of mac attribute mac_association_permit */
+ /*! Attribute ID of mac attribute mac_association_permit */
g_MAC_ASSOCIATION_PERMIT_c = (uint8_t) 0x41,
- /*! -Id of mac attribute mac_auto_request */
+ /*! Attribute ID of mac attribute mac_auto_request */
g_MAC_AUTO_REQUEST_c = (uint8_t) 0x42,
- /*! -Id of mac attribute mac_beacon_payload */
+ /*! Attribute ID of mac attribute mac_beacon_payload */
g_MAC_BEACON_PAYLOAD_c = (uint8_t) 0x45,
- /*! -Id of mac attribute mac_beacon_payload_length */
+ /*! Attribute ID of mac attribute mac_beacon_payload_length */
g_MAC_BEACON_PAYLOAD_LENGTH_c = (uint8_t) 0x46,
- /*! -Id of mac attribute mac_beacon_order */
+ /*! Attribute ID of mac attribute mac_beacon_order */
g_MAC_BEACON_ORDER_c = (uint8_t) 0x47,
- /*! -Id of mac attribute mac_bsn */
+ /*! Attribute ID of mac attribute mac_bsn */
g_MAC_BSN_c = (uint8_t) 0x49,
- /*! -Id of mac attribute mac_coord_extended_address */
+ /*! Attribute ID of mac attribute mac_coord_extended_address */
g_MAC_COORD_EXTENDED_ADDDRESS_c = (uint8_t) 0x4A,
- /*! -Id of mac attribute mac_coord_short_address */
+ /*! Attribute ID of mac attribute mac_coord_short_address */
g_MAC_COORD_SHORT_ADDRESS_c = (uint8_t) 0x4B,
- /*! -Id of mac attribute mac_dsn */
+ /*! Attribute ID of mac attribute mac_dsn */
g_MAC_DSN_c = (uint8_t) 0x4C,
- /*! -Id of mac attribute mac_max_frame_total_wait_time */
+ /*! Attribute ID of mac attribute mac_max_frame_total_wait_time */
g_MAC_MAX_FRAME_TOTAL_WAIT_TIME_c = (uint8_t) 0x58,
- /*! -Id of mac attribute mac_max_frame_retries */
+ /*! Attribute ID of mac attribute mac_max_frame_retries */
g_MAC_MAX_FRAME_RETRIES_c = (uint8_t) 0x59,
- /*! -Id of mac attribute mac_pan_id */
+ /*! Attribute ID of mac attribute mac_pan_id */
g_MAC_PAN_ID_c = (uint8_t) 0x50,
- /*! -Id of mac attribute mac_response_wait_time */
+ /*! Attribute ID of mac attribute mac_response_wait_time */
g_MAC_RESPONSE_WAIT_TIME_c = (uint8_t) 0x5A,
- /*! -Id of mac attribute mac_rx_on_when_idle */
+ /*! Attribute ID of mac attribute mac_rx_on_when_idle */
g_MAC_RX_ON_WHEN_IDLE_c = (uint8_t) 0x52,
- /*! -Id of mac attribute mac_security_enabled */
+ /*! Attribute ID of mac attribute mac_security_enabled */
g_MAC_SECURITY_ENABLED_c = (uint8_t) 0x5D,
- /*! -Id of mac attribute mac_short_address */
+ /*! Attribute ID of mac attribute mac_short_address */
g_MAC_SHORT_ADDRESS_c = (uint8_t) 0x53,
- /*! -Id of mac attribute mac_superframe_order */
+ /*! Attribute ID of mac attribute mac_superframe_order */
g_MAC_SUPERFRAME_ORDER_c = (uint8_t) 0x54,
- /*! -Id of mac attribute mac_time_stamp_supported */
+ /*! Attribute ID of mac attribute mac_time_stamp_supported */
g_MAC_TIMESTAMP_SUPPORTED_c = (uint8_t) 0x5C,
- /*! -Id of mac attribute mac_transaction_persistence_time */
+ /*! Attribute ID of mac attribute mac_transaction_persistence_time */
g_MAC_TRANSACTION_PERSISTENCE_TIME_c = (uint8_t) 0x55,
- /*! -Id of mac attribute mac_max_be */
+ /*! Attribute ID of mac attribute mac_max_be */
g_MAC_MAX_BE_c = (uint8_t) 0x57,
- /*! -Id of mac attribute mac_lifs */
+ /*! Attribute ID of mac attribute mac_lifs */
g_MAC_LIFS_PERIOD_c = (uint8_t) 0x5E,
- /*! -Id of mac attribute mac_sifs */
+ /*! Attribute ID of mac attribute mac_sifs */
g_MAC_SIFS_PERIOD_c = (uint8_t) 0x5F,
- /*! -Id of mac attribute mac_max_csma_backoffs */
+ /*! Attribute ID of mac attribute mac_max_csma_backoffs */
g_MAC_MAX_CSMA_BACKOFFS_c = (uint8_t) 0x4E,
- /*! -Id of mac attribute mac_min_be */
+ /*! Attribute ID of mac attribute mac_min_be */
g_MAC_MIN_BE_c = (uint8_t) 0x4F,
- /*! -Id of pan coordinator */
+ /*! Attribute ID of pan coordinator */
g_MAC_PAN_COORDINATOR_c = (uint8_t) 0x10,
- /*! -Id of parent is a pan coordinator */
+ /*! Attribute ID of parent is a pan coordinator */
g_MAC_ASSOC_PAN_COORDINATOR_c = (uint8_t) 0x11,
- /*! -Id of mac extended address */
+ /*! Attribute ID of mac extended address */
g_MAC_EXTENDED_ADDRESS_c = (uint8_t) 0x6F,
- /*! -Id for MAC ACL Entry */
+ /*! Attribute ID of MAC ACL Entry */
g_MAC_ACL_ENTRY_DESCRIPTOR_c = (uint8_t) 0x70,
- /*! -Id for No of ACL Security Descriptor Entries */
+ /*! Attribute ID of No of ACL Security Descriptor Entries */
g_MAC_ACL_ENTRY_DESCRIPTOR_SIZE_c = (uint8_t) 0x71,
- /*! -Id for MAC Default Security Support */
+ /*! Attribute ID of MAC Default Security Support */
g_MAC_DEFAULT_SECURITY_c = (uint8_t) 0x72,
- /*! -Id for MAC Default Security material length */
+ /*! Attribute ID of MAC Default Security material length */
g_MAC_DEFAULT_SECURITY_MATERIAL_LENGTH_c = (uint8_t) 0x73,
- /*! -Id for MAC Default Security Material */
+ /*! Attribute ID of MAC Default Security Material */
g_MAC_DEFAULT_SECURITY_MATERIAL_c = (uint8_t) 0x74,
- /*! -Id for MAC Default Security Suite */
+ /*! Attribute ID of MAC Default Security Suite */
g_MAC_DEFAULT_SECURITY_SUITE_c = (uint8_t) 0x75,
- /*! -Id for MAC Security Mode */
+ /*! Attribute ID of MAC Security Mode */
g_MAC_SECURITY_MODE_c = (uint8_t) 0x76,
- /*! - Proprietary Id for Current number of ACL Entries */
+ /*! Attribute ID of Current number of ACL Entries */
g_MAC_CURRENT_ACL_ENTRIES_c = (uint8_t) 0x80,
- /*! - Proprietary Id for Default MAC Security Extended Address */
+ /*! Proprietary Attribute ID of Default MAC Security Extended Address */
g_MAC_DEFAULT_SECURITY_EXTENDED_ADDRESS_c = (uint8_t) 0x81,
- /*! - Proprietary Id for Default MAC Security Extended Address */
+ /*! Proprietary Attribute ID of Default MAC Security Extended Address */
g_MAC_ASSOCIATED_PAN_COORDINATOR_c = (uint8_t) 0x56,
#ifdef GENMAC_CERTIF_DEDICATED_ATTRIB
- /*! - Proprietary Id to force FC frameType field to 'Reserved' */
+ /*! Attribute ID of proprietary attribute to force FC frameType field to 'Reserved' */
g_MAC_CERTIF_SET_FC_RESERVED_FRAME_c = (uint8_t) 0x90,
- /*! - Proprietary Id to force FC security field to 'Enabled' */
+ /*! Attribute ID of proprietary attribute to force FC security field to 'Enabled' */
g_MAC_CERTIF_SET_FC_SECURITY_FRAME_c = (uint8_t) 0x91,
#endif
+ /*! Attribute ID of enabling the promiscuous mode */
+ g_MAC_PROMISCUOUS_MODE_c = (uint8_t) 0x51,
} MAC_Pib_Ids_t;
+
+/******************************************************************************/
+/** @brief This enum contains all the PHY pib Ids */
+/** @brief The PHY PIB attribute IDs */
+typedef enum PHY_Pib_Id_Tag {
+ /*! Attribute ID for current channel */
+ g_PHY_CURRENT_CHANNEL_c = 0x0,
+
+ /*! Attribute ID for channels supported */
+ g_PHY_CHANNELS_SUPPORTED_c = 0x1,
+
+ /*! Attribute ID for transmit power */
+ g_PHY_TRANSMIT_POWER_c = 0x2,
+
+ /*! Attribute ID for CCA Mode */
+ g_PHY_CCA_MODE_c = 0x3,
+
+ /*! Attribute ID for current page */
+ g_PHY_CURRENT_PAGE_c = 0x4,
+
+ /*! Attribute ID for Max Frame Duration */
+ g_PHY_MAX_FRAME_DURATION_c = 0x5,
+
+ /*! Attribute ID for SHR duration */
+ g_PHY_SHR_DURATION_c = 0x6,
+
+ /*! Attribute ID for symbols per octet */
+ g_PHY_SYMBOLS_PER_OCTET_c = 0x7
+} PHY_Pib_Id_t;
+
+
+/**
+ * @}
+ */
+
/******************************************************************************/
/** @brief This enum indicates the type of scan to be performed */
typedef enum MAC_Scan_Types_Tag {
diff --git a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_core.h b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_core.h
index d71ac61bc..58bd97999 100644
--- a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_core.h
+++ b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_core.h
@@ -35,8 +35,7 @@
extern "C" {
#endif
-/* OpenThread OT command cmdcode range 0x280 .. 0x3DF = 352
- * --> will be reattributed to MAC 802.15.4 */
+/* MAC command cmdcode range 0x280 .. 0x3DF = 352 */
#define MAC_802_15_4_CMD_OPCODE_OFFSET 0x280
#define MASK_CMD_CODE_OCF 0x3FF
@@ -56,26 +55,54 @@ typedef PACKED_STRUCT
uint8_t notPayload[1];
}MAC_802_15_4_Notification_t;
+/** @defgroup STM32WB55_MAC_CORE STM32WBxx Proxy MAC 802.15.4 Core
+ * @brief Proxy MAC module allows application to exchange in both ways MAC messages
+ * between Application and RF Cores.
+ * On application or network upper layer SAP-MAC primitive call, MAC request is
+ * interpreted by the Proxy MAC layer and sent to the RF-Core.<br>
+ * On RF-Core MAC notification, MAC messages are parsed and sent back to the upper
+ * user implemented layer using user defined callback.
+ *
+ * @{
+ */
/* List of messages sent by the M4 to the M0 */
typedef enum
{
+ /*! MAC Message ID to request a MAC association */
MSG_M4TOM0_MAC_MLME_ASSOCIATE_REQ=0x00,
+ /*! MAC Message ID to respond to a previously received MAC Association Indication */
MSG_M4TOM0_MAC_MLME_ASSOCIATE_RES,
+ /*! MAC Message ID to request a MAC Disassociation */
MSG_M4TOM0_MAC_MLME_DISASSOCIATE_REQ,
+ /*! MAC Message ID to retrieve PIB Attibute value */
MSG_M4TOM0_MAC_MLME_GET_REQ,
+ /*! MAC Message ID to perform a GTS request*/
MSG_M4TOM0_MAC_MLME_GTS_REQ,
+ /*! MAC Message ID to respond to a previously received MAC Orphan Indication */
MSG_M4TOM0_MAC_MLME_ORPHAN_RES,
+ /*! MAC Message ID to perform a Reset request*/
MSG_M4TOM0_MAC_MLME_RESET_REQ,
+ /*! MAC Message ID to perform a RX Enable request*/
MSG_M4TOM0_MAC_MLME_RX_ENABLE_REQ,
+ /*! MAC Message ID to perform a RX Scan request*/
MSG_M4TOM0_MAC_MLME_SCAN_REQ,
+ /*! MAC Message ID to setup a MAC/PHY attribute*/
MSG_M4TOM0_MAC_MLME_SET_REQ,
+ /*! MAC Message ID to request a MAC Start*/
MSG_M4TOM0_MAC_MLME_START_REQ,
+ /*! MAC Message ID to request a MAC Synchronization*/
MSG_M4TOM0_MAC_MLME_SYNC_REQ,
+ /*! MAC Message ID to request a MAC Polling*/
MSG_M4TOM0_MAC_MLME_POLL_REQ,
+ /*! MAC Message ID to request a Dynamic Preamble Selection*/
MSG_M4TOM0_MAC_MLME_DPS_REQ,
+ /*! MAC Message ID to request a PHY respond with channel sounding information*/
MSG_M4TOM0_MAC_MLME_SOUNDING_REQ,
+ /*! MAC Message ID to request a PHY respond with RMARKER offset*/
MSG_M4TOM0_MAC_MLME_CALIBRATE_REQ,
+ /*! MAC Message ID to request a MAC data transfer to other device*/
MSG_M4TOM0_MAC_MCPS_DATA_REQ,
+ /*! MAC Message ID to request a purge of the pending MSDU from Transaction Queue*/
MSG_M4TOM0_MAC_MCPS_PURGE_REQ,
} MAC_802_15_4_MsgIdM4ToM0_t;
@@ -109,6 +136,10 @@ typedef enum
MSG_M0TOM4_MAC_MLME_POLL_IND
} MAC_802_15_4_MsgIdM0ToM4_t;
+/**
+ * @}
+ */
+
/* List of modes available for UART configuration */
typedef enum
{
@@ -123,6 +154,11 @@ typedef enum
ERR_INTERFACE_WARNING = 2U
} Error_Interface_Level_Enum_t;
+
+/** @addtogroup STM32WB55_MAC_CORE
+ *
+ */
+
/**
* @brief This function is used to manage all the callbacks used by the
* MAC 802.15.4 interface.
@@ -135,6 +171,11 @@ typedef enum
*/
HAL_StatusTypeDef MAC_802_15_4_CallBack_Processing(void);
+/**
+ * @}
+ */
+
+
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_errors.h b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_errors.h
index 9fa8274d5..e45b79a80 100644
--- a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_errors.h
+++ b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_errors.h
@@ -1,15 +1,24 @@
-/*
- * 802_15_4_mac_errors.h
+/**
+ ******************************************************************************
+ * @file 802_15_4_mac_errors.h
+ * @author MCD Application Team
+ * @brief Contains STM32WB specificities requested to control the 802.15.4
+ * MAC interface.
+ ******************************************************************************
+ * @attention
*
- * Created on: 16 janv. 2019
- * Author: faarnal
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
*/
#ifndef STM32WB_M4_FIRMWARE_FIRMWARE_MIDDLEWARES_ST_STM32_WPAN_MAC_802_15_4_CORE_INC_802_15_4_MAC_ERRORS_H_
#define STM32WB_M4_FIRMWARE_FIRMWARE_MIDDLEWARES_ST_STM32_WPAN_MAC_802_15_4_CORE_INC_802_15_4_MAC_ERRORS_H_
-
-
-
-
#endif /* STM32WB_M4_FIRMWARE_FIRMWARE_MIDDLEWARES_ST_STM32_WPAN_MAC_802_15_4_CORE_INC_802_15_4_MAC_ERRORS_H_ */
diff --git a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_types.h b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_types.h
index 9d75583a8..093137b1f 100644
--- a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_types.h
+++ b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_types.h
@@ -1210,35 +1210,44 @@ typedef MAC_Status_t (* MAC_MCPSDataIndCbPtr) ( const MAC_dataInd_t * pDataInd )
MLME POLL Indication*/
typedef MAC_Status_t (*MAC_MLMEPollIndCbPtr) ( const MAC_pollInd_t * pPollInd );
+/**
+ * @}
+ */
+
+/**@addtogroup STM32WB55_MAC
+ * @{
+ */
+
/******************************************************************************/
/** @brief Defines callback init structure to be set by NWK upper layer before
MAC Initialisation */
+
typedef struct {
- MAC_MLMEAssociateCnfCbPtr mlmeAssociateCnfCb;
- MAC_MLMEAssociateIndCbPtr mlmeAssociateIndCb;
- MAC_MLMEBeaconNotifyIndCbPtr mlmeBeaconNotifyIndCb;
- MAC_MLMECalibrateCnfCbPtr mlmeCalibrateCnfCb;
- MAC_MLMECommStatusIndCbPtr mlmeCommStatusIndCb;
- MAC_MLMEDisassociateCnfCbPtr mlmeDisassociateCnfCb;
- MAC_MLMEDisassociateIndCbPtr mlmeDisassociateIndCb;
- MAC_MLMEDpsCnfCbPtr mlmeDpsCnfCb;
- MAC_MLMEDpsIndCbPtr mlmeDpsIndCb;
- MAC_MLMEGetCnfCbPtr mlmeGetCnfCb;
- MAC_MLMEGtsCnfCbPtr mlmeGtsCnfCb;
- MAC_MLMEGtsIndCbPtr mlmeGtsIndCb;
- MAC_MLMEOrphanIndCbPtr mlmeOrphanIndCb;
- MAC_MLMEPollCnfCbPtr mlmePollCnfCb;
- MAC_MLMEResetCnfCbPtr mlmeResetCnfCb;
- MAC_MLMERxEnableCnfCbPtr mlmeRxEnableCnfCb;
- MAC_MLMEScanCnfCbPtr mlmeScanCnfCb;
- MAC_MLMESetCnfCbPtr mlmeSetCnfCb;
- MAC_MLMESoundingCnfCbPtr mlmeSoundingCnfCb;
- MAC_MLMEStartCnfCbPtr mlmeStartCnfCb;
- MAC_MLMESyncLossIndCbPtr mlmeSyncLossIndCb;
- MAC_MCPSDataIndCbPtr mcpsDataIndCb;
- MAC_MCPSDataCnfCbPtr mcpsDataCnfCb;
- MAC_MCPSPurgeCnfCbPtr mcpsPurgeCnfCb;
- MAC_MLMEPollIndCbPtr mlmePollIndCb;
+ MAC_MLMEAssociateCnfCbPtr mlmeAssociateCnfCb;
+ MAC_MLMEAssociateIndCbPtr mlmeAssociateIndCb;
+ MAC_MLMEBeaconNotifyIndCbPtr mlmeBeaconNotifyIndCb;
+ MAC_MLMECalibrateCnfCbPtr mlmeCalibrateCnfCb;
+ MAC_MLMECommStatusIndCbPtr mlmeCommStatusIndCb;
+ MAC_MLMEDisassociateCnfCbPtr mlmeDisassociateCnfCb;
+ MAC_MLMEDisassociateIndCbPtr mlmeDisassociateIndCb;
+ MAC_MLMEDpsCnfCbPtr mlmeDpsCnfCb;
+ MAC_MLMEDpsIndCbPtr mlmeDpsIndCb;
+ MAC_MLMEGetCnfCbPtr mlmeGetCnfCb;
+ MAC_MLMEGtsCnfCbPtr mlmeGtsCnfCb;
+ MAC_MLMEGtsIndCbPtr mlmeGtsIndCb;
+ MAC_MLMEOrphanIndCbPtr mlmeOrphanIndCb;
+ MAC_MLMEPollCnfCbPtr mlmePollCnfCb;
+ MAC_MLMEResetCnfCbPtr mlmeResetCnfCb;
+ MAC_MLMERxEnableCnfCbPtr mlmeRxEnableCnfCb;
+ MAC_MLMEScanCnfCbPtr mlmeScanCnfCb;
+ MAC_MLMESetCnfCbPtr mlmeSetCnfCb;
+ MAC_MLMESoundingCnfCbPtr mlmeSoundingCnfCb;
+ MAC_MLMEStartCnfCbPtr mlmeStartCnfCb;
+ MAC_MLMESyncLossIndCbPtr mlmeSyncLossIndCb;
+ MAC_MCPSDataIndCbPtr mcpsDataIndCb;
+ MAC_MCPSDataCnfCbPtr mcpsDataCnfCb;
+ MAC_MCPSPurgeCnfCbPtr mcpsPurgeCnfCb;
+ MAC_MLMEPollIndCbPtr mlmePollIndCb;
} MAC_callbacks_t;
@@ -1246,8 +1255,4 @@ typedef struct {
* @}
*/
-
-
-
-
#endif /* _INC_802_15_4_MAC_TYPES_H_ */
diff --git a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c
index 39e8bba40..bfcb790e9 100644
--- a/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c
+++ b/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c
@@ -34,9 +34,15 @@
#include "tl_mac_802_15_4.h"
-/** @defgroup CORE MAC 802.15.4 Core & Utils
- * @brief Provides functions to handle MAC Confirmation and notification from
- * RfCore, calling decalred and defined MAC user callbacks.
+/** @defgroup STM32WB55_MAC STM32WBxx MAC 802.15.4 API
+ * @brief Provides MAC 802.15.4 functionalities to address MAC primitives accessed through
+ * MLME-SAP and MCPS-SAP.<br>
+ * Once RF-Core is initialized, Zigbee or proprietary network layer address RF-Core
+ * using MLME or MCPS SAP primitives.<br>
+ * On completion or on MAC-RF event, RF-Core sends back notification (ie.: MAC confirmation or MAC indication)
+ * to the running application.<br>
+ * Zigbee or proprietary network layer is notified (MAC_802_15_4_CallBack_Processing(void)) by the corresponding user defined callback call
+ * that has been previously initialized in MAC_callbacks_t macCbConfig.<br>
* @{
*/
@@ -47,9 +53,12 @@
extern MAC_callbacks_t macCbConfig;
/**
+ * @}
+ */
+
+/**
* @brief This system function is used to set defined command ID in message between
* Application core and Rf core.
- * Check STM32WBxx_SW_Architecture_and_Design.pdf for further information.
*
*
* @param None
@@ -59,24 +68,20 @@ extern MAC_callbacks_t macCbConfig;
static void utils_mac_set_cmdCode(uint16_t cmdCode)
{
/* Set ID of the cmd in cmdcode field */
- /* According to STM32WBxx_SW_Architecture_and_Design.pdf document opcode field is as following:
- *
- * opcode = OCF = bit 0 to 9 -> MAC_802_15_4_CMD_OPCODE_OFFSET + ID of the Cmd
- * OGF = bit 10 to 15 -> fixed to 0x3F for non BLE commands
- *
- */
+
TL_CmdPacket_t* p_mac_cmd_req = MAC_802_15_4_GetCmdBuffer();
p_mac_cmd_req->cmdserial.cmd.cmdcode = (0x3F << 9) | (MAC_802_15_4_CMD_OPCODE_OFFSET + cmdCode);
}
-
+/** @addtogroup STM32WB55_MAC_CORE
+ *
+ */
/**
- * @brief This function is used to manage all the callbacks used by the
- * MAC 802.15.4 interface.
- *
- * Important Note: This function must be called each time a message
- * is sent from the M0 to the M4.
+ * @brief Handle MAC SAP's confirmations and indications coming from
+ * RFCore's MAC layer.
+ * On received RFCore Mac Message, calls upper layer user defined associated callbacks from MAC_callbacks_t macCbConfig .
+ * Important Note: This method is called on every MAC message from RFCore.
*
* @param None
* @retval None
@@ -285,15 +290,13 @@ HAL_StatusTypeDef MAC_802_15_4_CallBack_Processing(void)
*/
-/** @defgroup STM32_MAC MAC 802.15.4 API
- * @brief Provides MAC 802.15.4 functions to address MAC primitives accessed through
- * MLME-SAP and MCPS-SAP
+/** \addtogroup STM32WB55_MAC
* @{
*/
/**
* @brief This function is used to handle a MAC MLME Associate REQ as described
- * in IEEE Std 802.15.4-2011 standard.
+ * in IEEE Std 802.15.4-2011 standard.
*
*
* @param MAC_associateReq_t ref
@@ -328,7 +331,7 @@ MAC_Status_t MAC_MLMEAssociateReq( const MAC_associateReq_t * pAssociateReq )
/**
* @brief This function is used to handle a MAC MLME Disassociate REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_disassociateReq_t ref
* @retval MAC_Status_t
@@ -361,7 +364,7 @@ MAC_Status_t MAC_MLMEDisassociateReq( const MAC_disassociateReq_t * pDisassioci
/**
* @brief This function is used to handle a MAC MLME Get REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_getReq_t ref
* @retval MAC_Status_t
@@ -394,7 +397,7 @@ MAC_Status_t MAC_MLMEGetReq( const MAC_getReq_t * pGetReq )
/**
* @brief This function is used to handle a MAC MLME GTS REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_gtsReq_t ref
* @retval MAC_Status_t
@@ -427,7 +430,7 @@ MAC_Status_t MAC_MLMEGtsReq( const MAC_gtsReq_t * pGtsReq )
/**
* @brief This function is used to handle a MAC MLME Reset REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_resetReq_t ref
* @retval MAC_Status_t
@@ -462,7 +465,7 @@ MAC_Status_t MAC_MLMEResetReq( const MAC_resetReq_t * pResetReq )
/**
* @brief This function is used to handle a MAC MLME Rx Enabled REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_rxEnableReq_t ref
* @retval MAC_Status_t
@@ -496,7 +499,7 @@ MAC_Status_t MAC_MLMERxEnableReq( const MAC_rxEnableReq_t * pRxEnableReq )
/**
* @brief This function is used to handle a MAC MLME Scan REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_scanReq_t ref
* @retval MAC_Status_t
@@ -529,7 +532,7 @@ MAC_Status_t MAC_MLMEScanReq( const MAC_scanReq_t * pScanReq )
/**
* @brief This function is used to handle a MAC MLME Set REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_setReq_t ref
* @retval MAC_Status_t
@@ -562,7 +565,7 @@ MAC_Status_t MAC_MLMESetReq( const MAC_setReq_t * pSetReq)
/**
* @brief This function is used to handle a MAC MLME Start REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_startReq_t ref
* @retval MAC_Status_t
@@ -595,7 +598,7 @@ MAC_Status_t MAC_MLMEStartReq( const MAC_startReq_t * pStartReq)
/**
* @brief This function is used to handle a MAC MLME Sync REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_syncReq_t ref
* @retval MAC_Status_t
@@ -629,7 +632,7 @@ MAC_Status_t MAC_MLMESyncReq( const MAC_syncReq_t * pSyncReq )
/**
* @brief This function is used to handle a MAC MLME Poll REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
*
* @param MAC_pollReq_t ref
@@ -663,7 +666,7 @@ MAC_Status_t MAC_MLMEPollReq( const MAC_pollReq_t * pPollReq )
/**
* @brief This function is used to handle a MAC MLME Dps REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_dpsReq_t ref
* @retval MAC_Status_t
@@ -696,7 +699,7 @@ MAC_Status_t MAC_MLMEDpsReq( const MAC_dpsReq_t * pDpsReq)
/**
* @brief This function is used to handle a MAC MLME Associate REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_soundingReq_t ref
* @retval MAC_Status_t
@@ -729,7 +732,7 @@ MAC_Status_t MAC_MLMESoundingReq( const MAC_soundingReq_t * pSoundingReq)
/**
* @brief This function is used to handle a MAC MLME Calibrate REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_calibrateReq_t ref
* @retval MAC_Status_t
@@ -762,7 +765,7 @@ MAC_Status_t MAC_MLMECalibrateReq( const MAC_calibrateReq_t * pCalibrateReq)
/**
* @brief This function is used to handle a MAC MCPS Data REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_dataReq_t ref
* @retval MAC_Status_t
@@ -795,7 +798,7 @@ MAC_Status_t MAC_MCPSDataReq( const MAC_dataReq_t * pDataReq )
/**
* @brief This function is used to handle a MAC MCPD Purge REQ as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_purgeReq_t ref
* @retval MAC_Status_t
@@ -829,7 +832,7 @@ MAC_Status_t MAC_MCPSPurgeReq( const MAC_purgeReq_t * pPurgeReq )
/**
* @brief This function is used to handle a MAC MLME Associate RES as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_associateRes_t ref
* @retval MAC_Status_t
@@ -863,7 +866,7 @@ MAC_Status_t MAC_MLMEAssociateRes(const MAC_associateRes_t * pAssociateRes)
/**
* @brief This function is used to handle a MAC MLME Orphan RES as described
- * in IEEE Std 802.15.4-2011 standard
+ * in IEEE Std 802.15.4-2011 standard
*
* @param MAC_orphanRes_t ref
* @retval MAC_Status_t
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/core/inc/stm32wbxx_core_interface_def.h b/Middlewares/ST/STM32_WPAN/zigbee/core/inc/stm32wbxx_core_interface_def.h
index 37231eebd..276ac0107 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/core/inc/stm32wbxx_core_interface_def.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/core/inc/stm32wbxx_core_interface_def.h
@@ -47,6 +47,7 @@ typedef enum {
MSG_M0TOM4_UNKNOWN = 0x0000,
/* WPAN Interface */
+ MSG_M4TOM0_WPAN_SET_UINT32, /* wpan_set_uint32 */
MSG_M4TOM0_WPAN_GET_UINT32, /* wpan_get_uint32 */
MSG_M4TOM0_WPAN_GET_UINT64, /* wpan_get_uint64 */
@@ -61,7 +62,6 @@ typedef enum {
/* Stack Misc */
MSG_M4TOM0_EXTADDR_GET, /* ZbExtendedAddress */
MSG_M4TOM0_EXTADDR_CHANGE, /* ZbChangeExtAddr */
- MSG_M4TOM0_UPTIME, /* ZbUptime */
MSG_M4TOM0_FILTER_ADD, /* ZbMsgFilterRegister - Create filter in stack */
MSG_M4TOM0_FILTER_DEL, /* ZbMsgFilterRemove - Delete filter in stack */
MSG_M0TOM4_FILTER_MSG_CB, /* Callback for filter messages from stack */
@@ -247,25 +247,26 @@ typedef enum {
/* ZCL Endpoint */
MSG_M4TOM0_ZCL_ENDPOINT_ADD = 0x0400, /* ZbZclAddEndpoint */
MSG_M4TOM0_ZCL_ENDPOINT_DEL, /* ZbZclRemoveEndpoint */
- MSG_M4TOM0_ZCL_CLUSTER_ATTACH, /* ZbZclClusterAttach */
- MSG_M4TOM0_ZCL_CLUSTER_DETACH, /* ZbZclClusterDetach */
+
+ /* ZCL Cluster ID register for discovery */
MSG_M4TOM0_ZCL_CLUSTER_EP_REGISTER, /* ZbZclClusterEndpointRegister */
MSG_M4TOM0_ZCL_CLUSTER_EP_REMOVE, /* ZbZclClusterEndpointRemove */
- MSG_M4TOM0_ZCL_CLUSTER_BIND, /* zcl_cluster_bind */
+
+ /* ZCL Cluster binding and data indications */
+ MSG_M4TOM0_ZCL_CLUSTER_BIND, /* ZbZclClusterBind */
+ MSG_M0TOM4_ZCL_CLUSTER_DATA_IND = MSG_M4TOM0_ZCL_CLUSTER_BIND,
+ MSG_M4TOM0_ZCL_CLUSTER_UNBIND, /* ZbZclClusterUnbind */
+
+ MSG_M4TOM0_ZCL_CLUSTER_LOOPBACK_BIND, /* ZbZclClusterLoopbackBind */
+ /* Data Indications are sent using MSG_M0TOM4_ZCL_CLUSTER_DATA_IND */
+ MSG_M4TOM0_ZCL_CLUSTER_LOOPBACK_UNBIND, /* ZbZclClusterLoopbackUnbind */
/* ZCL Cluster Alarms */
MSG_M4TOM0_ZCL_CLUSTER_ALARM_ADD_FILTER, /* ZbZclClusterRegisterAlarmResetHandler */
MSG_M0TOM4_ZCL_CLUSTER_ALARM_CB = MSG_M4TOM0_ZCL_CLUSTER_ALARM_ADD_FILTER,
+ MSG_M4TOM0_ZCL_CLUSTER_ALARM_REMOVE_FILTER, /* ZbZclClusterRemoveAlarmResetHandler */
MSG_M4TOM0_ZCL_CLUSTER_ALARM_SEND, /* ZbZclClusterSendAlarm */
- /* ZCL Cluster Unsolicited Callbacks */
- MSG_M0TOM4_ZCL_CLUSTER_COMMAND_CB, /* ZbZclClusterT.command() */
- MSG_M0TOM4_ZCL_CLUSTER_CONFIG_CB, /* ZbZclClusterT.config() */
- MSG_M0TOM4_ZCL_CLUSTER_REPORT_CB, /* ZbZclClusterT.report() */
- MSG_M0TOM4_ZCL_CLUSTER_GET_SCENE_CB, /* ZbZclClusterT.get_scene_data() */
- MSG_M0TOM4_ZCL_CLUSTER_SET_SCENE_CB, /* ZbZclClusterT.set_scene_data() */
- MSG_M0TOM4_ZCL_CLUSTER_CLEANUP_CB, /* ZbZclClusterT.cleanup() */
-
/* ZCL Cluster Command and Response */
MSG_M4TOM0_ZCL_CLUSTER_CMD_REQ, /* ZbZclClusterCommandReq */
MSG_M0TOM4_ZCL_CLUSTER_CMD_REQ_CB = MSG_M4TOM0_ZCL_CLUSTER_CMD_REQ,
@@ -274,10 +275,6 @@ typedef enum {
MSG_M0TOM4_ZCL_CLUSTER_CMD_RSP_CONF_CB = MSG_M4TOM0_ZCL_CLUSTER_CMD_RSP_WITH_CB,
MSG_M4TOM0_ZCL_CLUSTER_CMD_RSP_WITH_STATUS, /* ZbZclSendClusterStatusResponse */
- /* ZCL Attributes */
- MSG_M4TOM0_ZCL_ATTR_REGISTER, /* Used by ZbZclAttrAppendList */
- MSG_M0TOM4_ZCL_ATTR_CB,
-
/* ZCL Profile-Wide Commands */
MSG_M4TOM0_ZCL_GET_SEQNUM, /* ZbZclGetNextSeqnum */
MSG_M4TOM0_ZCL_COMMAND_REQ, /* ZbZclCommandReq */
@@ -300,13 +297,14 @@ typedef enum {
MSG_M4TOM0_ZCL_KE_WITH_DEVICE = 0x0440, /* ZbZclKeWithDevice */
MSG_M0TOM4_ZCL_KE_WITH_DEVICE_CB = MSG_M4TOM0_ZCL_KE_WITH_DEVICE,
+ /* ZCL Device Log */
#if 0 /* needed? */
- /* ZCL Device Log */
MSG_M4TOM0_ZCL_DEVICE_LOG_ADD, /* ZbZclDeviceLogAdd */
MSG_M4TOM0_ZCL_DEVICE_LOG_CLEAR, /* ZbZclDeviceLogClear */
MSG_M4TOM0_ZCL_DEVICE_LOG_ENABLE, /* ZbZclDeviceLogEnable */
MSG_M4TOM0_ZCL_DEVICE_LOG_REMOVE, /* ZbZclDeviceLogRemove */
#endif
+ MSG_M4TOM0_ZCL_DEVICE_LOG_CHECK, /* ZbZclDeviceLogCheckAllow */
/* ZCL Basic Server */
MSG_M4TOM0_ZCL_BASIC_SERVER_ALARM_POST, /* ZbZclBasicPostAlarm */
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_config.h b/Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_config.h
deleted file mode 100644
index 461248184..000000000
--- a/Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/******************************************************************************
- * @file 802_15_4_mac_config.h
- * @author MDG-RF Team
- * @brief Header for mac interface types
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-
-#ifndef _ZIGBEE_CONFIG_H
-#define _ZIGBEE_CONFIG_H
-
-#include <stdint.h>
-
-#endif /* _ZIGBEE_CONFIG_H */
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_types.h b/Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_types.h
index dba127805..9827b1354 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_types.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/core/inc/zigbee_types.h
@@ -22,6 +22,4 @@
#include <stdint.h>
-#include "zigbee_config.h"
-
#endif /* _ZIGBEE_TYPES_H_ */
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/core/src/zigbee_core_wb.c b/Middlewares/ST/STM32_WPAN/zigbee/core/src/zigbee_core_wb.c
index 4b9c6b296..8f0c2be5b 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/core/src/zigbee_core_wb.c
+++ b/Middlewares/ST/STM32_WPAN/zigbee/core/src/zigbee_core_wb.c
@@ -23,13 +23,10 @@
#include <assert.h>
#include "zigbee_errors.h"
-#include "zigbee_config.h"
#include "zigbee_types.h"
#include "zigbee_interface.h" /* zigbee.h, etc */
#include "zcl/zcl.h"
-#include "local.zigbee.h" /* ZbHeap */
-#include "zcl/local_zcl.h"
#include "zcl/key/zcl.key.h" /* ZbZclKeWithDevice */
#include "zigbee_core.h"
@@ -39,10 +36,35 @@
#include "stm_logging.h"
#include "stm32wbxx_core_interface_def.h"
+/* Lock isn't required on this platform */
+#define ZbEnterCritical(_zb_)
+#define ZbExitCritical(_zb_)
+
#ifndef ZB_HEAP_MAX_ALLOC
#define ZB_HEAP_MAX_ALLOC 2000U
#endif
+/* ZbTimerAlloc() needs ZbHeapAlloc */
+/* FIXME - remove this dependancy? */
+void * zb_heap_alloc(struct ZigBeeT *zb, size_t sz, const char *funcname, unsigned int linenum);
+void zb_heap_free(struct ZigBeeT *zb, void *ptr, const char *funcname, unsigned int linenum);
+#if defined(CONFIG_ZB_MEMORY_DEBUG) || defined(CONFIG_ZB_MEMPOOL_HISTORY)
+# define ZbHeapAlloc(_zb_, _sz_) zb_heap_alloc(_zb_, _sz_, __func__, __LINE__)
+# define ZbHeapFree(_zb_, _ptr_) zb_heap_free(_zb_, _ptr_, __func__, __LINE__)
+#else
+# define ZbHeapAlloc(_zb_, _sz_) zb_heap_alloc(_zb_, _sz_, "", 0)
+# define ZbHeapFree(_zb_, _ptr_) zb_heap_free(_zb_, _ptr_, "", 0)
+#endif
+
+/* ZbUptimeT is an "unsigned long" */
+#define ZB_UPTIME_MAX (ULONG_MAX)
+
+/* If a value is greater than the high mark, and a second value is lower
+ * than the low mark, then the second value is deemed to have rolled-over
+ * when comparing the two values. */
+#define TIMER_ROLL_OVER_HIGH ((ZB_UPTIME_MAX / 2UL) + (ZB_UPTIME_MAX / 4UL))
+#define TIMER_ROLL_OVER_LOW ((ZB_UPTIME_MAX / 2UL) - (ZB_UPTIME_MAX / 4UL))
+
/* Null (all zeroes)
* 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 */
const uint8_t sec_key_null[ZB_SEC_KEYSIZE] = {
@@ -68,7 +90,7 @@ const uint8_t sec_key_touchlink_cert[ZB_SEC_KEYSIZE] = {
};
struct aps_filter_cb {
- void (*callback)(ZbApsdeDataIndT *data_ind, void *cb_arg);
+ int (*callback)(ZbApsdeDataIndT *data_ind, void *cb_arg);
void *cb_arg;
};
@@ -95,8 +117,6 @@ static void *zb_persist_arg = NULL;
* by another call to ZbZdoMatchDescMulti. */
static void (*zdo_match_multi_cb)(ZbZdoMatchDescRspT *ind, void *cb_arg) = NULL;
-static void ZbZclAttrFreeAttr(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrListEntryT *attrPtr);
-
/* Some globals */
struct zb_ipc_globals {
struct ZigBeeT *zb;
@@ -109,6 +129,29 @@ static struct zb_ipc_globals zb_ipc_globals;
struct cli_app;
extern void cli_port_print_msg(struct cli_app *cli_p, const char *msg);
+int zcl_cluster_data_ind(ZbApsdeDataIndT *dataIndPtr, void *arg);
+int zcl_cluster_alarm_data_ind(ZbApsdeDataIndT *data_ind, void *arg);
+
+/* ST: Don't use built-in memcpy. "Unfortunately when full size optimization is enabled on
+ * M4 side, IAR maps memcpy to aeaby_memcpy4 instead of aeabi_memcpy which allows
+ * unaligned memcpy." */
+static void
+zb_ipc_m4_memcpy2(void *dst, void *src, unsigned int len)
+{
+ unsigned int i;
+
+ for (i=0; i<len; i++) {
+ ((uint8_t *)dst)[i] = ((uint8_t *)src)[i];
+ }
+}
+
+/* FIXME - need to get rid of calling this from the application */
+ZbUptimeT
+ZbUptime(void)
+{
+ return HAL_GetTick();
+} /* ZbUptime */
+
void
zb_ipc_m4_stack_logging_config(bool enable)
{
@@ -151,11 +194,40 @@ zb_ipc_m4_get_retval(void)
ipcc_req = ZIGBEE_Get_OTCmdRspPayloadBuffer();
assert(ipcc_req->Size == 1);
- (void)ZbMemCpy(&retval, &ipcc_req->Data[0], 4);
+ zb_ipc_m4_memcpy2(&retval, &ipcc_req->Data[0], 4);
return retval;
} /* zb_ipc_m4_get_retval */
bool
+wpan_set_uint32(struct WpanPublicT *publicPtr, enum mcp_attr_id attrId, uint32_t value, uint16_t index)
+{
+ Zigbee_Cmd_Request_t *ipcc_req;
+
+ (void)publicPtr;
+ Pre_ZigbeeCmdProcessing();
+ ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
+ ipcc_req->ID = MSG_M4TOM0_WPAN_SET_UINT32;
+ ipcc_req->Size = 3;
+ ipcc_req->Data[0] = (uint32_t)attrId;
+ ipcc_req->Data[1] = (uint32_t)value;
+ ipcc_req->Data[2] = (uint32_t)index;
+ ZIGBEE_CmdTransfer();
+ return zb_ipc_m4_get_retval() != 0U ? true : false;
+} /* wpan_set_uint16 */
+
+bool
+wpan_set_uint16(struct WpanPublicT *publicPtr, enum mcp_attr_id attrId, uint16_t value, uint16_t index)
+{
+ return wpan_set_uint32(publicPtr, attrId, (uint32_t)value, index);
+} /* wpan_set_uint16 */
+
+bool
+wpan_set_uint8(struct WpanPublicT *publicPtr, enum mcp_attr_id attrId, uint8_t value, uint16_t index)
+{
+ return wpan_set_uint32(publicPtr, attrId, (uint32_t)value, index);
+} /* wpan_set_uint8 */
+
+bool
wpan_get_uint32(struct WpanPublicT *publicPtr, enum mcp_attr_id attrId, uint32_t *value, uint16_t index)
{
Zigbee_Cmd_Request_t *ipcc_req;
@@ -207,7 +279,7 @@ ZbInit(uint64_t extAddr, ZbInitTblSizesT *tblSizes, ZbInitSetLoggingT *setLoggin
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
ipcc_req->ID = MSG_M4TOM0_ZB_INIT;
ipcc_req->Size = 4;
- (void)ZbMemCpy(&ipcc_req->Data[0], &extAddr, 8);
+ zb_ipc_m4_memcpy2(&ipcc_req->Data[0], &extAddr, 8);
ipcc_req->Data[2] = (uint32_t)tblSizes;
ipcc_req->Data[3] = (uint32_t)setLogging;
ZIGBEE_CmdTransfer();
@@ -280,7 +352,7 @@ ZbExtendedAddress(struct ZigBeeT *zb)
ZIGBEE_CmdTransfer();
ipcc_req = ZIGBEE_Get_OTCmdRspPayloadBuffer();
assert(ipcc_req->Size == 2);
- (void)ZbMemCpy(&ext_addr, &ipcc_req->Data, 8);
+ zb_ipc_m4_memcpy2(&ext_addr, &ipcc_req->Data, 8);
return ext_addr;
} /* ZbExtendedAddress */
@@ -303,7 +375,7 @@ ZbChangeExtAddr(struct ZigBeeT *zb, uint64_t extAddr)
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
ipcc_req->ID = MSG_M4TOM0_EXTADDR_CHANGE;
ipcc_req->Size = 2;
- (void)ZbMemCpy(&ipcc_req->Data[0], &extAddr, 8);
+ zb_ipc_m4_memcpy2(&ipcc_req->Data[0], &extAddr, 8);
ZIGBEE_CmdTransfer();
} /* ZbChangeExtAddr */
@@ -344,9 +416,9 @@ ZbStartupConfigGetProSeDefaults(struct ZbStartupT *configPtr)
{
ZbStartupConfigGetProDefaults(configPtr);
/* Remove the default preconfigured link key by clearing it. */
- (void)ZbMemSet(configPtr->security.preconfiguredLinkKey, 0, ZB_SEC_KEYSIZE);
+ (void)memset(configPtr->security.preconfiguredLinkKey, 0, ZB_SEC_KEYSIZE);
/* Remove the distributed link key by clearing it. */
- (void)ZbMemSet(configPtr->security.distributedGlobalKey, 0, ZB_SEC_KEYSIZE);
+ (void)memset(configPtr->security.distributedGlobalKey, 0, ZB_SEC_KEYSIZE);
} /* ZbStartupConfigGetProSeDefaults */
enum ZbStatusCodeT
@@ -548,7 +620,7 @@ ZbPersistGet(struct ZigBeeT *zb, uint8_t *buf, unsigned int maxlen)
} /* ZbPersistGet */
enum ZbStatusCodeT
-ZbLeaveReq(struct ZigBeeT *zb, void (*callback)(ZbNlmeLeaveConfT *conf, void *arg), void *cbarg)
+ZbLeaveReq(struct ZigBeeT *zb, void (*callback)(struct ZbNlmeLeaveConfT *conf, void *arg), void *cbarg)
{
Zigbee_Cmd_Request_t *ipcc_req;
struct zb_ipc_m4_cb_info *info;
@@ -733,7 +805,7 @@ ZbApsmeRemoveEndpoint(struct ZigBeeT *zb, ZbApsmeRemoveEndpointReqT *r, ZbApsmeR
struct ZbApsFilterT *
ZbApsFilterEndpointAdd(struct ZigBeeT *zb, uint8_t endpoint, uint16_t profileId,
- void (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg), void *arg)
+ int (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg), void *arg)
{
Zigbee_Cmd_Request_t *ipcc_req;
struct aps_filter_cb *aps_filter_cb;
@@ -764,7 +836,8 @@ ZbApsFilterEndpointAdd(struct ZigBeeT *zb, uint8_t endpoint, uint16_t profileId,
} /* ZbApsFilterEndpointAdd */
bool
-ZbApsmeEndpointConfigNoMatchCallback(struct ZigBeeT *zb, uint8_t endpoint, void (*callback)(ZbApsdeDataIndT *ind, void *arg), void *arg)
+ZbApsmeEndpointConfigNoMatchCallback(struct ZigBeeT *zb, uint8_t endpoint,
+ int (*callback)(ZbApsdeDataIndT *ind, void *arg), void *arg)
{
Zigbee_Cmd_Request_t *ipcc_req;
struct aps_filter_cb *aps_filter_cb;
@@ -795,7 +868,7 @@ ZbApsmeEndpointConfigNoMatchCallback(struct ZigBeeT *zb, uint8_t endpoint, void
struct ZbApsFilterT *
ZbApsFilterClusterAdd(struct ZigBeeT *zb, uint8_t endpoint, uint16_t clusterId, uint16_t profileId,
- void (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg), void *arg)
+ int (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg), void *arg)
{
Zigbee_Cmd_Request_t *ipcc_req;
struct aps_filter_cb *aps_filter_cb;
@@ -842,14 +915,6 @@ ZbApsmeEndpointClusterListAppend(struct ZigBeeT *zb, uint8_t endpoint, uint16_t
return zb_ipc_m4_get_retval() != 0U ? true : false;
} /* ZbApsmeEndpointClusterListAppend */
-void
-ZbApsFilterRemove(struct ZigBeeT *zb, struct ZbApsFilterT *filter)
-{
- ZbEnterCritical(zb);
- LINK_LIST_UNLINK(&filter->link);
- ZbExitCritical(zb);
-} /* ZbApsFilterRemove */
-
bool
ZbApsEndpointExists(struct ZigBeeT *zb, uint8_t endpoint)
{
@@ -1221,61 +1286,6 @@ ZbApsmeRemoveKeyReq(struct ZigBeeT *zb, ZbApsmeRemoveKeyReqT *req, ZbApsmeRemove
} /* ZbApsmeRemoveKeyReq */
/******************************************************************************
- * Zigbee Uptime
- ******************************************************************************
- */
-ZbUptimeT
-ZbUptime(void)
-{
- Zigbee_Cmd_Request_t *ipcc_req;
-
- Pre_ZigbeeCmdProcessing();
- ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
- ipcc_req->ID = MSG_M4TOM0_UPTIME;
- ipcc_req->Size = 0;
- ZIGBEE_CmdTransfer();
- return (ZbUptimeT)zb_ipc_m4_get_retval();
-} /* ZbUptime */
-
-/* If a value is greater than the high mark, and a second value is lower
- * than the low mark, then the second value is deemed to have rolled-over
- * when comparing the two values. */
-#define TIMER_ROLL_OVER_HIGH ((ZB_UPTIME_MAX / 2UL) + (ZB_UPTIME_MAX / 4UL))
-#define TIMER_ROLL_OVER_LOW ((ZB_UPTIME_MAX / 2UL) - (ZB_UPTIME_MAX / 4UL))
-
-unsigned int
-ZbTimeoutRemaining(ZbUptimeT now, ZbUptimeT expire_time)
-{
- ZbUptimeT u_delta;
-
- /* Check for 'timeout' rollover condition */
- if ((now >= TIMER_ROLL_OVER_HIGH) && (expire_time <= TIMER_ROLL_OVER_LOW)) {
- /* Timeout has rolled over, we haven't expired.
- * Compute timeout remaining */
- u_delta = (ZB_UPTIME_MAX - now) + expire_time + 1U;
-
- return (unsigned int)u_delta;
- }
-
- /* Check for 'now' rollover condition */
- if ((expire_time >= TIMER_ROLL_OVER_HIGH) && (now <= TIMER_ROLL_OVER_LOW)) {
- /* 'now' has rolled over, so now is > timeout, meaning we expired. */
- return 0;
- }
-
- /* No rollover, check if timer has expired */
- if (now >= expire_time) {
- /* Timer has expired */
- return 0;
- }
-
- /* Compute time remaining */
- u_delta = expire_time - now;
-
- return (unsigned int)u_delta;
-} /* ZbTimeoutRemaining */
-
-/******************************************************************************
* Zigbee Message Filters
******************************************************************************
*/
@@ -1478,6 +1488,38 @@ ZbTimerReset(struct ZbTimerT *timer, unsigned int timeout)
ZIGBEE_CmdTransfer();
} /* ZbTimerReset */
+unsigned int
+ZbTimeoutRemaining(ZbUptimeT now, ZbUptimeT expire_time)
+{
+ ZbUptimeT u_delta;
+
+ /* Check for 'timeout' rollover condition */
+ if ((now >= TIMER_ROLL_OVER_HIGH) && (expire_time <= TIMER_ROLL_OVER_LOW)) {
+ /* Timeout has rolled over, we haven't expired.
+ * Compute timeout remaining */
+ u_delta = (ZB_UPTIME_MAX - now) + expire_time + 1U;
+
+ return (unsigned int)u_delta;
+ }
+
+ /* Check for 'now' rollover condition */
+ if ((expire_time >= TIMER_ROLL_OVER_HIGH) && (now <= TIMER_ROLL_OVER_LOW)) {
+ /* 'now' has rolled over, so now is > timeout, meaning we expired. */
+ return 0;
+ }
+
+ /* No rollover, check if timer has expired */
+ if (now >= expire_time) {
+ /* Timer has expired */
+ return 0;
+ }
+
+ /* Compute time remaining */
+ u_delta = expire_time - now;
+
+ return (unsigned int)u_delta;
+} /* ZbTimeoutRemaining */
+
/******************************************************************************
* NWK
******************************************************************************
@@ -1556,7 +1598,7 @@ ZbNwkGetParentExtAddr(struct ZigBeeT *zb)
/* Parse return value */
ipcc_req = ZIGBEE_Get_OTCmdRspPayloadBuffer();
assert(ipcc_req->Size == 2);
- (void)ZbMemCpy(&ext_addr, &ipcc_req->Data[0], 8);
+ zb_ipc_m4_memcpy2(&ext_addr, &ipcc_req->Data[0], 8);
return ext_addr;
} /* ZbNwkGetParentExtAddr */
@@ -1588,7 +1630,7 @@ ZbNwkAddrLookupExt(struct ZigBeeT *zb, uint16_t nwkAddr)
/* Parse return value */
ipcc_req = ZIGBEE_Get_OTCmdRspPayloadBuffer();
assert(ipcc_req->Size == 2);
- (void)ZbMemCpy(&ext_addr, &ipcc_req->Data[0], 8);
+ zb_ipc_m4_memcpy2(&ext_addr, &ipcc_req->Data[0], 8);
return ext_addr;
} /* ZbNwkAddrLookupExt */
@@ -1602,7 +1644,7 @@ ZbNwkAddrLookupNwk(struct ZigBeeT *zb, uint64_t extAddr)
ipcc_req->ID = MSG_M4TOM0_NWK_ADDR_LOOKUP_NWK;
/* Extended address is split across two args */
ipcc_req->Size = 2;
- memcpy(ipcc_req->Data, &extAddr, 8);
+ zb_ipc_m4_memcpy2(ipcc_req->Data, &extAddr, 8);
ZIGBEE_CmdTransfer();
return (uint16_t)zb_ipc_m4_get_retval();
} /* ZbNwkAddrLookupNwk */
@@ -1617,7 +1659,7 @@ ZbNwkAddrIsChildExt(struct ZigBeeT *zb, uint64_t extAddr, uint16_t *nwkAddrPtr)
ipcc_req->ID = MSG_M4TOM0_NWK_ADDR_IS_CHILD_EXT;
/* Extended address is split across two args */
ipcc_req->Size = 3;
- memcpy(ipcc_req->Data, &extAddr, 8);
+ zb_ipc_m4_memcpy2(ipcc_req->Data, &extAddr, 8);
ipcc_req->Data[2] = (uint32_t)nwkAddrPtr;
ZIGBEE_CmdTransfer();
return zb_ipc_m4_get_retval() != 0U ? true : false;
@@ -1676,8 +1718,8 @@ ZbNlmeNetDiscReq(struct ZigBeeT *zb, ZbNlmeNetDiscReqT *req,
} /* ZbNlmeNetDiscReq */
enum ZbStatusCodeT
-ZbNlmeLeaveReq(struct ZigBeeT *zb, ZbNlmeLeaveReqT *req,
- void (*callback)(ZbNlmeLeaveConfT *leaveConfPtr, void *arg), void *cbarg)
+ZbNlmeLeaveReq(struct ZigBeeT *zb, struct ZbNlmeLeaveReqT *req,
+ void (*callback)(struct ZbNlmeLeaveConfT *leaveConfPtr, void *arg), void *cbarg)
{
Zigbee_Cmd_Request_t *ipcc_req;
struct zb_ipc_m4_cb_info *info;
@@ -1887,7 +1929,7 @@ ZbNwkSetFrameCounter(struct ZigBeeT *zb, uint8_t keySeqno, uint64_t srcAddr, uin
ipcc_req->ID = MSG_M4TOM0_NWK_SET_FRAME_COUNTER;
ipcc_req->Size = 4;
ipcc_req->Data[0] = (uint32_t)keySeqno;
- (void)ZbMemCpy(&ipcc_req->Data[1], &srcAddr, 8);
+ zb_ipc_m4_memcpy2(&ipcc_req->Data[1], &srcAddr, 8);
ipcc_req->Data[3] = (uint32_t)newFrameCount;
ZIGBEE_CmdTransfer();
return zb_ipc_m4_get_retval() != 0U ? true : false;
@@ -2411,10 +2453,21 @@ ZbZdoNwkUpdateReq(struct ZigBeeT *zb, ZbZdoNwkUpdateReqT *req,
* ZCL
******************************************************************************
*/
-static const struct ZbZclAttrT zcl_attr_cluster_mandatory_revision = {
- ZCL_GLOBAL_ATTR_CLUSTER_REV, ZCL_DATATYPE_UNSIGNED_16BIT,
- ZCL_ATTR_FLAG_NONE, 0, NULL, {0, 0}, {0, 0}
-};
+
+bool
+ZbZclDeviceLogCheckAllow(struct ZigBeeT *zb, ZbApsdeDataIndT *dataIndPtr, struct ZbZclHeaderT *zclHdrPtr)
+{
+ Zigbee_Cmd_Request_t *ipcc_req;
+
+ Pre_ZigbeeCmdProcessing();
+ ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
+ ipcc_req->ID = MSG_M4TOM0_ZCL_DEVICE_LOG_CHECK;
+ ipcc_req->Size = 2;
+ ipcc_req->Data[0] = (uint32_t)dataIndPtr;
+ ipcc_req->Data[1] = (uint32_t)zclHdrPtr;
+ ZIGBEE_CmdTransfer();
+ return zb_ipc_m4_get_retval() != 0U ? true : false;
+}
bool
ZbZclBasicPostAlarm(struct ZigBeeT *zb, uint8_t endpoint, uint8_t alarm_code)
@@ -2477,95 +2530,6 @@ ZbZclDiagnosticsServerAlloc(struct ZigBeeT *zb, uint8_t endpoint, uint16_t profi
return (bool)zb_ipc_m4_get_retval();
}
-void *
-ZbZclClusterAlloc(struct ZigBeeT *zb, unsigned int alloc_sz, enum ZbZclClusterIdT cluster_id,
- uint8_t endpoint, enum ZbZclDirectionT direction)
-{
- struct ZbZclClusterT *clusterPtr;
-
- if (alloc_sz < sizeof(struct ZbZclClusterT)) {
- return NULL;
- }
- clusterPtr = (struct ZbZclClusterT *)ZbHeapAlloc(zb, alloc_sz);
- if (clusterPtr == NULL) {
- return NULL;
- }
- (void)ZbMemSet(clusterPtr, 0, alloc_sz);
- LINK_LIST_INIT(&clusterPtr->link);
-
- clusterPtr->zb = zb;
- clusterPtr->clusterId = cluster_id;
- clusterPtr->endpoint = endpoint;
- clusterPtr->mfrCode = 0x0000U;
- clusterPtr->profileId = ZCL_PROFILE_HOME_AUTOMATION;
- clusterPtr->txOptions = (uint16_t)ZCL_CLUSTER_TXOPTIONS_DEFAULT;
- clusterPtr->discoverRoute = true;
- clusterPtr->radius = 0U;
- clusterPtr->maxAsduLength = (uint16_t)ZB_APS_CONST_SAFE_APSSEC_PAYLOAD_SIZE;
- clusterPtr->direction = direction;
- LINK_LIST_INIT(&clusterPtr->attributeList);
- LINK_LIST_INIT(&clusterPtr->reports);
-#ifdef CONFIG_ZB_ZCL_PERSIST
- clusterPtr->persist_timer = ZbTimerAlloc(zb, zcl_persist_cluster_timer, clusterPtr);
-# if 0 /* FIXME - don't free cluster here, return false instead. */
- if (clusterPtr->persist_timer == NULL) {
- ZbHeapFree(zb, clusterPtr);
- return NULL;
- }
-# endif
-#endif
-
- (void)ZbZclClusterSetMinSecurity(clusterPtr, ZB_APS_STATUS_SECURED_NWK_KEY);
-
- /* Allocate the mandatory attributes */
- if (ZbZclAttrAppendList(clusterPtr, &zcl_attr_cluster_mandatory_revision, 1U) != ZCL_STATUS_SUCCESS) {
- ZbHeapFree(zb, clusterPtr);
- return NULL;
- }
- (void)ZbZclAttrIntegerWrite(clusterPtr, (uint16_t)ZCL_GLOBAL_ATTR_CLUSTER_REV, ZCL_CLUSTER_REVISION_LEGACY);
-
- return clusterPtr;
-} /* ZbZclClusterAlloc */
-
-void
-ZbZclClusterAttach(struct ZbZclClusterT *clusterPtr)
-{
- Zigbee_Cmd_Request_t *ipcc_req;
-
- /* Call to the M0 to initialize the cluster and attach any filters with the stack. */
- Pre_ZigbeeCmdProcessing();
- ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
- ipcc_req->ID = MSG_M4TOM0_ZCL_CLUSTER_ATTACH;
- ipcc_req->Size = 1;
- ipcc_req->Data[0] = (uint32_t)clusterPtr;
- ZIGBEE_CmdTransfer();
- /* IPC has no return value */
-} /* ZbZclClusterAttach */
-
-void
-ZbZclClusterFree(struct ZbZclClusterT *clusterPtr)
-{
- Zigbee_Cmd_Request_t *ipcc_req;
-
- if (clusterPtr->zb == NULL) {
- return;
- }
-
- /* Call into the M0 to do any further cleanup (filters, etc) */
- Pre_ZigbeeCmdProcessing();
- ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
- ipcc_req->ID = MSG_M4TOM0_ZCL_CLUSTER_DETACH;
- ipcc_req->Size = 1;
- ipcc_req->Data[0] = (uint32_t)clusterPtr;
- ZIGBEE_CmdTransfer();
- /* IPC has no return value */
-
- if (clusterPtr->cleanup != NULL) {
- clusterPtr->cleanup(clusterPtr);
- }
- ZbHeapFree(clusterPtr->zb, clusterPtr);
-} /* ZbZclClusterFree */
-
void
ZbZclAddEndpoint(struct ZigBeeT *zb, ZbApsmeAddEndpointReqT *addReqPtr, ZbApsmeAddEndpointConfT *addConfPtr)
{
@@ -2594,7 +2558,7 @@ ZbZclRemoveEndpoint(struct ZigBeeT *zb, ZbApsmeRemoveEndpointReqT *req, ZbApsmeR
ZIGBEE_CmdTransfer();
} /* ZbZclRemoveEndpoint */
-void
+enum ZclStatusCodeT
ZbZclReadReq(struct ZbZclClusterT *clusterPtr, ZbZclReadReqT *req,
void (*callback)(const ZbZclReadRspT *readRsp, void *cb_arg), void *arg)
{
@@ -2603,12 +2567,7 @@ ZbZclReadReq(struct ZbZclClusterT *clusterPtr, ZbZclReadReqT *req,
info = zb_ipc_m4_cb_info_alloc((void *)callback, arg);
if (info == NULL) {
- ZbZclReadRspT rsp;
-
- memset(&rsp, 0, sizeof(rsp));
- rsp.status = ZB_STATUS_ALLOC_FAIL;
- callback(&rsp, arg);
- return;
+ return ZCL_STATUS_INSUFFICIENT_SPACE;
}
Pre_ZigbeeCmdProcessing();
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
@@ -2618,10 +2577,11 @@ ZbZclReadReq(struct ZbZclClusterT *clusterPtr, ZbZclReadReqT *req,
ipcc_req->Data[1] = (uint32_t)req;
ipcc_req->Data[2] = (uint32_t)info;
ZIGBEE_CmdTransfer();
+ return (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
/* Followed up in MSG_M0TOM4_ZCL_READ_CB handler */
} /* ZbZclReadReq */
-void
+enum ZclStatusCodeT
ZbZclWriteReq(struct ZbZclClusterT *clusterPtr, ZbZclWriteReqT *req,
void (*callback)(const ZbZclWriteRspT *writeResp, void *cb_arg), void *arg)
{
@@ -2630,12 +2590,7 @@ ZbZclWriteReq(struct ZbZclClusterT *clusterPtr, ZbZclWriteReqT *req,
info = zb_ipc_m4_cb_info_alloc((void *)callback, arg);
if (info == NULL) {
- ZbZclWriteRspT rsp;
-
- memset(&rsp, 0, sizeof(rsp));
- rsp.status = ZB_STATUS_ALLOC_FAIL;
- callback(&rsp, arg);
- return;
+ return ZCL_STATUS_INSUFFICIENT_SPACE;
}
Pre_ZigbeeCmdProcessing();
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
@@ -2645,10 +2600,11 @@ ZbZclWriteReq(struct ZbZclClusterT *clusterPtr, ZbZclWriteReqT *req,
ipcc_req->Data[1] = (uint32_t)req;
ipcc_req->Data[2] = (uint32_t)info;
ZIGBEE_CmdTransfer();
+ return (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
/* Followed up in MSG_M0TOM4_ZCL_WRITE_CB handler */
} /* ZbZclWriteReq */
-void
+enum ZclStatusCodeT
ZbZclDiscoverAttrReq(struct ZbZclClusterT *clusterPtr, ZbZclDiscoverAttrReqT *req,
void (*callback)(const ZbZclDiscoverAttrRspT *discRsp, void *cb_arg), void *arg)
{
@@ -2657,12 +2613,7 @@ ZbZclDiscoverAttrReq(struct ZbZclClusterT *clusterPtr, ZbZclDiscoverAttrReqT *re
info = zb_ipc_m4_cb_info_alloc((void *)callback, arg);
if (info == NULL) {
- ZbZclDiscoverAttrRspT rsp;
-
- memset(&rsp, 0, sizeof(rsp));
- rsp.status = ZB_STATUS_ALLOC_FAIL;
- callback(&rsp, arg);
- return;
+ return ZCL_STATUS_INSUFFICIENT_SPACE;
}
Pre_ZigbeeCmdProcessing();
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
@@ -2672,6 +2623,7 @@ ZbZclDiscoverAttrReq(struct ZbZclClusterT *clusterPtr, ZbZclDiscoverAttrReqT *re
ipcc_req->Data[1] = (uint32_t)req;
ipcc_req->Data[2] = (uint32_t)info;
ZIGBEE_CmdTransfer();
+ return (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
/* Followed up in MSG_M0TOM4_ZCL_DISCOVER_ATTR_CB handler */
} /* ZbZclDiscoverAttrReq */
@@ -2688,7 +2640,7 @@ ZbZclGetNextSeqnum(void)
return (uint8_t)zb_ipc_m4_get_retval();
} /* ZbZclGetNextSeqnum */
-void
+enum ZclStatusCodeT
ZbZclCommandReq(struct ZigBeeT *zb, ZbZclCommandReqT *zclReq,
void (*callback)(struct ZbZclCommandRspT *rsp, void *arg), void *arg)
{
@@ -2697,12 +2649,7 @@ ZbZclCommandReq(struct ZigBeeT *zb, ZbZclCommandReqT *zclReq,
info = zb_ipc_m4_cb_info_alloc((void *)callback, arg);
if (info == NULL) {
- struct ZbZclCommandRspT rsp;
-
- memset(&rsp, 0, sizeof(rsp));
- rsp.status = ZB_STATUS_ALLOC_FAIL;
- callback(&rsp, arg);
- return;
+ return ZB_STATUS_ALLOC_FAIL;
}
Pre_ZigbeeCmdProcessing();
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
@@ -2711,10 +2658,11 @@ ZbZclCommandReq(struct ZigBeeT *zb, ZbZclCommandReqT *zclReq,
ipcc_req->Data[0] = (uint32_t)zclReq;
ipcc_req->Data[1] = (uint32_t)info;
ZIGBEE_CmdTransfer();
+ return (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
/* Followed up in MSG_M0TOM4_ZCL_COMMAND_REQ_CB handler */
} /* ZbZclCommandReq */
-void
+enum ZclStatusCodeT
ZbZclCommandNoResp(struct ZigBeeT *zb, ZbZclCommandReqT *req,
void (*callback)(ZbApsdeDataConfT *confPtr, void *arg), void *arg)
{
@@ -2723,12 +2671,7 @@ ZbZclCommandNoResp(struct ZigBeeT *zb, ZbZclCommandReqT *req,
info = zb_ipc_m4_cb_info_alloc((void *)callback, arg);
if (info == NULL) {
- ZbApsdeDataConfT conf;
-
- memset(&conf, 0, sizeof(conf));
- conf.status = ZB_STATUS_ALLOC_FAIL;
- callback(&conf, arg);
- return;
+ return ZB_STATUS_ALLOC_FAIL;
}
Pre_ZigbeeCmdProcessing();
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
@@ -2737,6 +2680,7 @@ ZbZclCommandNoResp(struct ZigBeeT *zb, ZbZclCommandReqT *req,
ipcc_req->Data[0] = (uint32_t)req;
ipcc_req->Data[1] = (uint32_t)info;
ZIGBEE_CmdTransfer();
+ return (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
/* Followed up in MSG_M0TOM4_ZCL_COMMAND_NO_RSP_CB handler */
} /* ZbZclCommandNoResp */
@@ -2757,7 +2701,7 @@ ZbZclSendDefaultResponse(struct ZbZclClusterT *clusterPtr, ZbApsdeDataIndT *data
ZIGBEE_CmdTransfer();
} /* ZbZclSendDefaultResponse */
-void
+enum ZclStatusCodeT
ZbZclClusterCommandReq(struct ZbZclClusterT *clusterPtr, struct ZbZclClusterCommandReqT *req,
void (*callback)(struct ZbZclCommandRspT *zcl_rsp, void *arg), void *arg)
{
@@ -2766,12 +2710,7 @@ ZbZclClusterCommandReq(struct ZbZclClusterT *clusterPtr, struct ZbZclClusterComm
info = zb_ipc_m4_cb_info_alloc((void *)callback, arg);
if (info == NULL) {
- struct ZbZclCommandRspT rsp;
-
- memset(&rsp, 0, sizeof(rsp));
- rsp.status = ZB_STATUS_ALLOC_FAIL;
- callback(&rsp, arg);
- return;
+ return ZB_STATUS_ALLOC_FAIL;
}
Pre_ZigbeeCmdProcessing();
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
@@ -2781,6 +2720,7 @@ ZbZclClusterCommandReq(struct ZbZclClusterT *clusterPtr, struct ZbZclClusterComm
ipcc_req->Data[1] = (uint32_t)req;
ipcc_req->Data[2] = (uint32_t)info;
ZIGBEE_CmdTransfer();
+ return (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
/* Followed up in MSG_M0TOM4_ZCL_CLUSTER_CMD_REQ_CB handler */
} /* ZbZclClusterCommandReq */
@@ -2889,41 +2829,67 @@ ZbZclClusterEndpointRemove(struct ZbZclClusterT *clusterPtr)
} /* ZbZclClusterEndpointRemove */
enum ZclStatusCodeT
-zcl_cluster_bind(struct ZbZclClusterT *clusterPtr, struct ZbApsFilterT *filter,
- uint8_t endpoint, uint16_t profileId, enum ZbZclDirectionT direction)
+ZbZclClusterBind(struct ZbZclClusterT *clusterPtr, uint8_t endpoint, uint16_t profileId, enum ZbZclDirectionT direction)
{
Zigbee_Cmd_Request_t *ipcc_req;
Pre_ZigbeeCmdProcessing();
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
ipcc_req->ID = MSG_M4TOM0_ZCL_CLUSTER_BIND;
- ipcc_req->Size = 5;
+ ipcc_req->Size = 4;
ipcc_req->Data[0] = (uint32_t)clusterPtr;
- ipcc_req->Data[1] = (uint32_t)filter;
- ipcc_req->Data[2] = (uint32_t)endpoint;
- ipcc_req->Data[3] = (uint32_t)profileId;
- ipcc_req->Data[4] = (uint32_t)direction;
+ ipcc_req->Data[1] = (uint32_t)endpoint;
+ ipcc_req->Data[2] = (uint32_t)profileId;
+ ipcc_req->Data[3] = (uint32_t)direction;
ZIGBEE_CmdTransfer();
return (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
-} /* zcl_cluster_bind */
-
-enum ZclStatusCodeT
-ZbZclClusterBind(struct ZbZclClusterT *clusterPtr, uint8_t endpoint, uint16_t profileId, enum ZbZclDirectionT direction)
-{
- return zcl_cluster_bind(clusterPtr, &clusterPtr->filter, endpoint, profileId, direction);
+ /* Data indication callbacks go to MSG_M0TOM4_ZCL_CLUSTER_DATA_IND */
} /* ZbZclClusterBind */
void
ZbZclClusterUnbind(struct ZbZclClusterT *clusterPtr)
{
- if (clusterPtr->filter.callback != NULL) {
- ZCL_LOG_PRINTF(clusterPtr->zb, __func__, "Removing filter for cluster 0x%04x on endpoint %d.", clusterPtr->clusterId, clusterPtr->endpoint);
- ZbApsFilterRemove(clusterPtr->zb, &clusterPtr->filter);
- clusterPtr->filter.callback = NULL;
- }
+ Zigbee_Cmd_Request_t *ipcc_req;
+
+ Pre_ZigbeeCmdProcessing();
+ ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
+ ipcc_req->ID = MSG_M4TOM0_ZCL_CLUSTER_UNBIND;
+ ipcc_req->Size = 1;
+ ipcc_req->Data[0] = (uint32_t)clusterPtr;
+ ZIGBEE_CmdTransfer();
} /* ZbZclClusterUnbind */
enum ZclStatusCodeT
+ZbZclClusterLoopbackBind(struct ZbZclClusterT *clusterPtr, struct ZbApsFilterT *filter)
+{
+ Zigbee_Cmd_Request_t *ipcc_req;
+
+ Pre_ZigbeeCmdProcessing();
+ ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
+ ipcc_req->ID = MSG_M4TOM0_ZCL_CLUSTER_LOOPBACK_BIND;
+ ipcc_req->Size = 2;
+ ipcc_req->Data[0] = (uint32_t)clusterPtr;
+ ipcc_req->Data[1] = (uint32_t)filter;
+ ZIGBEE_CmdTransfer();
+ return (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
+ /* Data indication callbacks go to MSG_M0TOM4_ZCL_CLUSTER_DATA_IND */
+} /* ZbZclClusterLoopbackBind */
+
+void
+ZbZclClusterLoopbackUnbind(struct ZbZclClusterT *clusterPtr, struct ZbApsFilterT *filter)
+{
+ Zigbee_Cmd_Request_t *ipcc_req;
+
+ Pre_ZigbeeCmdProcessing();
+ ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
+ ipcc_req->ID = MSG_M4TOM0_ZCL_CLUSTER_LOOPBACK_UNBIND;
+ ipcc_req->Size = 2;
+ ipcc_req->Data[0] = (uint32_t)clusterPtr;
+ ipcc_req->Data[1] = (uint32_t)filter;
+ ZIGBEE_CmdTransfer();
+} /* ZbZclClusterLoopbackUnbind */
+
+enum ZclStatusCodeT
ZbZclClusterRegisterAlarmResetHandler(struct ZbZclClusterT *clusterPtr, ZbZclAlarmResetFuncT callback)
{
Zigbee_Cmd_Request_t *ipcc_req;
@@ -2932,21 +2898,29 @@ ZbZclClusterRegisterAlarmResetHandler(struct ZbZclClusterT *clusterPtr, ZbZclAla
Pre_ZigbeeCmdProcessing();
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
ipcc_req->ID = MSG_M4TOM0_ZCL_CLUSTER_ALARM_ADD_FILTER;
- ipcc_req->Size = 1;
+ ipcc_req->Size = 2;
ipcc_req->Data[0] = (uint32_t)clusterPtr;
+ ipcc_req->Data[1] = (uint32_t)callback;
ZIGBEE_CmdTransfer();
status = (enum ZclStatusCodeT)zb_ipc_m4_get_retval();
- if (status == ZCL_STATUS_SUCCESS) {
- clusterPtr->alarm_reset_callback = callback;
- }
- else {
- clusterPtr->alarm_reset_callback = NULL;
- }
return status;
/* Callbacks followed up in MSG_M0TOM4_ZCL_CLUSTER_ALARM_CB handler. */
} /* ZbZclClusterRegisterAlarmResetHandler */
void
+ZbZclClusterRemoveAlarmResetHandler(struct ZbZclClusterT *clusterPtr)
+{
+ Zigbee_Cmd_Request_t *ipcc_req;
+
+ Pre_ZigbeeCmdProcessing();
+ ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
+ ipcc_req->ID = MSG_M4TOM0_ZCL_CLUSTER_ALARM_REMOVE_FILTER;
+ ipcc_req->Size = 1;
+ ipcc_req->Data[0] = (uint32_t)clusterPtr;
+ ZIGBEE_CmdTransfer();
+}
+
+void
ZbZclClusterSendAlarm(struct ZbZclClusterT *clusterPtr, uint8_t src_endpoint, uint8_t alarm_code)
{
Zigbee_Cmd_Request_t *ipcc_req;
@@ -2961,200 +2935,6 @@ ZbZclClusterSendAlarm(struct ZbZclClusterT *clusterPtr, uint8_t src_endpoint, ui
ZIGBEE_CmdTransfer();
} /* ZbZclClusterSendAlarm */
-enum ZclStatusCodeT
-zcl_reporting_config_default(struct ZbZclClusterT *clusterPtr)
-{
- /* FIXME 0 - TODO - local shared code? */
- return ZCL_STATUS_FAILURE;
-} /* zcl_reporting_config_default */
-
-bool
-zcl_reporting_remove(struct ZbZclClusterT *clusterPtr, uint16_t attributeId, enum ZbZclReportDirectionT direction)
-{
- /* FIXME 0 - TODO - local shared code? */
- return false;
-} /* zcl_reporting_remove */
-
-enum ZclStatusCodeT
-ZbZclAttrAppendList(struct ZbZclClusterT *clusterPtr, const struct ZbZclAttrT *attrList, unsigned int num_attrs)
-{
- unsigned int i;
- struct ZbZclAttrListEntryT *attrPtr;
- unsigned int val_buf_sz;
- Zigbee_Cmd_Request_t *ipcc_req;
-
- ZclAssert(clusterPtr != NULL);
- /* The caller shouldn't be calling with a NULL attribute list, but
- * allow it anyway. */
- if ((attrList == NULL) || (num_attrs == 0U)) {
- return ZCL_STATUS_SUCCESS;
- }
-
- for (i = 0; i < num_attrs; i++) {
- attrPtr = ZbZclAttrFind(clusterPtr, attrList[i].attributeId);
- if (attrPtr != NULL) {
- /* Replace any duplicate attributes we find. The cluster might
- * have some default attribute definitions that the application
- * wants to override with its own. */
- ZbZclAttrFreeAttr(clusterPtr, attrPtr);
- }
-
- /* FIXME - use a single ZbHeapAlloc? Need to make sure structs are starting on aligned memory. */
- attrPtr = ZbHeapAlloc(clusterPtr->zb, sizeof(struct ZbZclAttrListEntryT));
- if (attrPtr == NULL) {
- ZCL_LOG_PRINTF(clusterPtr->zb, __func__, "Error, memory exhausted (len = %d)", sizeof(struct ZbZclAttrListEntryT) + val_buf_sz);
- return ZCL_STATUS_INSUFFICIENT_SPACE;
- }
- (void)ZbMemSet(attrPtr, 0, sizeof(struct ZbZclAttrListEntryT));
- LINK_LIST_INIT(&attrPtr->link);
- attrPtr->info = &attrList[i];
-
- if ((attrPtr->info->flags & ZCL_ATTR_FLAG_REPORTABLE) != 0U) {
- attrPtr->reporting.interval_secs_max = attrPtr->info->reporting.interval_max;
- attrPtr->reporting.interval_secs_min = attrPtr->info->reporting.interval_min;
- }
-
- if (attrPtr->info->customValSz > 0U) {
- attrPtr->valSz = attrPtr->info->customValSz;
-
- /* Allow for leading string length header, to keep these details from user. */
- if ((attrPtr->info->dataType == ZCL_DATATYPE_STRING_OCTET)
- || (attrPtr->info->dataType == ZCL_DATATYPE_STRING_CHARACTER)) {
- attrPtr->valSz += 1U;
- }
- else if ((attrPtr->info->dataType == ZCL_DATATYPE_STRING_LONG_OCTET)
- || (attrPtr->info->dataType == ZCL_DATATYPE_STRING_LONG_CHARACTER)) {
- attrPtr->valSz += 2U;
- }
- else {
- /* no change to valSz */
- }
-
- if (((attrPtr->info->flags & ZCL_ATTR_FLAG_CB_READ) != 0U)
- && ((attrPtr->info->flags & ZCL_ATTR_FLAG_CB_WRITE) != 0U)) {
- /* If defining a custom value size and also both custom
- * read and write functions, then don't allocate the
- * attribute data buffer. The cluster will maintain
- * this information separately.
- *
- * attrPtr->valSz in this case represents the maximum
- * potential size of the attribute data, for persistence. */
- val_buf_sz = 0U;
- }
- else {
- val_buf_sz = attrPtr->valSz;
- }
- }
- else {
- attrPtr->valSz = ZbZclAttrTypeLength(attrPtr->info->dataType);
- if (attrPtr->valSz == 0U) {
- ZCL_LOG_PRINTF(clusterPtr->zb, __func__, "Error, attr = 0x%04x, type = %d, len = 0", attrPtr->info->attributeId, attrPtr->info->dataType);
- ZbHeapFree(clusterPtr->zb, attrPtr);
- return ZCL_STATUS_INVALID_DATA_TYPE;
- }
- val_buf_sz = attrPtr->valSz;
- }
-
- if (val_buf_sz > 0U) {
- /* Set the valBuf memory pointer */
- attrPtr->valBuf = ZbHeapAlloc(clusterPtr->zb, val_buf_sz);
- if (attrPtr->valBuf == NULL) {
- ZbHeapFree(clusterPtr->zb, attrPtr);
- ZCL_LOG_PRINTF(clusterPtr->zb, __func__, "Error, memory exhausted (len = %d)", sizeof(struct ZbZclAttrListEntryT) + val_buf_sz);
- return ZCL_STATUS_INSUFFICIENT_SPACE;
- }
- (void)ZbMemSet(attrPtr->valBuf, 0, val_buf_sz);
- }
-
-#if 0 /* enable for debugging */
- ZCL_LOG_PRINTF(clusterPtr->zb, __func__, "Allocating attribute (cl = 0x%04x, attr = 0x%04x, size = %d)",
- clusterPtr->clusterId, attrPtr->info->attributeId, sizeof(struct ZbZclAttrListEntryT) + val_buf_sz);
-#endif
-
- /* Append it to the list */
- ZbZclAttrAddSorted(clusterPtr, attrPtr);
-
- /* Give the attribute a default value */
- if (((attrPtr->info->flags & ZCL_ATTR_FLAG_CB_DEFAULT) != 0U)) {
- struct ZbZclAttrCbInfoT cb;
-
- (void)ZbMemSet(&cb, 0, sizeof(struct ZbZclAttrCbInfoT));
- cb.info = attrPtr->info;
- cb.type = ZCL_ATTR_CB_TYPE_DEFAULT;
- cb.app_cb_arg = clusterPtr->app_cb_arg;
- (void)attrPtr->info->callback(clusterPtr, &cb);
- }
- else if (attrPtr->valBuf != NULL) {
- (void)ZbZclAttrDefaultValue(attrPtr->info->dataType, attrPtr->valBuf, attrPtr->valSz);
- }
- else {
- /* managed by app */
- }
-
- /* Let the application know about this attribute (for callbacks and attribute discovery) */
- Pre_ZigbeeCmdProcessing();
- ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
- ipcc_req->ID = MSG_M4TOM0_ZCL_ATTR_REGISTER;
- ipcc_req->Size = 2;
- ipcc_req->Data[0] = (uint32_t)clusterPtr;
- ipcc_req->Data[1] = (uint32_t)attrPtr;
- ZIGBEE_CmdTransfer();
- /* Note, attribute callbacks from M0 go to MSG_M0TOM4_ZCL_ATTR_CB */
- } /* for */
-
- (void)zcl_reporting_config_default(clusterPtr);
- return ZCL_STATUS_SUCCESS;
-} /* ZbZclAttrAppendList */
-
-enum ZclStatusCodeT
-zcl_attr_callback_exec(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrListEntryT *attrPtr, struct ZbZclAttrCbInfoT *cbInfo)
-{
-#if 0 /* running on the application side, so don't use the stack's internal_callback */
- if (attrPtr->internal_callback != NULL) {
- return attrPtr->internal_callback(clusterPtr, cbInfo);
- }
-#endif
- if (attrPtr->info->callback != NULL) {
- return attrPtr->info->callback(clusterPtr, cbInfo);
- }
- return ZCL_STATUS_FAILURE;
-} /* zcl_attr_callback_exec */
-
-static void
-ZbZclAttrFreeAttr(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrListEntryT *attrPtr)
-{
- ZclAssert(clusterPtr != NULL);
-
- if ((attrPtr->info->flags & ZCL_ATTR_FLAG_REPORTABLE) != 0U) {
- (void)zcl_reporting_remove(clusterPtr, attrPtr->info->attributeId, ZCL_REPORT_DIRECTION_NORMAL);
- (void)zcl_reporting_remove(clusterPtr, attrPtr->info->attributeId, ZCL_REPORT_DIRECTION_REVERSE);
- }
-
- LINK_LIST_UNLINK(&attrPtr->link);
-
- if (attrPtr->valBuf != NULL) {
- ZbHeapFree(clusterPtr->zb, attrPtr->valBuf);
- }
- ZbHeapFree(clusterPtr->zb, attrPtr);
-} /* ZbZclAttrFreeAttr */
-
-void
-ZbZclAttrFreeList(struct ZbZclClusterT *clusterPtr)
-{
- struct LinkListT *p;
- struct ZbZclAttrListEntryT *attrPtr;
-
- ZclAssert(clusterPtr != NULL);
- while (true) {
- p = LINK_LIST_HEAD(&clusterPtr->attributeList);
- if (p == NULL) {
- break;
- }
- attrPtr = LINK_LIST_ITEM(p, struct ZbZclAttrListEntryT, link);
- ZbZclAttrFreeAttr(clusterPtr, attrPtr);
- } /* while */
-} /* ZbZclAttrFreeList */
-
/******************************************************************************
* SE Key Exchange
******************************************************************************
@@ -3177,7 +2957,7 @@ ZbZclKeWithDevice(struct ZigBeeT *zb, uint64_t partnerAddr, bool aps_req_key,
ipcc_req = ZIGBEE_Get_OTCmdPayloadBuffer();
ipcc_req->ID = MSG_M4TOM0_ZCL_KE_WITH_DEVICE;
ipcc_req->Size = 4;
- memcpy(&ipcc_req->Data[0], &partnerAddr, 8);
+ zb_ipc_m4_memcpy2(&ipcc_req->Data[0], &partnerAddr, 8);
ipcc_req->Data[2] = (uint32_t)aps_req_key;
ipcc_req->Data[3] = (uint32_t)info;
ZIGBEE_CmdTransfer();
@@ -3279,7 +3059,7 @@ ZbApsFragDropTxClear(struct ZigBeeT *zb)
void
ZbAesMmoHash(uint8_t const *data, const unsigned int length, uint8_t *hash)
{
- ZbHashT newHash;
+ struct ZbHash newHash;
ZbHashInit(&newHash);
ZbHashAdd(&newHash, data, length);
@@ -3287,15 +3067,15 @@ ZbAesMmoHash(uint8_t const *data, const unsigned int length, uint8_t *hash)
} /* ZbAesMmoHash */
void
-ZbHashInit(ZbHashT *h)
+ZbHashInit(struct ZbHash *h)
{
- (void)ZbMemSet(h->m, 0, sizeof(h->m));
- (void)ZbMemSet(h->hash, 0, sizeof(h->hash));
+ (void)memset(h->m, 0, sizeof(h->m));
+ (void)memset(h->hash, 0, sizeof(h->hash));
h->length = 0;
} /* ZbHashInit */
void
-ZbHashAdd(ZbHashT *h, const void *data, uint32_t len)
+ZbHashAdd(struct ZbHash *h, const void *data, uint32_t len)
{
Zigbee_Cmd_Request_t *ipcc_req;
@@ -3310,7 +3090,7 @@ ZbHashAdd(ZbHashT *h, const void *data, uint32_t len)
} /* ZbHashAdd */
void
-ZbHashByte(ZbHashT *h, uint8_t byte)
+ZbHashByte(struct ZbHash *h, uint8_t byte)
{
Zigbee_Cmd_Request_t *ipcc_req;
@@ -3324,7 +3104,7 @@ ZbHashByte(ZbHashT *h, uint8_t byte)
} /* ZbHashByte */
void
-ZbHashDigest(ZbHashT *h, void *digest)
+ZbHashDigest(struct ZbHash *h, void *digest)
{
Zigbee_Cmd_Request_t *ipcc_req;
@@ -3346,37 +3126,13 @@ zb_heap_alloc(struct ZigBeeT *zb, size_t sz, const char *filename, unsigned int
{
/* The M4 has access to malloc */
return malloc(sz);
-} /* zb_heap_alloc */
+}
void
zb_heap_free(struct ZigBeeT *zb, void *ptr, const char *filename, unsigned int line)
{
free(ptr);
-} /* ZbHeapFree */
-
-void *
-ZbMemSet(void *s, int c, size_t n)
-{
- return memset(s, c, n);
-} /* ZbMemSet */
-
-void *
-ZbMemCpy(void *dest, const void *src, size_t n)
-{
- return memcpy(dest, src, n);
-} /* ZbMemCpy */
-
-void *
-ZbMemMove(void *dest, const void *src, size_t n)
-{
- return memmove(dest, src, n);
-} /* ZbMemMove */
-
-char *
-ZbStrCpy(char *dest, const char *src)
-{
- return strcpy(dest, src);
-} /* ZbStrCpy */
+}
/******************************************************************************
* CRC (required for ZCL reporting (hash)
@@ -3493,42 +3249,13 @@ Zigbee_CallBackProcessing(void)
{
struct zb_msg_filter_cb_info *cb_info;
int retval;
-#ifdef PATCH_MEM1
-#else
- int *retptr;
-#endif /* PATCH_MEM1 */
- assert(p_notification->Size == 4);
+ assert(p_notification->Size == 3);
cb_info = (struct zb_msg_filter_cb_info *)p_notification->Data[2];
-#ifdef PATCH_MEM1
-#else
- retptr = (int *)p_notification->Data[3];
-#endif /* PATCH_MEM1 */
retval = cb_info->callback(zb_ipc_globals.zb, (uint32_t)p_notification->Data[0],
(void *)p_notification->Data[1], cb_info->arg);
-
-#ifdef PATCH_MEM1
- /******************************************************************************************/
- /* M4 M0 */
- /* | | Fill data[0],data[x], etc.. */
- /* | | */
- /* | | Call to zigbee_m0_send_notify */
- /* |<-------------Notif (data[x])------------- | */
- /* | | */
- /* |Fill the data[0] | */
- /* |(contain the status of the notification | */
- /* | handler) | zigbee_m0_retrieve_notif_data0() */
- /* | | */
- /******************************************************************************************/
-
- p_notification->Data[0] = retval; /* This parameter is filled by the M4 but is read back
- by the M0 once the M0 has send the notification to
- the M4*/
-#else
- if (retptr != NULL) {
- *retptr = retval;
- }
-#endif /* PATCH_MEM1 */
+ /* Return the retval in the notification ACK */
+ p_notification->Data[0] = retval;
break;
}
@@ -3631,13 +3358,33 @@ Zigbee_CallBackProcessing(void)
{
ZbApsdeDataIndT *data_ind;
struct aps_filter_cb *aps_filter_cb;
+ int err = ZB_APS_FILTER_CONTINUE;
+
+ assert(p_notification->Size == 2);
+ data_ind = (ZbApsdeDataIndT *)p_notification->Data[0];
+ aps_filter_cb = (struct aps_filter_cb *)p_notification->Data[1];
+ if (aps_filter_cb->callback != NULL) {
+ err = aps_filter_cb->callback(data_ind, aps_filter_cb->cb_arg);
+ }
+ /* Return err in second argument */
+ p_notification->Data[1] = (uint32_t)err;
+ break;
+ }
+
+ case MSG_M0TOM4_APS_FILTER_CLUSTER_CB:
+ {
+ ZbApsdeDataIndT *data_ind;
+ struct aps_filter_cb *aps_filter_cb;
+ int err = ZB_APS_FILTER_CONTINUE;
assert(p_notification->Size == 2);
data_ind = (ZbApsdeDataIndT *)p_notification->Data[0];
aps_filter_cb = (struct aps_filter_cb *)p_notification->Data[1];
if (aps_filter_cb->callback != NULL) {
- aps_filter_cb->callback(data_ind, aps_filter_cb->cb_arg);
+ err = aps_filter_cb->callback(data_ind, aps_filter_cb->cb_arg);
}
+ /* Return err in second argument */
+ p_notification->Data[1] = (uint32_t)err;
break;
}
@@ -3656,10 +3403,10 @@ Zigbee_CallBackProcessing(void)
assert(p_notification->Size == 2);
info = (struct zb_ipc_m4_cb_info *)p_notification->Data[1];
if (info->callback != NULL) {
- void (*callback)(ZbNlmeLeaveConfT *conf, void *arg);
+ void (*callback)(struct ZbNlmeLeaveConfT *conf, void *arg);
- callback = (void (*)(ZbNlmeLeaveConfT *conf, void *arg))info->callback;
- callback((ZbNlmeLeaveConfT *)p_notification->Data[0], info->arg);
+ callback = (void (*)(struct ZbNlmeLeaveConfT *conf, void *arg))info->callback;
+ callback((struct ZbNlmeLeaveConfT *)p_notification->Data[0], info->arg);
}
break;
@@ -3863,206 +3610,76 @@ Zigbee_CallBackProcessing(void)
}
break;
- case MSG_M0TOM4_ZCL_CLUSTER_ALARM_CB:
+ case MSG_M0TOM4_ZCL_CLUSTER_DATA_IND:
{
- struct ZbZclClusterT *clusterPtr;
+ ZbApsdeDataIndT *dataIndPtr;
+ void *cb_arg;
+ int err;
- assert(p_notification->Size == 5);
- clusterPtr = (struct ZbZclClusterT *)p_notification->Data[0];
- if (clusterPtr->alarm_reset_callback != NULL) {
- clusterPtr->alarm_reset_callback(clusterPtr, (uint8_t)p_notification->Data[1],
- (uint16_t)p_notification->Data[2], (ZbApsdeDataIndT *)p_notification->Data[3],
- (struct ZbZclHeaderT *)p_notification->Data[4]);
- }
- break;
- }
-
- case MSG_M0TOM4_ZCL_CLUSTER_COMMAND_CB:
- {
- struct ZbZclClusterT *clusterPtr;
- enum ZclStatusCodeT status = ZCL_STATUS_SUCCESS;
-#ifdef PATCH_MEM1
-#else
- enum ZclStatusCodeT *retptr;
-#endif /* PATCH_MEM1 */
-
- assert(p_notification->Size == 4);
- clusterPtr = (struct ZbZclClusterT *)p_notification->Data[0];
-#ifdef PATCH_MEM1
-#else
- retptr = (enum ZclStatusCodeT *)p_notification->Data[3];
-#endif /* PATCH_MEM1 */
- if (clusterPtr->command != NULL) {
- status = clusterPtr->command(clusterPtr, (struct ZbZclHeaderT *)p_notification->Data[1],
- (ZbApsdeDataIndT *)p_notification->Data[2]);
- }
-#ifdef PATCH_MEM1
- /******************************************************************************************/
- /* M4 M0 */
- /* | | Fill data[0],data[x], etc.. */
- /* | | */
- /* | | Call to zigbee_m0_send_notify */
- /* |<-------------Notif (data[x])------------- | */
- /* | | */
- /* |Fill the data[0] | */
- /* |(contain the status of the notification | */
- /* | handler) | zigbee_m0_retrieve_notif_data0() */
- /* | | */
- /******************************************************************************************/
-
- p_notification->Data[0] = status; /* This parameter is filled by the M4 but is read back
- by the M0 once the M0 has send the notification to
- the M4*/
-#else
- if (retptr != NULL) {
- *retptr = status;
- }
-#endif /* PATCH_MEM1 */
-
+ assert(p_notification->Size == 2);
+ dataIndPtr = (ZbApsdeDataIndT *)p_notification->Data[0];
+ cb_arg = (void *)p_notification->Data[1];
+ err = zcl_cluster_data_ind(dataIndPtr, cb_arg);
+ /* Return err in second argument */
+ p_notification->Data[1] = (uint32_t)err;
break;
}
- case MSG_M0TOM4_ZCL_CLUSTER_CONFIG_CB:
+ case MSG_M0TOM4_ZCL_CLUSTER_ALARM_CB:
{
- struct ZbZclClusterT *clusterPtr;
+ ZbApsdeDataIndT *dataIndPtr;
+ void *cb_arg;
+ int err;
- assert(p_notification->Size == 5);
- clusterPtr = (struct ZbZclClusterT *)p_notification->Data[0];
- if (clusterPtr->config != NULL) {
- clusterPtr->config(clusterPtr, (ZbApsdeDataIndT *)p_notification->Data[1],
- (uint16_t)p_notification->Data[2], (enum ZclStatusCodeT)p_notification->Data[3],
- (uint8_t)p_notification->Data[4]);
- }
- break;
- }
-
- case MSG_M0TOM4_ZCL_CLUSTER_REPORT_CB:
- {
- struct ZbZclClusterT *clusterPtr;
-
- assert(p_notification->Size == 6);
- clusterPtr = (struct ZbZclClusterT *)p_notification->Data[0];
- if (clusterPtr->report != NULL) {
- clusterPtr->report(clusterPtr, (ZbApsdeDataIndT *)p_notification->Data[1],
- (uint16_t)p_notification->Data[2], (enum ZclDataTypeT)p_notification->Data[3],
- (const uint8_t *)p_notification->Data[4], (uint16_t)p_notification->Data[5]);
- }
+ assert(p_notification->Size == 2);
+ dataIndPtr = (ZbApsdeDataIndT *)p_notification->Data[0];
+ cb_arg = (void *)p_notification->Data[1];
+ err = zcl_cluster_alarm_data_ind(dataIndPtr, cb_arg);
+ /* Return err in second argument */
+ p_notification->Data[1] = (uint32_t)err;
break;
}
- case MSG_M0TOM4_ZCL_CLUSTER_GET_SCENE_CB:
- {
- struct ZbZclClusterT *clusterPtr;
-#ifdef PATCH_MEM1
- uint8_t retval = 0U;
-#else
- uint8_t *retptr, retval = 0U;
-#endif /*PATCH_MEM1 */
+ case MSG_M0TOM4_ZCL_CLUSTER_CMD_REQ_CB:
+ assert(p_notification->Size == 2);
+ info = (struct zb_ipc_m4_cb_info *)p_notification->Data[1];
+ if (info->callback != NULL) {
+ void (*callback)(struct ZbZclCommandRspT *rsp, void *cbarg);
- assert(p_notification->Size == 4);
- clusterPtr = (struct ZbZclClusterT *)p_notification->Data[0];
-#ifdef PATCH_MEM1
-#else
- retptr = (uint8_t *)p_notification->Data[3];
-#endif /*PATCH_MEM1 */
- if (clusterPtr->get_scene_data != NULL) {
- retval = clusterPtr->get_scene_data(clusterPtr, (uint8_t *)p_notification->Data[1],
- (uint8_t)p_notification->Data[2]);
- }
-#ifdef PATCH_MEM1
- /******************************************************************************************/
- /* M4 M0 */
- /* | | Fill data[0],data[x], etc.. */
- /* | | */
- /* | | Call to zigbee_m0_send_notify */
- /* |<-------------Notif (data[x])------------- | */
- /* | | */
- /* |Fill the data[0] | */
- /* |(contain the status of the notification | */
- /* | handler) | zigbee_m0_retrieve_notif_data0() */
- /* | | */
- /******************************************************************************************/
-
- p_notification->Data[0] = retval; /* This parameter is filled by the M4 but is read back
- by the M0 once the M0 has send the notification to
- the M4*/
-#else
- if (retptr != NULL) {
- *retptr = retval;
+ callback = (void (*)(struct ZbZclCommandRspT *rsp, void *cbarg))info->callback;
+ callback((struct ZbZclCommandRspT *)p_notification->Data[0], info->arg);
}
-#endif /* PATCH_MEM1 */
break;
- }
-
- case MSG_M0TOM4_ZCL_CLUSTER_SET_SCENE_CB:
- {
- struct ZbZclClusterT *clusterPtr;
-#ifdef PATCH_MEM1
-#else
- enum ZclStatusCodeT *retptr;
-#endif /* PATCH_MEM1 */
- enum ZclStatusCodeT retval = ZCL_STATUS_SUCCESS;
+ case MSG_M0TOM4_ZCL_CLUSTER_CMD_RSP_CONF_CB:
+ assert(p_notification->Size == 2);
+ info = (struct zb_ipc_m4_cb_info *)p_notification->Data[1];
+ if (info->callback != NULL) {
+ void (*callback)(ZbApsdeDataConfT *conf, void *arg);
- assert(p_notification->Size == 5);
- clusterPtr = (struct ZbZclClusterT *)p_notification->Data[0];
-#ifdef PATCH_MEM1
-#else
- retptr = (enum ZclStatusCodeT *)p_notification->Data[4];
-#endif /* PATCH_MEM1 */
- if (clusterPtr->set_scene_data != NULL) {
- retval = clusterPtr->set_scene_data(clusterPtr, (uint8_t *)p_notification->Data[1],
- (uint8_t)p_notification->Data[2], (uint16_t)p_notification->Data[3]);
- }
-#ifdef PATCH_MEM1
- /******************************************************************************************/
- /* M4 M0 */
- /* | | Fill data[0],data[x], etc.. */
- /* | | */
- /* | | Call to zigbee_m0_send_notify */
- /* |<-------------Notif (data[x])------------- | */
- /* | | */
- /* |Fill the data[0] | */
- /* |(contain the status of the notification | */
- /* | handler) | zigbee_m0_retrieve_notif_data0() */
- /* | | */
- /******************************************************************************************/
-
- p_notification->Data[0] = retval; /* This parameter is filled by the M4 but is read back
- by the M0 once the M0 has send the notification to
- the M4*/
-#else
- if (retptr != NULL) {
- *retptr = retval;
+ callback = (void (*)(ZbApsdeDataConfT *conf, void *arg))info->callback;
+ callback((ZbApsdeDataConfT *)p_notification->Data[0], info->arg);
}
break;
-#endif /* PATCH_MEM1 */
- }
- case MSG_M0TOM4_ZCL_CLUSTER_CLEANUP_CB:
+ case MSG_M0TOM4_ZCL_COMMAND_REQ_CB:
{
- struct ZbZclClusterT *clusterPtr;
+ int err = ZB_APS_FILTER_CONTINUE;
- assert(p_notification->Size == 1);
- clusterPtr = (struct ZbZclClusterT *)p_notification->Data[0];
- if (clusterPtr->cleanup != NULL) {
- clusterPtr->cleanup(clusterPtr);
- }
- break;
- }
-
- case MSG_M0TOM4_ZCL_CLUSTER_CMD_REQ_CB:
assert(p_notification->Size == 2);
info = (struct zb_ipc_m4_cb_info *)p_notification->Data[1];
if (info->callback != NULL) {
- void (*callback)(struct ZbZclCommandRspT *rsp, void *cbarg);
+ int (*callback)(struct ZbZclCommandRspT *conf, void *arg);
- callback = (void (*)(struct ZbZclCommandRspT *rsp, void *cbarg))info->callback;
- callback((struct ZbZclCommandRspT *)p_notification->Data[0], info->arg);
+ callback = (int (*)(struct ZbZclCommandRspT *rsp, void *arg))info->callback;
+ err = callback((struct ZbZclCommandRspT *)p_notification->Data[0], info->arg);
}
+ /* Return err in second argument */
+ p_notification->Data[1] = (uint32_t)err;
break;
+ }
- case MSG_M0TOM4_ZCL_CLUSTER_CMD_RSP_CONF_CB:
+ case MSG_M0TOM4_ZCL_COMMAND_NO_RSP_CB:
assert(p_notification->Size == 2);
info = (struct zb_ipc_m4_cb_info *)p_notification->Data[1];
if (info->callback != NULL) {
@@ -4106,143 +3723,6 @@ Zigbee_CallBackProcessing(void)
}
break;
- case MSG_M0TOM4_ZCL_ATTR_CB:
- {
- struct ZbZclClusterT *clusterPtr;
- struct ZbZclAttrCbInfoT *cb;
- struct ZbZclAttrListEntryT *attr;
- enum ZclStatusCodeT zcl_status;
-#ifdef PATCH_MEM1
-#else
- enum ZclStatusCodeT *retptr;
-#endif /*PATCH_MEM1 */
-
- assert(p_notification->Size == 3);
- clusterPtr = (struct ZbZclClusterT *)p_notification->Data[0];
- cb = (struct ZbZclAttrCbInfoT *)p_notification->Data[1];
-#ifdef PATCH_MEM1
-#else
- retptr = (enum ZclStatusCodeT *)p_notification->Data[2];
-#endif /*PATCH_MEM1 */
- attr = ZbZclAttrFind(clusterPtr, cb->info->attributeId);
- if (attr == NULL) {
-#ifdef PATCH_MEM1
- /******************************************************************************************/
- /* M4 M0 */
- /* | | Fill data[0],data[x], etc.. */
- /* | | */
- /* | | Call to zigbee_m0_send_notify */
- /* |<-------------Notif (data[x])------------- | */
- /* | | */
- /* |Fill the data[0] | */
- /* |(contain the status of the notification | */
- /* | handler) | zigbee_m0_retrieve_notif_data0() */
- /* | | */
- /******************************************************************************************/
-
- p_notification->Data[0] = ZCL_STATUS_SUCCESS; /* This parameter is filled by the M4 but is read back
- by the M0 once the M0 has send the notification to
- the M4*/
-#else
- if (retptr != NULL) {
- *retptr = ZCL_STATUS_SUCCESS;
- }
-#endif /* PATCH_MEM1 */
- break;
- }
-
- zcl_status = ZCL_STATUS_SUCCESS;
- switch (cb->type) {
- case ZCL_ATTR_CB_TYPE_READ:
- if ((attr->info->flags & ZCL_ATTR_FLAG_CB_READ) != 0U) {
- zcl_status = zcl_attr_callback_exec(clusterPtr, attr, cb);
- }
- else {
- zcl_status = ZbZclAttrDefaultRead(clusterPtr, attr, cb->zcl_data, cb->zcl_len);
- }
- break;
-
- case ZCL_ATTR_CB_TYPE_WRITE:
- if ((attr->info->flags & ZCL_ATTR_FLAG_CB_WRITE) != 0U) {
- zcl_status = zcl_attr_callback_exec(clusterPtr, attr, cb);
- }
- else {
- zcl_status = ZbZclAttrDefaultWrite(clusterPtr, attr, cb->zcl_data, cb->write_mode);
- if ((zcl_status == ZCL_STATUS_SUCCESS) && ((attr->info->flags & ZCL_ATTR_FLAG_CB_NOTIFY) != 0U)) {
- struct ZbZclAttrCbInfoT notify;
-
- /* Notify the application that this attribute has been modified
- * internally by the stack. */
- (void)ZbMemSet(&notify, 0, sizeof(struct ZbZclAttrCbInfoT));
- notify.info = attr->info;
- notify.type = ZCL_ATTR_CB_TYPE_NOTIFY;
- notify.app_cb_arg = clusterPtr->app_cb_arg;
- (void)zcl_attr_callback_exec(clusterPtr, attr, &notify);
- }
- }
- break;
-
- case ZCL_ATTR_CB_TYPE_DEFAULT:
- if ((attr->info->flags & ZCL_ATTR_FLAG_CB_DEFAULT) != 0U) {
- zcl_status = zcl_attr_callback_exec(clusterPtr, attr, cb);
- }
- else {
- if (attr->valBuf != NULL) {
- int len;
-
- len = ZbZclAttrDefaultValue(attr->info->dataType, attr->valBuf, attr->valSz);
- if ((len > 0) && ((attr->info->flags & ZCL_ATTR_FLAG_CB_NOTIFY) != 0U)) {
- struct ZbZclAttrCbInfoT notify;
-
- /* Notify the application that this attribute has been modified
- * internally by the stack. */
- (void)ZbMemSet(&notify, 0, sizeof(struct ZbZclAttrCbInfoT));
- notify.info = attr->info;
- notify.type = ZCL_ATTR_CB_TYPE_NOTIFY;
- notify.app_cb_arg = clusterPtr->app_cb_arg;
- (void)zcl_attr_callback_exec(clusterPtr, attr, &notify);
- zcl_status = ZCL_STATUS_SUCCESS;
- }
- }
- }
- break;
-
- case ZCL_ATTR_CB_TYPE_NOTIFY:
- if ((attr->info->flags & ZCL_ATTR_FLAG_CB_NOTIFY) != 0U) {
- (void)zcl_attr_callback_exec(clusterPtr, attr, cb);
- zcl_status = ZCL_STATUS_SUCCESS;
- }
- break;
-
- default:
- zcl_status = ZCL_STATUS_SUCCESS;
- break;
- }
-#ifdef PATCH_MEM1
- /******************************************************************************************/
- /* M4 M0 */
- /* | | Fill data[0],data[x], etc.. */
- /* | | */
- /* | | Call to zigbee_m0_send_notify */
- /* |<-------------Notif (data[x])------------- | */
- /* | | */
- /* |Fill the data[0] | */
- /* |(contain the status of the notification | */
- /* | handler) | zigbee_m0_retrieve_notif_data0() */
- /* | | */
- /******************************************************************************************/
-
- p_notification->Data[0] = zcl_status; /* This parameter is filled by the M4 but is read back
- by the M0 once the M0 has send the notification to
- the M4*/
-#else
- if (retptr != NULL) {
- *retptr = zcl_status;
- }
-#endif /* PATCH_MEM1 */
- break;
- }
-
case MSG_M0TOM4_ZCL_KE_WITH_DEVICE_CB:
assert(p_notification->Size == 5);
info = (struct zb_ipc_m4_cb_info *)p_notification->Data[4];
@@ -4250,7 +3730,7 @@ Zigbee_CallBackProcessing(void)
void (*callback)(uint64_t partnerAddr, uint16_t keSuite, enum ZbZclKeyStatusT key_status, void *arg);
uint64_t partnerAddr;
- memcpy(&partnerAddr, &p_notification->Data[0], 8);
+ zb_ipc_m4_memcpy2(&partnerAddr, &p_notification->Data[0], 8);
callback = (void (*)(uint64_t partnerAddr, uint16_t keSuite, enum ZbZclKeyStatusT key_status, void *arg))info->callback;
callback(partnerAddr, (uint16_t)p_notification->Data[2], (enum ZbZclKeyStatusT)p_notification->Data[3], info->arg);
}
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/lib/stm32wb_zigbee_wb_lib.a b/Middlewares/ST/STM32_WPAN/zigbee/lib/stm32wb_zigbee_wb_lib.a
index ad363388e..4524b23de 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/lib/stm32wb_zigbee_wb_lib.a
+++ b/Middlewares/ST/STM32_WPAN/zigbee/lib/stm32wb_zigbee_wb_lib.a
Binary files differ
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/M4/local.zigbee.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/M4/local.zigbee.h
deleted file mode 100644
index adc016a71..000000000
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/M4/local.zigbee.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright [2009 - 2019] Exegin Technologies Limited. All rights reserved. */
-
-#ifndef M4_LOCAL_ZIGBEE_H
-# define M4_LOCAL_ZIGBEE_H
-
-/* This file is for the M4 side only, and is mainly for the cluster code that
- * can be compiled with the zigbee stack, or separate like in this case. */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stddef.h> /* size_t */
-#include <stdlib.h> /* rand */
-#include <stdint.h>
-
-#ifndef AES_BLOCK_SIZE
-# define AES_BLOCK_SIZE 16U
-#endif
-
-struct ZigBeeT;
-
-/*---------------------------------------------------------------
- * critical lock (Should not be needed on this platform)
- *---------------------------------------------------------------
- */
-#define ZbEnterCritical(_zb_)
-#define ZbExitCritical(_zb_)
-
-/*---------------------------------------------------------------
- * memory allocation
- *---------------------------------------------------------------
- */
-void * zb_heap_alloc(struct ZigBeeT *zb, size_t sz, const char *funcname, unsigned int linenum);
-void zb_heap_free(struct ZigBeeT *zb, void *ptr, const char *funcname, unsigned int linenum);
-#define ZbHeapAlloc(_zb_, _sz_) zb_heap_alloc(_zb_, _sz_, "", 0)
-#define ZbHeapFree(_zb_, _ptr_) zb_heap_free(_zb_, _ptr_, "", 0)
-
-/*---------------------------------------------------------------
- * memset, memcpy, memmove, strcpy replacements
- *---------------------------------------------------------------
- */
-void * ZbMemSet(void *s, int c, size_t n);
-void * ZbMemCpy(void *dest, const void *src, size_t n);
-void * ZbMemMove(void *dest, const void *src, size_t n);
-char * ZbStrCpy(char *dest, const char *src);
-
-/*---------------------------------------------------------------
- * String conversion
- *---------------------------------------------------------------
- */
-int zb_hex_str_to_bin(const char *string, void *out, unsigned int maxlen);
-unsigned int zb_hex_bin_to_str(const uint8_t *in_data, unsigned int in_len, char *out_str, unsigned int max_len,
- const char delimiter, unsigned int interval);
-
-/*---------------------------------------------------------------
- * random value
- *---------------------------------------------------------------
- */
-/* On M4, this doesn't need to be very random. Not used with security. */
-#define ZbPortGetRand(zb) rand()
-
-/*---------------------------------------------------------------
- * AES Hashing
- *---------------------------------------------------------------
- */
-typedef struct {
- uint8_t m[AES_BLOCK_SIZE];
- uint8_t hash[AES_BLOCK_SIZE];
- uint8_t key[AES_BLOCK_SIZE];
- uint8_t length;
-} ZbHashT;
-
-/* Matyas-Meyer-Oseas hash function. */
-void ZbHashInit(ZbHashT *h);
-void ZbHashAdd(ZbHashT *h, const void *data, uint32_t len);
-void ZbHashByte(ZbHashT *h, uint8_t byte);
-void ZbHashDigest(ZbHashT *h, void *digest);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* M4_LOCAL_ZIGBEE_H */
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.h
index 8c803e1ae..e2a80eae5 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.h
@@ -13,6 +13,42 @@ struct ZbZclClusterT;
#include "zigbee.h"
#include "pletoh.h"
+/*---------------------------------------------------------------
+ * ZCL Debug Logging
+ *---------------------------------------------------------------
+ */
+/*lint -save -e762 [ Redundantly declared symbol ] */
+/*lint -save -e9004 [ previously declared - MISRA 2012 Rule 8.5, required ] */
+extern void ZbLogPrintf(struct ZigBeeT *zb, uint32_t mask, const char *hdr, const char *fmt, ...);
+/*lint -restore */
+/*lint -restore */
+
+#ifndef CONFIG_ZB_LOG_ALLOWED_MASK
+/* If not defined, then disable debugging (minimal Flash size) */
+# define CONFIG_ZB_LOG_ALLOWED_MASK ZB_LOG_MASK_LEVEL_0
+#endif
+
+/*lint -emacro(506,ZCL_LOG_PRINTF) */
+/* Info 774: Boolean within 'if' always evaluates to False */
+/*lint -emacro(774,ZCL_LOG_PRINTF) */
+/*lint -emacro(831,ZCL_LOG_PRINTF) */
+
+#if ((ZB_LOG_MASK_ZCL & CONFIG_ZB_LOG_ALLOWED_MASK) != 0U)
+#define ZCL_LOG_PRINTF(zb, hdr, ...) \
+ do { \
+ if ((zb) == NULL) { \
+ break; \
+ } \
+ ZbLogPrintf(zb, ZB_LOG_MASK_ZCL, hdr, __VA_ARGS__); \
+ } while (false)
+#else
+#define ZCL_LOG_PRINTF(zb, hdr, ...) (void)zb
+#endif
+
+/*---------------------------------------------------------------
+ * ZCL Header
+ *---------------------------------------------------------------
+ */
/* ZCL Frame Control Field Bits and macros.. */
#define ZCL_FRAMECTRL_TYPE 0x03U
#define ZCL_FRAMECTRL_MANUFACTURER 0x04U
@@ -484,8 +520,10 @@ enum ZbZclClusterIdT {
ZCL_CLUSTER_MULTISTATE_VALUE_BASIC = 0x0014,
ZCL_CLUSTER_COMMISSIONING = 0x0015,
ZCL_CLUSTER_OTA_UPGRADE = 0x0019,
+ ZCL_CLUSTER_POWER_PROFILE = 0x001a,
ZCL_CLUSTER_POLL_CONTROL = 0x0020,
ZCL_CLUSTER_GREEN_POWER = 0x0021,
+ ZCL_CLUSTER_NEAREST_GATEWAY = 0x0024,
ZCL_CLUSTER_KEEP_ALIVE = 0x0025,
ZCL_CLUSTER_METER_ID = 0x0b01,
ZCL_CLUSTER_DIAGNOSTICS = 0x0b05,
@@ -516,6 +554,7 @@ enum ZbZclClusterIdT {
ZCL_CLUSTER_MEAS_OCCUPANCY = 0x0406,
ZCL_CLUSTER_MEAS_LEAF_WETNESS = 0x0407,
ZCL_CLUSTER_MEAS_SOIL_MOISTURE = 0x0408,
+ ZCL_CLUSTER_MEAS_ELECTRICAL = 0x0b04,
/* Security Cluster IDs */
ZCL_CLUSTER_SECURITY_IAS_ZONE = 0x0500,
@@ -560,6 +599,9 @@ enum ZbZclClusterIdT {
/* CBKE */
ZCL_CLUSTER_KEY_ESTABLISHMENT = 0x0800,
+ /* Telecommunication */
+ ZCL_CLUSTER_VOICE_OVER_ZIGBEE = 0x0904,
+
/* TOUCHLINK */
ZCL_CLUSTER_TOUCHLINK = 0x1000,
@@ -593,10 +635,6 @@ enum {
ZCL_COMMAND_WRITE_STRUCTURED_RESPONSE = 0x10
};
-/*---------------------------------------------------------------
- * Structures
- *---------------------------------------------------------------
- */
struct ZbZclAddrInfoT {
struct ZbApsAddrT addr;
uint8_t seqnum;
@@ -619,40 +657,68 @@ struct ZbZclHeaderT {
uint8_t cmdId;
};
-enum ZbZclReportDirectionT {
- /* For Configure Reporting: receiver configures attribute to send
- * reports via binding table.
- *
- * For Read Reporting: specifies whether values of the attribute are reported */
- ZCL_REPORT_DIRECTION_NORMAL = 0x00,
+/*---------------------------------------------------------------
+ * Cluster Commands
+ *---------------------------------------------------------------
+ */
+typedef struct {
+ /* From APSDE-DATA.request */
+ struct ZbApsAddrT dst;
+ uint16_t profileId;
+ enum ZbZclClusterIdT clusterId;
+ uint16_t srcEndpt;
+ uint16_t txOptions; /* e.g. ZB_APSDE_DATAREQ_TXOPTIONS_ACK */
+ bool discoverRoute;
+ uint8_t radius;
+ /* ZCL command */
+ struct ZbZclHeaderT hdr;
+ /* if (txOptions & ZB_APSDE_DATAREQ_TXOPTIONS_VECTOR), then payload is
+ * a pointer to list of ZbApsBufT, and length is the number of ZbApsBufT
+ * items in the list. */
+ const void *payload;
+ unsigned int length;
+} ZbZclCommandReqT;
- /* For Configure Reporting: sender is sending reports to the receiver,
- * based on the state of the sender's bindings. Tells receiver how / when
- * it should expect reports.
- *
- * For Read Reporting: specifies whether reports of the attribute are received. */
- ZCL_REPORT_DIRECTION_REVERSE = 0x01
+/* ZCL Command Response
+ *
+ * Special case if src.mode == ZB_APSDE_ADDRMODE_NOTPRESENT (0), then
+ * - response generated internally.
+ * - src.endpoint = local endpoint that generated request
+ * - hdr.seqNum = request sequence number
+ * - hdr.cmdId = request command id
+ */
+struct ZbZclCommandRspT {
+ enum ZclStatusCodeT status;
+ struct ZbApsAddrT src;
+ uint16_t profileId;
+ enum ZbZclClusterIdT clusterId;
+ uint8_t linkQuality;
+ struct ZbZclHeaderT hdr;
+ const uint8_t *payload;
+ uint16_t length;
};
-/* ZCL Reporting Configuration Record Structure. */
-struct ZbZclReportConfigT {
- enum ZbZclReportDirectionT direction;
- uint16_t attributeId;
- enum ZclDataTypeT dataType;
- uint16_t minInterval;
- uint16_t maxInterval;
- union {
- long long integer;
- double floating;
- } minChange;
- uint16_t reportTimeout;
-};
+/* Send a ZCL command. The callback function is called when the
+ * associated ZCL response is received, or there's an error. */
+enum ZclStatusCodeT ZbZclCommandReq(struct ZigBeeT *zb, ZbZclCommandReqT *zclReq,
+ void (*callback)(struct ZbZclCommandRspT *rsp, void *arg), void *arg);
+
+/* Blocking version of ZbZclCommandReq */
+/* Response Info (rsp) may be NULL. If not NULL, make sure to provide a valid buffer pointer
+ * to rsp->payload and specify the maximum length to rsp->length. */
+void ZbZclCommandWait(struct ZigBeeT *zb, ZbZclCommandReqT *req, struct ZbZclCommandRspT *rsp);
+
+/* A version of ZbZclCommandReq that doesn't wait for a response. */
+enum ZclStatusCodeT ZbZclCommandNoResp(struct ZigBeeT *zb, ZbZclCommandReqT *req,
+ void (*callback)(ZbApsdeDataConfT *confPtr, void *arg), void *arg);
/*---------------------------------------------------------------
- * Cluster Attribute Initialization
+ * Cluster Attributes
*---------------------------------------------------------------
*/
+#define ZCL_ATTRIBUTE_BUFFER_SIZE_MAX 256U
+
struct ZbZclAttrCbInfoT;
/* The structure used to initialize a ZCL attribute when calling ZbZclAttrAppendList.
@@ -749,7 +815,9 @@ enum ZbZclAttrCbTypeT {
struct ZbZclAttrCbInfoT {
const struct ZbZclAttrT *info; /* The original info used to create the attribute */
enum ZbZclAttrCbTypeT type;
- uint8_t *zcl_data; /* Source of attribute data if ZCL_ATTR_CB_TYPE_WRITE. Destination of attribute data if ZCL_ATTR_CB_TYPE_READ. */
+ /* Source of attribute data if ZCL_ATTR_CB_TYPE_WRITE.
+ * Destination of attribute data if ZCL_ATTR_CB_TYPE_READ. */
+ uint8_t *zcl_data;
unsigned int zcl_len; /* Maximum length of 'zcl_data' */
/* The following are only used if type == ZCL_ATTR_CB_TYPE_WRITE */
@@ -761,6 +829,26 @@ struct ZbZclAttrCbInfoT {
void *app_cb_arg;
};
+/* The internal allocated attribute struct */
+struct ZbZclAttrListEntryT {
+ struct LinkListT link;
+ const struct ZbZclAttrT *info; /* Attribute info */
+ uint8_t *valBuf; /* ZCL format (i.e. same as what is sent over-the-air) */
+ unsigned int valSz; /* Allocation size of valBuf. */
+ struct {
+ uint16_t interval_secs_min; /* seconds */
+ uint16_t interval_secs_max; /* seconds */
+ } reporting;
+};
+
+/* Returns the length of an attribute, solely based on type. Or 0, if length is unknown. */
+unsigned int ZbZclAttrTypeLength(enum ZclDataTypeT type);
+struct ZbZclAttrListEntryT * ZbZclAttrFind(struct ZbZclClusterT *clusterPtr, uint16_t attrId);
+/* Returns the attribute length, or -1 on error. */
+int ZbZclAttrDefaultValue(enum ZclDataTypeT type, uint8_t *buf, unsigned int max_len);
+enum ZclStatusCodeT ZbZclAttrCallbackExec(struct ZbZclClusterT *clusterPtr,
+ struct ZbZclAttrListEntryT *attrPtr, struct ZbZclAttrCbInfoT *cb);
+
/*---------------------------------------------------------------
* Alarm Reset Handler
*---------------------------------------------------------------
@@ -769,6 +857,7 @@ typedef void (*ZbZclAlarmResetFuncT)(struct ZbZclClusterT *clusterPtr, uint8_t a
uint16_t cluster_id, ZbApsdeDataIndT *data_ind, struct ZbZclHeaderT *hdr);
enum ZclStatusCodeT ZbZclClusterRegisterAlarmResetHandler(struct ZbZclClusterT *clusterPtr, ZbZclAlarmResetFuncT callback);
+void ZbZclClusterRemoveAlarmResetHandler(struct ZbZclClusterT *clusterPtr);
/*---------------------------------------------------------------
* Cluster Base Type
@@ -903,10 +992,6 @@ int ZbZclPrependHeader(struct ZbZclHeaderT *zclHdrPtr, uint8_t *data, unsigned i
* Returns Length of data written, or negative value (-1) on error. */
int ZbZclAppendHeader(struct ZbZclHeaderT *zclHdrPtr, uint8_t *data, unsigned int max_len);
-/* Appends a Reporting configuration record to the end of the provided buffer.
- * Returns Length of data written, or negative value (-1) on error. */
-int ZbZclAppendReportConfig(struct ZbZclReportConfigT *configPtr, uint8_t *payload, unsigned int max_len);
-
/*---------------------------------------------------------------
* Generic Attribute Functions
*---------------------------------------------------------------
@@ -954,7 +1039,8 @@ enum ZclStatusCodeT ZbZclAttrWrite(struct ZbZclClusterT *clusterPtr, struct ZbAp
const uint8_t *attr_data, unsigned int max_len, ZclWriteModeT mode);
/* Integer Attribute Helpers */
-long long ZbZclAttrIntegerRead(struct ZbZclClusterT *clusterPtr, uint16_t attributeId, enum ZclDataTypeT *typePtr, enum ZclStatusCodeT *statusPtr);
+long long ZbZclAttrIntegerRead(struct ZbZclClusterT *clusterPtr, uint16_t attributeId,
+ enum ZclDataTypeT *typePtr, enum ZclStatusCodeT *statusPtr);
enum ZclStatusCodeT ZbZclAttrIntegerWrite(struct ZbZclClusterT *clusterPtr, uint16_t attributeId, long long value);
enum ZclStatusCodeT ZbZclAttrIntegerIncrement(struct ZbZclClusterT *clusterPtr, uint16_t attributeId, long long value);
@@ -962,7 +1048,17 @@ uint64_t ZbZclAttrEuiRead(struct ZbZclClusterT *clusterPtr, uint16_t attributeId
enum ZclStatusCodeT ZbZclAttrEuiWrite(struct ZbZclClusterT *clusterPtr, uint16_t attributeId, uint64_t eui);
/* String Attribute Helpers */
-enum ZclStatusCodeT ZbZclAttrStringWrite(struct ZbZclClusterT *clusterPtr, uint16_t attributeId, const char *strPtr);
+/* zcl_str is in the ZCL string format (length field [1 or 2 bytes] + ascii string) */
+/* ZCL_DATATYPE_STRING_OCTET or ZCL_DATATYPE_STRING_CHARACTER */
+enum ZclStatusCodeT ZbZclAttrStringWriteShort(struct ZbZclClusterT *clusterPtr, uint16_t attributeId,
+ const uint8_t *zcl_str);
+/* ZCL_DATATYPE_STRING_LONG_OCTET or ZCL_DATATYPE_STRING_LONG_CHARACTER */
+enum ZclStatusCodeT ZbZclAttrStringWriteLong(struct ZbZclClusterT *clusterPtr, uint16_t attributeId,
+ const uint8_t *zcl_str);
+
+/* Zero-length ZCL strings */
+extern const uint8_t zcl_attr_str_short_zero[1]; /* i.e. {0x00} */
+extern const uint8_t zcl_attr_str_long_zero[2]; /* i.e. {0x00, 0x00} */
/*---------------------------------------------------------------
* Request Remote reporting of attribute changes.
@@ -976,6 +1072,9 @@ typedef struct {
uint8_t attr_type;
} ZbZclAttrReportT;
+void ZbZclAttrReportConfigReq(struct ZbZclClusterT *clusterPtr, ZbZclAttrReportT *rp,
+ void (*callback)(struct ZbZclCommandRspT *cmd_rsp, void *arg), void *arg);
+
/*---------------------------------------------------------------
* Remote Reading and Writing of Attributes
*---------------------------------------------------------------
@@ -1016,7 +1115,8 @@ typedef struct {
* sz ; maximum length of 'buf' */
void ZbZclReadWait(struct ZbZclClusterT *clusterPtr, ZbZclReadReqT *req, ZbZclReadRspT *rsp, void *buf, unsigned int sz);
-void ZbZclReadReq(struct ZbZclClusterT *clusterPtr, ZbZclReadReqT *req, void (*callback)(const ZbZclReadRspT *readRsp, void *cb_arg), void *arg);
+enum ZclStatusCodeT ZbZclReadReq(struct ZbZclClusterT *clusterPtr, ZbZclReadReqT *req,
+ void (*callback)(const ZbZclReadRspT *readRsp, void *cb_arg), void *arg);
typedef struct {
/* TODO: implement a selector for structured version. */
@@ -1048,7 +1148,8 @@ typedef struct {
void ZbZclWriteWait(struct ZbZclClusterT *clusterPtr, ZbZclWriteReqT *req, ZbZclWriteRspT *rsp);
-void ZbZclWriteReq(struct ZbZclClusterT *clusterPtr, ZbZclWriteReqT *req, void (*callback)(const ZbZclWriteRspT *writeResp, void *cb_arg), void *arg);
+enum ZclStatusCodeT ZbZclWriteReq(struct ZbZclClusterT *clusterPtr, ZbZclWriteReqT *req,
+ void (*callback)(const ZbZclWriteRspT *writeResp, void *cb_arg), void *arg);
/*---------------------------------------------------------------
* Attribute Discovery
@@ -1073,89 +1174,56 @@ typedef struct {
uint8_t numAttr;
} ZbZclDiscoverAttrRspT;
-void ZbZclDiscoverAttrReq(struct ZbZclClusterT *clusterPtr, ZbZclDiscoverAttrReqT *req,
+enum ZclStatusCodeT ZbZclDiscoverAttrReq(struct ZbZclClusterT *clusterPtr, ZbZclDiscoverAttrReqT *req,
void (*callback)(const ZbZclDiscoverAttrRspT *discRsp, void *cb_arg), void *arg);
void ZbZclDiscoverAttrWait(struct ZbZclClusterT *clusterPtr, ZbZclDiscoverAttrReqT *req, ZbZclDiscoverAttrRspT *rsp);
/*---------------------------------------------------------------
- * Attribute Persistence
+ * Attribute Reporting
*---------------------------------------------------------------
*/
-/* If an attribute is modified outside of the normal ZCL Write
- * mechanism, the application must call this function to inform
- * the stack to persist the new attribute data. */
-bool ZbZclAttrPersist(struct ZbZclClusterT *clusterPtr, uint16_t attr_id);
+enum ZbZclReportDirectionT {
+ /* For Configure Reporting: receiver configures attribute to send
+ * reports via binding table.
+ *
+ * For Read Reporting: specifies whether values of the attribute are reported */
+ ZCL_REPORT_DIRECTION_NORMAL = 0x00,
-/*---------------------------------------------------------------
- * Cluster Commands
- *---------------------------------------------------------------
- */
-typedef struct {
- /* From APSDE-DATA.request */
- struct ZbApsAddrT dst;
- uint16_t profileId;
- enum ZbZclClusterIdT clusterId;
- uint16_t srcEndpt;
- uint16_t txOptions; /* e.g. ZB_APSDE_DATAREQ_TXOPTIONS_ACK */
- bool discoverRoute;
- uint8_t radius;
- /* ZCL command */
- struct ZbZclHeaderT hdr;
- /* if (txOptions & ZB_APSDE_DATAREQ_TXOPTIONS_VECTOR), then payload is
- * a pointer to list of ZbApsBufT, and length is the number of ZbApsBufT
- * items in the list. */
- const void *payload;
- unsigned int length;
-} ZbZclCommandReqT;
+ /* For Configure Reporting: sender is sending reports to the receiver,
+ * based on the state of the sender's bindings. Tells receiver how / when
+ * it should expect reports.
+ *
+ * For Read Reporting: specifies whether reports of the attribute are received. */
+ ZCL_REPORT_DIRECTION_REVERSE = 0x01
+};
-/* ZCL Command Response
- *
- * Special case if src.mode == ZB_APSDE_ADDRMODE_NOTPRESENT (0), then
- * - response generated internally.
- * - src.endpoint = local endpoint that generated request
- * - hdr.seqNum = request sequence number
- * - hdr.cmdId = request command id
- */
-struct ZbZclCommandRspT {
- enum ZclStatusCodeT status;
- struct ZbApsAddrT src;
- uint16_t profileId;
- enum ZbZclClusterIdT clusterId;
- uint8_t linkQuality;
- struct ZbZclHeaderT hdr;
- const uint8_t *payload;
- uint16_t length;
+/* ZCL Reporting Configuration Record Structure. */
+struct ZbZclReportConfigT {
+ enum ZbZclReportDirectionT direction;
+ uint16_t attributeId;
+ enum ZclDataTypeT dataType;
+ uint16_t minInterval;
+ uint16_t maxInterval;
+ union {
+ long long integer;
+ double floating;
+ } minChange;
+ uint16_t reportTimeout;
};
+/* Appends a Reporting configuration record to the end of the provided buffer.
+ * Returns Length of data written, or negative value (-1) on error. */
+int ZbZclAppendReportConfig(struct ZbZclReportConfigT *configPtr, uint8_t *payload, unsigned int max_len);
+
/*---------------------------------------------------------------
- * Attribute Reporting
+ * Attribute Persistence
*---------------------------------------------------------------
*/
-void ZbZclAttrReportConfigReq(struct ZbZclClusterT *clusterPtr, ZbZclAttrReportT *rp,
- void (*callback)(struct ZbZclCommandRspT *cmd_rsp, void *arg), void *arg);
-
-/* Send a ZCL command. The callback function is called when the
- * associated ZCL response is received, or there's an error. */
-void ZbZclCommandReq(struct ZigBeeT *zb, ZbZclCommandReqT *zclReq,
- void (*callback)(struct ZbZclCommandRspT *rsp, void *arg), void *arg);
-
-/* Blocking version of ZbZclCommandReq */
-/* Response Info (rsp) may be NULL. If not NULL, make sure to provide a valid buffer pointer
- * to rsp->payload and specify the maximum length to rsp->length. */
-void ZbZclCommandWait(struct ZigBeeT *zb, ZbZclCommandReqT *req, struct ZbZclCommandRspT *rsp);
-
-/* A version of ZbZclCommandReq that expects to receive multiple
- * responses to a single request.
- *
- * timeout is in milliseconds to wait for all responses.
- * If 0, a default timeout is used. */
-void ZbZclCommandMulti(struct ZigBeeT *zb, ZbZclCommandReqT *zclReq, unsigned int timeout,
- void (*callback)(struct ZbZclCommandRspT *rspPtr, void *arg), void *arg);
-
-/* A version of ZbZclCommandReq that doesn't wait for a response. */
-void ZbZclCommandNoResp(struct ZigBeeT *zb, ZbZclCommandReqT *req,
- void (*callback)(ZbApsdeDataConfT *confPtr, void *arg), void *arg);
+/* If an attribute is modified outside of the normal ZCL Write
+ * mechanism, the application must call this function to inform
+ * the stack to persist the new attribute data. */
+bool ZbZclAttrPersist(struct ZbZclClusterT *clusterPtr, uint16_t attr_id);
/*---------------------------------------------------------------
* Cluster Request helpers
@@ -1177,7 +1245,7 @@ struct ZbZclClusterCommandReqT {
/* clusterPtr = The cluster that is originating this message. Information from the cluster is used when
* sending the command (source addressing, APS TX Options).
* "callback" may be NULL */
-void ZbZclClusterCommandReq(struct ZbZclClusterT *clusterPtr, struct ZbZclClusterCommandReqT *req,
+enum ZclStatusCodeT ZbZclClusterCommandReq(struct ZbZclClusterT *clusterPtr, struct ZbZclClusterCommandReqT *req,
void (*callback)(struct ZbZclCommandRspT *zcl_rsp, void *arg), void *arg);
/* Blocking version of ZbZclClusterCommandReq */
@@ -1212,6 +1280,10 @@ enum ZclStatusCodeT ZbZclSendClusterStatusResponse(struct ZbZclClusterT *cluster
/* Send a Default Response. */
void ZbZclSendDefaultResponse(struct ZbZclClusterT *clusterPtr, ZbApsdeDataIndT *dataIndPtr,
struct ZbZclHeaderT *zclHdrPtr, enum ZclStatusCodeT status);
+/* Different version of ZbZclSendDefaultResponse, but takes in ZbZclAddrInfoT rather than
+ * ZbApsdeDataIndT and ZbZclHeaderT */
+void ZbZclSendDefaultResponse2(struct ZbZclClusterT *clusterPtr, struct ZbZclAddrInfoT *dstInfo,
+ uint8_t cmdId, enum ZclStatusCodeT status);
/*---------------------------------------------------------------
* Bind a cluster so it can receive messages directly from the APS layer
@@ -1223,6 +1295,9 @@ enum ZclStatusCodeT ZbZclClusterBind(struct ZbZclClusterT *clusterPtr, uint8_t e
uint16_t profileId, enum ZbZclDirectionT direction);
void ZbZclClusterUnbind(struct ZbZclClusterT *clusterPtr);
+enum ZclStatusCodeT ZbZclClusterLoopbackBind(struct ZbZclClusterT *clusterPtr, struct ZbApsFilterT *filter);
+void ZbZclClusterLoopbackUnbind(struct ZbZclClusterT *clusterPtr, struct ZbApsFilterT *filter);
+
/*---------------------------------------------------------------
* Device Log (whitelist)
*---------------------------------------------------------------
@@ -1236,6 +1311,19 @@ bool ZbZclDeviceLogRemove(struct ZigBeeT *zb, uint64_t ext_addr);
void ZbZclDeviceLogClear(struct ZigBeeT *zb);
/*---------------------------------------------------------------
+ * ZCL Command Request/Response Helpers
+ *---------------------------------------------------------------
+ */
+#define ZCL_STATE_CONTINUE 0 /* Return zero to continue waiting for responses. */
+#define ZCL_STATE_CLEANUP 1 /* Return one to cleanup the state. */
+
+typedef int (*ZbZclHandlerFuncT)(struct ZbZclCommandRspT *cmdRsp, void (*callback)(void *msg, void *arg), void *arg);
+
+enum ZclStatusCodeT ZbZclStateBegin(struct ZigBeeT *zb, ZbApsdeDataReqT *apsReq, struct ZbZclHeaderT *zclHdr,
+ unsigned int timeout, ZbZclHandlerFuncT handler,
+ void (*callback)(void *msg, void *arg), void *arg);
+
+/*---------------------------------------------------------------
* Helper Functions
*---------------------------------------------------------------
*/
@@ -1253,6 +1341,7 @@ void ZbZclClusterSetProfileId(struct ZbZclClusterT *clusterPtr, uint16_t profile
* the tx options to match (assuming symmetrical security).
* minSecurity can be one of: ZB_APS_STATUS_UNSECURED, ZB_APS_STATUS_SECURED_NWK_KEY or ZB_APS_STATUS_SECURED_LINK_KEY */
bool ZbZclClusterSetMinSecurity(struct ZbZclClusterT *clusterPtr, enum ZbStatusCodeT minSecurity);
+/* e.g. ZB_APSDE_DATAREQ_TXOPTIONS_ACK, ZB_APSDE_DATAREQ_TXOPTIONS_SECURITY */
void ZbZclClusterSetTxOptions(struct ZbZclClusterT *clusterPtr, uint16_t txOptions);
void ZbZclClusterSetDiscoverRoute(struct ZbZclClusterT *clusterPtr, bool discoverRoute);
void ZbZclClusterSetRadius(struct ZbZclClusterT *clusterPtr, uint8_t radius);
@@ -1263,6 +1352,9 @@ bool ZbZclClusterSetMaxAsduLength(struct ZbZclClusterT *clusterPtr, uint16_t max
/* Helper functions to initialize requests based on cluster parameters */
void ZbZclClusterInitCommandReq(struct ZbZclClusterT *clusterPtr, ZbZclCommandReqT *cmdReq);
void ZbZclClusterInitApsdeReq(struct ZbZclClusterT *clusterPtr, ZbApsdeDataReqT *apsReq, ZbApsdeDataIndT *dataIndPtr);
+/* Helper to generate proper APS TX Options (e.g. ZB_APSDE_DATAREQ_TXOPTIONS_SECURITY)
+ * for a response, based on the given (incoming message) security status code. */
+uint16_t ZbZclTxOptsFromSecurityStatus(enum ZbStatusCodeT security_status);
/* Helper functions to GET cluster parameters */
uint8_t ZbZclClusterGetEndpoint(struct ZbZclClusterT *clusterPtr);
@@ -1285,6 +1377,45 @@ void ZbZclClusterReportCallbackAttach(struct ZbZclClusterT *clusterPtr,
* The alarm message is sent via APS binding(s). */
void ZbZclClusterSendAlarm(struct ZbZclClusterT *clusterPtr, uint8_t src_endpoint, uint8_t alarm_code);
+/*---------------------------------------------------------------
+ * Exegin Internal ZCL Loopback Commands
+ *---------------------------------------------------------------
+ */
+/* Our internal Manufacturer Code (ZCL_FRAMECTRL_MANUFACTURER).
+ * This code is never sent over the air. */
+enum {
+ ZCL_MANUF_CODE_INTERNAL = 0xfffe
+};
+
+/* Exegin's Manufacturer Specific Global Commands
+ * ZCL_FRAMECTRL_MANUFACTURER && ZCL_FRAMETYPE_PROFILE && (Manufacturer Code == ZCL_MANUF_CODE_INTERNAL) */
+enum {
+ ZCL_CMD_MANUF_INTERNAL_ATTR_RESET_DEFAULT, /* attr_reset() */
+
+ /* For Scene Store Command (ZCL_SCENES_COMMAND_STORE_SCENE)
+ * Payload for Request (to Server): None
+ * Payload for Response: [CLUSTER(2) | EXT_LEN(1) | EXT_ATTR_DATA(N)] */
+ ZCL_CMD_MANUF_INTERNAL_GET_SCENE_EXTDATA, /* get_scene_data() */
+
+ /* For Scene Recall Command (ZCL_SCENES_COMMAND_RECALL_SCENE)
+ * Payload for Request (to Server): [EXT_LEN(1) | EXT_ATTR_DATA(N)]
+ * Payload for Response: [STATUS(1)] */
+ ZCL_CMD_MANUF_INTERNAL_SET_SCENE_EXTDATA, /* set_scene_data() */
+
+ /* ZCL Cluster Persistence: Profile-Wide Manufacturer-Specific command
+ * sent to a cluster to restore persistence. */
+ ZCL_CMD_MANUF_INTERNAL_ATTR_PERSIST_SET
+};
+
+/* Offsets into ZCL_CMD_MANUF_INTERNAL_SET_SCENE_EXTDATA message */
+#define SET_SCENE_EXTDATA_OFFSET_EXT_LEN 4U
+#define SET_SCENE_EXTDATA_OFFSET_EXT_FIELD 5U
+#define SET_SCENE_EXTDATA_HEADER_LEN (4U + 1U)
+
+enum {
+ ZCL_PERSIST_SVR_CMD_PUSH
+};
+
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.onoff.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.onoff.h
index 13ffcbfb6..2e7a0fd64 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.onoff.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.onoff.h
@@ -86,23 +86,23 @@ void ZbZclOnOffServerSetLevelControlCallback(struct ZbZclClusterT *on_off_cluste
struct ZbZclClusterT * ZbZclOnOffClientAlloc(struct ZigBeeT *zb, uint8_t endpoint);
/* Client Cluster Commands */
-uint8_t ZbZclOnOffClientOnReq(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst,
+enum ZclStatusCodeT ZbZclOnOffClientOnReq(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst,
void (*callback)(struct ZbZclCommandRspT *rsp, void *arg), void *arg);
/* Blocking version. Not supported on all platforms. */
-uint8_t ZbZclOnOffClientOnWait(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst);
+enum ZclStatusCodeT ZbZclOnOffClientOnWait(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst);
-uint8_t ZbZclOnOffClientOffReq(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst,
+enum ZclStatusCodeT ZbZclOnOffClientOffReq(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst,
void (*callback)(struct ZbZclCommandRspT *rsp, void *arg), void *arg);
/* Blocking version. Not supported on all platforms. */
-uint8_t ZbZclOnOffClientOffWait(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst);
+enum ZclStatusCodeT ZbZclOnOffClientOffWait(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst);
-uint8_t ZbZclOnOffClientToggleReq(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst,
+enum ZclStatusCodeT ZbZclOnOffClientToggleReq(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst,
void (*callback)(struct ZbZclCommandRspT *rsp, void *arg), void *arg);
/* Blocking version. Not supported on all platforms. */
-uint8_t ZbZclOnOffClientToggleWait(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst);
+enum ZclStatusCodeT ZbZclOnOffClientToggleWait(struct ZbZclClusterT *cluster, const struct ZbApsAddrT *dst);
#ifdef __cplusplus
} /* extern "C" */
#endif
-#endif /* __ZCL_ONOFF_H */
+#endif /* ZCL_ONOFF_H */
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.touchlink.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.touchlink.h
index 6d97b057f..175623030 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.touchlink.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zcl/zcl.touchlink.h
@@ -122,4 +122,4 @@ void ZbZclTouchlinkServerConfigIdentify(struct ZbZclClusterT *clusterPtr,
/* Deprecated! ZbStartup will allocate the Touchlink Client cluster if necessary. */
struct ZbZclClusterT * ZbZclTouchlinkClientAlloc(struct ZigBeeT *zb, uint8_t endpoint) ZB_F_DEPRECATED;
-#endif /* __ZCL_ONOFF_H */
+#endif /* ZCL_TOUCHLINK_H */
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.aps.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.aps.h
index 946d5da8a..7f75836bd 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.aps.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.aps.h
@@ -261,8 +261,6 @@ enum ZbApsmeIbAttrIdT {
* allowRemoteTcPolicyChange = 0xbd */
ZB_APS_IB_ID_TRUST_CENTER_POLICY, /* 0xad (uint32_t) */
- ZB_APS_IB_ID_FRAGMENTATION_THRESH, /* 0xaf (uint8_t) */
-
/*** Exegin extensions (0x500 to 0x5ff reserved for custom AIBs) ***/
ZB_APS_IB_ID_SCAN_COUNT = 0x0500, /* (uint8_t) ZDO join parameter. Is not modified by ZbApsReset. */
ZB_APS_IB_ID_LEAVE_REMOVE_CHILDREN, /* (uint8_t) ZDO leave parameter */
@@ -274,7 +272,8 @@ enum ZbApsmeIbAttrIdT {
ZB_APS_IB_ID_KEY_UPDATE_PERIOD, /* (uint32_t) */
ZB_APS_IB_ID_MANUFACTURER_ID, /* (uint16_t) Manufacturer ID */
ZB_APS_IB_ID_SEND_PKT_COOLDOWN, /* (uint16_t) milliseconds */
- ZB_APS_IB_ID_BIND_ADDR_RESOLVE_PERIOD /* (uint16_t) seconds, 0 = disabled */
+ ZB_APS_IB_ID_BIND_ADDR_RESOLVE_PERIOD, /* (uint16_t) seconds, 0 = disabled */
+ ZB_APS_IB_ID_FRAGMENTATION_THRESH /* apsFragmentationThresh */
};
/* APSME-GET.request */
@@ -395,7 +394,7 @@ typedef struct {
const uint16_t *inputClusterList;
uint8_t outputClusterCount; /* Supported Client Clusters */
const uint16_t *outputClusterList;
- uint16_t bdbCommissioningGroupID;
+ uint16_t bdbCommissioningGroupID; /* e.g. DEFAULT_EP_BDB_COMMISSION_GRP_ID; */
} ZbApsmeAddEndpointReqT;
/* APSME-ADD-ENDPOINT.confirm - Exegin Custom */
@@ -451,7 +450,7 @@ void ZbApsmeRemoveEndpoint(struct ZigBeeT *zb, ZbApsmeRemoveEndpointReqT *r, ZbA
/* Attach a callback to receive all APS messages for this endpoint that have
* not matched any other filter rules. */
bool ZbApsmeEndpointConfigNoMatchCallback(struct ZigBeeT *zb, uint8_t endpoint,
- void (*callback)(ZbApsdeDataIndT *ind, void *cbarg), void *arg);
+ int (*callback)(ZbApsdeDataIndT *ind, void *cbarg), void *arg);
/* Add a cluster ID to the input cluster list of an existing endpoint */
bool ZbApsmeEndpointClusterListAppend(struct ZigBeeT *zb, uint8_t endpoint,
@@ -841,12 +840,16 @@ enum ZbApsFilterTypeT {
ZB_APS_FILTER_TYPE_NO_MATCH /* call if there were no other matches for this packet */
};
+/* Packet filter return values. Only used if type = ZB_APS_FILTER_TYPE_NORMAL */
+#define ZB_APS_FILTER_CONTINUE 0 /* Continue processing any further filter callbacks. */
+#define ZB_APS_FILTER_DISCARD 1 /* Stop processing further filter callbacks. */
+
/* APS packet filter entry. */
struct ZbApsFilterT {
struct LinkListT link;
/* Packet handler actions */
enum ZbApsFilterTypeT type;
- void (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg);
+ int (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg);
void *arg;
/* Packet filter rules */
uint32_t r[ZB_APS_FILTER_RULES_MAX];
@@ -854,10 +857,10 @@ struct ZbApsFilterT {
/* Create an APS indication filter and callback for an endpoint, with no specific cluster being filtered. */
struct ZbApsFilterT * ZbApsFilterEndpointAdd(struct ZigBeeT *zb, uint8_t endpoint, uint16_t profileId,
- void (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg), void *arg);
+ int (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg), void *arg);
/* Create an APS indication filter and callback for an endpoint and a specific cluster ID. */
struct ZbApsFilterT * ZbApsFilterClusterAdd(struct ZigBeeT *zb, uint8_t endpoint, uint16_t clusterId, uint16_t profileId,
- void (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg), void *arg);
+ int (*callback)(ZbApsdeDataIndT *dataInd, void *cb_arg), void *arg);
void ZbApsFilterClusterFree(struct ZigBeeT *zb, struct ZbApsFilterT *filter);
/*---------------------------------------------------------------
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.bdb.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.bdb.h
index ba93f95b9..4f36ac38e 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.bdb.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.bdb.h
@@ -121,6 +121,7 @@ enum ZbBdbAttrIdT {
ZB_BDB_PersistTimeoutMs, /* 0x1117 */
ZB_BDB_JoinAttemptsMax, /* 0x1118 - uint8_t - maximum number attempts to join a network. If an attempt fails, the EPID is added to a blacklist before the next attempt. */
ZB_BDB_MaxConcurrentJoiners, /* 0x1119 - uint8_t - maximum number of concurrent joiners the coordinator supports */
+ ZB_BDB_DisablePersistRejoin, /* 0x111a - boolean */
/* Constants which are accessible through a BDB GET IB request. */
ZB_BDBC_MaxSameNetworkRetryAttempts = 0x1200,
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.h
index 305069eaf..28dc4f2d7 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.h
@@ -243,6 +243,9 @@ struct ZbChannelListT {
struct ZigBeeT;
struct ZbMsgFilterT;
+typedef unsigned long ZbUptimeT;
+unsigned int ZbTimeoutRemaining(ZbUptimeT now, ZbUptimeT expire_time);
+
/* A pointer to this struct type is passed to ZbInit to define the various
* ZigBee tables used in the stack. If the pointer to ZbInit is NULL, the
* default sizes are used. */
@@ -371,8 +374,9 @@ int ZbPortStackEventFd(struct ZigBeeT *zb);
void ZbChangeExtAddr(struct ZigBeeT *zb, uint64_t extAddr);
struct ZbNlmeLeaveConfT;
-enum ZbStatusCodeT ZB_WARN_UNUSED ZbLeaveReq(struct ZigBeeT *zb, void (*callback)(struct ZbNlmeLeaveConfT *conf, void *arg), void *cbarg);
-void ZbLeaveWait(struct ZigBeeT *zb);
+enum ZbStatusCodeT ZB_WARN_UNUSED ZbLeaveReq(struct ZigBeeT *zb,
+ void (*callback)(struct ZbNlmeLeaveConfT *conf, void *arg), void *cbarg);
+enum ZbStatusCodeT ZbLeaveWait(struct ZigBeeT *zb);
/* Helper function to perform an APS and NWK reset */
void ZbReset(struct ZigBeeT *zb);
@@ -434,28 +438,6 @@ enum ZclStatusCodeT ZbZclBasicWriteDirect(struct ZigBeeT *zb, uint8_t endpoint,
bool ZbZclBasicPostAlarm(struct ZigBeeT *zb, uint8_t endpoint, uint8_t alarm_code);
/*---------------------------------------------------------------
- * Uptime
- *---------------------------------------------------------------
- */
-typedef unsigned long ZbUptimeT;
-
-#define ZB_UPTIME_MAX (ULONG_MAX)
-
-/* Max timeout = 12 days
- * FIXME - should probably limit this to on the order of an hour.
- *
- * For long timeouts, keep resetting a timer to a timeout of an hour
- * or the difference between the desired timeout and the current time,
- * whichever is less. And use a real-time clock to get accurate uptime. */
-#define ZB_TIMEOUT_MAX ((UINT_MAX) / 4U)
-
-/* Returns current uptime in milliseconds.
- * Special behaviour is that it never returns 0. Values are from 1 to ZB_UPTIME_MAX. */
-ZbUptimeT ZbUptime(void);
-
-unsigned int ZbTimeoutRemaining(ZbUptimeT now, ZbUptimeT expire_time);
-
-/*---------------------------------------------------------------
* ZigBee Timer
*---------------------------------------------------------------
*/
@@ -470,7 +452,7 @@ void ZbTimerFree(struct ZbTimerT *timer);
/* Resets and schedules a ZigBee timer. */
void ZbTimerReset(struct ZbTimerT *timer, unsigned int timeout);
bool ZbTimerRunning(struct ZbTimerT *timer);
-/* ZbTimerRemaining returns time remaining in mS for given timer, or UINT_MAX if timer is not running. */
+/* ZbTimerRemaining returns time remaining in mS for the given timer. */
unsigned int ZbTimerRemaining(struct ZbTimerT *timer);
/*---------------------------------------------------------------
@@ -551,6 +533,33 @@ bool ZbPersistNotifyRegister(struct ZigBeeT *zb, void (*callback)(struct ZigBeeT
void ZbShutdown(struct ZigBeeT *zb);
/*---------------------------------------------------------------
+ * AES Hashing
+ *---------------------------------------------------------------
+ */
+#ifndef AES_BLOCK_SIZE
+# define AES_BLOCK_SIZE 16U
+#endif
+
+struct ZbHash {
+ uint8_t m[AES_BLOCK_SIZE];
+ uint8_t hash[AES_BLOCK_SIZE];
+ uint8_t key[AES_BLOCK_SIZE];
+ uint8_t length;
+};
+
+/* Matyas-Meyer-Oseas hash function. */
+void ZbHashInit(struct ZbHash *h);
+void ZbHashAdd(struct ZbHash *h, const void *data, uint32_t len);
+void ZbHashByte(struct ZbHash *h, uint8_t data);
+void ZbHashDigest(struct ZbHash *h, void *digest);
+
+/* HMAC hash function (based on AES-MMO) */
+void ZbHmacInit(struct ZbHash *h, const void *key, uint32_t len);
+#define ZbHmacAdd(hash, data, len) ZbHashAdd(hash, data, len)
+#define ZbHmacByte(hash, byte) ZbHashByte(hash, byte)
+void ZbHmacDigest(struct ZbHash *h, void *digest);
+
+/*---------------------------------------------------------------
* Test Case Hooks
*---------------------------------------------------------------
*/
@@ -607,6 +616,11 @@ unsigned long ZbHeapHighWaterMark(struct ZigBeeT *zb);
typedef void (*ZbHeapDumpCallbackT)(void *cbarg, const char *fmt, ...);
void ZbHeapDumpMemAllocTbl(struct ZigBeeT *zb, ZbHeapDumpCallbackT callback, void *cbarg);
+/* String conversion */
+int zb_hex_str_to_bin(const char *string, void *out, unsigned int maxlen);
+unsigned int zb_hex_bin_to_str(const uint8_t *in_data, unsigned int in_len, char *out_str, unsigned int max_len,
+ const char delimiter, unsigned int interval);
+
/*---------------------------------------------------------------
* Additional Layer Includes
*---------------------------------------------------------------
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.nwk.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.nwk.h
index b3ef5034a..ffe02644f 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.nwk.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.nwk.h
@@ -92,7 +92,7 @@ enum ZbNwkNibAttrIdT {
ZB_NWK_NIB_ID_SymLink = 0x8e,
ZB_NWK_NIB_ID_CapabilityInformation = 0x8f,
ZB_NWK_NIB_ID_AddrAlloc = 0x90,
- ZB_NWK_NIB_ID_UseTreeRouting = 0x91,
+ /* was ZB_NWK_NIB_ID_UseTreeRouting = 0x91 */
ZB_NWK_NIB_ID_ManagerAddr = 0x92,
ZB_NWK_NIB_ID_MaxSourceRoute = 0x93,
ZB_NWK_NIB_ID_UpdateId = 0x94,
@@ -104,7 +104,6 @@ enum ZbNwkNibAttrIdT {
ZB_NWK_NIB_ID_GroupIdTable = 0x99,
ZB_NWK_NIB_ID_ExtendedPanId = 0x9a,
/* ZigBee 2007+ Attributes */
- ZB_NWK_NIB_ID_UseMulticast = 0x9b,
ZB_NWK_NIB_ID_RouteRecordTable = 0x9c,
ZB_NWK_NIB_ID_IsConcentrator = 0x9d,
ZB_NWK_NIB_ID_ConcentratorRadius = 0x9e,
@@ -123,6 +122,8 @@ enum ZbNwkNibAttrIdT {
ZB_NWK_NIB_ID_AddressMap = 0xa9,
/* ...continued in zigbee.aps.h with ZB_APS_IB_ID_DEVICE_KEY_PAIR_SET... */
+ /* R23+ attributes */
+ ZB_NWK_NIB_ID_DiscoveryTable = 0xb4, /* ZbNwkDiscoveryInfoT - Get only. */
/* 0x400 to 0x4ff reserved for custom NIBs. */
ZB_NWK_NIB_ID_Depth = 0x0400,
ZB_NWK_NIB_ID_FrameCounterSet,
@@ -165,8 +166,6 @@ enum ZbNwkNibAttrIdT {
ZB_NWK_NIB_ID_ActiveChannelList, /* struct ZbChannelListT - Get only. */
ZB_NWK_NIB_ID_PermitJoinCounter, /* uint8_t - Get only. Set through ZbNlmePermitJoinReq */
- ZB_NWK_NIB_ID_DiscoveryTable, /* struct ZbNwkDiscoveryInfoT - Get only. */
-
ZB_NWK_NIB_ID_PassiveAckEnabled /* uint8_t - Enable/Disable Broadcast Passive ACK */
};
@@ -333,8 +332,7 @@ enum ZbNwkRouteStatusT {
ZB_NWK_ROUTE_STATUS_ACTIVE = 0x00,
ZB_NWK_ROUTE_STATUS_DISCOVERY_UNDERWAY = 0x01,
ZB_NWK_ROUTE_STATUS_DISCOVERY_FAILED = 0x02,
- ZB_NWK_ROUTE_STATUS_INACTIVE = 0x03,
- ZB_NWK_ROUTE_STATUS_VALIDATION_UNDERWAY = 0x04
+ ZB_NWK_ROUTE_STATUS_INACTIVE = 0x03
};
#define ZB_NWK_ROUTE_RECORD_RENEWAL_TIMEOUT (60U * 1000U) /* ms */
@@ -344,7 +342,6 @@ typedef struct {
enum ZbNwkRouteStatusT status;
bool noCache; /* flag indicating destination doesn't store source routes. */
bool isManyToOne; /* flag indicating if destination is a concentrator */
- bool isMcast; /* flag indicating if destination is a group ID. */
ZbNwkRouteRecordInfoT routeRecord;
uint16_t destAddr;
uint16_t nextAddr;
@@ -550,7 +547,7 @@ typedef struct {
} ZbNlmeDirectJoinConfT;
/* NLME-LEAVE.request */
-typedef struct {
+typedef struct ZbNlmeLeaveReqT {
uint64_t deviceAddr;
bool removeChildren;
bool rejoin;
@@ -711,9 +708,9 @@ enum ZbStatusCodeT ZB_WARN_UNUSED ZbNlmeEdScanReq(struct ZigBeeT *zb, ZbNlmeEdSc
* If the local device is being requested to leave, it may take some time
* (hundreds of mS) to send the appropriate commands and reset the stack
* before the callback is eventually called, or ZbNlmeLeaveWait returns. */
-enum ZbStatusCodeT ZB_WARN_UNUSED ZbNlmeLeaveReq(struct ZigBeeT *zb, ZbNlmeLeaveReqT *leaveReqPtr,
- void (*callback)(ZbNlmeLeaveConfT *leaveConfPtr, void *arg), void *cbarg);
-void ZbNlmeLeaveWait(struct ZigBeeT *zb, ZbNlmeLeaveReqT *leaveReqPtr, ZbNlmeLeaveConfT *leaveConfPtr);
+enum ZbStatusCodeT ZB_WARN_UNUSED ZbNlmeLeaveReq(struct ZigBeeT *zb, struct ZbNlmeLeaveReqT *leaveReqPtr,
+ void (*callback)(struct ZbNlmeLeaveConfT *leaveConfPtr, void *arg), void *cbarg);
+void ZbNlmeLeaveWait(struct ZigBeeT *zb, struct ZbNlmeLeaveReqT *leaveReqPtr, struct ZbNlmeLeaveConfT *leaveConfPtr);
/* NLME-ROUTE-DISCOVERY.request */
enum ZbStatusCodeT ZB_WARN_UNUSED ZbNlmeRouteDiscReq(struct ZigBeeT *zb, ZbNlmeRouteDiscReqT *routeDiscReqPtr,
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.startup.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.startup.h
index 331e7ba43..e00e62927 100644
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.startup.h
+++ b/Middlewares/ST/STM32_WPAN/zigbee/stack/include/zigbee.startup.h
@@ -74,7 +74,7 @@ struct ZbStartupT {
/* Security Parameters (security level, preconfigured keys, etc) */
struct {
uint8_t level;
- unsigned int useInsecureRejoin : 1;
+ bool useInsecureRejoin;
uint64_t trustCenterAddress;
uint8_t preconfiguredLinkKey[ZB_SEC_KEYSIZE]; /* 16 bytes */
uint8_t distributedGlobalKey[ZB_SEC_KEYSIZE]; /* 16 bytes */
diff --git a/Middlewares/ST/STM32_WPAN/zigbee/stack/zcl/local_zcl.h b/Middlewares/ST/STM32_WPAN/zigbee/stack/zcl/local_zcl.h
deleted file mode 100644
index f086acb09..000000000
--- a/Middlewares/ST/STM32_WPAN/zigbee/stack/zcl/local_zcl.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/* Copyright [2009 - 2019] Exegin Technologies Limited. All rights reserved. */
-
-/*-------------------------------------------------
- * DESCRIPTION
- * Internal header file for the ZigBee Cluster
- * Library.
- *-------------------------------------------------
- */
-#ifndef LOCAL_ZCL_H
-#define LOCAL_ZCL_H
-
-#include "zigbee.h"
-#include "zcl/zcl.h"
-
-struct ZbTimerT;
-
-#ifndef ZclAssert
-# include <assert.h>
-# define ZclAssert assert
-#endif
-
-/*---------------------------------------------------------------
- * Debug Logging
- *---------------------------------------------------------------
- */
-/*lint -save -e762 [ Redundantly declared symbol ] */
-/*lint -save -e9004 [ previously declared - MISRA 2012 Rule 8.5, required ] */
-extern void ZbLogPrintf(struct ZigBeeT *zb, uint32_t mask, const char *hdr, const char *fmt, ...);
-/*lint -restore */
-/*lint -restore */
-
-#ifndef CONFIG_ZB_LOG_ALLOWED_MASK
-/* If not defined, then disable debugging (minimal Flash size) */
-# define CONFIG_ZB_LOG_ALLOWED_MASK ZB_LOG_MASK_LEVEL_0
-#endif
-
-/*lint -emacro(506,ZCL_LOG_PRINTF) */
-/* Info 774: Boolean within 'if' always evaluates to False */
-/*lint -emacro(774,ZCL_LOG_PRINTF) */
-/*lint -emacro(831,ZCL_LOG_PRINTF) */
-
-#if ((ZB_LOG_MASK_ZCL & CONFIG_ZB_LOG_ALLOWED_MASK) != 0U)
-#define ZCL_LOG_PRINTF(zb, hdr, ...) \
- do { \
- if ((zb) == NULL) { \
- break; \
- } \
- ZbLogPrintf(zb, ZB_LOG_MASK_ZCL, hdr, __VA_ARGS__); \
- } while (false)
-#else
-#define ZCL_LOG_PRINTF(zb, hdr, ...) (void)zb
-#endif
-
-/* Default cluster TX Options (NWK layer security, APS ACK, fragmentation allowed) */
-#define ZCL_CLUSTER_TXOPTIONS_DEFAULT \
- (ZB_APSDE_DATAREQ_TXOPTIONS_SECURITY | \
- ZB_APSDE_DATAREQ_TXOPTIONS_NWKKEY | \
- ZB_APSDE_DATAREQ_TXOPTIONS_ACK | \
- ZB_APSDE_DATAREQ_TXOPTIONS_FRAG)
-
-/* Default SE cluster TX Options (same as default above, but APS security is enabled) */
-#define ZCL_CLUSTER_TXOPTIONS_SE \
- (ZB_APSDE_DATAREQ_TXOPTIONS_SECURITY | \
- ZB_APSDE_DATAREQ_TXOPTIONS_ACK | \
- ZB_APSDE_DATAREQ_TXOPTIONS_FRAG)
-
-uint16_t zcl_rsp_txoptions(enum ZbStatusCodeT security_status);
-
-#define ZCL_ATTRIBUTE_BUFFER_SIZE 256U
-
-/* Our internal Manufacturer Code (ZCL_FRAMECTRL_MANUFACTURER).
- * This code is never sent over the air. */
-enum {
- ZCL_MANUF_CODE_INTERNAL = 0xfffe /* FIXME - arbitrary */
-};
-
-/* Exegin's Manufacturer Specific Global Commands
- * ZCL_FRAMECTRL_MANUFACTURER && ZCL_FRAMETYPE_PROFILE && (Manufacturer Code == ZCL_MANUF_CODE_INTERNAL) */
-enum {
- ZCL_CMD_MANUF_INTERNAL_ATTR_RESET_DEFAULT, /* attr_reset() */
-
- /* For Scene Store Command (ZCL_SCENES_COMMAND_STORE_SCENE)
- * Payload for Request (to Server): None
- * Payload for Response: [CLUSTER(2) | EXT_LEN(1) | EXT_ATTR_DATA(N)] */
- ZCL_CMD_MANUF_INTERNAL_GET_SCENE_EXTDATA, /* get_scene_data() */
-
- /* For Scene Recall Command (ZCL_SCENES_COMMAND_RECALL_SCENE)
- * Payload for Request (to Server): [EXT_LEN(1) | EXT_ATTR_DATA(N)]
- * Payload for Response: [STATUS(1)] */
- ZCL_CMD_MANUF_INTERNAL_SET_SCENE_EXTDATA, /* set_scene_data() */
-
- /* ZCL Cluster Persistence: Profile-Wide Manufacturer-Specific command
- * sent to a cluster to restore persistence. */
- ZCL_CMD_MANUF_INTERNAL_ATTR_PERSIST_SET
-};
-
-/* Offsets into ZCL_CMD_MANUF_INTERNAL_SET_SCENE_EXTDATA message */
-#define SET_SCENE_EXTDATA_OFFSET_EXT_LEN 4U
-#define SET_SCENE_EXTDATA_OFFSET_EXT_FIELD 5U
-#define SET_SCENE_EXTDATA_HEADER_LEN (4U + 1U)
-
-/*---------------------------------------------------------------------------
- * ZCL Attributes
- *---------------------------------------------------------------------------
- */
-
-/* The internal allocated attribute struct */
-struct ZbZclAttrListEntryT {
- struct LinkListT link;
- const struct ZbZclAttrT *info; /* Attribute info */
- /* Internal Callback - used by the stack only for IPC, if applicable.
- * Can't override info->callback because it's a const and may be stored in Flash. */
- enum ZclStatusCodeT (*internal_callback)(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *info);
- uint8_t *valBuf; /* ZCL format (i.e. same as what is sent over-the-air) */
- unsigned int valSz; /* Allocation size of valBuf. */
-#ifndef CONFIG_ZB_ZCL_MINIMAL
- struct {
- uint16_t interval_secs_min; /* seconds */
- uint16_t interval_secs_max; /* seconds */
- } reporting;
-#endif
-};
-
-enum ZclStatusCodeT zcl_attr_callback_exec(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrListEntryT *attrPtr, struct ZbZclAttrCbInfoT *cb);
-
-void ZbZclAttrFreeList(struct ZbZclClusterT *clusterPtr);
-enum ZclStatusCodeT ZbZclAttrDefaultRead(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrListEntryT *attrPtr, uint8_t *data, unsigned int data_len);
-enum ZclStatusCodeT ZbZclAttrDefaultWrite(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrListEntryT *attrPtr, const uint8_t *data, ZclWriteModeT mode);
-void ZbZclAttrPostWrite(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrListEntryT *attrPtr);
-bool ZbZclAttrIntegerRangeCheck(struct ZbZclAttrListEntryT *attrPtr, const uint8_t *attr_data, unsigned int attr_len);
-
-/* Handlers for response commands. */
-void ZbZclCallbackTick(struct ZbZclClusterT *clusterPtr);
-void ZbZclCallbackCleanup(struct ZbZclClusterT *clusterPtr);
-
-/* Handlers for the global commands. */
-void ZbZclHandleReadAttr(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-void ZbZclHandleWriteAttr(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-void ZbZclAttrHandleDiscover(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-
-/* Functions for attribute reporting. */
-void ZbZclReportTick(struct ZbZclClusterT *clusterPtr);
-void ZbZclReportCleanup(struct ZbZclClusterT *clusterPtr);
-enum ZclStatusCodeT zcl_reporting_config_default(struct ZbZclClusterT *clusterPtr);
-void ZbZclHandleConfigReport(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-void ZbZclHandleConfigResponse(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *dataIndPtr);
-void ZbZclHandleReadReport(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-void ZbZclHandleReportAttr(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-
-/* Functions for structured reading/writing. */
-void ZbZclHandleReadStruct(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-void ZbZclHandleWriteStruct(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *dataIndPtr);
-
-/* ZCL command state stuff. */
-#define ZCL_STATE_CONTINUE 0 /* Return zero to continue waiting for responses. */
-#define ZCL_STATE_CLEANUP 1 /* Return one to cleanup the state. */
-typedef int (*ZbZclHandlerFuncT)(struct ZbZclCommandRspT *cmdRsp, void (*callback)(void *msg, void *arg), void *arg);
-
-void ZbZclStateBegin(struct ZigBeeT *zb, ZbApsdeDataReqT *apsReq, struct ZbZclHeaderT *zclHdr,
- unsigned int timeout, ZbZclHandlerFuncT handler,
- void (*callback)(void *msg, void *arg), void *arg);
-
-/* A callback to use when waiting for a ZCL response.
- * "struct ZbZclCommandWakeInfoT" is allocated by caller and pointer
- * passed as callback "arg". Semaphore is posted upon response reception. */
-struct ZbZclCommandWakeInfoT {
- struct ZbSemT *sem;
- struct ZbZclCommandRspT *rsp;
-};
-void zcl_command_rsp_wakeup(struct ZbZclCommandRspT *rsp, void *arg);
-
-/* ZCL Attributes */
-enum ZclDataTypeT ZbZclAttrType(struct ZbZclClusterT *clusterPtr, uint16_t attrId);
-unsigned int ZbZclAttrTypeLength(enum ZclDataTypeT type);
-void ZbZclAttrAddSorted(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrListEntryT *new_entry);
-struct ZbZclAttrListEntryT * ZbZclAttrFind(struct ZbZclClusterT *clusterPtr, uint16_t attrId);
-unsigned int ZbZclAttrDiscoverGetList(struct ZbZclClusterT *clusterPtr, uint16_t start_attr, uint8_t *max_num_attr, uint8_t *buf, unsigned int max_len);
-
-int ZbZclAttrDefaultValue(enum ZclDataTypeT type, uint8_t *buf, unsigned int max_len);
-
-void ZbZclAttrResetAllClusters(struct ZigBeeT *zb);
-
-/* ZCL Basic Server */
-struct ZbZclClusterT * zcl_basic_server_alloc(struct ZigBeeT *zb, uint8_t endpoint, bool is_first);
-uint8_t zcl_basic_server_alarm_mask(struct ZbZclClusterT *clusterPtr);
-
-/* ZCL Scene Callbacks */
-void ZbZclHandleGetSceneData(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-void ZbZclHandleSetSceneData(struct ZbZclClusterT *clusterPtr, struct ZbZclHeaderT *zclHdrPtr, ZbApsdeDataIndT *ind);
-
-/* ZCL Persistence */
-struct ZbZclClusterT * zcl_persist_server_alloc(struct ZigBeeT *zb);
-unsigned int zcl_persist_server_get(struct ZbZclClusterT *clusterPtr, uint8_t *buf, unsigned int max_len);
-enum ZclStatusCodeT zcl_persist_restore(struct ZigBeeT *zb, const uint8_t *buf, uint16_t len);
-enum ZclStatusCodeT zcl_persist_handle_set(struct ZbZclClusterT *clusterPtr, uint8_t *buf, uint16_t len);
-
-void zcl_persist_cluster_timer(struct ZigBeeT *zb, void *arg);
-
-enum ZclStatusCodeT zcl_cluster_bind(struct ZbZclClusterT *clusterPtr, struct ZbApsFilterT *filter, uint8_t endpoint, uint16_t profileId, enum ZbZclDirectionT direction);
-
-bool zcl_reporting_remove(struct ZbZclClusterT *clusterPtr, uint16_t attributeId, enum ZbZclReportDirectionT direction);
-
-/* Helper function to check incoming packet security against the
- * cluster's minimum security level allowed. */
-bool ZbZclClusterCheckMinSecurity(struct ZbZclClusterT *clusterPtr, ZbApsdeDataIndT *dataIndPtr, struct ZbZclHeaderT *zclHdrPtr);
-
-bool ZbZclDeviceLogCheckAllow(struct ZbZclClusterT *clusterPtr, ZbApsdeDataIndT *dataIndPtr, struct ZbZclHeaderT *zclHdrPtr);
-
-#endif /* LOCAL_ZCL_H */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/BLE_Beacon.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/BLE_Beacon.ioc
index f15443ff9..646d86bf7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/BLE_Beacon.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/BLE_Beacon.ioc
@@ -94,12 +94,13 @@ Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -210,7 +211,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -232,7 +233,9 @@ RCC.RNGFreq_Value=32000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
@@ -269,18 +272,18 @@ STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO=3
STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO=0
STM32_WPAN.CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION=1
STM32_WPAN.CFG_HW_USART1_ENABLED=1
-STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_ONLY
+STM32_WPAN.CFG_IO_CAPABILITY=\ CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
STM32_WPAN.CFG_LPM_SUPPORTED=1
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=0xFA0
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=2500
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA=0xfa0
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=0x640
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=1000
STM32_WPAN.CFG_MITM_PROTECTION=CFG_MITM_PROTECTION_REQUIRED
STM32_WPAN.CFG_RTCCLK_DIVIDER_CONF=0
STM32_WPAN.CUSTOM_P2P_SERVER=Disabled
STM32_WPAN.CUSTOM_TEMPLATE=Disabled
STM32_WPAN.DBG_TRACE_UART_CFG=hw_uart1
STM32_WPAN.IPParameters=CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,CFG_HW_LPUART1_DMA_TX_SUPPORTED,LOCAL_NAME,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,CUSTOM_P2P_SERVER,BLE_DBG_SVCCTL_EN,BT_SIG_HEALTH_THERMOMETER_SENSOR,BLE_CFG_DIS_MODEL_NUMBER_STRING,BLE_CFG_DIS_SYSTEM_ID,BLE_CFG_HTS_MEASUREMENT_INTERVAL,BLE_CFG_HTS_TEMPERATURE_INTERVAL_MAX_VALUE,BT_SIG_BEACON,BLE_APPLICATION_TYPE,BT_SIG_BLOOD_PRESSURE_SENSOR,BT_SIG_HEART_RATE_SENSOR,CUSTOM_TEMPLATE,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_DEBUGGER_SUPPORTED,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART,CFG_DEBUG_TRACE_LIGHT
-STM32_WPAN.IPParametersWithoutCheck=CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,BLE_CFG_HTS_TEMPERATURE_INTERVAL_MAX_VALUE
+STM32_WPAN.IPParametersWithoutCheck=BLE_CFG_HTS_TEMPERATURE_INTERVAL_MAX_VALUE
STM32_WPAN.LOCAL_NAME=HTSTM
STM32_WPAN.LOCAL_NAME_FORMATTED=,'H','T','S','T','M'
USART1.AutoBaudRateEnableParam=UART_ADVFEATURE_AUTOBAUDRATE_DISABLE
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/app_conf.h
index 975378333..175409a3d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/app_conf.h
@@ -63,7 +63,7 @@
#define CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT (0x03)
#define CFG_IO_CAPABILITY_KEYBOARD_DISPLAY (0x04)
-#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_DISPLAY_ONLY
+#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
/**
* Define MITM modes
@@ -94,6 +94,7 @@
/**< specific parameters */
/*****************************************************/
+
/**
* Beacon selection
* Beacons are all exclusive
@@ -347,7 +348,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
@@ -394,6 +395,7 @@ typedef enum
#define CFG_LPM_SUPPORTED 0
#define CFG_DEBUGGER_SUPPORTED 1
#endif
+
/**
* When CFG_DEBUG_TRACE_FULL is set to 1, the trace are output with the API name, the file name and the line number
* When CFG_DEBUG_TRACE_LIGHT is set to 1, only the debug message is output
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/stm32wbxx_hal_conf.h
index 31d63e37a..7f1537260 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Inc/stm32wbxx_hal_conf.h
@@ -276,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/app_entry.c
index 97a6a8b82..7046354ac 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/main.c
index 4741fe7f1..93e6f5cb3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/main.c
@@ -209,12 +209,15 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +358,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -404,6 +404,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/stm32wbxx_hal_msp.c
index 87614ca60..f22ad0f38 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/Core/Src/stm32wbxx_hal_msp.c
@@ -88,6 +88,7 @@ void HAL_MspInit(void)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
+ HAL_DMA_MuxSyncConfigTypeDef pSyncConfig;
if(huart->Instance==LPUART1)
{
/* USER CODE BEGIN LPUART1_MspInit 0 */
@@ -132,6 +133,16 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
Error_Handler();
}
+ pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT;
+ pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_NO_EVENT;
+ pSyncConfig.SyncEnable = DISABLE;
+ pSyncConfig.EventEnable = DISABLE;
+ pSyncConfig.RequestNumber = 1;
+ if (HAL_DMAEx_ConfigMuxSync(&hdma_lpuart1_tx, &pSyncConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
__HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
/* LPUART1 interrupt Init */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/App/app_ble.c
index 23a71638e..804e64a58 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/App/app_ble.c
@@ -262,15 +262,15 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE BEGIN EVT_BLUE_GAP_PROCEDURE_COMPLETE */
/* USER CODE END EVT_BLUE_GAP_PROCEDURE_COMPLETE */
- break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
+ break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
}
break; /* EVT_VENDOR */
- default:
- /* USER CODE BEGIN ECODE_DEFAULT*/
+ default:
+ /* USER CODE BEGIN ECODE_DEFAULT*/
- /* USER CODE END ECODE_DEFAULT*/
- break;
+ /* USER CODE END ECODE_DEFAULT*/
+ break;
}
return (SVCCTL_UserEvtFlowEnable);
@@ -308,7 +308,7 @@ static void Ble_Tl_Init( void )
return;
}
- static void Ble_Hci_Gap_Gatt_Init(void){
+static void Ble_Hci_Gap_Gatt_Init(void){
uint8_t role;
uint16_t gap_service_handle, gap_dev_name_char_handle, gap_appearance_char_handle;
@@ -376,7 +376,7 @@ static void Ble_Tl_Init( void )
if (role > 0)
{
- const char *name = "BLEcore";
+ const char *name = "BEACON";
aci_gap_init(role, 0,
APPBLE_GAP_DEVICE_NAME_LENGTH,
&gap_service_handle, &gap_dev_name_char_handle, &gap_appearance_char_handle);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Beacon/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/BLE_BloodPressure.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/BLE_BloodPressure.ioc
index ab030ad3f..7e16e0dd3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/BLE_BloodPressure.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/BLE_BloodPressure.ioc
@@ -94,12 +94,13 @@ Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -210,7 +211,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -232,7 +233,9 @@ RCC.RNGFreq_Value=32000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
@@ -275,18 +278,17 @@ STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO=0
STM32_WPAN.CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION=1
STM32_WPAN.CFG_HW_USART1_DMA_TX_SUPPORTED=0
STM32_WPAN.CFG_HW_USART1_ENABLED=1
-STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_ONLY
+STM32_WPAN.CFG_IO_CAPABILITY=\ CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
STM32_WPAN.CFG_LPM_SUPPORTED=1
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=0xFA0
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=2500
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA=0xfa0
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=0x640
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=1000
STM32_WPAN.CFG_MITM_PROTECTION=CFG_MITM_PROTECTION_REQUIRED
STM32_WPAN.CFG_RTCCLK_DIVIDER_CONF=0
STM32_WPAN.CUSTOM_P2P_SERVER=Disabled
STM32_WPAN.CUSTOM_TEMPLATE=Disabled
STM32_WPAN.DBG_TRACE_UART_CFG=hw_uart1
-STM32_WPAN.IPParameters=P2P_SERVER_NUMBER,CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_CONSOLE_MENU,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,CFG_HW_USART1_DMA_TX_SUPPORTED,LOCAL_NAME,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,L2CAP_REQUEST_NEW_CONN_PARAM,CUSTOM_P2P_SERVER,BT_SIG_HEART_RATE_SENSOR,CFG_DEBUGGER_SUPPORTED,BLE_DBG_DIS_EN,BLE_DBG_SVCCTL_EN,BT_SIG_BLOOD_PRESSURE_SENSOR,BLE_DBG_APP_EN,BLE_DBG_BLS_EN,BLE_APPLICATION_TYPE,BT_SIG_BEACON,BT_SIG_HEALTH_THERMOMETER_SENSOR,CUSTOM_TEMPLATE,BLE_CFG_BLS_MEASUREMENT_STATUS_FLAG,BLE_CFG_BLS_PULSE_RATE_FLAG,BLE_CFG_BLS_USER_ID_FLAG,BLE_CFG_BLS_TIME_STAMP_FLAG,BLE_CFG_BLS_INTERMEDIATE_CUFF_PRESSURE,BLE_CFG_BLS_SUPPORTED_FEATURES,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART,CFG_DEBUG_TRACE_LIGHT
-STM32_WPAN.IPParametersWithoutCheck=CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN
+STM32_WPAN.IPParameters=P2P_SERVER_NUMBER,CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,CFG_HW_USART1_DMA_TX_SUPPORTED,LOCAL_NAME,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,L2CAP_REQUEST_NEW_CONN_PARAM,CUSTOM_P2P_SERVER,BT_SIG_HEART_RATE_SENSOR,CFG_DEBUGGER_SUPPORTED,BLE_DBG_DIS_EN,BLE_DBG_SVCCTL_EN,BT_SIG_BLOOD_PRESSURE_SENSOR,BLE_DBG_APP_EN,BLE_DBG_BLS_EN,BLE_APPLICATION_TYPE,BT_SIG_BEACON,BT_SIG_HEALTH_THERMOMETER_SENSOR,CUSTOM_TEMPLATE,BLE_CFG_BLS_MEASUREMENT_STATUS_FLAG,BLE_CFG_BLS_PULSE_RATE_FLAG,BLE_CFG_BLS_USER_ID_FLAG,BLE_CFG_BLS_TIME_STAMP_FLAG,BLE_CFG_BLS_INTERMEDIATE_CUFF_PRESSURE,BLE_CFG_BLS_SUPPORTED_FEATURES,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART,CFG_DEBUG_TRACE_LIGHT,CFG_CONSOLE_MENU
STM32_WPAN.L2CAP_REQUEST_NEW_CONN_PARAM=1
STM32_WPAN.LOCAL_NAME=BPSTM
STM32_WPAN.LOCAL_NAME_FORMATTED=,'B','P','S','T','M'
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/app_conf.h
index 96e19ba10..35119e8e2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/app_conf.h
@@ -63,7 +63,7 @@
#define CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT (0x03)
#define CFG_IO_CAPABILITY_KEYBOARD_DISPLAY (0x04)
-#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_DISPLAY_YES_NO
+#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
/**
* Define MITM modes
@@ -344,7 +344,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/stm32wbxx_hal_conf.h
index 31d63e37a..7f1537260 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Inc/stm32wbxx_hal_conf.h
@@ -276,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/app_entry.c
index 97a6a8b82..7046354ac 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/main.c
index 4741fe7f1..93e6f5cb3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/main.c
@@ -209,12 +209,15 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +358,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -404,6 +404,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/stm32wbxx_hal_msp.c
index 87614ca60..f22ad0f38 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/Core/Src/stm32wbxx_hal_msp.c
@@ -88,6 +88,7 @@ void HAL_MspInit(void)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
+ HAL_DMA_MuxSyncConfigTypeDef pSyncConfig;
if(huart->Instance==LPUART1)
{
/* USER CODE BEGIN LPUART1_MspInit 0 */
@@ -132,6 +133,16 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
Error_Handler();
}
+ pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT;
+ pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_NO_EVENT;
+ pSyncConfig.SyncEnable = DISABLE;
+ pSyncConfig.EventEnable = DISABLE;
+ pSyncConfig.RequestNumber = 1;
+ if (HAL_DMAEx_ConfigMuxSync(&hdma_lpuart1_tx, &pSyncConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
__HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
/* LPUART1 interrupt Init */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/App/app_ble.c
index 196438108..67fce5ba0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/App/app_ble.c
@@ -396,10 +396,12 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
{
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE, status nok \n");
}
+
ret = hci_le_read_phy(BleApplicationContext.BleApplicationContext_legacy.connectionHandle,&TX_PHY,&RX_PHY);
if (ret == BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("Read_PHY success \n");
+
if ((TX_PHY == TX_2M) && (RX_PHY == RX_2M))
{
APP_DBG_MSG("PHY Param TX= %d, RX= %d \n", TX_PHY, RX_PHY);
@@ -418,33 +420,32 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE END EVT_LE_PHY_UPDATE_COMPLETE */
break;
case EVT_LE_CONN_COMPLETE:
- {
+ {
hci_le_connection_complete_event_rp0 *connection_complete_event;
/**
* The connection is done, there is no need anymore to schedule the LP ADV
*/
connection_complete_event = (hci_le_connection_complete_event_rp0 *) meta_evt->data;
-
+
HW_TS_Stop(BleApplicationContext.Advertising_mgr_timer_Id);
APP_DBG_MSG("EVT_LE_CONN_COMPLETE for connection handle 0x%x\n", connection_complete_event->Connection_Handle);
- if (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_CONNECTING)
- {
- /* Connection as client */
- BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_CLIENT;
- }
- else
- {
- /* Connection as server */
- BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_SERVER;
- }
- BleApplicationContext.BleApplicationContext_legacy.connectionHandle =
- connection_complete_event->Connection_Handle;
+ if (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_CONNECTING)
+ {
+ /* Connection as client */
+ BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_CLIENT;
+ }
+ else
+ {
+ /* Connection as server */
+ BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_SERVER;
+ }
+ BleApplicationContext.BleApplicationContext_legacy.connectionHandle = connection_complete_event->Connection_Handle;
/* USER CODE BEGIN HCI_EVT_LE_CONN_COMPLETE */
/* USER CODE END HCI_EVT_LE_CONN_COMPLETE */
- }
+ }
break; /* HCI_EVT_LE_CONN_COMPLETE */
default:
@@ -522,15 +523,15 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE BEGIN EVT_BLUE_GAP_PROCEDURE_COMPLETE */
/* USER CODE END EVT_BLUE_GAP_PROCEDURE_COMPLETE */
- break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
+ break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
}
break; /* EVT_VENDOR */
- default:
- /* USER CODE BEGIN ECODE_DEFAULT*/
+ default:
+ /* USER CODE BEGIN ECODE_DEFAULT*/
- /* USER CODE END ECODE_DEFAULT*/
- break;
+ /* USER CODE END ECODE_DEFAULT*/
+ break;
}
return (SVCCTL_UserEvtFlowEnable);
@@ -570,7 +571,7 @@ static void Ble_Tl_Init( void )
return;
}
- static void Ble_Hci_Gap_Gatt_Init(void){
+static void Ble_Hci_Gap_Gatt_Init(void){
uint8_t role;
uint8_t index;
@@ -639,7 +640,7 @@ static void Ble_Tl_Init( void )
if (role > 0)
{
- const char *name = "BLEcore";
+ const char *name = "BPSTM";
aci_gap_init(role, 0,
APPBLE_GAP_DEVICE_NAME_LENGTH,
&gap_service_handle, &gap_dev_name_char_handle, &gap_appearance_char_handle);
@@ -681,14 +682,14 @@ static void Ble_Tl_Init( void )
aci_gap_set_authentication_requirement(BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.bonding_mode,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.mitm_mode,
- 0,
+ 1,
0,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.encryptionKeySizeMin,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.encryptionKeySizeMax,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.Use_Fixed_Pin,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.Fixed_Pin,
-0
- );
+ 0
+ );
/**
* Initialize whitelist
@@ -703,7 +704,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
{
tBleStatus ret = BLE_STATUS_INVALID_PARAMS;
uint16_t Min_Inter, Max_Inter;
-
+
if (New_Status == APP_BLE_FAST_ADV)
{
Min_Inter = AdvIntervalMin;
@@ -722,6 +723,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
HW_TS_Stop(BleApplicationContext.Advertising_mgr_timer_Id);
APP_DBG_MSG("First index in %d state \n", BleApplicationContext.Device_Connection_Status);
+
if ((New_Status == APP_BLE_LP_ADV)
&& ((BleApplicationContext.Device_Connection_Status == APP_BLE_FAST_ADV)
|| (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_ADV)))
@@ -752,7 +754,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
BleApplicationContext.BleApplicationContext_legacy.advtServUUID,
0,
0);
- if (ret == BLE_STATUS_SUCCESS)
+ if (ret == BLE_STATUS_SUCCESS)
{
if (New_Status == APP_BLE_FAST_ADV)
{
@@ -763,7 +765,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
else
{
APP_DBG_MSG("Successfully Start Low Power Advertising \n");
- }
+ }
}
else
{
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_BloodPressure/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/Core/Src/app_entry.c
index 105b411ca..c33612b59 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/Core/Src/app_entry.c
@@ -225,6 +225,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
/**< Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewd
index 2243b09e0..30eb1c9bf 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_CableReplacement</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewp
index 723f05ca9..395d1caca 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/EWARM/BLE_CableReplacement.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_CableReplacement</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_CableReplacement\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_CableReplacement\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_CableReplacement\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -654,7 +654,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -662,7 +662,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>stm32wb55rg_nucleo_BLE_CableReplacement.bin</state>
+ <state>BLE_CableReplacement.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1049,9 +1049,6 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
@@ -1061,6 +1058,9 @@
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
</file>
</group>
@@ -1142,12 +1142,6 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr_ex.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi.c</name>
- </file>
- <file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi_ex.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc.c</name>
</file>
<file>
@@ -1160,6 +1154,12 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc_ex.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi_ex.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart.c</name>
</file>
<file>
@@ -1228,10 +1228,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvoptx
index aadda47d9..4ad7a2ead 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvoptx
@@ -1,7 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_CableReplacement</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -51,11 +73,11 @@
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
- <CpuCode>0</CpuCode>
+ <CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,760 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>Application/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/crc_app.c</PathWithFileName>
+ <FilenameWithoutPath>crc_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/crs_app.c</PathWithFileName>
+ <FilenameWithoutPath>crs_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_spi.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_spi_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/blesvc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/crs_stm.c</PathWithFileName>
+ <FilenameWithoutPath>crs_stm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/menu</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/menu/DispTools.c</PathWithFileName>
+ <FilenameWithoutPath>DispTools.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvprojx
index 49fdc2ba4..3e92a532f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/MDK-ARM/BLE_CableReplacement.uvprojx
@@ -1,41 +1,46 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
- <TargetName>Production</TargetName>
+ <Target>
+ <TargetName>BLE_CableReplacement</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -43,45 +48,49 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_CableReplacement\Exe\</OutputDirectory>
<OutputName>BLE_CableReplacement</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>0</CreateHexFile>
+ <CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +104,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +126,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +138,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +175,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +190,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +243,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +273,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +298,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +307,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +324,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls/>
+ <MiscControls></MiscControls>
<Define>USE_STM32WBXX_NUCLEO,STM32WB55xx,USE_HAL_DRIVER,CORE_CM4</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/ble/menu;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/ble;../Core/Inc;../STM32_WPAN/app</IncludePath>
</VariousControls>
</Cads>
@@ -371,11 +348,14 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
- <IncludePath/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
@@ -387,22 +367,18 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
- <Group>
+ <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -439,7 +415,7 @@
</Group>
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -732,20 +708,24 @@
</File>
</Files>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ </Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_CableReplacement"/>
</targetInfos>
</component>
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/.cproject
index 3fa61ba28..da3ce44fe 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1418081381" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.340438540" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1506430799" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1285204027" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_CableReplacement}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1285204027" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -140,7 +140,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.1090342820" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_CableReplacement.fr.ac6.managedbuild.target.gnu.cross.exe.1090342820" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -151,7 +151,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_CableReplacement"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/.project
index 9e60bcb43..acb5b0c70 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_CableReplacement</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_CableReplacement/SW4STM32/BLE_CableReplacement/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Inc/app_conf.h
index e547baca3..9dbba7b71 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Inc/app_conf.h
@@ -112,7 +112,7 @@
* When set to 1, the device is central
* When set to 0, the device is peripheral
*/
-#define CFG_BLE_CENTRAL 0
+#define CFG_BLE_CENTRAL 1
/**
* in this specific application, the device is either central
* or peripheral but cannot be both
@@ -128,8 +128,8 @@
#define PUSH_BUTTON_SW1_EXTI_IRQHandler EXTI4_IRQHandler
-#define CONN_L(x) ((int)((x)/0.625f))
-#define CONN_P(x) ((int)((x)/1.25f))
+#define CONN_L(x) ((int)(((float)x)/0.625f))
+#define CONN_P(x) ((int)(((float)x)/1.25f))
#define SCAN_P (0x320)
#define SCAN_L (0x320)
@@ -521,6 +521,7 @@ typedef enum
CFG_TASK_START_SCAN_ID,
CFG_TASK_LINK_CONFIG_ID,
CFG_TASK_APP_DATA_THROUGHPUT_ID,
+ CFG_TASK_CONN_UPDATE_ID,
CFG_TASK_HCI_ASYNCH_EVT_ID,
CFG_LAST_TASK_ID_WITH_HCICMD, /**< Shall be LAST in the list */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Src/app_entry.c
index 105b411ca..c33612b59 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/Core/Src/app_entry.c
@@ -225,6 +225,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
/**< Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewd
index 2243b09e0..0e9b3ee24 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_DataThroughput</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewp
index 43e7f24b8..d3661660e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/EWARM/BLE_DataThroughput.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_DataThroughput</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_DataThroughput\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_DataThroughput\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_DataThroughput\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -652,7 +652,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -660,7 +660,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>stm32wb55rg_nucleo_BLE_DataThroughput.bin</state>
+ <state>BLE_DataThroughput.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvoptx
index aadda47d9..046dc1e34 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvoptx
@@ -1,7 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_DataThroughput</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -55,7 +77,7 @@
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
- <CpuCode>0</CpuCode>
+ <CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,740 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>Application/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/dt_client_app.c</PathWithFileName>
+ <FilenameWithoutPath>dt_client_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/dt_server_app.c</PathWithFileName>
+ <FilenameWithoutPath>dt_server_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/dts.c</PathWithFileName>
+ <FilenameWithoutPath>dts.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_spi.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_spi_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/blesvc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvprojx
index d7cc2210f..a8a81ea1c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/MDK-ARM/BLE_DataThroughput.uvprojx
@@ -1,41 +1,46 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
- <TargetName>Production</TargetName>
+ <Target>
+ <TargetName>BLE_DataThroughput</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -43,45 +48,49 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_DataThroughput\Exe\</OutputDirectory>
<OutputName>BLE_DataThroughput</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>0</CreateHexFile>
+ <CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +104,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +126,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +138,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +175,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +190,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +243,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +273,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +298,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +307,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +324,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls/>
+ <MiscControls></MiscControls>
<Define>USE_STM32WBXX_NUCLEO,STM32WB55xx,USE_HAL_DRIVER,CORE_CM4,PHY_2M</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/ble;../Core/Inc;../STM32_WPAN/app</IncludePath>
</VariousControls>
</Cads>
@@ -371,11 +348,14 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
- <IncludePath/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
@@ -387,22 +367,18 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
- <Group>
+ <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -439,7 +415,7 @@
</Group>
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -722,20 +698,24 @@
</File>
</Files>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ </Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_DataThroughput"/>
</targetInfos>
</component>
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/.cproject
index f97e70c88..e50380121 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.836374205" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1914481220" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.91350059" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1258598859" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_DataThroughput}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1258598859" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -139,7 +139,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.520080148" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_DataThroughput.fr.ac6.managedbuild.target.gnu.cross.exe.520080148" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -150,7 +150,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_DataThroughput"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/.project
index f425ad314..a7ecde6df 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_DataThroughput</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/SW4STM32/BLE_DataThroughput/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/readme.txt
index 114f66042..3d46c3da9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_DataThroughput/readme.txt
@@ -31,11 +31,6 @@ How to use data throughput via notification from server to client using BLE comp
@note The application needs to ensure that the SysTick time base is always set to 1 millisecond
to have correct HAL operation.
-@par Keywords
-
-Add here all the importants words of the example separated by "," + $moduleName$ $exampleName$
-$moduleName$, $exampleName$, Security, IEC 60870-5, hardware CRC,
-
@par Directory contents
- BLE/BLE_DataThroughput/Core/Inc/stm32wbxx_hal_conf.h HAL configuration file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/BLE_HealthThermometer.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/BLE_HealthThermometer.ioc
index bd3f7e12c..0ccc1c98c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/BLE_HealthThermometer.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/BLE_HealthThermometer.ioc
@@ -94,12 +94,13 @@ Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -210,7 +211,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -232,7 +233,9 @@ RCC.RNGFreq_Value=32000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
@@ -284,18 +287,18 @@ STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO=3
STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO=0
STM32_WPAN.CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION=1
STM32_WPAN.CFG_HW_USART1_ENABLED=1
-STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_ONLY
+STM32_WPAN.CFG_IO_CAPABILITY=\ CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
STM32_WPAN.CFG_LPM_SUPPORTED=1
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=0xFA0
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=2500
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA=0xfa0
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=0x640
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=1000
STM32_WPAN.CFG_MITM_PROTECTION=CFG_MITM_PROTECTION_REQUIRED
STM32_WPAN.CFG_RTCCLK_DIVIDER_CONF=0
STM32_WPAN.CUSTOM_P2P_SERVER=Disabled
STM32_WPAN.CUSTOM_TEMPLATE=Disabled
STM32_WPAN.DBG_TRACE_UART_CFG=hw_uart1
STM32_WPAN.IPParameters=CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,CFG_HW_LPUART1_DMA_TX_SUPPORTED,LOCAL_NAME,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,CUSTOM_P2P_SERVER,BLE_DBG_DIS_EN,BLE_DBG_SVCCTL_EN,BT_SIG_HEALTH_THERMOMETER_SENSOR,BLE_CFG_DIS_MODEL_NUMBER_STRING,BLE_CFG_DIS_SYSTEM_ID,BLE_CFG_HTS_MEASUREMENT_INTERVAL,BLE_CFG_HTS_TEMPERATURE_INTERVAL_MAX_VALUE,BLE_DBG_HTS_EN,BLE_APPLICATION_TYPE,BT_SIG_BEACON,BT_SIG_BLOOD_PRESSURE_SENSOR,BT_SIG_HEART_RATE_SENSOR,CUSTOM_TEMPLATE,BLE_CFG_DIS_MANUFACTURER_NAME_STRING,BLE_CFG_DIS_SERIAL_NUMBER_STRING,BLE_CFG_DIS_HARDWARE_REVISION_STRING,BLE_CFG_DIS_FIRMWARE_REVISION_STRING,BLE_CFG_DIS_SOFTWARE_REVISION_STRING,BLE_CFG_DIS_IEEE_CERTIFICATION,BLE_CFG_DIS_PNP_ID,BLE_CFG_HTS_TEMPERATURE_TYPE_VALUE_STATIC,BLE_CFG_HTS_INTERMEDIATE_TEMPERATURE,BLE_CFG_HTS_MEASUREMENT_INTERVAL_IND_PROP,BLE_CFG_HTS_MEASUREMENT_INTERVAL_WR_PROP,BLE_CFG_HTS_TIME_STAMP_FLAG,BLE_CFG_HTS_TEMPERATURE_INTERVAL_MIN_VALUE,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_DEBUGGER_SUPPORTED,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART,CFG_DEBUG_TRACE_LIGHT
-STM32_WPAN.IPParametersWithoutCheck=CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,BLE_CFG_HTS_TEMPERATURE_INTERVAL_MAX_VALUE
+STM32_WPAN.IPParametersWithoutCheck=CFG_LP_CONN_ADV_INTERVAL_MIN,BLE_CFG_HTS_TEMPERATURE_INTERVAL_MAX_VALUE
STM32_WPAN.LOCAL_NAME=HTSTM
STM32_WPAN.LOCAL_NAME_FORMATTED=,'H','T','S','T','M'
USART1.AutoBaudRateEnableParam=UART_ADVFEATURE_AUTOBAUDRATE_DISABLE
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/app_conf.h
index d4e6428f3..179a47916 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/app_conf.h
@@ -63,7 +63,7 @@
#define CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT (0x03)
#define CFG_IO_CAPABILITY_KEYBOARD_DISPLAY (0x04)
-#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_DISPLAY_YES_NO
+#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
/**
* Define MITM modes
@@ -344,7 +344,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
@@ -391,6 +391,7 @@ typedef enum
#define CFG_LPM_SUPPORTED 0
#define CFG_DEBUGGER_SUPPORTED 1
#endif
+
/**
* When CFG_DEBUG_TRACE_FULL is set to 1, the trace are output with the API name, the file name and the line number
* When CFG_DEBUG_TRACE_LIGHT is set to 1, only the debug message is output
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/stm32wbxx_hal_conf.h
index 31d63e37a..7f1537260 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Inc/stm32wbxx_hal_conf.h
@@ -276,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/app_entry.c
index 97a6a8b82..7046354ac 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/main.c
index 72d282bcf..7920b2d20 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/main.c
@@ -209,12 +209,15 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +358,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -404,6 +404,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/stm32wbxx_hal_msp.c
index 87614ca60..f22ad0f38 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/Core/Src/stm32wbxx_hal_msp.c
@@ -88,6 +88,7 @@ void HAL_MspInit(void)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
+ HAL_DMA_MuxSyncConfigTypeDef pSyncConfig;
if(huart->Instance==LPUART1)
{
/* USER CODE BEGIN LPUART1_MspInit 0 */
@@ -132,6 +133,16 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
Error_Handler();
}
+ pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT;
+ pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_NO_EVENT;
+ pSyncConfig.SyncEnable = DISABLE;
+ pSyncConfig.EventEnable = DISABLE;
+ pSyncConfig.RequestNumber = 1;
+ if (HAL_DMAEx_ConfigMuxSync(&hdma_lpuart1_tx, &pSyncConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
__HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
/* LPUART1 interrupt Init */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/App/app_ble.c
index a684101d7..6a21d2ac7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/App/app_ble.c
@@ -396,7 +396,6 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
break;
case EVT_LE_PHY_UPDATE_COMPLETE:
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE \n");
-
evt_le_phy_update_complete = (hci_le_phy_update_complete_event_rp0*)meta_evt->data;
if (evt_le_phy_update_complete->Status == 0)
{
@@ -406,11 +405,12 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
{
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE, status nok \n");
}
+
ret = hci_le_read_phy(BleApplicationContext.BleApplicationContext_legacy.connectionHandle,&TX_PHY,&RX_PHY);
if (ret == BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("Read_PHY success \n");
-
+
if ((TX_PHY == TX_2M) && (RX_PHY == RX_2M))
{
APP_DBG_MSG("PHY Param TX= %d, RX= %d \n", TX_PHY, RX_PHY);
@@ -429,34 +429,32 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE END EVT_LE_PHY_UPDATE_COMPLETE */
break;
case EVT_LE_CONN_COMPLETE:
- {
+ {
hci_le_connection_complete_event_rp0 *connection_complete_event;
/**
* The connection is done, there is no need anymore to schedule the LP ADV
*/
connection_complete_event = (hci_le_connection_complete_event_rp0 *) meta_evt->data;
-
+
HW_TS_Stop(BleApplicationContext.Advertising_mgr_timer_Id);
- APP_DBG_MSG("EVT_LE_CONN_COMPLETE for connection handle 0x%x\n",
- connection_complete_event->Connection_Handle);
- if (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_CONNECTING)
- {
- /* Connection as client */
- BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_CLIENT;
- }
- else
- {
- /* Connection as server */
- BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_SERVER;
- }
- BleApplicationContext.BleApplicationContext_legacy.connectionHandle =
- connection_complete_event->Connection_Handle;
+ APP_DBG_MSG("EVT_LE_CONN_COMPLETE for connection handle 0x%x\n", connection_complete_event->Connection_Handle);
+ if (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_CONNECTING)
+ {
+ /* Connection as client */
+ BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_CLIENT;
+ }
+ else
+ {
+ /* Connection as server */
+ BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_SERVER;
+ }
+ BleApplicationContext.BleApplicationContext_legacy.connectionHandle = connection_complete_event->Connection_Handle;
/* USER CODE BEGIN HCI_EVT_LE_CONN_COMPLETE */
/* USER CODE END HCI_EVT_LE_CONN_COMPLETE */
- }
+ }
break; /* HCI_EVT_LE_CONN_COMPLETE */
default:
@@ -534,15 +532,15 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE BEGIN EVT_BLUE_GAP_PROCEDURE_COMPLETE */
/* USER CODE END EVT_BLUE_GAP_PROCEDURE_COMPLETE */
- break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
+ break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
}
break; /* EVT_VENDOR */
- default:
- /* USER CODE BEGIN ECODE_DEFAULT*/
+ default:
+ /* USER CODE BEGIN ECODE_DEFAULT*/
- /* USER CODE END ECODE_DEFAULT*/
- break;
+ /* USER CODE END ECODE_DEFAULT*/
+ break;
}
return (SVCCTL_UserEvtFlowEnable);
@@ -585,7 +583,7 @@ static void Ble_Tl_Init( void )
return;
}
- static void Ble_Hci_Gap_Gatt_Init(void){
+static void Ble_Hci_Gap_Gatt_Init(void){
uint8_t role;
uint8_t index;
@@ -654,7 +652,7 @@ static void Ble_Tl_Init( void )
if (role > 0)
{
- const char *name = "BLEcore";
+ const char *name = "HTSTM";
aci_gap_init(role, 0,
APPBLE_GAP_DEVICE_NAME_LENGTH,
&gap_service_handle, &gap_dev_name_char_handle, &gap_appearance_char_handle);
@@ -696,14 +694,14 @@ static void Ble_Tl_Init( void )
aci_gap_set_authentication_requirement(BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.bonding_mode,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.mitm_mode,
- 0,
+ 1,
0,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.encryptionKeySizeMin,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.encryptionKeySizeMax,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.Use_Fixed_Pin,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.Fixed_Pin,
-0
- );
+ 0
+ );
/**
* Initialize whitelist
@@ -718,7 +716,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
{
tBleStatus ret = BLE_STATUS_INVALID_PARAMS;
uint16_t Min_Inter, Max_Inter;
-
+
if (New_Status == APP_BLE_FAST_ADV)
{
Min_Inter = AdvIntervalMin;
@@ -737,6 +735,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
HW_TS_Stop(BleApplicationContext.Advertising_mgr_timer_Id);
APP_DBG_MSG("First index in %d state \n", BleApplicationContext.Device_Connection_Status);
+
if ((New_Status == APP_BLE_LP_ADV)
&& ((BleApplicationContext.Device_Connection_Status == APP_BLE_FAST_ADV)
|| (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_ADV)))
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HealthThermometer/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/BLE_HeartRate.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/BLE_HeartRate.ioc
index 4be91b01c..2dae347ef 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/BLE_HeartRate.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/BLE_HeartRate.ioc
@@ -94,12 +94,13 @@ Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -211,7 +212,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CK48CLockSelection,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGCLockSelection,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CK48CLockSelection,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGCLockSelection,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -234,7 +235,9 @@ RCC.RNGFreq_Value=16000000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
@@ -284,18 +287,16 @@ STM32_WPAN.CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION=1
STM32_WPAN.CFG_HW_USART1_ENABLED=1
STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_YES_NO
STM32_WPAN.CFG_LPM_SUPPORTED=1
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=0xFA0
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=2500
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA=0xfa0
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=0x640
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=1000
STM32_WPAN.CFG_MITM_PROTECTION=CFG_MITM_PROTECTION_REQUIRED
STM32_WPAN.CFG_RTCCLK_DIVIDER_CONF=0
STM32_WPAN.CUSTOM_P2P_SERVER=Disabled
STM32_WPAN.CUSTOM_TEMPLATE=Disabled
STM32_WPAN.DBG_TRACE_UART_CFG=hw_uart1
-STM32_WPAN.IPParameters=P2P_SERVER_NUMBER,CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,CFG_HW_LPUART1_DMA_TX_SUPPORTED,LOCAL_NAME,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,L2CAP_REQUEST_NEW_CONN_PARAM,CUSTOM_P2P_SERVER,BT_SIG_HEART_RATE_SENSOR,CFG_DEBUGGER_SUPPORTED,BLE_DBG_DIS_EN,BLE_DBG_HRS_EN,BLE_DBG_SVCCTL_EN,BLE_APPLICATION_TYPE,BT_SIG_BEACON,BT_SIG_BLOOD_PRESSURE_SENSOR,BT_SIG_HEALTH_THERMOMETER_SENSOR,CUSTOM_TEMPLATE,BLE_CFG_DIS_MANUFACTURER_NAME_STRING,BLE_CFG_DIS_MODEL_NUMBER_STRING,BLE_CFG_DIS_SERIAL_NUMBER_STRING,BLE_CFG_DIS_HARDWARE_REVISION_STRING,BLE_CFG_DIS_FIRMWARE_REVISION_STRING,BLE_CFG_DIS_SOFTWARE_REVISION_STRING,BLE_CFG_DIS_SYSTEM_ID,BLE_CFG_DIS_IEEE_CERTIFICATION,BLE_CFG_DIS_PNP_ID,BLE_CFG_HRS_BODY_SENSOR_LOCATION_CHAR,BLE_CFG_HRS_ENERGY_EXPENDED_INFO_FLAG,BLE_CFG_HRS_ENERGY_RR_INTERVAL_FLAG,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART,BLE_DBG_APP_EN,CFG_DEBUG_TRACE_LIGHT
-STM32_WPAN.IPParametersWithoutCheck=CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN
+STM32_WPAN.IPParameters=P2P_SERVER_NUMBER,CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,CFG_HW_LPUART1_DMA_TX_SUPPORTED,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,L2CAP_REQUEST_NEW_CONN_PARAM,CUSTOM_P2P_SERVER,BT_SIG_HEART_RATE_SENSOR,CFG_DEBUGGER_SUPPORTED,BLE_DBG_DIS_EN,BLE_DBG_HRS_EN,BLE_DBG_SVCCTL_EN,BLE_APPLICATION_TYPE,BT_SIG_BEACON,BT_SIG_BLOOD_PRESSURE_SENSOR,BT_SIG_HEALTH_THERMOMETER_SENSOR,CUSTOM_TEMPLATE,BLE_CFG_DIS_MANUFACTURER_NAME_STRING,BLE_CFG_DIS_MODEL_NUMBER_STRING,BLE_CFG_DIS_SERIAL_NUMBER_STRING,BLE_CFG_DIS_HARDWARE_REVISION_STRING,BLE_CFG_DIS_FIRMWARE_REVISION_STRING,BLE_CFG_DIS_SOFTWARE_REVISION_STRING,BLE_CFG_DIS_SYSTEM_ID,BLE_CFG_DIS_IEEE_CERTIFICATION,BLE_CFG_DIS_PNP_ID,BLE_CFG_HRS_BODY_SENSOR_LOCATION_CHAR,BLE_CFG_HRS_ENERGY_EXPENDED_INFO_FLAG,BLE_CFG_HRS_ENERGY_RR_INTERVAL_FLAG,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART,BLE_DBG_APP_EN,CFG_DEBUG_TRACE_LIGHT
STM32_WPAN.L2CAP_REQUEST_NEW_CONN_PARAM=1
-STM32_WPAN.LOCAL_NAME=HRSTM
STM32_WPAN.LOCAL_NAME_FORMATTED=,'H','R','S','T','M'
STM32_WPAN.P2P_SERVER_NUMBER=P2P_SERVER1
USART1.AutoBaudRateEnableParam=UART_ADVFEATURE_AUTOBAUDRATE_DISABLE
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Binary/BLE_HeartRate_reference.hex b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Binary/BLE_HeartRate_reference.hex
index dd85505d2..feea2aefa 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Binary/BLE_HeartRate_reference.hex
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Binary/BLE_HeartRate_reference.hex
@@ -1,1035 +1,1035 @@
:020000040800F2
-:10000000F8140020FD3F0008193E00081B3E0008C0
-:100010001D3E00081F3E0008213E000800000000B1
-:10002000000000000000000000000000233E000867
-:10003000253E000800000000273E0008293E000879
-:10004000194000081D40000821400008673E0008D4
-:1000500025400008294000085B3E0008613E00087A
-:100060002D40000831400008553E0008354000088A
-:10007000394000083D4000082D3E0008414000087E
-:1000800045400008494000084D4000085140000824
-:1000900055400008594000085D40000861400008D4
-:1000A00065400008694000086D4000087140000884
-:1000B00075400008794000087D4000088140000834
-:1000C00085400008894000088D40000891400008E4
-:1000D000333E0008393E000895400008994000086A
-:1000E0009D400008A1400008A5400008A940000864
-:1000F0006F3E00086B3E0008AD400008B1400008AC
-:10010000B5400008B9400008BD400008C1400008E3
-:10011000C5400008C9400008CD400008D140000893
-:10012000D5400008D94000083F3E0008DD400008E7
-:10013000E1400008E5400008E94000084FF0B04009
+:10000000F81400204D4000085D3E00085F3E0008E7
+:10001000613E0008633E0008653E000800000000E5
+:10002000000000000000000000000000673E000823
+:10003000693E0008000000006B3E00086D3E0008AD
+:10004000694000086D40000871400008AB3E0008A0
+:1000500075400008794000089F3E0008A53E000852
+:100060007D40000881400008993E00088540000856
+:10007000894000088D400008713E0008914000084A
+:1000800095400008994000089D400008A1400008E4
+:10009000A5400008A9400008AD400008B140000894
+:1000A000B5400008B9400008BD400008C140000844
+:1000B000C5400008C9400008CD400008D1400008F4
+:1000C000D5400008D9400008DD400008E1400008A4
+:1000D000773E00087D3E0008E5400008E940000842
+:1000E000ED400008F1400008F5400008F940000824
+:1000F000B33E0008AF3E0008FD4000080141000883
+:1001000005410008094100080D410008114100089F
+:1001100015410008194100081D410008214100084F
+:100120002541000829410008833E00082D410008B0
+:100130003141000835410008394100084FF0B04016
:10014000006800F0F000B02888BFB02070472DE9AB
-:10015000F041040062D0207881064FF0B04533D5DD
+:10015000F041040068D0207881064FF0B04539D5D1
:10016000A868E96810F00C0001F0030104D00C2825
-:1001700008BF012940F07E802868810702D5E06928
-:1001800000284BD0FFF7DAFF616A884207D20846A1
-:1001900000F09AFB002815D100F052FA0AE0286816
-:1001A00020F0F000014300F050FA606A00F08CFB90
-:1001B000002807D100F02AFCDFF8A407006800F04F
-:1001C00075FC002840F08E812078C10711D5A86801
-:1001D000E96800F00C00082801F0030103D00C28A6
-:1001E00008BF032969D12868810302D56068002807
-:1001F00014D0217888071AD5A868E96800F00C00A7
-:10020000042801F0030104D00C2808BF022940F0A3
-:100210008D802868410503D5E068002800F06281E0
-:100220006868216920F0FE4040EA0160686021684A
-:10023000DFF8306711F0180F00F076816069002850
-:1002400000F0AF80C806706840F19C80800708D439
-:10025000716841F00101716000F04AFC0746706866
-:10026000800700F1418100F043FCC01B0328F6D356
-:100270000320DEE1E06978B1296841F0010100F076
-:10028000CEFA06462868800700F13D8100F030FC78
-:10029000801B0328F6D3EBE728684008400028605D
-:1002A00000F026FC0646286800F0C6F98CD000F065
-:1002B0001FFC801B0328F6D3DAE76068B0F5803FA7
-:1002C00004D1286840F48030286011E0B0F5A02FF8
-:1002D000286806D140F480202860296841F48031E4
-:1002E00005E020F480302860296821F4802129600D
-:1002F000606860B100F0FCFB0646286880033FF5AB
-:1003000078AF00F0F5FB801B6528F6D3B0E700F06E
-:10031000EFFB06462868400C10F001003FF469AF7F
-:1003200000F0E6FB801B6528F4D3A1E7E06878B114
-:10033000296841F4807100F072FA06462868400589
-:100340003FF56EAF00F0D4FB801B0328F6D38FE798
-:10035000286820F48070286000F0CAFB06462868F0
-:10036000800A10F001003FF462AF00F0C1FB801B77
-:100370000328F4D37CE700F0BBFBC01B0328C0F0CC
-:10038000CF8075E740F0010000F070F90746706813
-:10039000800700F1E08000F0ABFBC01B0328F6D320
-:1003A00066E7706820F0040000F060F907467068A6
-:1003B000C00810F0010000F0DD8000F099FBC01BC8
-:1003C0000428F4D354E70528306806D140F004002F
-:1003D0003060316841F0010105E0400840003060C4
-:1003E000316821F004013160A06841F2893768B1B9
-:1003F00000F07EFB80463068800700F1D08000F07E
-:1004000077FBA0EB0800B842F5D331E700F070FBB2
-:100410008046306800F010F900F0C18000F068FB01
-:10042000A0EB0800B842F4D322E700F061FBC01B48
-:100430000328C0F0C2801BE740084000B06000F015
-:1004400057FB0746B06800F0F7F800F0BA8000F0FC
-:100450004FFBC01B0328F5D30AE700F049FB801BC4
-:100460000328C0F0C08003E700F042FB001B032814
-:10047000C0F0DA80FCE6E968DFF8EC04890889005E
-:10048000E960E9680140E96000F032FB044600F0F1
-:10049000E5F825D000F02CFB001B0328F7D3E7E696
+:1001700008BF012940F083802868800702D5E06924
+:10018000002851D0FFF7DAFF616A884207D208469B
+:1001900000F0A4FB00281BD100F05AFA10E02868F8
+:1001A00020F0F000014329606968206A21F47F4152
+:1001B00041EA00216960606A00F090FB002807D1E5
+:1001C00000F02EFCDFF8AC07006800F0B7FC002858
+:1001D00040F088812078C10711D5A868E96800F04F
+:1001E0000C00082801F0030103D00C2808BF0329E4
+:1001F00067D12868800302D56068002814D0217870
+:1002000088071AD5A868E96800F00C00042801F0F6
+:10021000030104D00C2808BF022940F08780286819
+:10022000400503D5E068002800F05C81696820691A
+:1002300021F0FE4141EA006169602168DFF838671A
+:1002400011F0180F00F078816069002800F0A88094
+:10025000C906706840F19580800707D4706840F047
+:10026000010000F00EFA07467068800700F13C813B
+:1002700000F086FCC01B0328F6D30320E1E1E0690F
+:1002800078B1296841F0010100F0D4FA06462868E7
+:10029000800700F1388100F073FC801B0328F6D33F
+:1002A000EBE728684008400000F0E5F906462868BA
+:1002B00000F0CAF98ED000F063FC801B0328F6D34F
+:1002C000DBE76068B0F5803F06D0B0F5A02F296865
+:1002D00007D141F480212960286840F480302860EB
+:1002E00006E021F4803129602A6822F480222A6005
+:1002F000606860B100F044FC0646286880033FF562
+:100300007EAF00F03DFC801B6528F6D3B5E700F01A
+:1003100037FC06462868400C10F001003FF46FAF30
+:1003200000F02EFC801B6528F4D3A6E7E06878B1C6
+:10033000296841F4807100F07DFA0646286840057E
+:1003400000F1E48000F01CFC801B0328F6D394E746
+:10035000286820F4807000F08EF906462868800A2C
+:1003600010F001003FF469AF00F00AFC801B032885
+:10037000F4D382E700F004FCC01B0328C0F0D8804F
+:100380007BE740F0010000F07CF9074670688007C9
+:1003900000F1E98000F0F4FBC01B0328F6D36CE702
+:1003A000706820F0040000F06CF907467068C0081F
+:1003B00010F0010000F0E68000F0E2FBC01B042812
+:1003C000F4D35AE70528306806D140F004003060C5
+:1003D000316841F0010105E04008400030603168BB
+:1003E00021F004013160A06841F2893768B100F062
+:1003F000C7FB80463068800700F1D98000F0C0FB61
+:10040000A0EB0800B842F5D337E700F0B9FB80460F
+:10041000306800F019F900F0CA8000F0B1FBA0EBE1
+:100420000800B842F4D328E700F0AAFBC01B032859
+:10043000C0F0CB8021E7B06840084000B06000F019
+:100440009FFB0746B06800F0FFF800F0C28000F0A4
+:1004500097FBC01B0328F5D30FE700F091FB801B2F
+:100460000328C0F0C88008E700F08AFB001B0328BF
+:10047000C0F0E28001E7E968DFF80005890889003B
+:10048000E960E9680140E96000F07AFB044600F0A9
+:10049000EDF825D000F074FB001B0328F7D3ECE641
:1004A00001281FD0E868226B00F00301914202BFCF
:1004B00000F07001626B914214D1A26BC0F306216F
:1004C000914202BF00F47811E26B91420AD1226C92
:1004D00000F06061914202BF00F06040616C8842B0
-:1004E00000F0A6800120A4E0706840F0040000F055
-:1004F000BDF807467068000708D400F0F9FAC01B81
-:100500000428F7D3B4E600F09BF85DE67068A169B3
-:1005100020F4706040EA0120706000F0A4F8074603
-:1005200000F089F87FF427AF2078410737D5DFF84E
-:100530003C743868C10529D400F0E0FA00F0D8FA1C
-:1005400080463868C10521D400F0D2FAA0EB08003B
-:100550000328F6D38CE6706820F0040070607068A1
-:10056000C00810F00100DFD000F0C2FAC01B042860
-:10057000F5D37DE600F077F8074600F05CF8D3D0BD
-:1005800000F0B6FAC01B0328F7D371E6A068012873
-:100590007FF419AF306840F00100306024E7217823
-:1005A0004A060ED5A06A0028B0683FF445AF40F077
-:1005B0000100B06000F09CFA0746B06880077FF544
-:1005C00034AFE06AA0B3A96801F00C010C293FF434
-:1005D00067AF0228286820F0807028607FF44BAF56
-:1005E00000F086FA064600F039F87FF436AFEA6884
-:1005F000DFF87C03216BA36B0240606B0A4302436C
-:10060000E16B206C42EA03220A43616C02430A4315
-:10061000EA60286840F080702860E96841F0805105
-:10062000E96000F065FA0446286880017FF51CAF98
-:100630000020BDE8F0817068400810F001007047AC
-:100640002968606A21F0F001014329606968206A25
-:1006500021F47F4141EA0021696070472868400E1B
-:1006600010F001007047706840084000706000F0B2
-:100670003FBA2DE9F8430400884646D0DFF8F4621B
-:1006800000F0C8F849D200F0CDF8074600F0C2F8F3
-:1006900043D000F02DFAC01B0228F7D90320B7E0A1
-:1006A00000F026FA401B022845D9F7E700F020FAAF
-:1006B000A0EB090002284ED9F0E700F019FAA0EBF0
-:1006C0000900022856D9E9E700F012FA401B022877
-:1006D0005FD9E3E700F00CFA401B022869D9DDE797
-:1006E00000F006FA401B41F28931884275D3D5E704
-:1006F000032802D13968890103E00028396802D152
-:10070000890762D401E049055FD4012080E000F050
-:10071000EFF9C01B022870D9C0E7207881074FF09D
-:10072000B0470BD5BA68A06822F0F0020243BA6065
-:1007300000F0DEF90546B868C003B1D52178DFF8CE
-:100740001C5288060AD52968606921F0F00101432E
-:1007500000F065F8814628688003A7D5217848060F
-:100760000BD52968A0690909090141EA101100F0B7
-:1007700056F881462868C0039FD5217848070BD5D5
-:10078000B968E06821F4E0610143B96000F0B0F9B4
-:100790000546B868800397D5217808070CD5B96855
-:1007A000206921F4605141EAC001B96000F0A0F96C
-:1007B0000546B86840038DD52178C80715D560680F
-:1007C000022895D1396889039FD5BA68920840EA12
-:1007D0008200B86000F08CF90546B868616800F0E6
-:1007E0000C00B0EB810F7FF47BAF306800F00700A6
-:1007F000804505D200F016F8074600F00BF886D1C8
-:1008000000F004F900F096F9BDE8F24300F04EB9AB
-:10081000BDE8F283306800F007004045704729606A
-:1008200000F066B93168C90848EAC101316000F0DA
-:100830005FB938B54FF0B044504DA16811F00C01CC
-:1008400006D1FFF77BFCC0F3031055F8200032BD42
-:1008500004294B4A05D008294A4804D12168C90215
-:1008600022D5104632BDE16801F00301022904D00F
-:10087000032904D12168C90207D5104605E0FFF716
-:100880005DFCC0F3031055F82000E168E268E368FE
-:10089000C1F306214843C2F30211491C5B0FB0FBB0
-:1008A000F1F05B1CB0FBF3F032BD80B5FFF7C1FF88
-:1008B0003149FFE7344A0968C1F3031152F82110A6
-:1008C000B0FBF1F002BD000070B52C49B1282EBF7D
-:1008D000CC6AC0F3031051F820402048056800F0AE
-:1008E00049F9294905F00F0551F825202749B4FB9E
-:1008F000F2F20024B2FBF1F1B0F5007F2BA220460A
-:1009000009D100BF22A353F820508D4214D2401CBD
-:100910000328F8D912E000BF21A353F820508D42DC
-:100920000AD2401C0328F8D308E000F0E1F8801B4D
-:1009300003280CD3032070BD52F820400D4D2868C9
-:10094000C00844EAC000286000F0D2F806462868D3
-:1009500000F00700A042E8D1002070BD0801005857
-:100960004800002090000058FFFFFEEE00040058F1
-:100970008C80C1110040005808000058D83D000884
-:100980000024F4000048E801983D000840420F00B0
-:1009900012000000240000003600000040000000AB
-:1009A000060000000C000000100000000000000025
-:1009B0000100000002000000040000003249002095
-:1009C00008604FF0B0413148026842F470020260A2
-:1009D0004FF4E022086840F0010008608A600B686C
-:1009E0002B4803402B480B60026822F0050202608E
-:1009F000002243685B085B0043602748C8600861C9
-:100A0000086820F4802008608A61704710B54FF0B4
-:100A1000B04222491068C0F3031001EB8003186C48
-:100A2000936803F00C03042B04D0082B04D00C2B88
-:100A300004D01CE01A481AE01A4818E0D368D468B9
-:100A4000C4F3021403F00303641C022B08BF144810
-:100A500002D0032B08BF1348B0FBF4F3D068D4686E
-:100A6000C0F30620640F4343641CB3FBF4F00E4B49
-:100A7000186090681A68C0F3031051F82000B2FBA8
-:100A8000F0F0186010BD000008ED00E088ED00E017
-:100A9000FBFEF6FA9400005800100422983D00086E
-:100AA0000024F4000048E8015C00002070B50F4EFF
-:100AB0000446B0680025A8B1FFF7F7FEB2684FF40E
-:100AC0007A71B1FBF2F2B0FBF2F000F0ACF848B989
-:100AD000102C07D2002221464FF0FF3000F06CF8B6
-:100AE000746000E00125284670BD00BF440000206E
-:100AF00001480068704700BF4400002002480168B8
-:100B000041F480710160704700040058164810B528
-:100B1000016841F480710160032000F040F800207A
-:100B2000FFF7C4FF0024002814BF012400F0B8F828
-:100B3000204610BD0D48406870470C4880687047DB
-:100B40000B480BE00A48016821F002010160704780
-:100B50000748016821F004010160704701684908F5
-:100B60004900016070470000004000584400002028
-:100B7000042004E0DFF80800006800F4C06070475B
-:100B8000000400580901020002D43C488154704717
-:100B90003B4B02F00F021A4402F8041C7047394B19
-:100BA00019684FF6FF020002114000F4E0600843AC
-:100BB000354908431860704738B5324B1C68C4F398
-:100BC0000223C3F10704052C28BF04241D1D072D93
-:100BD00034BF0023DB1E012505FA04F4641E214006
-:100BE000994005FA03F35B1E1A401143BDE83440F7
-:100BF000C8E7010007D4012200F01F01234B8A40FF
-:100C0000400943F82020704701000BD4012200F076
-:100C10001F011F4B8A40400943F82020BFF34F8F2C
-:100C2000BFF36F8F704710B5401EB0F1807F01D3C6
-:100C3000012010BD174C60600F214FF0FF30FFF70F
-:100C4000A1FF0021A16007202060002010BD01004D
-:100C500007D4012200F01F010F4B8A40400943F8DE
-:100C600020207047010007D4012200F01F010B4B28
-:100C70008A40400943F820207047000000E400E06B
-:100C800018ED00E00CED00E00000FA0500E100E0E6
-:100C900080E100E010E000E000E200E080E200E03F
-:100CA000134881B0016841F400210160006800F43C
-:100CB00000200090009801B0704710B504460D491F
-:100CC0002068884213D1FFF719FFFFF717FF0A4882
-:100CD000016821F4407141F480710160026842F4BE
-:100CE000004202602046BDE8104000F012B810BD7E
-:100CF0005000005800280040900000588A60FF21F2
-:100D00000268516280F82130002180F82010002014
-:100D1000704790F82010012901D10220704701216D
-:100D200080F82010022280F82120CA21036859622D
-:100D3000532201684A62012301688A6842F0200256
-:100D4000FFF7DCBFDFF84C150A6892B200E00246FC
-:100D5000086880B28242FAD170472DE9F041DFF88D
-:100D60003865DFF838853178044618256843062948
-:100D700008EB000708D130787070347079754FF047
-:100D8000FF30706000203DE000F07BF8B968091882
-:100D9000B96008F10803B96832786A439A589142F9
-:100DA000327813D308F1150315FB02FC13F80C304D
-:100DB000062B29D008F108066B43F358994222BF4D
-:100DC00008F115036A439A5CECD21DE011463378B2
-:100DD00069439A420FD008F1140C08F1150E1CF863
-:100DE000013015FB03F50EF805407A753B7508F1E7
-:100DF0001402545403E008F114037A755C543178FA
-:100E000071703470BDE8F0811146694308F1150333
-:100E10005B5C062B04D008F1140615FB03F5745532
-:100E20007B753A7508F115025454EBE7F0B5DFF81D
-:100E30006834DFF868541E78182402466243B042D2
-:100E40002A4404D118785870547D1C700FE0167D28
-:100E5000507D92F815C005F115076643062807F87E
-:100E600006C004D0167D143514FB00F42E55012065
-:100E700010731A78062A02BF00294FF0FF3058601D
-:100E8000F0BD10B5DFF81044606810F1010F10D00C
-:100E9000FFF758FF6168DFF8082481422FBF6368BD
-:100EA00061685388CB1851781278181A4843D0409B
-:100EB00000E0002080B210BD2DE9F84FDFF8E053CC
-:100EC000DFF8E0B3D5F80880D8F80000DBF80010B0
-:100ED0004A0500F0A2F9DFF8C063DFF8C0A321F4EF
-:100EE000806181604FF0180934780AF1080019FB1D
-:100EF00004F14758FFF7C5FF874211D200270121AF
-:100F0000B170062C3FD019FB04F40AF108010A590C
-:100F1000824210D200230B510AEB04014C7DF0E712
-:100F2000A9884118B94202D2AF880021E8E701221E
-:100F30003F1AB270E5E70A590AF10803121A1A516A
-:100F4000EAE7022802DA2878012800D07F1ED8F8C4
-:100F50000000C1684A07FAD500F052F9DBF80C002E
-:100F6000000CBFB247EA0047CBF80C70FFF7EAFE6F
-:100F70007060A8680068816841F480618160AFF3A7
-:100F80000080BDE8F18FB8B20028DAD1FFF7DAFEB1
-:100F900070600320BDE8F24FFFF759BE2DE9F8431A
-:100FA000EFF3108872B6BE4DBC4BA8680168CA2228
-:100FB0004A625320486218208A6822F480628A605C
-:100FC000B54A1678374647431F44387B022823D159
-:100FD0003C68D7F810909078D8B17A7B012A0AD172
-:100FE00001213046FFF722FF88F3108879683046E8
-:100FF00000F019F904E088F31088304600F0C6F8D4
-:10100000A86800F01AF831462246484600F054F924
-:101010000DE0FFF751FF08E0C8684207FCD500F07B
-:1010200086F84FF40020A049086088F31088FF225A
-:10103000A86801684A62BDE8F1830068CA2141627C
-:10104000532242627047F8B5954CA160CA220968E4
-:101050004A625323934A4B62156845F02005156098
-:10106000136803F00703C3F10403237095682D0C84
-:1010700005F07F056D1C6570EDB29268C2F30E023B
-:10108000521C628092B2521E6A43A2F5A072DA40EC
-:101090004FF6FF739A422CBFA380A280834A136845
-:1010A00043F400231360824B1D6845F400251D6046
-:1010B00048BB7948012383704FF0FF35456000231A
-:1010C000764D00260C355FFA83FC182717FB0CFCC5
-:1010D0005B1CDFB205F80C60062FF4DB06230370FF
-:1010E000886820F48060886000F021F84FF40021C7
-:1010F000D1600320FFF7B6FDA0680068816841F465
-:101100008041816005E0C868410544BF0320FFF7C6
-:101110009EFDA1680A68FF2050620022032103207F
-:10112000FFF74AFDBDE8F2400320FFF762BDC86843
-:1011300000F0800060F49060C86070472DE9F041D5
-:1011400004460025EFF3108672B61827DFF84CC16D
-:101150000CF10C0E07FB05F81EF8080010B16D1C11
-:10116000062DF5DB062D0CD06F430CEB0700012795
-:10117000077386F310880461427303600D700020CA
-:1011800002E086F310880120BDE8F081F8B507463B
-:10119000EFF3108472B60320FFF736FD404DAE68C2
-:1011A0003068FFF74BFF3B46182042494343CA5C77
-:1011B000022A1BD100213846FFF738FE3648017855
-:1011C00006290ED1306837490A68530500F025F822
-:1011D00021F480618160C1684A07FCD500F010F8F5
-:1011E00004E04078884218BFFFF766FEA9680A68E5
-:1011F000FF2050620320FFF7FCFC84F31088F1BD50
-:10120000C16801F0800161F49061C1604FF4002079
-:10121000254908600320FFF725BD02D5C1684A07AC
-:10122000FCD4816870472DE9F04180460F46424664
-:1012300018201A4942438C18237B022B04BF4046D6
-:10124000FFF7A4FFEFF3108572B60320FFF7DCFC75
-:10125000134EB068FFF7F1FE02202073A7606760AD
-:101260004046FFF77AFD0C490A784978914202D04E
-:10127000FFF722FE02E0A168081AA060FF20B16813
-:101280000A6850620320FFF7B4FC85F31088BDE8BC
-:10129000F081000028280040DC040020FC00002031
-:1012A000A8040020082800400C0800580008005836
-:1012B0008008005808010020104730B4002513E0D2
-:1012C00050F8042BD30744BFA9F101039A18091F52
-:1012D000042942F8045BFAD213468C0744BF1580F8
-:1012E0009B1CC90748BF1D7050F8041B0029E7D19B
-:1012F00030BC704738B58EB002A8DFF87013DFF845
-:1013000070430FF2C935302200F008FA00940195BD
-:1013100069460FF2A130D74D00F00CFA01210220EE
-:1013200000F0EBFAD44A0021042000F079FB02A877
-:1013300000F0ECFB00F0A2F800F0F0FB05F1260451
-:1013400000204FF6FF7185F89000218001200FF2F8
-:101350004D32002100F064FB00F042FC00F06CFC18
-:101360000FF23133002205F191010020FFF7E6FE74
-:101370000220E07001210D20A170207102211820AF
-:10138000A17060710321BD48A1708022A02102805C
-:101390004180012000F024F90FB030BD7CB5064635
-:1013A000B44D7078052805F1900404D03E280DD086
-:1013B000FF2824D03AE0B188E88C814202D1002194
-:1013C000E9842170012000F00BF92FE0F07801286A
-:1013D00008D00C282AD1E88C6A460DF1010100F0F2
-:1013E000B6FC23E06078FFF7D1FE207804280CBF1C
-:1013F000062005202070B6F80500E88416E0B6F84F
-:10140000030040F20241401A08D0C01E0BD0001F5A
-:1014100002BF0121E88C00F0DAFE07E0E88C984971
-:1014200000F0B4FD02E0E88C00F07EFE012076BD05
-:1014300000F067BE8F48C08C00F0F9BD1CB58D4C24
-:10144000E08C01AA0DF1050100F081FCA0B99DF826
-:101450000500022804BF9DF80400022804D10021E1
-:1014600000910123012204E00020009002230222C7
-:101470000021E08C00F0BBFC13BD000078B500BF7C
-:1014800097A0804D0088804E89B0ADF81A0000F01A
-:1014900019FC286810F1010F0ED069683074090A30
-:1014A000020A000CB074727406F110046868317599
-:1014B000F074090A717506E0002000F09DFE04003A
-:1014C00008BF0FF2282422460621002000F0A8FEC3
-:1014D0006079307221797172E078B072A178F1721E
-:1014E000607830731820217882A47173224610210D
-:1014F00000F096FE83A600F06DF84EF66E5108914E
-:1015000007AA2868079006212E2000F089FE2246AF
-:101510001021182000F084FE00F05CF81821012052
-:1015200000F09FFE00F0D4FE0DF1160006A9019018
-:10153000009105AB07220021012000F042FD00BF11
-:1015400068A0BDF818104B4C00900723BDF814009C
-:10155000002200F07AFF0DF11A0000900223BDF87E
-:101560001610BDF81400002200F06FFF02220221C5
-:10157000002000F01FFC0120207000F0C4FC0120BE
-:1015800060700021E170082060751021A1750120B4
-:101590002075A07000203D49A161C1B221440871AD
-:1015A000401CC1B21029F8DB002004900023A1697F
-:1015B000207D039102900122A17D607D0191009028
-:1015C0006178A07800F0B3FCA07808B100F080FD4D
-:1015D0000AB070BD32461021082000F021BE000084
-:1015E0002DE9F841012887B0044603D12348058836
-:1015F000468803E04FF4C8654FF47A66DFF87480DC
-:1016000008F190077878FFF7C1FD022C05D13878F2
-:10161000012814BF022800F012FC3C700020069044
-:10162000059008F1290204925FF0060298F828005C
-:1016300038A103900291019200230093324629467B
-:10164000002000F00FFC10490E2000F009FD0028DA
-:1016500008BF012C06D178780D4908B0BDE8F041EB
-:10166000FFF7E1BD08B0BDE8F0810000BC3E000816
-:10167000A40803206800002073170008EC04002071
-:1016800040E201008075FF1F0400002007B2010046
-:1016900046E001000021012000F0CFB902209FE7C1
-:1016A0000021042000F0C9B9012000F0E8B90120B0
-:1016B00000F0EDB910B50446616801F1080000F0D2
-:1016C0003DFA00B10120207010BD000010B10128CA
-:1016D00003D07047072000F0C0B9072000F0C5B95B
-:1016E0004003000053544D33325742006C7AD8AC5B
-:1016F00057720000123456789ABCDEF012345678D5
-:101700009ABCDEF0FEDCBA0987654321FEDCBA092B
-:101710008765432109485253544D00004AB10000E7
-:1017200011F8013B521E00F8013B1CBF11F8013BB0
-:10173000F8E770477FB50C466A4D61686A4EE8610C
-:101740002962284600F0F8FE246805F1240000F024
-:10175000FDFE746006F1080000F0F8FE0120307014
-:10176000296829B10FF2491200920294684688470D
-:101770007FBD1FB55C4C04F1080000F0EAFEE8B93B
-:101780002078D8B1694604F1080000F00BFF012071
-:1017900054492070C96941B10098029001A8884756
-:1017A0009DF804102170080003D0009800F0ADFFF0
-:1017B00004E0009904F1080000F0D4FE04F10800F0
-:1017C00000F0C7FE28B9207818B104F10800FFF72F
-:1017D00067FF1FBD2DE9FC410446002000F05EF8C4
-:1017E00066882088A268DFF8FC80C6F3090646EA0E
-:1017F0008026E068B6B2C1B2304600F03BF8002562
-:1018000048F2E800FFF753FF08E07888B04202D1C1
-:10181000226939781170787800B1012508F1240027
-:1018200000F097FEF0B9694608F1240000F0BAFE16
-:101830000098014600F10B07487A0F28E5D0B7F869
-:101840000100B0420CD1887A6169C01EC0B28842E2
-:10185000C8BF0846606102462069F91CFFF75EFFB9
-:101860003878D9E72800CBD0012000F017F8002005
-:10187000BDE8F68110B513461B4A5468A4F8090068
-:10188000E1720A46194604F10C00FFF747FF154ABA
-:101890001369BDE810400021002018471149096A6A
-:1018A00008B921B1084700291CBF0120084770472B
-:1018B00010B50146487A0F2818BF0E2807D10B48EB
-:1018C00000F05AFEBDE810400020FFF7EDBE064CC8
-:1018D00004F1080000F050FE04F10800BDE81040DB
-:1018E000FFF7DEBEE4030020880400200804002087
-:1018F0001948002101604160704710B500F00CF8F4
-:101900005C6819B1012904D1204301E024EA0000F8
-:10191000586082F3108810BDEFF3108272B60E4B40
-:10192000704738B5EFF3108472B60B490B4D086859
-:1019300020B1296888476A6890470AE0486820B162
-:10194000A8688047E968884703E028698047696993
-:10195000884784F3108831BDB4040020E43F0008B8
-:101960002DE9F041544CDFF85481A5692840A0616D
-:1019700031E0491C54F831000742FAD004EBC107AA
-:10198000184079681040014204BF4FF0FF327A607E
-:101990007E68304000F094F86062012101FA00F0A6
-:1019A00086437E60EFF3108272B6606A23698140DD
-:1019B000C9430B402361022004EBC00353F8087CA9
-:1019C0000F40401E43F8087CF6D182F31088606A0D
-:1019D00058F82010884763692069A26918401042AE
-:1019E00007D0E069216A084203D1002103EA020717
-:1019F000C0E700F0D8FEEFF3108872B62169606985
-:101A0000A2690140114201BFE069216A084200F069
-:101A10005AFF88F3108800F073FFA561BDE8F081DC
-:101A200038B51446EFF3108572B600F049F8234933
-:101A300041F8204085F3108831BD30B5EFF31082B6
-:101A400072B61D4B1C6904431C6153F83150284386
-:101A500043F8310082F3108830BDEFF3108172B685
-:101A6000154A536923EA000005E0EFF3108172B6CE
-:101A7000114A53691843506181F310887047EFF39E
-:101A8000108172B60C4AD3691843D061F4E770B57F
-:101A9000094C656A266A2062012101FA05F502E017
-:101AA000284600F012FF216AE0690842F8D0884316
-:101AB0002662E06170BD00001C000020A40200202E
-:101AC00002460020110C090404BF1020120412F079
-:101AD0007F4F04BF0830120205A312F0704F04BFFD
-:101AE000001D1201120FC0F11F00995C401A7047CF
-:101AF00004030202010101010000000000000000D7
-:101B000000F052FF9DF80E0005B000BDF8B500F1E1
-:101B10000C026B4621214FF66640F1E71C4900207C
-:101B2000087700221B48027000F036B818490A7F77
-:101B300041F82200087F401C0877704770B50446C2
-:101B40006078FF2802BFB4F8030000F47F40B0F5CE
-:101B5000406F12D100260E4D00E0761C297FF0B2B6
-:101B600088420AD2F1B255F8212020469047010060
-:101B7000F3D002D0022805D006E02046BDE8704030
-:101B8000FFF70CBC002070BD012070BD00000000FC
-:101B900058040020F404002080B500F055FF00F048
-:101BA00054FF00F053FF00F08BFF00F08AFF01F0BC
-:101BB00009F801F06DF801F06CF801F06BF801F034
-:101BC0006AF801F069F801F068F801F067F801F0CF
-:101BD00066F801F065F8BDE8014001F062B8000068
-:101BE000E0B500BF05A1009104228DF804206946EC
-:101BF00042F6292000F051FF07BD000053544D006C
-:101C000010B500782B4C18B1022810D005D310BDA8
-:101C100000210120A180207310BD607BFFF7B6FA80
-:101C2000607BBDE8104040F60101FFF7FCBA607B25
-:101C3000BDE81040FFF7AABA10B50FF24502002127
-:101C40000220FFF7EDFE1B4C0020042120732170C1
-:101C500042F63820214601F000F80A21A1801F2019
-:101C60004FF48061E072E180012004F10D01A07267
-:101C70000122BDE810400FF245030020FFF75EBAD5
-:101C80000D480C490068CA7A00F0070041304880CE
-:101C90001307087B04D518B98888401D888003E0A5
-:101CA000012804BF00200873891C42F6372000F089
-:101CB000D4BF000078040020282800400021022022
-:101CC000FFF7BBBE00B587B000F013F800F020F8B6
-:101CD000032100F009F800F013F800284CBFFF20A2
-:101CE0009DF8000007B000BDADF80410ADF8061077
-:101CF000704700208DF800007047049207A90391F7
-:101D000001220692CDF814D0002101A8FFF762BD90
-:101D10001822002101A800F0CBBF0F210291ADF8DD
-:101D200006207047ADF806200821ADF80410032204
-:101D3000704709220021684600F0BABF0821ADF8BB
-:101D4000041070471822002102A800F0B1BF70B53E
-:101D5000C8B006460C4615460522FFF7EBFFADF866
-:101D60002060FFF7EFFF302200F013F8052200F0AB
-:101D70001AF8002848BFFF2009D49DF8000030B9A8
-:101D80009DF80300207000209DF80410297048B0D1
-:101D900070BDADF80A200821ADF8081002220592A6
-:101DA00008A9049170470792CDF818D0002102A825
-:101DB000FFF710BD18B5C7B000F00CF83122FFF7DF
-:101DC000B1FFFFF79AFF00284CBFFF209DF80000ED
-:101DD00048B010BD00248DF81C008DF8004007A805
-:101DE000417082700021182201A800F061BF5CB52B
-:101DF000C7B00026ADF81C008DF81F2007A84C9C2A
-:101E0000817003718DF80060ADF82140FFF780FF0D
-:101E1000FFF794FF3222FFF780FF072100F009F857
-:101E2000FFF770FF00284CBFFF209DF8000049B06D
-:101E300050BD049107AA012106910392704700B595
-:101E400087B000208DF8000000F08BF9812200F0AF
-:101E500052F900F094F900284CBFFF209DF80000D3
-:101E600007B000BD2DE9F84DC7B09446DDF840E15C
-:101E7000519A559D569EDDF84CA1ADF81D108DF878
-:101E80001C004FF0000BADF81FC08DF821308DF80D
-:101E900022E000F02CF800F01FF824F8095F6680BB
-:101EA00000F05FF93F20ADF8040083210120ADF878
-:101EB000061000F00AF800F064F900284CBFFF207B
-:101EC0009DF8000048B0BDE8F08D07AA5744069081
-:101ED00003920D370497704788F800A007AC549917
-:101EE000E419524608F10100544400F0DBBE8DF8BD
-:101EF0002320174652998DF800B00DF1240809A847
-:101F0000B84400F0CFBE00B5C7B000F0C7F800F08D
-:101F100028F900F01BF9852200F0C6F800F030F92E
-:101F200000284CBFFF209DF8000047B000BD2DE900
-:101F3000F043C7B0DDF838814F9E509D519F529CB1
-:101F40008DF81C004FF0000907A88DF80090417033
-:101F500082700DF123018DF81F308DF820808DF8EF
-:101F600021608DF822500F608DF8274000F0F9F8BD
-:101F7000862200F0C0F80C2200F0FEF800284CBFCA
-:101F8000FF209DF8000047B0BDE8F08300B5C7B062
-:101F90000023ADF81C008DF800300DF11E00182252
-:101FA000016001A8002100F083FE882200F038F8CB
-:101FB00000F0E2F800284CBFFF209DF8000047B079
-:101FC00000BDF8B5C8B005460E4617461C4600F0E1
-:101FD00022F808A8467087708DF8205000F0EEF8BF
-:101FE0008A2200F0DAF8032200F0DDF8002848BF6A
-:101FF000FF200ED49DF8000058B94F994E98BDF8B7
-:1020000001202280BDF803300380BDF80500088060
-:10201000002049B0F0BD07220021684600F048BE0C
-:10202000ADF806203F21ADF804100622704700B538
-:10203000C7B000F040F800F094F800F087F88D2267
-:102040000F210291ADF80620022100F0A0F800F067
-:1020500098F800284CBFFF209DF8000047B000BD55
-:1020600018B5C7B0002304468DF800308DF81C4029
-:10207000224600F0A8F800F074F800F067F88E220D
-:1020800000F0B3F8641C0692049400F07AF800287B
-:102090004CBFFF209DF8000048B010BD00228DF815
-:1020A00000208DF81C007047ADF8062007A90391A9
-:1020B00001220492704700228DF80020ADF81C0028
-:1020C0007047ADF806203F21ADF80410022270479A
-:1020D00000B587B000208DF8000000F042F8922291
-:1020E00000F009F800F04BF800284CBFFF209DF8E5
-:1020F000000007B000BDADF806203F21ADF8041088
-:10210000704700B587B000208DF8000000F029F876
-:102110009422FFF7F0FF00F032F800284CBFFF20B8
-:102120009DF8000007B000BD00B5C7B0FFF7C3FFC2
-:1021300000F017F89522FFF7C4FF00F01DF8002803
-:102140004CBFFF209DF8000047B000BD3F21ADF817
-:10215000041070470023ADF81C008DF81E108DF898
-:1021600000301822002101A800F0A2BDADF8062021
-:102170003F21ADF804100322049207A90391012224
-:102180000692CDF814D0002101A8FFF723BB0491DB
-:1021900007AA0121069103927047ADF80A203F215A
-:1021A000ADF808107047059208A90491072207921C
-:1021B000CDF818D0002102A8FFF70CBB182200218F
-:1021C00002A800F075BD0DF11D0000F06BBD00B55B
-:1021D000C7B0FFF7BFFFA522FFF7C8FF00284CBF1D
-:1021E000FF209DF8000047B000BDADF8062007A90C
-:1021F000039101227047000020B501460648074DB3
-:10220000C2798A4218BFA84218BF0838F8D18A425A
-:1022100018BF002020BD00BFF873FF1F0070FF1F14
-:1022200018B50C46C7B0114600F03BF88DF81D40BC
-:1022300022460DF11E0000F035FD00F027F83F2189
-:10224000ADF804100C2200F026F8A41C06920494A9
-:1022500000F038F800284CBFFF209DF8000048B07F
-:1022600010BD00B5C7B000F00AF80F2200F01FF84B
-:1022700000284CBFFF209DF8000047B000BD0023A0
-:102280008DF81C008DF81D108DF8003018220021EB
-:1022900001A800F00DBDADF8062007A903910122A9
-:1022A000704700228DF800208DF81C007047ADF8B3
-:1022B00006203F21ADF804100222049207A90391E1
-:1022C00001220692CDF814D0002101A8FFF782BAAE
-:1022D00000B587B000208DF8000000F0E3F840F270
-:1022E000011200F022F90122069200F0E2F8002823
-:1022F0004CBFFF209DF8000007B000BD2DE9F8415C
-:1023000004460128C7B0884616461F4608BF02206B
-:1023100003D002280CBF102000200DF11D031D1852
-:1023200000F035F8012C8DF81C4002D0022C1AD098
-:102330001BE00224224641460DF11D0000F0B2FCD4
-:102340002E706F7000F0AEF800F0A6F84FF48172B6
-:1023500000F017F8E41C0692049400F0AAF8002894
-:1023600005D5FF2009E01024E4E7472005E09DF8AB
-:10237000000010B94E9800F063F8FFE748B0BDE8E0
-:10238000F081ADF8062007A90391032270470322CC
-:102390000021684600F08CBC2DE9F64F0C4605463E
-:1023A000012CC7B09B4608BF022003D0022C0CBFF3
-:1023B000102000200DF11F031E18FFF7E8FF012C6D
-:1023C000ADF81C508DF81E4002D0022C2BD02CE012
-:1023D0000227569C559DDDF85091DDF84CA1DDF8A3
-:1023E000488148993A4600F053F8A6F800B086F8BC
-:1023F000028086F803A086F804907571B47100F02D
-:1024000051F800F049F84FF4827207A9ADF80620A0
-:1024100003910A3703220497069200F04AF8002835
-:1024200005D5FF2009E01027D3E7472005E09DF8F8
-:10243000000010B9579800F003F849B0BDE8F08FDC
-:10244000BDF8011001800020704778B5C7B01D4667
-:102450004C9B00F059F800268DF800608DF8215053
-:102460002A4619460DF1220000F01CFC00F01AF873
-:1024700000F012F84FF4837200F051F8AD1D00F037
-:1024800016F800284CBFFF209DF8000049B060BD41
-:102490000DF11F0000F006BC3F21ADF8041070479D
-:1024A0008DF800301822002101A800F001BC06922E
-:1024B0000495CDF814D0002101A8FFF78BB9B8B569
-:1024C000C7B04C9C4D9D00F01FF800278DF82130BF
-:1024D0008DF800708DF822402246294600F01BF846
-:1024E000FFF7E0FFFFF7D8FF4FF4937200F017F803
-:1024F000E41D06920494FFF7DCFF00284CBFFF2088
-:102500009DF8000048B0B0BDADF81C00ADF81E103D
-:102510008DF8202070470DF1230000F0C3BBADF80B
-:10252000062007A9039101227047ADF806203F213C
-:10253000ADF80410704700000249034A01600261CF
-:10254000704700BF052600082F2600080060406085
-:102550007047EFF3108172B6026882420CBF01200F
-:1025600000201CE0EFF3108272B603680B60486035
-:1025700001600868416023E0EFF3108272B60860E2
-:1025800043684B6041604868016019E0EFF31081D7
-:1025900072B6436802681A6042680068426081F35C
-:1025A0001088704710B5EFF3108472B602680A60A5
-:1025B0000068FFE7FFF7EAFF84F3108810BD0860AA
-:1025C00082F310887047000000F0F0BB6C486D4942
-:1025D000016001F12002426001F13003836001F1EA
-:1025E0003C02026201F14403C36001F14C0202614A
-:1025F00001F16803436101F16C0282617831C161CC
-:1026000000F0DCBB38B504465F4D05F11000FFF764
-:102610009DFF5B494868A168016005F11001E2680F
-:10262000C2608160456000F0E5FB58482DE080B550
-:1026300053494A6813680120187200F0E1FB00203A
-:1026400002BD38B5514C504D07E0694605F1100008
-:10265000FFF7A8FF00982168884705F11000FFF7F1
-:1026600078FF0028F1D031BD48484168084738B5A7
-:102670000446474D2846FFF769FF4149C868A168ED
-:102680000160456000F0C1FB42482168016062685A
-:102690004260002032BD80B53949CA6813681020F5
-:1026A000187200F0B8FB002002BD3549CA683949EC
-:1026B00010680B68184738B5364C354D06E069464A
-:1026C0002846FFF76FFF0098616888472846FFF7A4
-:1026D00040FF0028F3D031BD38B504462E4D2846C2
-:1026E000FFF734FF2D48FFF731FF25480069A16847
-:1026F0008160E268C26005612168016062684260D1
-:10270000216941616269826131BD80B5014623481A
-:10271000FFF732FFBDE802400FF2050000F08BBB6F
-:1027200038B5174C1D4D08E069462846FFF73AFFBB
-:10273000009920690069FFF71FFF2846FFF709FF8E
-:102740000028F1D031BD10B5154C2046FFF7FEFE34
-:102750000B4948690460BDE8104000F080BB1CB51F
-:102760000F4C06E069462046FFF71CFF009800F07A
-:1027700019F82046FFF7EDFE0028F3D013BD000046
-:1027800000000320B009032084080320C4040020B3
-:102790009C080320CC040020340A0320BC04002041
-:1027A0003C0A0320704770473A4981B00A680243E7
-:1027B0000A60096808400090009801B0704710B5A1
-:1027C000354C88B0206840F400402060FFF790F856
-:1027D00032490020FEF737FC6846142100F052FB16
-:1027E0000020029003214FF46042019100920120E9
-:1027F000FFF7DAFF69464FF0904000F047FB606C4E
-:10280000400840006064182100910220FFF7CCFFCF
-:102810006946234800F03AFB606C20F002006064D7
-:10282000FEF78EF9FEF78EF9FEF792F901210120ED
-:10283000FFF763F80121002000F0FCFB01210120DB
-:1028400000F0F8FB0121022000F0F4FBFFF7BEFED0
-:10285000144A00210820FFF7E3F8134C0FF24D0251
-:102860000FF24D00019204F23C510091694600F0D4
-:1028700049F804F25471029104F5C96240F23C51E6
-:1028800003920591049402A8FFF726FFFFF79CFE30
-:1028900008B010BD4C00005808000058100400207B
-:1028A0000004004847290008240003207047000066
-:1028B00080B5FFF748FFFEF71DFDBDE8044000218D
-:1028C0000120FFF71AB8FFF72CB84FF0FF30FFF7E1
-:1028D00047B800210820FFF7B0B80220FFF7CFB8B3
-:1028E0000220FFF7D4B8012805D0022805D010280F
-:1028F00005D1FEF79DBDFEF79DBDFEF79FBD70475C
-:10290000704700007FB50C464C4D61684C4EE86145
-:102910002962284600F0DEFB2468746006F1080096
-:10292000FFF714FE012000F065F8012030702968DF
-:1029300041B10FF2E5020FF2E90300920193029414
-:10294000684688477FBD1FB53D4C04F10800FFF77E
-:1029500000FEE8B92078D8B1694604F10800FFF715
-:1029600021FE012035492070C96941B100980290CB
-:1029700001A888479DF804102170080003D0009832
-:10298000FFF7C3FE04E0009904F10800FFF7EAFD39
-:1029900004F10800FFF7DDFD28B9207818B104F133
-:1029A0000800FFF796FF1FBD2DE9F04105460E46D2
-:1029B00090461C46002000F01DF8214F7868A0F8D2
-:1029C0000950C672324641460C30FEF7A7FE1B4A3C
-:1029D000136900210020984748F2E800FFF780FFC4
-:1029E00079688A78D21C04F10800FEF797FEBDE8EA
-:1029F000F041012010B51149124C096A20B901B10A
-:102A000088470021217010BD0120207011B1BDE860
-:102A10001040084710BD00000020FFF75EBF000017
-:102A200010B50146064C04F10800FFF7A5FD04F1BE
-:102A30000800BDE81040FFF74CBF00003404002040
-:102A400098040020F50400207047704718B51B4C0F
-:102A50000020206087B041F60A00ADF8180000940D
-:102A60000323012206A90120FFF748FC42F6292191
-:102A70000122ADF818100492A01C05900A21002331
-:102A8000022203910293019300922023208806AA38
-:102A90000121FFF781FC08B010BD1CB542F62922C8
-:102AA000904209D10C680548009400220B794188B6
-:102AB0000088FFF7CAFC16BD002016BDF0040020F8
-:102AC0007047704770B5024686B050780024FF28E2
-:102AD0003BD1B2F803106C4840F60143C91A22D02A
-:102AE000123901BFB2F80710C088401C81422CD1B6
-:102AF000957AB2F80500537A0124012D0BD1009389
-:102B000002F10A06019600230022FFF7D8FC0023F9
-:102B10008DF8083016E00A320192009301228023DA
-:102B2000FFF7CDFC11E04088B2F80710801C81420D
-:102B30000BD1507B0124C1074EBF8DF80840022005
-:102B40008DF8080002A8FFF75BF8204606B070BDBC
-:102B5000FEB5014601AA487A8DF804004B7A088830
-:102B60005070DC0704D50888000A9070032300E049
-:102B70000223487A040707D54888D0545B1C4C8848
-:102B8000D8B2240A14545B1C4C7AE00610D50D7A96
-:102B900000200BE001EB4004DFB2A688D6555B1C99
-:102BA000A488DEB2240A94555B1C401CA842F1DBC9
-:102BB00035484188008801AC0094DBB20022FFF761
-:102BC00044FCFEBD18B587B030482F4CFEF7AEFF71
-:102BD00041F60D01ADF8181000940823012206A952
-:102BE0000120FFF78BFB42F63720ADF818000122D9
-:102BF00004920A20A11C0390002310220591029345
-:102C000001930092072300F023F842F63820ADF834
-:102C1000180000220492029201920A20211D0390C2
-:102C20000222059100F012F842F63920ADF81800A2
-:102C30000022049201920A20A11D0390022308227F
-:102C40000591029300F002F808B010BD0092012334
-:102C5000208806AA0121FFF79FBB1CB5002242F67F
-:102C60003724001B09D0401E0BD1074800910123D7
-:102C700081880088FFF7E9FB02E00846FFF768FF5C
-:102C80000246104616BD0000D4040020C52A0008E4
-:102C9000704770477047704770477047704770477C
-:102CA0007047704710B50446FEF738FD204610BD4A
-:102CB00010B5044610460A460146204600F014FAB4
-:102CC000204610BDC0680840884201D101207047ED
-:102CD00000207047C0690840884201D10120704738
-:102CE0000020704710B5614C02212046FFF7F2FF2B
-:102CF00038B16068C043810703D5FFF7DCFC0220D0
-:102D000018E001212046FFF7E5FF38B16068C043B5
-:102D1000C10703D5FFF795FC01200BE008212046F1
-:102D2000FFF7D8FF38B16068C043010703D5FFF74C
-:102D300016FD0820A06010BD10B54C4C00F033F813
-:102D400018B96068C043810306D400F02CF830B98C
-:102D50006068C043810302D5BDE8104064E00821EB
-:102D600000F022F870B96068C04301030AD56068BA
-:102D70003F4940F400206060086880474FF400221B
-:102D8000A26010BD202100F00FF858B96068C04360
-:102D9000810207D5606840F400106060BDE8104013
-:102DA000FFF762BC10BD022120468BE740BF20BF69
-:102DB0003048016841F400410160704780B52E48F9
-:102DC000016841F480110160006800F480100090F7
-:102DD00000982648016841F001010160026842F450
-:102DE000803202602C20FDF704FFBDE802402D2058
-:102DF000FDF7FFBE2148016849084900016070479E
-:102E00001F494FF48030086070471C48016821F06A
-:102E100002010160704719484FF4003141600268B7
-:102E200022F40032026070471448016841F4003116
-:102E30000160FFF73ABC38B504460C4D082128461E
-:102E4000FFF740FF30B10A480460696821F40021AF
-:102E5000696031BDA0474FF40020A86031BD07482C
-:102E6000016821F00801016070470000000C005863
-:102E7000E40400200C04005850000058040C0058D2
-:102E8000080C0058002200F039B900002DE9F0418B
-:102E900006460A464FF0000C4FF00F082CE0574F43
-:102EA000BE4214BF4FF0070E4FF0040E0EFA01F1B0
-:102EB000294344F82310C143514C236855680B4003
-:102EC000ED0348BF03432360636855680B40AD03BF
-:102ED00048BF034363604B4C236855680B40ED02C9
-:102EE00048BF0343236063680B4051688D0248BFAD
-:102EF000034363600CF1010C106830FA0CF172D0DE
-:102F0000012303FA0CF31840F4D05468022C18BFC4
-:102F1000122C4FEA8C010ED14FEADC0406EB84043C
-:102F200001F01C0E256A08FA0EF7BD43176907FA6F
-:102F30000EF73D4325624FEA4C0403253768A54050
-:102F4000ED4305EA070E177907F00307A74047EAA4
-:102F50000E0737605768012F18BF022F03D0112FBB
-:102F600018BF122F11D1B76805EA070ED768A7401E
-:102F700047EA0E07B760776827EA03035768C7F385
-:102F8000001707FA0CF73B437360F3681D40936822
-:102F900003FA04F42C43F4605468E300AAD51A4CF5
-:102FA0004FEA9C0354F8237001F00C0108FA01F574
-:102FB000B6F1904F27EA050508BF4FF0000E11D07B
-:102FC000124FBE4208BF4FF0010E0BD0104FBE4251
-:102FD00008BF4FF0020E05D00E4FBE427FF45FAF28
-:102FE0004FF0030E62E7BDE8F0810B4A136803421D
-:102FF0001CBF1060FFF777BC70470000001000484E
-:1030000080080058000800580800014000040048EB
-:1030100000080048000C00480C080058274981B0FF
-:103020000A6802430A60096808400090009801B0ED
-:103030007047000030B585B004460D46684614213F
-:10304000FFF720FF210008BF042004D0012C18BF87
-:10305000022C02D10820FFF7E1FF2900DFF86020F1
-:1030600019A00ED130F81410009100230193012112
-:1030700002230291039300F01BF8012000F068F98D
-:1030800014E0012D12D130F814000E4B009002957F
-:10309000019300F00DF800BF0DA0045D00220F2188
-:1030A00060B2FDF789FD60B2FDF7A3FD05B030BD4C
-:1030B000694652F82400FFF7E9BE00004C000058B2
-:1030C000500000200000211010000100020000004C
-:1030D0000A0607000249034A01600261704700BF07
-:1030E0006F260008972600084018491C1CBFB1F144
-:1030F000010100F8012DF9D17047000000B500BFB3
-:10310000130096469446103928BFA0E80C50FAD810
-:103110005FEA417C28BF0CC048BF40F8042BC907B8
-:1031200028BF20F8022B48BF00F8012B00BD00008B
-:10313000944900E0944981B00A6802430A60096832
-:1031400008400090009801B0704710B5FDF7DEFC14
-:103150008E4C606840010ED56068C0000BD4FDF74E
-:10316000CDFCFDF7CBFC206840F480302060216866
-:1031700021F48031216000F0CAF80020FFF73CF80C
-:1031800040B180798249E160E26822F47C5242EAEF
-:103190000022E26000F048F87E487F4C016800227F
-:1031A0000260036903F0500303610120FFF7C2FFCF
-:1031B0000220FFF7BFFF0420FFF7BAFF0120FFF74F
-:1031C000B7FF0220FFF7B4FF00220F210E20FDF70A
-:1031D000F3FC0E20FDF70DFD00220F213A20FDF734
-:1031E000EBFC3A20FDF705FD00210F226B48416002
-:1031F000826047F6FF710022C16002618261C26194
-:10320000046000F0D9F8CA20606253216162FF2196
-:10321000A068C008C000A0606162FFF7D0FA4FF05C
-:10322000FF30FEF79DFBFAE738B5AEB05C4C1CA84A
-:1032300021464822FEF772FA01A81C21FFF722FE60
-:1032400008A804F148015022FEF768FA4F48554C8F
-:10325000016821F0180101600722206820F4C06095
-:1032600040F4007020604FF48033216801F4C061A5
-:1032700000914FF4807500991C9201211E9100224B
-:1032800040211D93209127921F951CA8FCF75FFFFA
-:103290006F20022101900291002203920492059274
-:1032A00006920792012101A8FDF7E3F943F6030115
-:1032B000002208910E9200214FF4804202230F91C8
-:1032C00019921A931B91189508A800F031F9E0693A
-:1032D00020F07000E06134480168C1F303200090E1
-:1032E000009828B9E0690009000140F0040007E0F7
-:1032F0000098E169801E80F30400090940EA01108A
-:10330000E061E06940F40040E0612FB030BD274843
-:1033100081B0016841F4801101603F21006800F430
-:10332000801000900098224841604161016841F49A
-:103330007C110160026942F47C120261016841F073
-:103340003F010160026942F03F02026101B0704733
-:1033500038B50446FDF7CCFB14F1010F054609D042
-:10336000FDF7EBFB041905E01248016821F00401A8
-:10337000016030BFFDF7BCFB401BA042F4D331BD60
-:1033800000000000480000584C0000589000005811
-:10339000FECAFECA80080058002800401004002021
-:1033A000003D0008000400585875FF1F50000058E9
-:1033B000040C005810ED00E070B5040049D094F8FA
-:1033C000210028B9002184F820102046FDF775FC63
-:1033D00000F04EF853202168486200F052F8FF25B3
-:1033E00010B100F03FF834E02168DFF8AC008A68E3
-:1033F00002408A602268936866682169A0690E436A
-:103400000643334393602068E168016120680169E5
-:10341000A26841EA024101612068C16821F080018F
-:10342000C1602068C16C89088900C1642168CA6CC8
-:10343000E369606903431A43CA64216888688106A6
-:1034400009D400F01CF830B120684562042100F076
-:103450001DF8012070BD20684562012184F821100B
-:10346000002070BD20684562042184F82110704757
-:10347000022084F82100CA21226851627047204648
-:103480000CE0204623E02068C0F8248084F8211056
-:10349000002084F820007047BFFF8FFF38B5044636
-:1034A0002068C16821F0A001C160FDF721FB05463D
-:1034B0002068C168880608D4FDF71AFB401B40F25B
-:1034C000E9318842F4D3032032BD002032BD38B543
-:1034D00004462068C1684A0612D44FF0FF31C1602B
-:1034E000FDF706FB05462068C168480608D4FDF7CD
-:1034F000FFFA401B40F2E9318842F4D3032032BD89
-:10350000002032BDDFF82C130A68030903F47F237F
-:1035100000019A4300F47F2000F088B9DFF81423FB
-:103520001368010C23EA014343EA00431360704728
-:103530002DE9F843054600242878DFF8F8624106B3
-:10354000A0464FF0B0472DD5286B70B1B0F5800F75
-:1035500006D0B0F5000F18BFB0F5400F17D01FE030
-:10356000F96841F48031F960F3E0386820F0806058
-:103570003860FDF7BDFA81463868000140F1D68019
-:10358000FDF7B6FAA0EB09000228F5D90324DDE027
-:10359000FDF7AEFAA0EB0900022840F2CF80F5E774
-:1035A0000124A0462868010531D5B06800F44078B0
-:1035B000286C80452AD0FDF7A1FAB8F1000FB16858
-:1035C00005D1286C21F440710143B1601EE0B06860
-:1035D00040F48030B06021F44071B06820F4803055
-:1035E000B060286C0143B160B068C0070ED5FDF72C
-:1035F0007FFA8046B068800708D4FDF779FAA0EB1F
-:10360000080041F289318842F4D30324A046287887
-:10361000C10705D53268A869920840EA8202326083
-:103620002978880705D53168E86921F440610143AC
-:1036300031602978C80644BFA86AFFF76FFF287871
-:10364000810644BFE86AFFF769FF2878410744BF55
-:10365000286AFFF757FF2878010744BF686AFFF719
-:1036600051FF2868C1051ED53268686B22F04062A0
-:1036700002433260696BB1F1006F00F0C9F8686B0A
-:10368000B0F1806F0FD1396821F0806100F0CBF884
-:1036900004463868000163D5FDF72AFA001B0228AA
-:1036A000F7D94FF0030870E0FDF722FA001B02285B
-:1036B00064D9F6E7316821F04041316020F0805054
-:1036C000326822F0406210433060A86BB0F1C05FF6
-:1036D00000F09EF82868410576D53268E86B22F044
-:1036E000405202433260E96BB1F1005F03D1F868E8
-:1036F00040F48030F860E86BB0F1805F64D13968E5
-:1037000021F0806100F08FF80446386800014CD544
-:10371000FDF7EEF9001B0228F7D94FF0030853E03C
-:10372000FDF7E6F9001B022847D9F6E700F067F835
-:10373000A86821F4781100F071F88146386800011A
-:103740007FF526AF3969686901433961002C7FF440
-:1037500028AF3168286B21F440010143316021E733
-:103760003969686821F4FE4141EA0021396139690B
-:10377000E86821F0606100F051F804463868000103
-:1037800092D5396968690143396129688805A1D5ED
-:10379000A86BB0F1804F1CBFB0F1004F002889D159
-:1037A000316821F0404108438EE700F028F828698D
-:1037B00021F0604100F032F8044638680001AFD5CE
-:1037C00039696869014339612968C80405D5F16818
-:1037D000686C21F440410143F160296888040BD5ED
-:1037E000796AE86C21F0300101437962796AA86C4A
-:1037F000890840EA810179624046BDE8F283386970
-:10380000696820F4FE4040EA012038613969704758
-:1038100003D1F86840F08070F86070470143396167
-:10382000396841F080613960FDF762B91043086082
-:103830007047000088000058206881684A06704779
-:10384000F8B5044640F60F002568E9692A68AB68B8
-:1038500008400DD1880602D5960602D4D80040F162
-:103860008980E16E00294FD02046BDE8F44008472A
-:103870006248034204BF624E32427BD0CE0709D574
-:10388000D70507D501262E62D4F8885045F00105EA
-:10389000C4F888508D070AD5DE0708D527680225A9
-:1038A0003D62D4F8885045F00405C4F888504D07AF
-:1038B0000AD5DE0708D5276804253D62D4F888506C
-:1038C00045F00205C4F888500D070CD5960601D4C2
-:1038D000034208D0256808202862D4F8880040F008
-:1038E0000800C4F8880008050BD5550109D52668DD
-:1038F0004FF400603062D4F8880040F02000C4F833
-:103900008800D4F88800002870D0880607D5910672
-:1039100001D4D80003D5E16E09B120468847D4F818
-:10392000880021688A68510602D410F0280F1AD046
-:10393000204600F069F8FFF77FFF0FD500F057F839
-:1039400060B1DFF8C0108163A06F00F079F8002843
-:103950004CD0A06F816BBDE8F44008472046BDE81D
-:10396000F24000F004B9204600F001F90020C4F84C
-:103970008800F1BDC80209D55E0207D54FF480105A
-:1039800028622046BDE8F24000F0F2B8080609D5EA
-:10399000160601D4180205D5216F39B32046BDE8BB
-:1039A000F440084748060FD553060DD5286820F087
-:1039B000400028602021C4F88010002020672046A5
-:1039C000BDE8F24000F0D6B8080206D5530004D591
-:1039D0002046BDE8F24000F0DDB8C80148BF002A2B
-:1039E00004D52046BDE8F24000F0D5B8F1BD8168AD
-:1039F00021F040018160A06F7047000001000010BD
-:103A0000200100042B3A000801680A6822F4907231
-:103A10000A60DFF82810026893680B409360202248
-:103A2000C0F884200021C1667047806A00F1560109
-:103A300000220A810A8000F09AB80000FEFFFFEF22
-:103A400038B500F1240200245178022903D0042063
-:103A50009061012428E001680B6823F00E030B60DD
-:103A600001680D686D086D000D60516A0B6823F4E4
-:103A700080730B60012192F82030D56903F01C039C
-:103A800099406960936AD16A5960116B31B10B68D2
-:103A900023F480730B60536B916B5960012151705B
-:103AA0001470516901B18847204632BDF8B500F164
-:103AB00024010423CA6914680268156891F820601B
-:103AC00006F01C0603FA06F73C4210D06F070ED52D
-:103AD0001468A50603D4146824F00404146000F0EC
-:103AE0003DF8C968002938D0BDE8F44008470223F2
-:103AF00003FA06F73C4213D0AF0711D51468A506A8
-:103B000005D4146824F00A04146001224A7000F0FD
-:103B100025F800220A708968F9B1BDE8F440084729
-:103B2000082303FA06F6344217D02B0715D514687C
-:103B300024F00E041460012291F82030CC6903F0C7
-:103B40001C039A40626001228A614A7000220A7056
-:103B5000096911B1BDE8F4400847F1BD91F8202092
-:103B6000CC6902F01C02934063607047000070470C
-:103B70007047000000680649884204D1034A106873
-:103B8000002818BF0047704700000000E80400202C
-:103B9000003801407047704700EB81003D4AD0F883
-:103BA0008010914201D0012070470020704742F4FC
-:103BB000806240F82120704737481F2181610268E8
-:103BC000D208D20042F0030202603448016841F09A
-:103BD0000401016030BF7047704710B5304C00F0F1
-:103BE00048F80028FBD1042100F044F828B92D48FA
-:103BF0000068010403D500F03FF800F057F80022F8
-:103C000003212046FFF7D3FF23480168C908C900F4
-:103C100041F0020101602148016841F004010160A6
-:103C200030BF10BD10B51E4C00F026F800F021F892
-:103C30000028FBD14FF0B040816801F00C0104294D
-:103C400011D1016841F48031016001688903FCD51C
-:103C500082689208920042F002028260816801F05C
-:103C60000C010829FAD12046BDE8104000220321AA
-:103C70009DE7032120468FE700220421204696E796
-:103C800080B500F02DF80548016821F004010160BD
-:103C900030BF01BD000400800004005810ED00E0BA
-:103CA000001400588804005800F022B84FF0B040CB
-:103CB000016841F48071016001684905FCD58268A2
-:103CC0009208920042F001028260416A89088900EC
-:103CD0004162816801F00C010429FAD170470000AB
-:103CE0000248016821F002010160704710E000E025
-:103CF0000248016841F002010160704710E000E0F5
-:103D000000000000000000000000000000000000B3
-:103D100000000000000000000000000000000000A3
-:103D20000000000000000000000000000000000093
-:103D30000000000000000000000000000000000083
-:103D40000000000000000000000000000000000073
-:103D50000000000000000000000000000000000063
-:103D60000000000000000000000000000000000053
-:103D70000000000000000000000000000000000043
-:103D80000000000000000000000000000000000033
-:103D9000000000000000000001000000030000001F
-:103DA0000500000001000000010000000600000006
-:103DB0000A000000200000000200000004000000D3
-:103DC000080000001000000040000000800000001B
-:103DD0000001000000020000A0860100400D030069
-:103DE000801A060000350C0040420F0080841E003F
-:103DF00000093D0000127A000024F40000366E0134
-:103E00000048E801006CDC02000000000000000037
-:103E100000000000000000007047FEE7FEE7FEE73C
-:103E2000FEE770477047704700F024B80548FFF779
-:103E30003DBE0548FFF704BD0448FFF701BD044837
-:103E4000FFF734BE24030020180200208C0100205C
-:103E5000840300201020FFF7C8B80120FFF7C5B881
-:103E60000220FFF7C2B8FDF799B8FEF765BFFEF76D
-:103E700039BF000002490A68886882180A607047E2
-:103E80004400002030B5016884684218416802EBA4
-:103E90005103C9070BD54C4409E012F9011B12F874
-:103EA000015B002904F8015B05D5491CF9D19A4250
-:103EB000F3D10C3030BD491EF1D5F8E70000000009
-:103EC00000000000000000000000000000000000F2
-:103ED00044000800400508013A799C00F401000004
-:103EE000FFFFFFFF480101000000000080B500F067
-:103EF00015F802000023DB431068984204D011003B
-:103F00000220ABBE002010605068984204D0111D02
-:103F10000220ABBE0020506001BD00000148704788
-:103F2000000000006000002010B5074979441831F6
-:103F3000064C7C44163404E00A68081D1144884786
-:103F40000146A142F8D110BD2C0000005000000035
-:103F50004EF68851CEF20001086840F47000086007
-:103F6000BFF34F8FBFF36F8F4FF00070E1EE100A79
-:103F70007047000047D3FFFF900400006800002056
-:103F8000800800002400032000000000F9FEFFFF6D
-:103F90005C010000480000000400002000F00DF863
-:103FA000002801D0FFF7C0FFAFF300800020AFF37F
-:103FB0000080FFF7CAF800F002F80120704700F017
-:103FC00001B800000746384600F002F8FBE70000A1
-:103FD00080B5FFF78BFF024A11001820ABBEFBE74C
-:103FE00026000200813C0008A93C0008DB3B0008D9
-:103FF000253C0008B93B0008D93B00080148804730
-:1040000001480047BD0900080D400008AFF30080DB
-:10401000FFF79EFFFFF7C2FFFFF7FEBFFFF7FEBFF0
-:10402000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFC4
-:10403000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFB4
-:10404000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA4
-:10405000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF94
-:10406000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF84
+:1004E00000F0AE800120ACE0706840F0040000F045
+:1004F000C8F807467068000710D400F041FBC01B25
+:100500000428F7D3B9E600F0A3F863E66868216928
+:1005100020F0FE4040EA016068608EE67068A169E4
+:1005200020F4706040EA0120706000F0A7F80746F0
+:1005300000F089F87FF41EAF2078410737D5DFF847
+:1005400040743868C10529D400F020FB00F018FB86
+:1005500080463868C10521D400F012FBA0EB0800EA
+:100560000328F6D389E6706820F004007060706894
+:10057000C00810F00100DFD000F002FBC01B04280F
+:10058000F5D37AE600F07AF8074600F05CF8D3D0AD
+:1005900000F0F6FAC01B0328F7D36EE6A068012826
+:1005A0007FF410AF306840F0010030601BE7217825
+:1005B00048060ED5A06A00283FF43DAFB16841F06F
+:1005C0000101B16000F0DCFA0746B06880077FF5F2
+:1005D0002BAFE06AA0B3A96801F00C010C293FF42D
+:1005E0005FAF0228286820F0807028607FF443AF56
+:1005F00000F0C6FA064600F039F87FF42EAFE9683D
+:10060000DFF88003A26B0140206B0143606B014364
+:10061000E06B41EA02210143206C0143606C01431D
+:10062000E960286840F080702860E96841F08051F6
+:10063000E96000F0A5FA0446286880017FF514AF50
+:100640000020BDE8F0817068400810F0010070479C
+:100650002968606A21F0F001014329606868216A15
+:1006600020F47F4040EA0120686070472868400E0F
+:1006700010F001007047286000F082BA70684008EE
+:100680004000706000F07CBA2DE9F8430400884611
+:1006900044D0DFF8F46200F0C8F847D200F0CDF89B
+:1006A000074600F0C2F841D000F06AFAC01B0228E9
+:1006B000F7D90320B7E000F063FA401B022843D9C2
+:1006C000F7E700F05DFAA0EB090002284CD9F0E74B
+:1006D00000F056FAA0EB0900022854D9E9E700F02F
+:1006E0004FFA401B02285DD9E3E700F049FA401BAE
+:1006F000022867D9DDE700F043FA401B484577D36D
+:10070000D7E7032802D13968890103E00028396856
+:1007100002D1890762D401E049055FD4012082E05B
+:1007200000F02EFAC01B022872D9C2E72078810798
+:100730004FF0B0470BD5B968A06821F0F001014334
+:10074000B96000F01DFA0546B868C003B3D520783B
+:10075000DFF81C5281060AD52968606921F0F00192
+:10076000014300F067F8814628688003A9D5207806
+:1007700041060BD52968A0690909090141EA101150
+:1007800000F058F881462868C003A1D520784107B9
+:100790000BD5B968E06821F4E0610143B96000F06D
+:1007A000EFF90546B868800399D5207801070CD584
+:1007B000B868216920F4605040EAC100B86000F0D8
+:1007C000DFF90546B86840038FD52078C10717D5F3
+:1007D0006068022895D1396889039FD5B96889086E
+:1007E00040EA8100B86041F2893900F0C9F9054654
+:1007F000B868616800F00C00B0EB810F7FF47BAF4C
+:10080000306800F00700804505D200F016F8074672
+:1008100000F00BF884D100F003F900F0D3F9BDE843
+:10082000F24300F08BB9BDE8F283306800F00700B6
+:1008300040457047296000F0A3B93168C90848EA0B
+:10084000C101316000F09CB938B54FF0B044504D53
+:10085000A16811F00C0106D1FFF770FCC0F3031082
+:1008600055F8200032BD04294A4A05D008294A48D3
+:1008700004D12168C90222D5104632BDE16801F0D9
+:100880000301022904D0032904D12168C90207D534
+:10089000104605E0FFF752FCC0F3031055F82000A6
+:1008A000E168E268E368C1F306214843C2F302113C
+:1008B000491C5B0FB0FBF1F05B1CB0FBF3F032BDE9
+:1008C00080B5FFF7C1FF3149FFE7344A0968C1F33A
+:1008D000031152F82110B0FBF1F002BD70B52C49A4
+:1008E000B1282EBFCC6AC0F3031051F82040204835
+:1008F000056800F087F92949294A05F00F0551F8E4
+:100900002510B4FBF1F10024B1FBF2F1B0F5007F4A
+:100910000FF2AC02204609D10FF2880353F82050A1
+:100920008D4214D2401C0328F8D912E00FF2840340
+:1009300053F820508D420AD2401C0328F8D308E017
+:1009400000F01EF9801B03280BD3032070BD52F862
+:1009500020400D4D2868C00844EAC000FFF78BFE18
+:100960000646296801F00701A142E9D1002070BDC7
+:10097000080100584800002090000058FFFFFEEEDC
+:10098000000400588C80C111004000580800005835
+:10099000FC0A00080024F4000048E801BC0A000832
+:1009A00040420F001200000024000000360000004A
+:1009B00040000000060000000C00000010000000D5
+:1009C0000000000001000000020000000300000021
+:1009D0003249002008604FF4E0223148016841F4B8
+:1009E000700101604FF0B041086840F001000860FC
+:1009F0008A602C480A6802402B480A60036823F08A
+:100A000005030360426852085200426000222748F2
+:100A1000C8600861086820F4802008608A61704717
+:100A20004FF0B0410FF2D4000A68C2F3031250F83D
+:100A300022008A6802F00C02042A04D0082A04D09A
+:100A40000C2A04D01CE01A481AE01A4818E0CA68B8
+:100A5000CB68C3F3021302F003025B1C022A08BF37
+:100A6000134802D0032A08BF1248B0FBF3F2C8684B
+:100A7000CB68C0F306205B0F42435B1CB2FBF3F074
+:100A80000D4A0FF23803106088681168C0F3031034
+:100A900053F82000B1FBF0F01060704708ED00E063
+:100AA00088ED00E0FBFEF6FA9400005800100422E6
+:100AB0000024F4000048E8015C0000200100000070
+:100AC000030000000500000001000000010000001C
+:100AD000060000000A0000002000000002000000E4
+:100AE00004000000080000001000000040000000AA
+:100AF000800000000001000000020000A08601004C
+:100B0000400D0300801A060000350C0040420F0023
+:100B100080841E0000093D0000127A000024F400C9
+:100B200000366E010048E801006CDC0200000000A5
+:100B300000000000000000000000000070B50F4E33
+:100B40000446B0680025A8B1FFF7BAFEB2684FF4BA
+:100B50007A71B1FBF2F1B0FBF1F000F0AEF848B9F8
+:100B6000102C07D2002221464FF0FF3000F06EF823
+:100B7000746000E00125284670BD00BF44000020DD
+:100B800001480068704700BF440000200248016827
+:100B900041F480710160704700040058164810B598
+:100BA000016841F480710160032000F042F80020E8
+:100BB000FFF7C4FF0024002814BF012400F0BAF896
+:100BC000204610BD0D48406870470C48806870474B
+:100BD0000B480BE00A48016821F0020101607047F0
+:100BE0000748016821F00401016070470168490865
+:100BF0004900016070470000004000584400002098
+:100C0000042004E0DFF80800006800F4C0607047CA
+:100C1000000400580901020081B002D43C4881540C
+:100C200005E03C4802F00F02104400F8041C01B03B
+:100C30007047394A13684FF6FF0100020B4000F479
+:100C4000E0601843354908431060704738B5324BAF
+:100C50001C68C4F30223C3F10704052C28BF042435
+:100C60001D1D072D34BF0023DB1E012505FA04F4EA
+:100C7000641E2140994005FA03F35B1E1A4011439C
+:100C8000BDE83440C6E7010007D4012200F01F018F
+:100C9000234B8A40400943F82020704701000BD4C1
+:100CA000012200F01F011F4B8A40400943F8202019
+:100CB000BFF34F8FBFF36F8F704710B5401EB0F179
+:100CC000807F01D3012010BD174C60600F214FF0D1
+:100CD000FF30FFF79FFF0022A26007202060002066
+:100CE00010BD010007D4012200F01F010F4B8A4004
+:100CF000400943F820207047010007D4012200F08A
+:100D00001F010B4B8A40400943F820207047000028
+:100D100000E400E018ED00E00CED00E00000FA0552
+:100D200000E100E080E100E010E000E000E200E02F
+:100D300080E200E0134881B0016841F400210160C5
+:100D4000006800F400200090009801B0704710B5D2
+:100D500004460D492068884213D1FFF717FFFFF7BB
+:100D600015FF0A48016821F4407141F48071016067
+:100D7000026842F4004202602046BDE8104000F0E4
+:100D800013B810BD500000580028004090000058D3
+:100D90008A60FF2102685162012180F82110002140
+:100DA00080F820100020704790F82010012901D110
+:100DB00002207047012280F82020022180F82110B3
+:100DC000CA210268516253210368596201688A6826
+:100DD00042F02002FFF7DCBFDFF83C150A6892B250
+:100DE00000E00246086880B28242FAD170472DE9DD
+:100DF000FC4104461825DFF82485DFF824656843A4
+:100E000008EB00073078062808D13178717034700B
+:100E100078754FF0FF307060002039E000F077F80F
+:100E2000B9680918B96008F10803B96832786A43EB
+:100E30009A589142327813D308F1150315FB02FC3E
+:100E400013F80C30062B25D008F108066B43F35835
+:100E5000994222BF08F115036A439A5CEED219E069
+:100E60001146337869439A420BD008F1140308F114
+:100E7000150C5B5C15FB03F50CF805407A753B75AA
+:100E800000E07A7508F114025454317871703470AE
+:100E9000BDE8F6811146694308F115035B5C062B3A
+:100EA00004D008F1140615FB03F574557B753A75EB
+:100EB00008F115025454EBE7F8B5DFF86434DFF8B5
+:100EC0005C541E78182402466243B0422A4404D17E
+:100ED00018785870507D18700FE0167D507D92F88C
+:100EE00015C005F115076643062807F806C004D0AB
+:100EF000167D143514FB00F42E550120107318785C
+:100F0000062802BF00294FF0FF315960F1BD10B52E
+:100F1000DFF80C44606810F1010F0FD0FFF75CFFA1
+:100F20006168DFF80024814261683CBF5388C918BA
+:100F3000081A517848431178C84000E0002080B278
+:100F400010BD2DE9F84FDFF8DC53DFF8DCB3D5F83E
+:100F50000880D8F80000DBF800104A0500F090F98E
+:100F6000DFF8BC63DFF8B4A321F4806181604FF047
+:100F7000180934780AF1080019FB04F14758FFF703
+:100F8000C6FF874217D200270121B170062C3DD041
+:100F900019FB04F40AF108010AF108020959814217
+:100FA00023BF0AF108010959091A002111510AEB5E
+:100FB00004014C7DEAE7A9884118B94202D2AF8802
+:100FC0000021E2E73F1ADFE7022802DA2878012849
+:100FD00000D07F1ED8F80000C1684A07FAD500F09B
+:100FE00055F9DBF80C00000CBFB247EA0047CBF81C
+:100FF0000C70FFF7F1FE7060A8680068816841F42A
+:1010000080618160AFF30080BDE8F18FB8B2002845
+:10101000DAD1FFF7E1FE70600320BDE8F24FFFF781
+:1010200060BE2DE9F843EFF3108872B6BD4DBB4B9F
+:10103000A8680168CA224A6253204862B84A886890
+:1010400020F48060886018201678374647431F4494
+:10105000387B022826D13C68D7F810909078F0B100
+:101060007A7B012A0AD101213046FFF725FF88F358
+:1010700010887968304600F016F904E088F310888B
+:10108000304600F0C1F8A8680068CA2141622246D3
+:10109000532141624846314600F050F90BE0FFF71A
+:1010A00050FF06E0C8684207FCD500F07EF89F4973
+:1010B000086088F31088FF21A86802685162BDE8C3
+:1010C000F183F8B5974CA160CA2209684A6253229D
+:1010D0004A62954A136843F020031360136803F0D3
+:1010E0000703C3F10403237095682D0C05F07F05F9
+:1010F0006D1C6570EDB29268C2F30E02521C6280E4
+:1011000092B2521E6A43A2F5A072DA404FF6FF7304
+:101110009A422CBFA380A280854A136843F400231F
+:101120001360844B1D6845F400251D6048BB7C4856
+:101130007A4E0123837018254FF0FF33436000235C
+:101140005FFA83FC06F10C0715FB0CFC4FF0000E58
+:1011500007F80CE05B1CDFB2062FF1DB06230370FF
+:10116000886820F48060886000F01FF8D060032059
+:10117000FFF7C2FDA1680868826842F4804282607D
+:1011800005E0C868410544BF0320FFF7AAFDA16838
+:101190000A68FF205062002203210320FFF756FD5A
+:1011A000BDE8F2400320FFF76EBDC86800F0800084
+:1011B00060F49060C8604FF400207047F0B50446BA
+:1011C0000025EFF3108672B61827DFF850C10CF136
+:1011D0000C0007FB05FE10F80E0010B16D1C062D6B
+:1011E000F5DB062D0CD06F430CEB070001270773CE
+:1011F00086F310880461427303600D700020F0BD17
+:1012000086F310880120F0BDF8B50746EFF310848F
+:1012100072B60320FFF742FD424DAE683068CA2126
+:1012200041623A4653214162182043494243895C56
+:1012300002291BD100213846FFF73EFE38480178CD
+:1012400006290ED1306838490A68530500F018F8AD
+:1012500021F480618160C1684A07FCD500F016F86E
+:1012600004E04078884218BFFFF76BFEA9680A685F
+:10127000FF2050620320FFF706FD84F31088F1BDC4
+:1012800002D5C1684A07FCD481687047C16801F083
+:10129000800161F49061C1604FF40020234908602F
+:1012A0000320FFF729BD2DE9F04180460F46424655
+:1012B00018201A4942438C18207B022804BF40465C
+:1012C000FFF7A2FFEFF3108572B60320FFF7E6FCED
+:1012D000144EB0680068CA21416253214162022065
+:1012E0002073A76067604046FFF781FD0C490A78CC
+:1012F0004978914202D0FFF724FE02E0A168081A63
+:10130000A060FF20B1680A6850620320FFF7BBFCB1
+:1013100085F31088BDE8F08128280040FC000020FB
+:10132000DC040020A8040020082800400C08005815
+:1013300000080058800800580801002010470000ED
+:1013400038B58EB002A80FF21C41DFF86C43DFF80D
+:101350006C53302200F02EFA0FF2B9300190009455
+:1013600069460FF2993000F069FA0121022000F07D
+:101370004EFBD34A0021042000F0DFFB02A800F05E
+:101380005BFC00F0A0F800F05FFC002085F8900006
+:1013900005F126044FF6FF70208000210FF2453240
+:1013A000012000F0CAFB00F0B1FC00F0D8FC0FF205
+:1013B0002D33002205F191010020FFF7FFFE0220EE
+:1013C000E07080210120A0700D2020710220A0700B
+:1013D000182060710320A070BA480180A0214180CC
+:1013E000012000F024F90FB030BD7CB50646B34DA6
+:1013F0007078052805F1900404D03E280DD0FF2810
+:1014000024D03AE0B088E98C884202D10020E884F8
+:101410002070012000F00BF92FE0F178012908D0AD
+:101420000C292AD1E88C6A460DF1010100F013FD68
+:1014300023E06078FFF7E8FE207804280CBF062040
+:1014400005202070B6F80500E88416E0B6F8030021
+:1014500040F20241401A08D0C01E0BD0001F02BF4C
+:101460000121E88C00F031FF07E0E88C964900F09C
+:101470001CFE02E0E88C00F0D0FE012076BD00F0FA
+:10148000BABE8E48C08C00F05DBE1CB58B4CE08CA3
+:1014900001AA0DF1050100F0DEFC98B99DF80500E8
+:1014A000022804BF9DF80410022903D100200090F7
+:1014B000012302E0002000900223E08C1A46002164
+:1014C00000F024FD13BD78B50FF25C207F4D00883D
+:1014D0007F4E89B0ADF81A0000F088FC286810F142
+:1014E000010F0ED069683074090A020A000CB0744A
+:1014F000727406F1100468683175F074090A717528
+:1015000006E0002000F0FCFE040008BF0FF22424D7
+:1015100022460621002000F005FF6079307210217C
+:1015200020797072E078B072A078F07260783073D1
+:1015300020780FF2082470732246182000F0F2FE83
+:101540000FF2082600F06EF84EF66E50089007AACB
+:101550002868079006212E2000F0E4FE2246102184
+:10156000182000F0DFFE00F05DF81821012000F0E7
+:1015700000FF00F029FF0DF1160006A9019000916F
+:1015800005AB07220021012000F0ACFD0FF29C10FA
+:10159000BDF81810494C00900523BDF81400002236
+:1015A00000F0D2FF0DF11A0000900223BDF81610D2
+:1015B000BDF81400002200F0C7FF02220221002023
+:1015C00000F07CFC0120207000F023FD0120607001
+:1015D0000020E070082060751020A07501202075A3
+:1015E0003C48A0610120A0700020C1B221440871D4
+:1015F000401CC1B21029F8DB002004900023A06930
+:10160000617803900122207D0290A07D0190607D91
+:101610000090A07800F016FDA07808B100F0D0FD91
+:101620000AB070BD32461021082000F07BBE2DE9C3
+:10163000F8420746012F87B003D122480588468823
+:1016400003E04FF4C8654FF47A66DFF8709009F153
+:1016500090046078FFF7D8FD022F05D1207801288B
+:1016600014BF022800F07AFC277000200690059035
+:1016700009F129010491062299F828000FF2DC01F2
+:1016800003900291019200230093324629460020E4
+:1016900000F076FC0E490E2000F06AFD002808BF1D
+:1016A000012F06D160780C4908B0BDE8F042FFF781
+:1016B000FABD08B0BDE8F082A4080320680000204D
+:1016C0007B180008EC04002040E201008075FF1F39
+:1016D0000400002007B2010046E0010000210120C3
+:1016E00000F038BA0220A2E70021042000F032BA4C
+:1016F000012000F051BA012000F056BA10B504469E
+:10170000616801F1080000F0AFFA00B1012020701B
+:1017100010BD000010B1012803D07047072000F071
+:1017200029BA072000F02EBA400300004852535453
+:101730004D0000006C7AD8AC577200001234567815
+:101740009ABCDEF0123456789ABCDEF0FEDCBA09A0
+:1017500087654321FEDCBA09876543210948525356
+:10176000544D0000000000000000000000000000D8
+:1017700000000000000000004400080040050801CF
+:101780003A799C00F4010000FFFFFFFF48010100CF
+:101790000000000062B38B0708D0521E11F8013B15
+:1017A00000F8013B00F024808B07F6D1830740F05E
+:1017B000208000BF103A07D330B4B1E83810103A97
+:1017C000A0E83810F9D230BC530724BFB1E80810A4
+:1017D000A0E8081044BF51F8043B40F8043BD2078E
+:1017E00024BF31F8022B20F8022B44BF0B78037082
+:1017F0007047121F17D35B0009D151F8043B20F842
+:10180000023B1B0C121F20F8023BF6D20BE051F8F2
+:10181000043B00F8013B1B0A20F8023B1B0C121F83
+:1018200000F8013BF3D238BF121D521E24BF11F83D
+:10183000013B00F8013BF8D8704700007FB50C462B
+:101840006D4D61686D4EE8612962284600F0E8FE42
+:10185000246805F1240000F0EDFE746006F1080034
+:1018600000F0E8FE01203070296829B10FF2551010
+:1018700000900294684688477FBD1FB55F4C04F115
+:10188000080000F0DAFE00BB2178F1B1694604F1EE
+:10189000080000F0FBFE5848C16949B10098029069
+:1018A00001228DF8042001A888479DF8040000E07B
+:1018B00001202070207818B1009800F09AFF04E011
+:1018C000009904F1080000F0C1FE04F1080000F0E6
+:1018D000B4FE28B9207818B104F10800FFF704FF1E
+:1018E0001FBD2DE9F8430646002000F05FF874881C
+:1018F0003088B268DFF80081C4F3090444EA802428
+:10190000F068A4B2C1B2204600F03CF8002748F2CB
+:10191000E8094846FFF7EFFE08E06888A04202D1D8
+:10192000316928780870687800B1012708F124002F
+:1019300000F083FEF0B9694608F1240000F0A6FE2D
+:10194000009800F10B05407A0F28E6D0B5F8011099
+:10195000A1420DD10098817AC81E7169C0B2884237
+:10196000C8BF0846706102463069E91CFFF712FFE4
+:101970002878D9E73800CCD0012000F017F80020F3
+:10198000BDE8F28310B513461C4A5468A4F8090058
+:10199000E1720A46194604F10C00FFF7FBFE164AF5
+:1019A0001369BDE810400021002018471249096A58
+:1019B00082B008B921B101E011B1012002B008479D
+:1019C00002B0704710B50146487A0F2818BF0E289C
+:1019D00007D10B4800F044FEBDE810400020FFF79F
+:1019E00087BE064C04F1080000F03AFE04F108003E
+:1019F000BDE81040FFF778BEE40300208804002013
+:101A0000080400201948002101604160704710B5AA
+:101A100000F00CF85C6819B1012904D1204301E001
+:101A200024EA0000586082F3108810BDEFF31082A2
+:101A300072B60E4B704738B5EFF3108472B60B498F
+:101A40000B4D086820B129688847686880470AE01C
+:101A5000486820B1A9688847E868804703E028699A
+:101A600080476869804784F3108831BDB404002042
+:101A7000344000082DE9FC47594CDFF86891A5690E
+:101A80002840A0614FF0010A4FF0FF3830E0491CB8
+:101A900054F831000642FAD004EBC10718407968C7
+:101AA0001040014208BFC7F804807E68304000F053
+:101AB0009BF860620AFA00F086437E60EFF31081C3
+:101AC00072B6626A20690AFA02F2D24310402061BB
+:101AD000022004EBC00353F8086C1640401E43F884
+:101AE000086CF6D181F31088606A59F82010884795
+:101AF00063692069A2691840104207D0E069216A31
+:101B0000084203D1002103EA0206C1E700F0BFFE4C
+:101B1000EFF3108972B6216960690140A069014242
+:101B200001BFE169206A014200F041FF89F310889A
+:101B300000F05AFFA561BDE8F38738B51446EFF30E
+:101B4000108572B600F050F8264941F8204085F320
+:101B5000108831BD10B5EFF3108272B6204B1C69AE
+:101B600004431C6153F83140204343F8310082F3B1
+:101B7000108810BDEFF3108172B6194A536923EA39
+:101B8000000005E0EFF3108172B6154A536918435F
+:101B9000506181F310887047EFF3108172B6104ADC
+:101BA000D3691843D061F4E72DE9F0410C4C626A27
+:101BB000266A2062012101FA02F803E03946404614
+:101BC00000F0F7FE276AE5693D42F7D0404600F095
+:101BD0000BF825EA0707E76126626062BDE8F0813D
+:101BE0001C000020A402002002460020110C090461
+:101BF00004BF1020120412F07F4F04BF08301202FD
+:101C00000FF2180112F0704F04BF001D1201120FE5
+:101C1000C0F11F00895C401A7047000004030202F3
+:101C200001010101000000000000000000F033FF8E
+:101C30009DF80E0005B000BDF8B500F10C026B4632
+:101C400021214FF66640F1E71C4900200877002269
+:101C50001B48027000F036B818490A7F41F822008C
+:101C6000087F401C0877704770B504466078FF28ED
+:101C700002BFB4F8031001F47F41B1F5406F12D1F7
+:101C800000260E4D00E0761C297FF0B288420AD271
+:101C9000F1B255F82110204688470100F3D002D058
+:101CA000022805D006E02046BDE87040FFF79DBB46
+:101CB000002070BD012070BD00000000580400200D
+:101CC000F404002080B500F035FF00F034FF00F090
+:101CD00033FF00F06BFF00F06AFF00F0E7FF01F058
+:101CE0004BF801F04AF801F049F801F048F801F02A
+:101CF00047F801F046F801F045F801F044F801F02A
+:101D000043F8BDE8014001F040B80000E0B505A08F
+:101D1000042100908DF8041042F62920694600F055
+:101D200032FF07BD53544D0010B500782B4C18B14D
+:101D300002280FD004D310BDA0800120207310BD55
+:101D4000607BFFF761FA607BBDE8104040F601015F
+:101D5000FFF7A9BA607BBDE81040FFF755BA10B590
+:101D60000FF2450200210220FFF7E7FE1B4C002185
+:101D7000042021732070214642F6382000F0E1FF54
+:101D80001F20E07204F10D010A20A0800120A07242
+:101D90004FF48060E0800122BDE810400FF245035F
+:101DA0000020FFF70BBA00000D480C490068CA7A02
+:101DB00000F00700413048801307087B04D518B9AC
+:101DC0008888401D888003E0012804BF0020087334
+:101DD000891C42F6372000F0B4BF000078040020D0
+:101DE0002828004000210220FFF7B4BE00B587B0CC
+:101DF00000F010F8012003220690ADF80420ADF8A1
+:101E0000062000F0A5F800284CBFFF209DF8000038
+:101E100007B000BD00208DF800001822002101A8A5
+:101E200000F0BABFADF80600049107A8012108220E
+:101E300003900691ADF804207047092200216846FE
+:101E400000F0AABF1822002102A800F0A5BF1822A6
+:101E500001A800F0A1BF70B5C8B006460C461546F3
+:101E60000522FFF7EBFFADF82060FFF7EBFF302115
+:101E700000F014F80521049000F019F8002848BF7C
+:101E8000FF2009D49DF8000030B99DF803002070B0
+:101E90009DF804002870002048B070BDADF80A100D
+:101EA00008200221ADF80800059108A870470791A5
+:101EB000CDF818D0002102A8FFF713BD00B5C7B0B8
+:101EC00000F00EF8FFF7C3FF312000F013F800F028
+:101ED0003FF800284CBFFF209DF8000047B000BD30
+:101EE00000238DF81C008DF8003007A84170827027
+:101EF00000217047ADF8060007A9032004900822CE
+:101F0000012003910690ADF80420704730B5C7B0AA
+:101F10000025ADF81C008DF81F2007A84A9C817091
+:101F200003718DF80050ADF82140FFF776FF0F21C7
+:101F3000029132200721FFF775FF00F009F8002811
+:101F40004CBFFF209DF8000047B030BD03900691C4
+:101F5000CDF814D0002101A8FFF7C3BC00B587B0AD
+:101F600000F045F900F073F9812000F03BF900F032
+:101F700085F900284CBFFF209DF8000007B000BD88
+:101F80002DE9F84DC7B09446DDF840E1519A559DD2
+:101F9000569EDDF84CA1ADF81D108DF81C004FF0D9
+:101FA000000BADF81FC08DF821308DF822E000F055
+:101FB00024F800F017F824F8095F668000F047F96C
+:101FC0003F20832100F075F9574406910D3704979F
+:101FD00000F057F900284CBFFF209DF8000048B0E2
+:101FE000BDE8F08D88F800A007AC5499E41952467A
+:101FF00008F10100544400F0C9BE8DF823201746B3
+:1020000052998DF800B00DF1240809A8B84400F0E9
+:10201000BDBE00B5C7B000F00CF8852000F0C3F8D5
+:1020200000F02CF900284CBFFF209DF8000047B0BD
+:1020300000BD00218DF81C008DF80010182201A8A9
+:1020400000F0AABE2DE9F841C7B04FF0000800F03B
+:1020500026F80DF12300DDF844E14E9F4F9E509D80
+:10206000529C8DF81F30C0F800E08DF800808DF88C
+:1020700020708DF821608DF822508DF8274000F0F7
+:10208000E6F88620ADF8060007A90C2000F0F2F86B
+:1020900000284CBFFF209DF8000000F024B98DF807
+:1020A0001C0007A841708270704700B5C7B00022BD
+:1020B000ADF81C008DF800200DF11E001822016003
+:1020C00001A8002100F068FE8820ADF8060007A9ED
+:1020D000062000F0CFF800284CBFFF209DF800003C
+:1020E00047B000BDF8B5C8B005460E4617461C46B9
+:1020F00000F023F808A8467087708DF8205000F093
+:10210000D3F88A21ADF80A103F20032100F0BFF870
+:10211000002848BFFF200ED49DF8000058B94F9901
+:102120004E98BDF801202280BDF803200280BDF842
+:1021300005000880002049B0F0BD07220021684654
+:1021400000F02ABE00B5C7B00021ADF81C00FFF7B3
+:1021500073FF0F2102918D20022100F07EF800F024
+:102160008EF800284CBFFF209DF8000047B000BD4E
+:1021700018B5C7B0044600F03AF88DF81C40224666
+:1021800000F09FF800F063F83F208E2100F0AEF8D9
+:10219000641C049400F075F800284CBFFF209DF8E3
+:1021A000000048B010BDADF8060007A901203F228D
+:1021B000039104907047ADF8060007A9022070470C
+:1021C00000B587B000F013F800F041F8922000F05D
+:1021D00009F800F053F800284CBFFF209DF80000DC
+:1021E00007B000BDADF806003F2201207047002077
+:1021F0008DF80000704700B587B0FFF7F8FF00F0DA
+:1022000026F89420FFF7EEFF00F038F800284CBFC6
+:10221000FF209DF8000007B000BD00B5C7B0002149
+:10222000ADF81C00FFF708FF9520FFF7C4FF00F092
+:1022300021F800284CBFFF209DF8000047B000BDEA
+:1022400000228DF80020ADF81C008DF81E10182219
+:10225000002101A800F0A0BD0321ADF80600049103
+:1022600007A801213F22039006917047ADF80600B0
+:1022700007A9032004903F22012003910690ADF8A6
+:102280000420CDF814D0002101A8FFF72ABBADF837
+:102290000800059108A8072104900791CDF818D0EF
+:1022A000002102A8FFF71DBB1822002102A800F0A0
+:1022B00073BDADF80400ADF8061007A80121039026
+:1022C00070470DF11D0000F061BD00B5C7B0FFF70C
+:1022D000B7FFA520FFF7CAFF00284CBFFF209DF8DD
+:1022E000000047B000BD48B0BDE8F081ADF8040083
+:1022F000ADF8061007A80121039006917047000071
+:1023000001460648064AC3798B4218BF904218BF5F
+:102310000838F8D18B4218BF00207047F873FF1FB0
+:102320000070FF1F18B50C46C7B0114600228DF88B
+:1023300000208DF81C008DF81D4022460DF11E0076
+:1023400000F024FD00F02AF83F200C21ADF8040035
+:10235000ADF8061007A8012103900691A41C04946F
+:1023600000F02CF800284CBFFF209DF8000048B07A
+:1023700010BD00B5C7B000F00AF80F2000F013F848
+:1023800000284CBFFF209DF8000047B000BD002290
+:102390008DF800208DF81C008DF81D1018220021EA
+:1023A00001A800F0F9BCADF8060007A902200490CE
+:1023B0003F22012003910690ADF80420CDF814D0FF
+:1023C000002101A8FFF78DBA00B587B000208DF875
+:1023D000000000F0E0F840F20110ADF806003F22E6
+:1023E0000120069000F013F900284CBFFF209DF853
+:1023F000000007B000BD2DE9F84107460128C7B02D
+:10240000884615461E4608BF022003D002280CBF8E
+:10241000102000200DF11D010C1800F036F8012FDE
+:102420008DF81C7002D0022F18D019E002273A460E
+:1024300041460DF11D0000F0A9FC2570667000F00A
+:10244000AAF83F204FF4817100F016F8FF1C0497A2
+:1024500000F0DFF8002805D5FF2009E01027E6E7A7
+:10246000472005E09DF8000010B94E9800F067F88D
+:10247000FFE748B0BDE8F081ADF80400ADF8061004
+:1024800007A80321039006917047032200216846A4
+:1024900000F082BC2DE9F64F0C460546012CC7B072
+:1024A0009B4608BF022003D0022C0CBF1020002046
+:1024B0000DF11F010E18FFF7E8FF012CADF81C50BD
+:1024C0008DF81E4002D0022C2CD02DE00227569C05
+:1024D000559DDDF85091DDF84CA1DDF84881489913
+:1024E0003A4600F054F8A6F800B086F8028086F864
+:1024F00003A086F804907571B47100F04CF83F2089
+:10250000ADF804004FF4827107A8ADF806100390EF
+:1025100003210A370497069100F07BF8002805D5BF
+:10252000FF2009E01027D2E7472005E09DF80000D2
+:1025300010B9579800F003F849B0BDE8F08FBDF826
+:10254000011001800020704730B5C7B01C464A9B7F
+:1025500000F049F800258DF800508DF82140224602
+:1025600019460DF1220000F011FC00F014F83F2094
+:102570004FF4837100F042F8A41D049400F049F870
+:1025800000284CBFFF209DF8000047B030BD0DF182
+:102590001F0000F0FBBB1822002101A800F0FCBBCB
+:1025A00078B5C7B04C9C4D9D00F01DF800268DF805
+:1025B00021308DF800608DF822402246294600F037
+:1025C00019F8FFF7E8FF3F204FF4937100F016F879
+:1025D000E41D049400F01DF800284CBFFF209DF876
+:1025E000000048B070BDADF81C00ADF81E108DF8AD
+:1025F000202070470DF1230000F0C8BBADF80400A7
+:10260000ADF8061007A80121039006917047ADF8B8
+:102610000420CDF814D0002101A8FFF762B9000012
+:102620000249016002490161704700BFED260008C0
+:1026300017270008006040607047EFF3108172B602
+:10264000026882420CBF012000201CE0EFF31082E0
+:1026500072B603680B60486001600868416023E05F
+:10266000EFF3108272B6086043684B6041604868BF
+:10267000016019E0EFF3108172B6436802681A60D6
+:1026800042680068426081F31088704710B5EFF32C
+:10269000108472B602680A600068FFE7FFF7EAFF7D
+:1026A00084F3108810BD086082F310887047000022
+:1026B00000F0F0BB6C486D49016001F120024260FE
+:1026C00001F13002826001F13C02026201F1440238
+:1026D000C26001F14C02026101F16802426101F144
+:1026E0006C0282617831C16100F0E6BB38B5044606
+:1026F0005F4D05F11000FFF79DFF5B494868A16839
+:102700000160E168C160456005F11001816000F081
+:10271000EFFB58482DE080B553494A681368012003
+:10272000187200F0EBFB002002BD38B5514C504D43
+:1027300007E0694605F11000FFF7A8FF009821683F
+:10274000884705F11000FFF778FF0028F1D031BD70
+:1027500048484168084738B50446474D2846FFF7C2
+:1027600069FF4148C068A1680160456000F0CBFB8B
+:1027700042482168016061684160002032BD80B537
+:102780003949CA6813681020187200F0C2FB002093
+:1027900002BD3549CA68394910680B68184738B511
+:1027A000364C354D06E069462846FFF76FFF009826
+:1027B000616888472846FFF740FF0028F3D031BD05
+:1027C00038B504462E4D2846FFF734FF2D48FFF755
+:1027D00031FF25480069A1688160E168C160056139
+:1027E00021680160616841602169416161698161BD
+:1027F00031BD80B501462348FFF732FFBDE80240F6
+:102800000FF2050000F095BB38B5174C1D4D08E0E0
+:1028100069462846FFF73AFF009920690069FFF7EB
+:102820001FFF2846FFF709FF0028F1D031BD10B582
+:10283000154C2046FFF7FEFE0B4841690C60BDE8D1
+:10284000104000F08ABB1CB50F4C06E069462046DC
+:10285000FFF71CFF009800F019F82046FFF7EDFE87
+:102860000028F3D013BD000000000320B0090320AE
+:1028700084080320C40400209C080320CC0400200A
+:10288000340A0320BC0400203C0A03207047704730
+:102890003A4981B00A6802430A600968084000901A
+:1028A000009801B0704710B5354C88B0206840F4EE
+:1028B00000402060FFF7A6F832490020FEF701FC37
+:1028C0006846142100F060FB0020029003214FF4C1
+:1028D0006040009001910120FFF7DAFF69464FF058
+:1028E000904000F055FB606C400840006064182187
+:1028F00000910220FFF7CCFF6946234800F048FB17
+:10290000606C20F002006064FEF762F9FEF762F985
+:10291000FEF766F901210120FFF779F80121002077
+:1029200000F01FFC0121012000F01BFC012102200E
+:1029300000F017FCFFF7BEFE144A00210820FFF745
+:10294000FCF8134C0FF24D01019104F23C50009041
+:1029500069460FF2450000F049F804F25470029005
+:1029600004F5C96140F23C5005900391049402A81B
+:10297000FFF726FFFFF79CFE08B010BD4C00005883
+:102980000800005810040020000400482F2A000806
+:10299000240003207047000080B5FFF748FFFEF7D2
+:1029A000CFFCBDE8044000210120FFF730B8FFF75D
+:1029B00042B84FF0FF30FFF75DB800210820FFF765
+:1029C000C9B80220FFF7E8B80220FFF7EDB80128E8
+:1029D00005D0022805D0102805D1FEF750BDFEF71E
+:1029E00050BDFEF752BD7047704700007FB50C46E2
+:1029F0004D4D61684D4EE8612962284600F000FCAB
+:102A00002468746006F10800FFF714FE012000F04E
+:102A100068F801203070296841B10FF2E9000FF227
+:102A2000ED02009001920294684688477FBD1FB571
+:102A30003E4C04F10800FFF700FE00BB2178F1B125
+:102A4000694604F10800FFF721FE3748C16949B122
+:102A50000098029001228DF8042001A888479DF873
+:102A6000040000E001202070207818B10098FFF7E2
+:102A7000C0FE04E0009904F10800FFF7E7FD04F14F
+:102A80000800FFF7DAFD28B9207818B104F1080032
+:102A9000FFF793FF1FBD2DE9F04105460E46904616
+:102AA0001C46002000F01DF8204F7868A0F809505F
+:102AB000C672324641460C30FEF76CFE1A4A136964
+:102AC00000210020984748F2E800FFF77DFF796871
+:102AD0008A78D21C04F10800FEF75CFEBDE8F041E4
+:102AE00001201CB51049124C096A20B901B1884770
+:102AF0000020207013BD0120207011B1BDE81C40E2
+:102B0000084713BD0020FFF75CBF000010B5014669
+:102B1000064C04F10800FFF7A3FD04F10800BDE82E
+:102B20001040FFF74ABF0000340400209804002042
+:102B3000F50400207047704718B51B4C002020603A
+:102B400087B041F60A00ADF8180000940323012273
+:102B500006A90120FFF74FFC42F629220121ADF81A
+:102B600018200491A01C05900A2200230221039240
+:102B70000293019300912023208806AA0121FFF7E8
+:102B800089FC08B010BD80B542F62922904209D1D7
+:102B90000A680548009200220B7941880088FFF7F7
+:102BA000D3FC02BD002002BDF00400207047704736
+:102BB00038B5024686B050780024FF2839D1B2F8E3
+:102BC00003106B4840F60143C91A1FD0123901BFE8
+:102BD000B2F80710C088401C81422AD1957AB2F819
+:102BE0000500537A0124012D08D10A320192009385
+:102BF00000220023FFF7D4FC002015E00A320192E6
+:102C0000009301228023FFF7CBFC12E04088B2F84A
+:102C10000710801C81420CD1507B0124C10748BFA2
+:102C20008DF8084002D402208DF8080002A8FFF7B2
+:102C30007BF8204607B030BDFEB5014601AA487AB0
+:102C40008DF804004B7A08885070DC0704D508889A
+:102C5000000A9070032300E00223487A040707D596
+:102C60004888D0545B1C4888DCB2000A10555B1CB5
+:102C70004C7AE00610D50D7A00200BE001EB400401
+:102C8000DFB2A688D6555B1CA488DEB2240A945510
+:102C90005B1C401CA842F1DB01A935480091DBB266
+:102CA000418800880022FFF74FFCFEBD18B587B0B1
+:102CB00030482F4CFEF7D0FF41F60D01ADF818104B
+:102CC00000940823012206A90120FFF794FB42F695
+:102CD0003720ADF81800012204920A20A11C0390AD
+:102CE000002310220591029301930092072300F024
+:102CF00023F842F63820ADF8180000220492029220
+:102D000001920A20211D03900222059100F012F881
+:102D100042F63920ADF818000022049201920A20F0
+:102D2000A11D0390022308220591029300F002F8EE
+:102D300008B010BD00920123208806AA0121FFF7E8
+:102D4000A9BB80B5002242F63723C01A09D0401E25
+:102D50000BD107480091012381880088FFF7F4FB1D
+:102D600002E00846FFF768FF0246104602BD000079
+:102D7000D4040020B12B000870477047704770479B
+:102D800070477047704770477047704710B50446EA
+:102D9000FEF700FD204610BD10B5044610460A4659
+:102DA0000146204600F036FA204610BDC0680840B3
+:102DB000884201D10120704700207047C069084057
+:102DC000884201D1012070470020704710B5664C41
+:102DD00002212046FFF7F2FF38B16068C043810747
+:102DE00003D5FFF7DCFC022018E001212046FFF7A5
+:102DF000E5FF38B16068C043C10703D5FFF795FC14
+:102E000001200BE008212046FFF7D8FF38B16068A9
+:102E1000C043010703D5FFF716FD0820A06010BDD1
+:102E200010B5514C00F033F818B96068C043810305
+:102E300006D400F02CF830B96068C043810302D595
+:102E4000BDE810406EE0082100F022F870B960681B
+:102E5000C04301030AD56068444940F40020606023
+:102E6000086880474FF40020A06010BD202100F0CA
+:102E70000FF858B96068C043810207D5606840F414
+:102E800000106060BDE81040FFF762BC10BD022179
+:102E900020468BE73648016841F4007101603548EF
+:102EA000026842F40072026040BF20BF32480168ED
+:102EB00041F400410160704780B53048016841F439
+:102EC00080110160006800F480100090009826488E
+:102ED000016841F001010160026842F48032026041
+:102EE0002C20FDF7D0FEBDE802402D20FDF7CBBE23
+:102EF00023480168490849000160704721494FF49F
+:102F00008030086070471E48016821F002010160AE
+:102F100070471B484FF400314160016821F40031D3
+:102F2000016070471648016841F400310160FFF705
+:102F300030BC38B504460C4D08212846FFF736FF53
+:102F400030B10A480460686820F40020686031BD30
+:102F5000A0474FF40021A96031BD0948016821F064
+:102F60000801016070470000000C0058E4040020D4
+:102F7000D4080058200800580C040058500000588D
+:102F8000040C0058080C0058002200F077B900002B
+:102F90002DE9F84F4FF0000C644A654BDFF894813F
+:102FA0004FF00F0982460F4633E0634DAA4514BF28
+:102FB000072504258D40254348F82E50C1431C6841
+:102FC00001EA040E7C68E50348BF40EA0E0EC3F830
+:102FD00000E05C6801EA040E7C68A50348BF40EA93
+:102FE0000E0EC3F804E0146801EA040E7C68E502E2
+:102FF00048BF40EA0E0EC2F800E0546801EA040E31
+:1030000079688C0248BF40EA0E0EC2F804E00CF169
+:10301000010C396831FA0CF000F07C80012000FAD4
+:103020000CFE1EEA0100F2D07C68022C18BF122CA4
+:103030004FEA8C0110D14FEADC040AEB840401F062
+:103040001C05266A09FA05FB26EA0B06D7F810B01C
+:103050000BFA05F5354325624FEA4C040325DAF8EF
+:10306000006097F804B0A540ED430BF0030B2E4031
+:103070000BFA04FB4BEA0606CAF800607E68012ED4
+:1030800018BF022E03D0112E18BF122E17D1DAF856
+:103090000860D7F80CB02E400BFA04FB4BEA06068A
+:1030A000CAF80860DAF8046026EA0E0E7E68C6F3F5
+:1030B000001606FA0CF646EA0E06CAF80460DAF8BC
+:1030C0000C603540BE6806FA04F42C43CAF80C4084
+:1030D0007C68E4009BD54FEA9C0E58F82E5001F016
+:1030E0000C0109FA01F425EA0404BAF1904F08BF73
+:1030F00000250ED0114DAA4508BF012509D0104D5D
+:10310000AA4508BF022504D00E4DAA457FF44DAF55
+:1031100003254FE7BDE8F18F0B4A136803421CBF3C
+:103120001060FFF754BC7047000000000008005812
+:1031300080080058080001400010004800040048C2
+:1031400000080048000C00480C080058264981B0CF
+:103150000A6802430A60096808400090009801B0BC
+:103160007047F0B585B005460C4668461421FFF758
+:103170000BFF0DB9042004E0012D18BF022D02D170
+:103180000820FFF7E3FF2000184E0FF268070DD16B
+:1031900037F81500009000210191012002900221D2
+:1031A000039100F01BF8012000F08EF9012C13D1DF
+:1031B00037F81500009001210D480190029100F0B0
+:1031C0000DF80FF23800445D00220F2160B2FDF7C8
+:1031D0003DFD60B2FDF757FD05B0F0BD694656F8FC
+:1031E0002500FFF7D5BE00004C000058500000201D
+:1031F0000000211010000100020000000A06070074
+:103200000249016002490161704700BF5727000869
+:103210007F27000862F30F2262F31F42401810F06C
+:10322000030308D0C91A1FD3DB0748BF00F8012DDC
+:1032300028BF20F8022D130030B41446154610396B
+:1032400028BF20E93C00FAD8490728BF20E90C0034
+:1032500048BF40F8042D890028BF20F8022D48BF40
+:1032600000F8012D30BC7047C91818BF00F8012DB7
+:10327000CB0728BF00F8012D7047000000B500BF44
+:10328000130096469446103928BFA0E80C50FAD88F
+:103290005FEA417C28BF0CC048BF40F8042BC90737
+:1032A00028BF20F8022B48BF00F8012B00BD00000A
+:1032B000914900E0914981B00A6802430A600968B7
+:1032C00008400090009801B0704710B5FDF766FC0B
+:1032D0008B4C606840010ED56068C0000BD4FDF7D0
+:1032E00055FCFDF753FC206840F4803020602168D5
+:1032F00021F48031216000F0C6F80020FFF700F8CB
+:1033000040B180797F49E160E16821F47C5141EA74
+:103310000021E16000F047F87B487C4C0168002206
+:103320000260026902F0500202610420FFF7C2FF4E
+:103330000120FFF7BFFF0220FFF7BCFF0420FFF7CB
+:10334000B7FF0120FFF7B4FF0220FFF7B1FF002213
+:103350000F210E20FDF77AFC0E20FDF794FC0022D1
+:103360000F213A20FDF772FC3A20FDF78CFC00217A
+:10337000674841600F218160046047F6FF71C160BA
+:1033800000F0D2F8CA206062FF2153206062A0687A
+:10339000C008C000A0606162FFF785FA4FF0FF30FF
+:1033A000FEF768FBFAE738B5AEB01CA84821FFF776
+:1033B000EBFD01A81C21FFF7E7FD08A85021FFF74E
+:1033C000E3FD4F48534C016821F0180101604FF4B0
+:1033D0008032206820F4C06040F4007020604FF418
+:1033E0008075216801F4C0610091072100981C914B
+:1033F00001201E900021402020901D9227911F95B2
+:103400001CA8FCF7A4FE6F2001900221002002916D
+:1034100003900490059006900790012101A8FDF704
+:1034200033F943F60300089000214FF480401990CF
+:103430000E910F91102002211B901A91189508A847
+:1034400000F02CF9E06920F07000E061324801687A
+:10345000C1F303200090009830B9E169090909011E
+:1034600041F00401E16108E00098E169801E80F309
+:103470000400090940EA0110E061E06940F40040FD
+:10348000E0612FB030BD254881B0016841F4801162
+:1034900001603F21006800F48010009000982048EF
+:1034A00041604161016841F47C110160026942F4AC
+:1034B0007C120261016841F03F010160026942F043
+:1034C0003F02026101B0704738B50446FDF758FB72
+:1034D00014F1010F054609D0FDF777FB041905E04B
+:1034E0001048016821F00401016030BFFDF748FB7E
+:1034F000401BA042F4D331BD480000584C00005896
+:1035000090000058FECAFECA8008005800280040FB
+:1035100010040020000400585875FF1F5000005888
+:10352000040C005810ED00E038B5040044D094F8C5
+:10353000210028B9002184F820102046FDF707FC5F
+:1035400000F049F8FF2510B100F03FF834E02168A1
+:10355000DFF8B0008A6802408A6021688A68636880
+:1035600020690343A06903431A438A602168E06825
+:10357000086120680169A26841EA0241016120688E
+:10358000C16821F08001C1602068C16C8908890090
+:10359000C1642168CA6CE369606903431A43CA6461
+:1035A00020688168880609D400F020F830B12068CE
+:1035B0004562042100F01FF8012032BD20684562F9
+:1035C000012184F82110002032BD206845620421C9
+:1035D00084F821107047022084F82100CA20216855
+:1035E0004862532022685062204626E020460BE0C5
+:1035F0002068C0F8248084F82110002084F820007E
+:1036000070470000BFFF8FFF70B5044640F2E936F7
+:103610002068C16821F0A001C160FDF7B1FA05463C
+:103620002068C168880606D4FDF7AAFA401BB0429C
+:10363000F6D3032070BD002070BD70B5044620682D
+:10364000C1684A0612D44FF0FF32C26040F2E93638
+:10365000FDF796FA05462068C168480606D4FDF7CE
+:103660008FFA401BB042F6D3032070BD002070BD1E
+:10367000DFF820130A68030903F47F2300019A434B
+:1036800000F47F2000F082B9DFF808231368010CF2
+:1036900023EA014343EA0043136070472DE9F843EE
+:1036A000054600242878DFF8EC624106A0464FF07A
+:1036B000B0472DD5286B70B1B0F5800F06D0B0F5AE
+:1036C000000F18BFB0F5400F17D01FE0F86840F4A6
+:1036D0008030F860EDE0386820F080603860FDF7F9
+:1036E0004FFA81463868000140F1D080FDF748FA72
+:1036F000A0EB09000228F5D90324D7E0FDF740FA32
+:10370000A0EB0900022840F2C980F5E70124A04699
+:103710002868010531D5B06800F44078286C8045F0
+:103720002AD0FDF733FAB8F1000FB16805D1286C43
+:1037300021F440710143B1601EE0B06840F4803074
+:10374000B06021F44071B06820F48030B060286C23
+:103750000143B160B068C0070ED5FDF711FA80468D
+:1037600041F28939B068800706D4FDF709FAA0EB69
+:1037700008004845F6D30324A0462878C10705D59C
+:103780003168A869890840EA810131602878810799
+:1037900005D53168E86921F440610143316028783A
+:1037A000C10644BFA86AFFF76FFF2878810644BFAF
+:1037B000E86AFFF769FF2878410744BF286AFFF7E6
+:1037C00057FF2878010744BF686AFFF751FF286850
+:1037D000C1051BD53168686B21F040610143316040
+:1037E000686BB0F1006F00F0BDF8686BB0F1806FEE
+:1037F00075D100F0BDF804463868000160D5FDF7CA
+:10380000BFF9001B0228F7D94FF0030867E0FDF766
+:10381000B7F9001B02285BD9F6E7316821F0404177
+:10382000316020F08050326822F0406210433060F6
+:10383000A86BB0F1C05F00F095F8286841056DD520
+:103840003168E86B21F0405101433160E86BB0F121
+:10385000005F03D1F96841F48031F960E86BB0F1A1
+:10386000805F5BD100F084F804463868000146D5DB
+:10387000FDF786F9001B0228F7D94FF003084DE049
+:10388000FDF77EF9001B022841D9F6E700F061F848
+:10389000A86821F4781100F071F8814638680001B9
+:1038A0007FF52CAF3969686901433961002C7FF4D9
+:1038B0002EAF3168286B21F440010143316027E7C6
+:1038C00000F047F8E86821F0606100F057F804461E
+:1038D000386800019BD539696869014339612868F6
+:1038E0008105AAD5A86BB0F1804F1CBFB0F1004F85
+:1038F000002892D1316821F04041084397E700F059
+:1039000028F8286921F0604100F038F8044638684A
+:103910000001B5D539696869014339612868C10476
+:1039200005D5F168686C21F440410143F1602868D5
+:1039300081040BD5796AE86C21F03001014379628A
+:10394000796AA86C890840EA810179624046BDE83D
+:10395000F2833869696820F4FE4040EA012038614A
+:103960003969704703D1F96841F08071F960704797
+:10397000396821F080613960FDF702B9014339618E
+:10398000386840F080603860FDF7FAB8104308608E
+:103990007047000088000058206881684A06704718
+:1039A000F8B5044640F60F002568E9692A68AB6857
+:1039B00008400DD1880602D5900602D4D80040F107
+:1039C0008980E16E00294FD02046BDE8F4400847C9
+:1039D0006248034204BF624E32427BD0CF0709D512
+:1039E000D60507D501262E62D4F8885045F001058A
+:1039F000C4F888508D070AD5DD0708D5266802254A
+:103A00003562D4F8885045F00405C4F888504D0755
+:103A10000AD5DD0708D5266804253562D4F8885014
+:103A200045F00205C4F888500D070CD5950601D461
+:103A3000034208D0256808202862D4F8880040F0A6
+:103A40000800C4F8880008050BD5500109D5256881
+:103A50004FF400602862D4F8880040F02000C4F8D9
+:103A60008800D4F88800002870D0890607D5900611
+:103A700001D4D80003D5E16E09B120468847D4F8B7
+:103A8000880021688A68510602D410F0280F1AD0E5
+:103A9000204600F069F8FFF77FFF0FD500F057F8D8
+:103AA00060B1DFF8C0108163A06F00F079F80028E2
+:103AB0004CD0A06F816BBDE8F44008472046BDE8BC
+:103AC000F24000F004B9204600F001F90020C4F8EB
+:103AD0008800F1BDC80209D5580207D54FF48010FF
+:103AE00028622046BDE8F24000F0F2B8080609D589
+:103AF000100601D4180205D5216F39B32046BDE860
+:103B0000F440084748060FD550060DD5286820F028
+:103B1000400028602021C4F8801000202067204643
+:103B2000BDE8F24000F0D6B8080206D5500004D532
+:103B30002046BDE8F24000F0DBB8C80148BF002ACB
+:103B400004D52046BDE8F24000F0D3B8F1BD81684D
+:103B500021F040018160A06F70470000010000105B
+:103B6000200100048D3B000801680A6822F490726D
+:103B70000A60DFF82810026893680B4093602021E8
+:103B8000C0F884100021C16670470000806A00F10F
+:103B9000560100220A810A8000F099B8FEFFFFEF6B
+:103BA00038B500F1240200245178022903D0042002
+:103BB0009061012428E001680B6823F00E030B607C
+:103BC00001680D686D086D000D60516A0B6823F483
+:103BD00080730B60012192F82030D56903F01C033B
+:103BE00099406960936AD16A5960116B31B10B6871
+:103BF00023F480730B60536B916B596001215170FA
+:103C00001470516901B18847204632BDF8B500F102
+:103C100024010423CA6914680268156891F82060B9
+:103C200006F01C0603FA06F73C4210D06F070ED5CB
+:103C30001468A50603D4156825F00405156000F086
+:103C40003DF8C968002938D0BDE8F4400847022390
+:103C500003FA06F73C4213D0AF0711D51468A50646
+:103C600005D4156825F00A05156001224A7000F098
+:103C700025F800220A708968F9B1BDE8F4400847C8
+:103C8000082303FA06F6344217D02B0715D513681C
+:103C900023F00E031360012291F82030CC6903F069
+:103CA0001C039A40626001228A614A7000220A70F5
+:103CB000096911B1BDE8F4400847F1BD91F8202031
+:103CC000CC6902F01C0293406360704700007047AB
+:103CD0007047000000680449884204D1034908681D
+:103CE000002818BF0047704700380140E804002052
+:103CF0007047704700EB81003D4AD0F88010914238
+:103D000001D0012070470020704742F4806240F8E3
+:103D10002120704737481F2181610168C908C90007
+:103D200041F0030101603448016841F00401016081
+:103D300030BF7047704710B5304C00F048F800288D
+:103D4000FBD1042100F044F828B92D480068010493
+:103D500003D500F03FF800F057F800220321204679
+:103D6000FFF7D3FF23480168C908C90041F00201E9
+:103D700001602148016841F00401016030BF10BDBD
+:103D800010B51E4C00F026F800F021F80028FBD1F9
+:103D90004FF0B040816801F00C01042911D1016895
+:103DA00041F48031016001688903FCD5816889088C
+:103DB000890041F002018160816801F00C0108294D
+:103DC000FAD12046BDE81040002203219DE70321DF
+:103DD00020468FE700220421204696E780B500F0B8
+:103DE0002DF80548016821F00401016030BF01BDD4
+:103DF000000400800004005810ED00E0001400589A
+:103E00008804005800F022B84FF0B040016841F437
+:103E10008071016001684905FCD5816889088900C5
+:103E200041F001018160416A89088900416281682D
+:103E300001F00C010429FAD1704700000248016822
+:103E400021F002010160704710E000E002480168C3
+:103E500041F002010160704710E000E07047FEE7AA
+:103E6000FEE7FEE7FEE770477047704700F024B8B2
+:103E70000548FFF7CBBE0548FFF792BD0448FFF7A2
+:103E80008FBD0448FFF7C2BE2403002018020020A3
+:103E90008C010020840300201020FFF73DB9012091
+:103EA000FFF73AB90220FFF737B9FDF7BAB8FEF7C6
+:103EB000B7BFFEF78BBF000002490A688868821806
+:103EC0000A6070474400002019E050F8042BD30723
+:103ED00044BFA9F101039A18091F0023042942F8DD
+:103EE000043BF9D25FEA817C134604D54FF0000C05
+:103EF000A2F800C09B1CC90744BF0021197050F8EC
+:103F0000041B0029E1D1704730B50168846842186C
+:103F1000416802EB5103C9070BD54C4409E012F983
+:103F2000011B12F8015B002904F8015B05D5491C4F
+:103F3000F9D19A42F3D10C3030BD491EF1D5F8E7E2
+:103F400010B500F013F802000023DB4300241068D2
+:103F5000984203D011000220ABBE14605068984212
+:103F600003D0111D0220ABBE546010BD0148704744
+:103F7000000000006000002010B5074979441831A6
+:103F8000064C7C44163404E00A68081D1144884736
+:103F90000146A142F8D110BD2C00000050000000E5
+:103FA0004EF68851CEF20001086840F470000860B7
+:103FB000BFF34F8FBFF36F8F4FF00070E1EE100A29
+:103FC0007047000005FFFFFF90040000680000201C
+:103FD0008008000024000320000000002DFFFFFFE8
+:103FE0005C010000480000000400002000F00DF813
+:103FF000002801D0FFF7C0FFAFF300800020AFF32F
+:104000000080FFF762F900F002F80120704700F02D
+:1040100001B800000746384600F002F8FBE7000050
+:1040200080B5FFF78DFF024A11001820ABBEFBE7F9
+:1040300026000200DD3D0008053E0008373D00086F
+:10404000813D0008153D0008353D000801488047C6
+:1040500001480047D10900085D400008AFF3008027
+:10406000FFF79EFFFFF7C2FFFFF7FEBFFFF7FEBFA0
:10407000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF74
:10408000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF64
:10409000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF54
@@ -1037,8 +1037,13 @@
:1040B000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF34
:1040C000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF24
:1040D000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF14
-:1040E000FFF7FEBFFFF7FEBFFFF7FEBF020DFF01A8
-:1040F000D700F8FFF0000010FD000001FC000E08E2
-:104100000048000C0048000C004800093D00F8FF82
-:040000050800400DA2
+:1040E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF04
+:1040F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF4
+:10410000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFE3
+:10411000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFD3
+:10412000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFC3
+:10413000FFF7FEBFFFF7FEBFFFF7FEBF020DFF0157
+:10414000D700F8FFF0000010FD000001FC000E0891
+:104150000048000C0048000C004800093D00F8FF32
+:040000050800405D52
:00000001FF
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/app_conf.h
index 45d7cd910..5a91eccae 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/app_conf.h
@@ -105,6 +105,7 @@
/**< specific parameters */
/*****************************************************/
+
/**
* AD Element - Group B Feature
*/
@@ -349,7 +350,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/stm32wbxx_hal_conf.h
index 31d63e37a..7f1537260 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Inc/stm32wbxx_hal_conf.h
@@ -276,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c
index 90395003a..9d38af323 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/main.c
index f65ab4945..febf1f268 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/main.c
@@ -209,13 +209,12 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
-
/* USER CODE BEGIN Smps */
#if (CFG_USE_SMPS != 0)
@@ -230,8 +229,6 @@ void SystemClock_Config(void)
#endif
/* USER CODE END Smps */
-
-
}
/**
@@ -372,9 +369,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -421,6 +415,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/stm32wbxx_hal_msp.c
index 87614ca60..f22ad0f38 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/Core/Src/stm32wbxx_hal_msp.c
@@ -88,6 +88,7 @@ void HAL_MspInit(void)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
+ HAL_DMA_MuxSyncConfigTypeDef pSyncConfig;
if(huart->Instance==LPUART1)
{
/* USER CODE BEGIN LPUART1_MspInit 0 */
@@ -132,6 +133,16 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
Error_Handler();
}
+ pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT;
+ pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_NO_EVENT;
+ pSyncConfig.SyncEnable = DISABLE;
+ pSyncConfig.EventEnable = DISABLE;
+ pSyncConfig.RequestNumber = 1;
+ if (HAL_DMAEx_ConfigMuxSync(&hdma_lpuart1_tx, &pSyncConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
__HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
/* LPUART1 interrupt Init */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/EWARM/stm32wb55xx_flash_cm4.icf b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/EWARM/stm32wb55xx_flash_cm4.icf
index 5f36da686..46f07d1f3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/EWARM/stm32wb55xx_flash_cm4.icf
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/EWARM/stm32wb55xx_flash_cm4.icf
@@ -11,7 +11,7 @@ define symbol __ICFEDIT_region_RAM_start__ = 0x20000004;
define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x1000;
-define symbol __ICFEDIT_size_heap__ = 0x400;
+define symbol __ICFEDIT_size_heap__ = 0x400;
/**** End of ICF editor section. ###ICF###*/
define symbol __ICFEDIT_region_RAM_SHARED_start__ = 0x20030000;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/app_ble.c
index 85a925fc2..64baa2f22 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/app_ble.c
@@ -335,7 +335,7 @@ void APP_BLE_Init( void )
* Initialization of ADV - Ad Manufacturer Element - Support OTA Bit Mask
*/
#if(BLE_CFG_OTA_REBOOT_CHAR != 0)
- manuf_data[sizeof(manuf_data)-8] = CFG_FEATURE_OTA_REBOOT;
+ manuf_data[sizeof(manuf_data)-8] = CFG_FEATURE_OTA_REBOOT;
#endif
/**
* Initialize DIS Application
@@ -426,7 +426,6 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
break;
case EVT_LE_PHY_UPDATE_COMPLETE:
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE \n");
-
evt_le_phy_update_complete = (hci_le_phy_update_complete_event_rp0*)meta_evt->data;
if (evt_le_phy_update_complete->Status == 0)
{
@@ -436,11 +435,12 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
{
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE, status nok \n");
}
+
ret = hci_le_read_phy(BleApplicationContext.BleApplicationContext_legacy.connectionHandle,&TX_PHY,&RX_PHY);
if (ret == BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("Read_PHY success \n");
-
+
if ((TX_PHY == TX_2M) && (RX_PHY == RX_2M))
{
APP_DBG_MSG("PHY Param TX= %d, RX= %d \n", TX_PHY, RX_PHY);
@@ -459,35 +459,32 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE END EVT_LE_PHY_UPDATE_COMPLETE */
break;
case EVT_LE_CONN_COMPLETE:
- {
+ {
hci_le_connection_complete_event_rp0 *connection_complete_event;
/**
* The connection is done, there is no need anymore to schedule the LP ADV
*/
connection_complete_event = (hci_le_connection_complete_event_rp0 *) meta_evt->data;
-
- HW_TS_Stop(BleApplicationContext.Advertising_mgr_timer_Id);
- APP_DBG_MSG("EVT_LE_CONN_COMPLETE for connection handle 0x%x\n",
- connection_complete_event->Connection_Handle);
+ HW_TS_Stop(BleApplicationContext.Advertising_mgr_timer_Id);
- if (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_CONNECTING)
- {
- /* Connection as client */
- BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_CLIENT;
- }
- else
- {
- /* Connection as server */
- BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_SERVER;
- }
- BleApplicationContext.BleApplicationContext_legacy.connectionHandle =
- connection_complete_event->Connection_Handle;
+ APP_DBG_MSG("EVT_LE_CONN_COMPLETE for connection handle 0x%x\n", connection_complete_event->Connection_Handle);
+ if (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_CONNECTING)
+ {
+ /* Connection as client */
+ BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_CLIENT;
+ }
+ else
+ {
+ /* Connection as server */
+ BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_SERVER;
+ }
+ BleApplicationContext.BleApplicationContext_legacy.connectionHandle = connection_complete_event->Connection_Handle;
/* USER CODE BEGIN HCI_EVT_LE_CONN_COMPLETE */
/* USER CODE END HCI_EVT_LE_CONN_COMPLETE */
- }
+ }
break; /* HCI_EVT_LE_CONN_COMPLETE */
default:
@@ -581,15 +578,15 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE BEGIN EVT_BLUE_GAP_PROCEDURE_COMPLETE */
/* USER CODE END EVT_BLUE_GAP_PROCEDURE_COMPLETE */
- break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
+ break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
}
break; /* EVT_VENDOR */
- default:
- /* USER CODE BEGIN ECODE_DEFAULT*/
+ default:
+ /* USER CODE BEGIN ECODE_DEFAULT*/
- /* USER CODE END ECODE_DEFAULT*/
- break;
+ /* USER CODE END ECODE_DEFAULT*/
+ break;
}
return (SVCCTL_UserEvtFlowEnable);
@@ -681,7 +678,7 @@ static void Ble_Tl_Init( void )
return;
}
- static void Ble_Hci_Gap_Gatt_Init(void){
+static void Ble_Hci_Gap_Gatt_Init(void){
uint8_t role;
uint8_t index;
@@ -781,7 +778,7 @@ static void Ble_Tl_Init( void )
if (role > 0)
{
- const char *name = "STM32WB";
+ const char *name = "HRSTM";
aci_gap_init(role, 0,
APPBLE_GAP_DEVICE_NAME_LENGTH,
&gap_service_handle, &gap_dev_name_char_handle, &gap_appearance_char_handle);
@@ -850,7 +847,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
{
tBleStatus ret = BLE_STATUS_INVALID_PARAMS;
uint16_t Min_Inter, Max_Inter;
-
+
if (New_Status == APP_BLE_FAST_ADV)
{
Min_Inter = AdvIntervalMin;
@@ -903,7 +900,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
/* Update Advertising data */
ret = aci_gap_update_adv_data(sizeof(manuf_data), (uint8_t*) manuf_data);
- if (ret == BLE_STATUS_SUCCESS)
+ if (ret == BLE_STATUS_SUCCESS)
{
if (New_Status == APP_BLE_FAST_ADV)
{
@@ -1000,7 +997,7 @@ static void Adv_Mgr( void )
* The background is the only place where the application can make sure a new aci command
* is not sent if there is a pending one
*/
- UTIL_SEQ_SetTask(1 << CFG_TASK_ADV_UPDATE_ID, CFG_SCH_PRIO_0);
+ UTIL_SEQ_SetTask(1 << CFG_TASK_ADV_UPDATE_ID, CFG_SCH_PRIO_0);
return;
}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/hrs_app.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/hrs_app.c
index e84751eaa..081905ee3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/hrs_app.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/App/hrs_app.c
@@ -65,6 +65,7 @@ PLACE_IN_SECTION("BLE_APP_CONTEXT") static HRSAPP_Context_t HRSAPP_Context;
/**
* END of Section BLE_APP_CONTEXT
*/
+
/* USER CODE BEGIN PV */
/* USER CODE END PV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/BLE_HeartRateFreeRTOS.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/BLE_HeartRateFreeRTOS.ioc
index 89992543b..33dcea120 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/BLE_HeartRateFreeRTOS.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/BLE_HeartRateFreeRTOS.ioc
@@ -37,8 +37,9 @@ Dma.USART1_TX.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.USART1_TX.1.SyncRequestNumber=1
Dma.USART1_TX.1.SyncSignalID=NONE
FREERTOS.FootprintOK=true
-FREERTOS.IPParameters=Tasks01,FootprintOK,configTOTAL_HEAP_SIZE,configUSE_TICKLESS_IDLE
+FREERTOS.IPParameters=Tasks01,FootprintOK,configTOTAL_HEAP_SIZE,configUSE_TICKLESS_IDLE,configMINIMAL_STACK_SIZE
FREERTOS.Tasks01=defaultTask,24,256,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL
+FREERTOS.configMINIMAL_STACK_SIZE=128
FREERTOS.configTOTAL_HEAP_SIZE=6000
FREERTOS.configUSE_TICKLESS_IDLE=2
File.Version=6
@@ -99,12 +100,13 @@ Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.LPUART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -218,7 +220,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -240,7 +242,9 @@ RCC.RNGFreq_Value=32000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
@@ -283,18 +287,16 @@ STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO=3
STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO=0
STM32_WPAN.CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION=1
STM32_WPAN.CFG_HW_USART1_ENABLED=1
-STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_ONLY
+STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_YES_NO
STM32_WPAN.CFG_LPM_SUPPORTED=1
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=0xFA0
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=2500
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA=0xfa0
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=0x640
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=1000
STM32_WPAN.CFG_MITM_PROTECTION=CFG_MITM_PROTECTION_REQUIRED
STM32_WPAN.CFG_RTCCLK_DIVIDER_CONF=0
STM32_WPAN.DBG_TRACE_UART_CFG=hw_uart1
-STM32_WPAN.IPParameters=P2P_SERVER_NUMBER,CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,CFG_HW_LPUART1_DMA_TX_SUPPORTED,LOCAL_NAME,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,L2CAP_REQUEST_NEW_CONN_PARAM,BT_SIG_HEART_RATE_SENSOR,CFG_DEBUGGER_SUPPORTED,BLE_DBG_DIS_EN,BLE_DBG_HRS_EN,BLE_DBG_SVCCTL_EN,BLE_APPLICATION_TYPE,BLE_CFG_DIS_MANUFACTURER_NAME_STRING,BLE_CFG_DIS_MODEL_NUMBER_STRING,BLE_CFG_DIS_SERIAL_NUMBER_STRING,BLE_CFG_DIS_HARDWARE_REVISION_STRING,BLE_CFG_DIS_FIRMWARE_REVISION_STRING,BLE_CFG_DIS_SOFTWARE_REVISION_STRING,BLE_CFG_DIS_SYSTEM_ID,BLE_CFG_DIS_IEEE_CERTIFICATION,BLE_CFG_DIS_PNP_ID,BLE_CFG_HRS_BODY_SENSOR_LOCATION_CHAR,BLE_CFG_HRS_ENERGY_EXPENDED_INFO_FLAG,BLE_CFG_HRS_ENERGY_RR_INTERVAL_FLAG,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART
-STM32_WPAN.IPParametersWithoutCheck=CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN
+STM32_WPAN.IPParameters=P2P_SERVER_NUMBER,CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,CFG_HW_LPUART1_DMA_TX_SUPPORTED,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,L2CAP_REQUEST_NEW_CONN_PARAM,BT_SIG_HEART_RATE_SENSOR,CFG_DEBUGGER_SUPPORTED,BLE_DBG_DIS_EN,BLE_DBG_HRS_EN,BLE_DBG_SVCCTL_EN,BLE_APPLICATION_TYPE,BLE_CFG_DIS_MANUFACTURER_NAME_STRING,BLE_CFG_DIS_MODEL_NUMBER_STRING,BLE_CFG_DIS_SERIAL_NUMBER_STRING,BLE_CFG_DIS_HARDWARE_REVISION_STRING,BLE_CFG_DIS_FIRMWARE_REVISION_STRING,BLE_CFG_DIS_SOFTWARE_REVISION_STRING,BLE_CFG_DIS_SYSTEM_ID,BLE_CFG_DIS_IEEE_CERTIFICATION,BLE_CFG_DIS_PNP_ID,BLE_CFG_HRS_BODY_SENSOR_LOCATION_CHAR,BLE_CFG_HRS_ENERGY_EXPENDED_INFO_FLAG,BLE_CFG_HRS_ENERGY_RR_INTERVAL_FLAG,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART
STM32_WPAN.L2CAP_REQUEST_NEW_CONN_PARAM=1
-STM32_WPAN.LOCAL_NAME=HRSTM
STM32_WPAN.LOCAL_NAME_FORMATTED=,'H','R','S','T','M'
STM32_WPAN.P2P_SERVER_NUMBER=P2P_SERVER1
USART1.AutoBaudRateEnableParam=UART_ADVFEATURE_AUTOBAUDRATE_DISABLE
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/FreeRTOSConfig.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/FreeRTOSConfig.h
index 6add07b2b..9c3a79b89 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/FreeRTOSConfig.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/FreeRTOSConfig.h
@@ -46,12 +46,11 @@
/* Section where include file can be added */
/* USER CODE END Includes */
-/* Ensure stdint is only used by the compiler, and not the assembler. */
+/* Ensure definitions are only used by the compiler, and not by the assembler. */
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
#include <stdint.h>
extern uint32_t SystemCoreClock;
#endif
-
#define configUSE_PREEMPTION 1
#define configSUPPORT_STATIC_ALLOCATION 1
#define configSUPPORT_DYNAMIC_ALLOCATION 1
@@ -141,6 +140,7 @@ standard names. */
/* IMPORTANT: This define is commented when used with STM32Cube firmware, when the timebase source is SysTick,
to prevent overwriting SysTick_Handler defined within STM32Cube HAL */
+
#define xPortSysTickHandler SysTick_Handler
/* USER CODE BEGIN Defines */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/app_conf.h
index 674ff4452..809017802 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Inc/app_conf.h
@@ -107,13 +107,6 @@
/*****************************************************/
/**
- * SMPS supply
- * SMPS not used when Set to 0
- * SMPS used when Set to 1
- */
-#define CFG_USE_SMPS 1
-
-/**
* AD Element - Group B Feature
*/
/* LSB - Second Byte */
@@ -412,8 +405,8 @@ typedef enum
* When both are set to 0, no trace are output
* When both are set to 1, CFG_DEBUG_TRACE_FULL is selected
*/
-#define CFG_DEBUG_TRACE_LIGHT 0
-#define CFG_DEBUG_TRACE_FULL 0
+#define CFG_DEBUG_TRACE_LIGHT 0
+#define CFG_DEBUG_TRACE_FULL 0
#if (( CFG_DEBUG_TRACE != 0 ) && ( CFG_DEBUG_TRACE_LIGHT == 0 ) && (CFG_DEBUG_TRACE_FULL == 0))
#undef CFG_DEBUG_TRACE_FULL
@@ -463,7 +456,7 @@ typedef enum
#define CFG_HCI_USER_EVT_PROCESS_CB_SIZE (0)
#define CFG_HCI_USER_EVT_PROCESS_STACK_MEM (0)
#define CFG_HCI_USER_EVT_PROCESS_PRIORITY osPriorityNone
-#define CFG_HCI_USER_EVT_PROCESS_STACk_SIZE (128 * 2)
+#define CFG_HCI_USER_EVT_PROCESS_STACk_SIZE (128 * 8)
#define CFG_ADV_UPDATE_PROCESS_NAME "ADV_UPDATE_PROCESS"
#define CFG_ADV_UPDATE_PROCESS_ATTR_BITS (0)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_entry.c
index 6461a975a..ee65df527 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_entry.c
@@ -128,7 +128,7 @@ void APPE_Init( void )
/* USER CODE BEGIN APPE_Init_2 */
/* USER CODE END APPE_Init_2 */
- return;
+ return;
}
/* USER CODE BEGIN FD */
@@ -220,8 +220,10 @@ static void appe_Tl_Init( void )
MtxShciId = osMutexNew( NULL );
SemShciId = osSemaphoreNew( 1, 0, NULL ); /*< Create the semaphore and make it busy at initialization */
- /**< System channel initialization */
+ /** FreeRTOS system task creation */
ShciUserEvtProcessId = osThreadNew(ShciUserEvtProcess, NULL, &ShciUserEvtProcess_attr);
+
+ /**< System channel initialization */
SHci_Tl_Init_Conf.p_cmdbuffer = (uint8_t*)&SystemCmdBuffer;
SHci_Tl_Init_Conf.StatusNotCallBack = APPE_SysStatusNot;
shci_init(APPE_SysUserEvtRx, (void*) &SHci_Tl_Init_Conf);
@@ -256,6 +258,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_freertos.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_freertos.c
new file mode 100644
index 000000000..eec1ef82f
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/app_freertos.c
@@ -0,0 +1,70 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : app_freertos.c
+ * Description : Code for freertos applications
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "FreeRTOS.h"
+#include "task.h"
+#include "main.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN Variables */
+
+/* USER CODE END Variables */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN FunctionPrototypes */
+
+/* USER CODE END FunctionPrototypes */
+
+/* USER CODE BEGIN VPORT_SUPPORT_TICKS_AND_SLEEP */
+__weak void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime )
+{
+ // Generated when configUSE_TICKLESS_IDLE == 2.
+ // Function called in tasks.c (in portTASK_FUNCTION).
+ // TO BE COMPLETED or TO BE REPLACED by a user one, overriding that weak one.
+}
+/* USER CODE END VPORT_SUPPORT_TICKS_AND_SLEEP */
+
+/* Private application code --------------------------------------------------*/
+/* USER CODE BEGIN Application */
+
+/* USER CODE END Application */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/main.c
index ccc5bddf2..0e07fbfcb 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/main.c
@@ -114,15 +114,12 @@ int main(void)
/* USER CODE END 1 */
-
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
- /* Initialize the OS */
-
/* USER CODE BEGIN Init */
Reset_Device();
Config_HSE();
@@ -145,7 +142,7 @@ int main(void)
/* USER CODE END 2 */
- osKernelInitialize(); // Initialize CMSIS-RTOS
+ osKernelInitialize();
/* USER CODE BEGIN RTOS_MUTEX */
/* add mutexes, ... */
@@ -181,7 +178,7 @@ int main(void)
/* Start scheduler */
osKernelStart();
-
+
/* We should never get here as control is now taken by the scheduler */
/* Infinite loop */
@@ -250,13 +247,12 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
-
/* USER CODE BEGIN Smps */
#if (CFG_USE_SMPS != 0)
@@ -271,8 +267,6 @@ void SystemClock_Config(void)
#endif
/* USER CODE END Smps */
-
-
}
/**
@@ -413,9 +407,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -462,6 +453,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
@@ -660,7 +652,6 @@ void HAL_Delay(uint32_t Delay)
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
-
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/stm32wbxx_it.c
index 33043d814..4351c429d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/Core/Src/stm32wbxx_it.c
@@ -24,7 +24,8 @@
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32wbxx_it.h"
-#include "cmsis_os.h"
+#include "FreeRTOS.h"
+#include "task.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewd
index 82854b7ae..228c49f28 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_HeartRateFreeRTOS</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewp
index 446f27089..21e228906 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/EWARM/BLE_HeartRateFreeRTOS.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_HeartRateFreeRTOS</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_HeartRateFreeRTOS\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_HeartRateFreeRTOS\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_HeartRateFreeRTOS\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -655,7 +655,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -663,7 +663,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>stm32wb55rg_nucleo_BLE_HeartRateFreeRTOS.bin</state>
+ <state>BLE_HeartRateFreeRTOS.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1143,6 +1143,9 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma_ex.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_gpio.c</name>
</file>
<file>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvoptx
index aadda47d9..99ea3742b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvoptx
@@ -1,7 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_HeartRateFreeRTOS</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -51,11 +73,11 @@
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
- <CpuCode>0</CpuCode>
+ <CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,952 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>Application/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/freertos_port.c</PathWithFileName>
+ <FilenameWithoutPath>freertos_port.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_hal_msp.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_msp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_hal_timebase_tim.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_timebase_tim.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/dis_app.c</PathWithFileName>
+ <FilenameWithoutPath>dis_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/hrs_app.c</PathWithFileName>
+ <FilenameWithoutPath>hrs_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_spi.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_spi_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/blesvc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/dis.c</PathWithFileName>
+ <FilenameWithoutPath>dis.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/hrs.c</PathWithFileName>
+ <FilenameWithoutPath>hrs.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/Third_Party/FreeRTOS/Source</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>56</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/Third_Party/FreeRTOS/Source/list.c</PathWithFileName>
+ <FilenameWithoutPath>list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>57</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/Third_Party/FreeRTOS/Source/queue.c</PathWithFileName>
+ <FilenameWithoutPath>queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>58</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/Third_Party/FreeRTOS/Source/tasks.c</PathWithFileName>
+ <FilenameWithoutPath>tasks.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>59</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/Third_Party/FreeRTOS/Source/timers.c</PathWithFileName>
+ <FilenameWithoutPath>timers.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>60</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c</PathWithFileName>
+ <FilenameWithoutPath>event_groups.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>61</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c</PathWithFileName>
+ <FilenameWithoutPath>cmsis_os2.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/Third_Party/FreeRTOS/Source/portable/IAR/ARM_CM4F</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>62</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c</PathWithFileName>
+ <FilenameWithoutPath>port.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>17</GroupNumber>
+ <FileNumber>63</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c</PathWithFileName>
+ <FilenameWithoutPath>heap_4.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>18</GroupNumber>
+ <FileNumber>64</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>18</GroupNumber>
+ <FileNumber>65</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvprojx
index ba31aa229..c1c37ab2a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/MDK-ARM/BLE_HeartRateFreeRTOS.uvprojx
@@ -1,41 +1,46 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
- <TargetName>Production</TargetName>
+ <Target>
+ <TargetName>BLE_HeartRateFreeRTOS</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -43,45 +48,49 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_HeartRateFreeRTOS\Exe\</OutputDirectory>
<OutputName>BLE_HeartRateFreeRTOS</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>0</CreateHexFile>
+ <CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
- <BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <BrowseInformation>0</BrowseInformation>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +104,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +126,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +138,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +175,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +190,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +243,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +273,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +298,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +307,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +324,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
<MiscControls>--diag_suppress 1296</MiscControls>
<Define>USE_STM32WBXX_NUCLEO,STM32WB55xx,USE_HAL_DRIVER,CORE_CM4</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/ble;../Core/Inc;../STM32_WPAN/app;../../../../../../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2;../../../../../../Middlewares/Third_Party/FreeRTOS/Source/include;../../../../../../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F</IncludePath>
</VariousControls>
</Cads>
@@ -371,10 +348,13 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
<IncludePath>../Core/Inc</IncludePath>
</VariousControls>
</Aads>
@@ -387,22 +367,18 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
- <Group>
+ <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -454,7 +430,7 @@
</Group>
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -817,20 +793,24 @@
</File>
</Files>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ </Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_HeartRateFreeRTOS"/>
</targetInfos>
</component>
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/App/app_ble.c
index 45a77d596..3f153428c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/App/app_ble.c
@@ -363,7 +363,7 @@ void APP_BLE_Init( void )
* Initialization of ADV - Ad Manufacturer Element - Support OTA Bit Mask
*/
#if(BLE_CFG_OTA_REBOOT_CHAR != 0)
- manuf_data[sizeof(manuf_data)-8] = CFG_FEATURE_OTA_REBOOT;
+ manuf_data[sizeof(manuf_data)-8] = CFG_FEATURE_OTA_REBOOT;
#endif
/**
* Initialize DIS Application
@@ -454,7 +454,6 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
break;
case EVT_LE_PHY_UPDATE_COMPLETE:
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE \n");
-
evt_le_phy_update_complete = (hci_le_phy_update_complete_event_rp0*)meta_evt->data;
if (evt_le_phy_update_complete->Status == 0)
{
@@ -464,12 +463,12 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
{
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE, status nok \n");
}
-
+
ret = hci_le_read_phy(BleApplicationContext.BleApplicationContext_legacy.connectionHandle,&TX_PHY,&RX_PHY);
if (ret == BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("Read_PHY success \n");
-
+
if ((TX_PHY == TX_2M) && (RX_PHY == RX_2M))
{
APP_DBG_MSG("PHY Param TX= %d, RX= %d \n", TX_PHY, RX_PHY);
@@ -486,8 +485,7 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE BEGIN EVT_LE_PHY_UPDATE_COMPLETE */
/* USER CODE END EVT_LE_PHY_UPDATE_COMPLETE */
- break;
-
+ break;
case EVT_LE_CONN_COMPLETE:
{
hci_le_connection_complete_event_rp0 *connection_complete_event;
@@ -612,11 +610,11 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
}
break; /* EVT_VENDOR */
- default:
- /* USER CODE BEGIN ECODE_DEFAULT*/
+ default:
+ /* USER CODE BEGIN ECODE_DEFAULT*/
- /* USER CODE END ECODE_DEFAULT*/
- break;
+ /* USER CODE END ECODE_DEFAULT*/
+ break;
}
return (SVCCTL_UserEvtFlowEnable);
@@ -811,7 +809,7 @@ static void Ble_Hci_Gap_Gatt_Init(void){
if (role > 0)
{
- const char *name = "STM32WB";
+ const char *name = "HRSTM";
aci_gap_init(role, 0,
APPBLE_GAP_DEVICE_NAME_LENGTH,
&gap_service_handle, &gap_dev_name_char_handle, &gap_appearance_char_handle);
@@ -865,7 +863,7 @@ static void Ble_Hci_Gap_Gatt_Init(void){
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.Use_Fixed_Pin,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.Fixed_Pin,
0
- );
+ );
/**
* Initialize whitelist
@@ -955,8 +953,8 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
else
{
APP_DBG_MSG("Start Low Power Advertising Failed , result: %d \n", ret);
+ }
}
- }
return;
}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/.cproject
index 7f112dede..b71cc3905 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1279485587" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.490458115" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1709529787" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1128057867" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_HeartRateFreeRTOS}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1128057867" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -145,7 +145,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.704864323" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_HeartRateFreeRTOS.fr.ac6.managedbuild.target.gnu.cross.exe.704864323" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -156,7 +156,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_HeartRateFreeRTOS"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/.project
new file mode 100644
index 000000000..454bf5c4b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/.project
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>BLE_HeartRateFreeRTOS</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>Doc/readme.txt</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/readme.txt</locationURI>
+ </link>
+ <link>
+ <name>Utilities/stm32_lpm.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Utilities/lpm/tiny_lpm/stm32_lpm.c</locationURI>
+ </link>
+ <link>
+ <name>Utilities/stm32_seq.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Utilities/sequencer/stm32_seq.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/app_entry.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/app_entry.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/freertos_port.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/freertos_port.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/hw_timerserver.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/hw_timerserver.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/hw_uart.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/hw_uart.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/main.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/main.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/stm32_lpm_if.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/stm32_lpm_if.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/stm32wbxx_hal_msp.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_hal_msp.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/stm32wbxx_hal_timebase_tim.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_hal_timebase_tim.c</locationURI>
+ </link>
+ <link>
+ <name>Application/Core/stm32wbxx_it.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_it.c</locationURI>
+ </link>
+ <link>
+ <name>Application/SW4STM32/startup_stm32wb55xx_cm4.s</name>
+ <type>1</type>
+ <locationURI>PARENT-1-PROJECT_LOC/startup_stm32wb55xx_cm4.s</locationURI>
+ </link>
+ <link>
+ <name>Application/SW4STM32/syscalls.c</name>
+ <type>1</type>
+ <locationURI>PARENT-1-PROJECT_LOC/syscalls.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/CMSIS/system_stm32wbxx.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/Core/Src/system_stm32wbxx.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_adc.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_adc_ex.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_cortex.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma_ex.c</name>
+ <type>1</type>
+ <location>C:/dev/GIT_Dory/stm32wb_M4_Firmware/Firmware/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_gpio.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr_ex.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc_ex.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rtc.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rtc_ex.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_spi.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_spi_ex.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim_ex.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart_ex.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</locationURI>
+ </link>
+ <link>
+ <name>Application/STM32_WPAN/app/app_ble.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/STM32_WPAN/App/app_ble.c</locationURI>
+ </link>
+ <link>
+ <name>Application/STM32_WPAN/app/dis_app.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/STM32_WPAN/App/dis_app.c</locationURI>
+ </link>
+ <link>
+ <name>Application/STM32_WPAN/app/hrs_app.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/STM32_WPAN/App/hrs_app.c</locationURI>
+ </link>
+ <link>
+ <name>Application/STM32_WPAN/target/hw_ipcc.c</name>
+ <type>1</type>
+ <locationURI>PARENT-2-PROJECT_LOC/STM32_WPAN/Target/hw_ipcc.c</locationURI>
+ </link>
+ <link>
+ <name>Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/dbg_trace.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/otp.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/otp.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/stm_list.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_list.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/stm_queue.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/blesvc/dis.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/svc/Src/dis.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/blesvc/hrs.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/svc/Src/hrs.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/blesvc/svc_ctl.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/core/ble_gap_aci.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/core/ble_gatt_aci.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/core/ble_hal_aci.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/core/ble_hci_le.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/core/ble_l2cap_aci.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble/core/osal.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/Third_Party/FreeRTOS/Source/list.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/list.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/Third_Party/FreeRTOS/Source/queue.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/queue.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/Third_Party/FreeRTOS/Source/tasks.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/tasks.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/Third_Party/FreeRTOS/Source/timers.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/timers.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c</locationURI>
+ </link>
+ <link>
+ <name>Middlewares/Third_Party/FreeRTOS/Source/portable/IAR/ARM_CM4F/port.c</name>
+ <type>1</type>
+ <locationURI>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c</locationURI>
+ </link>
+ </linkedResources>
+</projectDescription>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/BLE_HeartRateFreeRTOS/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Binary/BLE_HeartRate_ota_reference.bin b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Binary/BLE_HeartRate_ota_reference.bin
index 2206947b3..73c65bcdf 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Binary/BLE_HeartRate_ota_reference.bin
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Binary/BLE_HeartRate_ota_reference.bin
Binary files differ
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/app_entry.c
index 90395003a..9d38af323 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/main.c
index f65ab4945..eaf5c9992 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/Core/Src/main.c
@@ -209,7 +209,7 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewd
index f35bb1a61..333b2599f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>BLE_HeartRate</name>
+ <name>BLE_HeartRate_ota</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewp
index ecdf6119a..1be214d13 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/EWARM/BLE_HeartRate_ota.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>BLE_HeartRate</name>
+ <name>BLE_HeartRate_ota</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>1</debug>
<option>
<name>ExePath</name>
- <state>BLE_HeartRate/Exe</state>
+ <state>BLE_HeartRate_ota/Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>BLE_HeartRate/Obj</state>
+ <state>BLE_HeartRate_ota/Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>BLE_HeartRate/List</state>
+ <state>BLE_HeartRate_ota/List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -713,7 +713,7 @@
</option>
<option>
<name>IlinkOutputFile</name>
- <state>BLE_HeartRate.out</state>
+ <state>BLE_HeartRate_ota.out</state>
</option>
<option>
<name>IlinkDebugInfoEnable</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvoptx
index cf1f13296..cb7958d6b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvoptx
@@ -22,7 +22,7 @@
</DaveTm>
<Target>
- <TargetName>BLE_HeartRate</TargetName>
+ <TargetName>BLE_HeartRate_ota</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -95,7 +95,7 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
- <tRtrace>1</tRtrace>
+ <tRtrace>0</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
@@ -103,7 +103,7 @@
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
- <nTsel>6</nTsel>
+ <nTsel>11</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@@ -176,7 +176,7 @@
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@@ -914,12 +914,4 @@
</File>
</Group>
- <Group>
- <GroupName>::CMSIS</GroupName>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <cbSel>0</cbSel>
- <RteFlg>1</RteFlg>
- </Group>
-
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvprojx
index 30f5001da..5dbe65ca4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/BLE_HeartRate_ota.uvprojx
@@ -7,7 +7,7 @@
<Targets>
<Target>
- <TargetName>BLE_HeartRate</TargetName>
+ <TargetName>BLE_HeartRate_ota</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
@@ -16,7 +16,7 @@
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
- <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackID>Keil.STM32WBxx_DFP.1.1.0</PackID>
<PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08007000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@@ -33,7 +33,7 @@
<SLE66CMisc></SLE66CMisc>
<SLE66AMisc></SLE66AMisc>
<SLE66LinkerMisc></SLE66LinkerMisc>
- <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB55_CM4.svd</SFDFile>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
<BinPath></BinPath>
@@ -48,8 +48,8 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>BLE_HeartRate\Exe\</OutputDirectory>
- <OutputName>BLE_HeartRate</OutputName>
+ <OutputDirectory>BLE_HeartRate_ota\Exe\</OutputDirectory>
+ <OutputName>BLE_HeartRate_ota</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>0</CreateHexFile>
@@ -106,7 +106,7 @@
<StopOnExitCode>3</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
- <ComprImg>0</ComprImg>
+ <ComprImg>1</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -138,7 +138,7 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3></Flash3>
+ <Flash3>"" ()</Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
@@ -334,7 +334,7 @@
<v6WtE>0</v6WtE>
<v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls>--diag_suppress 1296 </MiscControls>
+ <MiscControls>--diag_suppress 1296</MiscControls>
<Define>USE_STM32WBXX_NUCLEO,USE_HAL_DRIVER,STM32WB55xx</Define>
<Undefine></Undefine>
<IncludePath>../Core/Inc;../STM32_WPAN/App;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Middlewares/ST/STM32_WPAN/ble;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/CMSIS/Include;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo</IncludePath>
@@ -368,7 +368,7 @@
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
<pXoBase></pXoBase>
- <ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
+ <ScatterFile>stm32wb55xx_flash_cm4.sct</ScatterFile>
<IncludeLibs></IncludeLibs>
<IncludeLibsPath></IncludeLibsPath>
<Misc>--keep *.o(TAG_OTA_START)
@@ -704,23 +704,13 @@
</File>
</Files>
</Group>
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
</Groups>
</Target>
</Targets>
<RTE>
<apis/>
- <components>
- <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
- <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
- <targetInfos>
- <targetInfo name="BLE_HeartRate"/>
- </targetInfos>
- </component>
- </components>
+ <components/>
<files/>
</RTE>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/startup_stm32wb55xx_cm4.s
index e05e3c5ca..c0ebe4bbd 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/startup_stm32wb55xx_cm4.s
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/startup_stm32wb55xx_cm4.s
@@ -14,7 +14,8 @@
;******************************************************************************
;* @attention
;*
-;* Copyright (c) 2019 STMicroelectronics. All rights reserved.
+;* Copyright (c) 2019 STMicroelectronics. All rights reserved.
+
;*
;* This software component is licensed by ST under BSD 3-Clause license,
;* the "License"; You may not use this file except in compliance with the
@@ -50,12 +51,11 @@ __heap_limit
PRESERVE8
THUMB
-
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
- EXPORT __Vectors
- EXPORT __Vectors_End
- EXPORT __Vectors_Size
+ ; EXPORT __Vectors
+ ; EXPORT __Vectors_End
+ ;EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
@@ -138,9 +138,14 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+ DCD 0 ; Reserved
__Vectors_End
+ AREA INFO, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
__Vectors_Size EQU __Vectors_End - __Vectors
AREA |.text|, CODE, READONLY
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
index 3a7d510ae..523d6c6fd 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -2,24 +2,26 @@
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
-LR_IROM1 0x08007000 0x178 { ; load region size_region
- ER_IROM1 0x08007000 0x178 { ; load address = execution address
- *.o(RESET, +First)
- *.o(TAG_OTA_START)
+LR_IROM1 0x08007000 0x260 { ; load region size_region
+ ER_IROM1_LOW 0x08007000 0x260 { ; load address = execution address
+ *.o(RESET, +First)
+ *.o (TAG_OTA_START)
}
- RW_IRAM1 0x20000004 0x2FFFC { ; RW data
- .ANY (+RW +ZI)
- }
- RW_RAM_SHARED 0x20030000 0x2800 { ; RW data
- *(MAPPING_TABLE)
- *(MB_MEM1)
- *(MB_MEM2)
- }
- }
-LR_IROM3 0x08007178 0x78E88 {
- ER_IROM3 0x08007178 0x78E88 { ; load address = execution address
- *(InRoot$$Sections)
- .ANY (+RO)
- *.o(TAG_OTA_END)
+
+ RW_IRAM1 0x20000004 0x0002FFFC { ; RW data
+ .ANY (+RW +ZI)
}
+ RW_RAM2aRet_SHARED 0x20030000 0x2800 { ; RW data
+ *(MAPPING_TABLE)
+ *(MB_MEM1)
+ *(MB_MEM2)
+ }
+}
+
+LR_IROM3 0x08007260 0x78DA0 {
+ ER_IROM1_HIGH 0x08007260 0x78DA0 { ; load address = execution address
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ *.o (TAG_OTA_END)
}
+ } \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/App/app_ble.c
index 926354cca..c4f2c88fa 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/App/app_ble.c
@@ -415,14 +415,12 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
{
case EVT_LE_CONN_UPDATE_COMPLETE:
APP_DBG_MSG("\r\n\r** CONNECTION UPDATE EVENT WITH CLIENT \n");
-
/* USER CODE BEGIN EVT_LE_CONN_UPDATE_COMPLETE */
/* USER CODE END EVT_LE_CONN_UPDATE_COMPLETE */
break;
case EVT_LE_PHY_UPDATE_COMPLETE:
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE \n");
-
evt_le_phy_update_complete = (hci_le_phy_update_complete_event_rp0*)meta_evt->data;
if (evt_le_phy_update_complete->Status == 0)
{
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.cproject
index a414747ee..171776e70 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.cproject
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
- <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.320890936">
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.320890936" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.790078714">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.790078714" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
@@ -14,29 +14,29 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.320890936" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
- <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.320890936." name="/" resourcePath="">
- <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.1881651483" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
- <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1588204046" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1281941875" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.board.1074269034" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.790078714" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.790078714." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.1597757147" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.449312797" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1157185064" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" useByScannerDiscovery="false" value="STM32WB55RGVx" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.1806713147" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" useByScannerDiscovery="false" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="ARM Cortex-M4"/>
<listOptionValue builtIn="false" value="CM4"/>
</option>
- <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.2018295051" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.953764291" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1157665583" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
- <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1378295593" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/BLE_HeartRate}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.762091505" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1450565369" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1610918180" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.488199295" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1092795874" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+ <builder buildPath="${workspace_loc:/BLE_HeartRate_ota}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.878284847" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
</builder>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.220713059" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
- <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1657553707" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.debugging.level.1273092741" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.include.paths.368019687" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.474952866" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.708535147" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.532411792" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.include.paths.993127977" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../../../Core/Inc"/>
<listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
@@ -55,20 +55,19 @@
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
</option>
- <option id="gnu.c.compiler.option.preprocessor.def.symbols.258167460" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.123058424" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32WB55xx"/>
</option>
- <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.972534431" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
- <option id="gnu.c.compiler.option.dialect.std.623752364" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.c.compiler.dialect.default" valueType="enumerated"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1201230945" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.2088041738" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1659183965" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1468325005" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1025293823" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.346954716" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
- <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.55196944" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.debugging.level.98886592" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.include.paths.248437919" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.732305410" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.461495618" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1534419618" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.include.paths.869495107" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../../../Core/Inc"/>
<listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
@@ -87,42 +86,42 @@
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
</option>
- <option id="gnu.cpp.compiler.option.preprocessor.def.1757026625" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <option id="gnu.cpp.compiler.option.preprocessor.def.320958897" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32WB55xx"/>
</option>
- <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.1049497872" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1748463488" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.2015896882" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.181451207" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1080725016" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.2055184900" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.1444770707" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
- <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.230222835" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
- <option id="gnu.c.link.option.libs.614350311" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
- <option id="gnu.c.link.option.paths.1645482796" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
- <option id="gnu.c.link.option.ldflags.1111745956" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
- <option id="gnu.c.link.option.other.367563246" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
- <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.5147315" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.282898529" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1652767182" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" useByScannerDiscovery="false" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.c.link.option.libs.1916716243" name="Libraries (-l)" superClass="gnu.c.link.option.libs" useByScannerDiscovery="false"/>
+ <option id="gnu.c.link.option.paths.550884870" name="Library search path (-L)" superClass="gnu.c.link.option.paths" useByScannerDiscovery="false"/>
+ <option id="gnu.c.link.option.ldflags.1386605055" name="Linker flags" superClass="gnu.c.link.option.ldflags" useByScannerDiscovery="false" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.c.link.option.other.331108088" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.422447063" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1044183383" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
- <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1666034064" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
- <option id="gnu.cpp.link.option.libs.870635173" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
- <option id="gnu.cpp.link.option.paths.1451261049" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
- <option id="gnu.cpp.link.option.flags.969328060" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
- <option id="gnu.cpp.link.option.other.363094171" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.794665087" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.453467861" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.238089328" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.cpp.link.option.libs.1036004327" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+ <option id="gnu.cpp.link.option.paths.1678197545" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
+ <option id="gnu.cpp.link.option.flags.651422695" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.cpp.link.option.other.141394887" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.672390379" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.archiver.607616960" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.167285293" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
- <option id="gnu.both.asm.option.include.paths.1844005236" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.724584934" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.375747236" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1492931524" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.1206546424" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+ <option id="gnu.both.asm.option.include.paths.1626306093" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1272647308" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1313137" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
@@ -135,18 +134,18 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="BLE_HeartRate.fr.ac6.managedbuild.target.gnu.cross.exe.1225593304" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_HeartRate_ota.fr.ac6.managedbuild.target.gnu.cross.exe.1555688246" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
- <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.320890936;fr.ac6.managedbuild.config.gnu.cross.exe.debug.320890936.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.220713059;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1201230945">
+ <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.790078714;fr.ac6.managedbuild.config.gnu.cross.exe.debug.790078714.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.474952866;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1468325005">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="BLE_HeartRate"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_HeartRate_ota"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.project
index 008baecae..97b15e5a1 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>BLE_HeartRate</name>
+ <name>BLE_HeartRate_ota</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/stm32wb55xx_flash_cm4.ld
index 13b37c5d0..931a91b27 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/BLE_HeartRate_ota/stm32wb55xx_flash_cm4.ld
@@ -50,15 +50,14 @@ ENTRY(Reset_Handler)
_estack = 0x20030000; /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x400; /* required amount of heap */
-_Min_Stack_Size = 0x1000; /* required amount of stack */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
/* Specify the memory areas */
MEMORY
{
-FLASH (rx) : ORIGIN = 0x08007000, LENGTH = 1k
+FLASH (rx) : ORIGIN = 0x08007000, LENGTH = 484k
RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 191k
-RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10k
-OTA_TAG (rx) : ORIGIN = 0x08007178 , LENGTH = 599k
+RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K
}
/* Define output sections */
@@ -72,6 +71,12 @@ SECTIONS
. = ALIGN(4);
} >FLASH
+ .ota_region 0x08007140:
+ {
+ KEEP(*(TAG_OTA_START))
+ . = ALIGN(4);
+ } >FLASH
+
/* The program code and other data goes into FLASH */
.text :
{
@@ -87,7 +92,7 @@ SECTIONS
. = ALIGN(4);
_etext = .; /* define a global symbols at end of code */
- } >OTA_TAG
+ } >FLASH
/* Constant data goes into FLASH */
.rodata :
@@ -96,36 +101,43 @@ SECTIONS
*(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
. = ALIGN(4);
- } >OTA_TAG
+ } >FLASH
.ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
.ARM : {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
- } >OTA_TAG
+ } >FLASH
.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
- } >OTA_TAG
+ } >FLASH
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
- } >OTA_TAG
+ } >FLASH
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
KEEP (*(.fini_array*))
PROVIDE_HIDDEN (__fini_array_end = .);
- } >OTA_TAG
+ } >FLASH
+ .ota_region_end :
+ {
+ . = ALIGN(4);
+ KEEP(*(TAG_OTA_END))
+ . = ALIGN(4);
+ } >FLASH
+
/* used by the startup to initialize data */
_sidata = LOADADDR(.data);
@@ -139,7 +151,7 @@ SECTIONS
. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
- } >RAM1 AT> OTA_TAG
+ } >RAM1 AT> FLASH
/* Uninitialized data section */
@@ -182,9 +194,8 @@ SECTIONS
.ARM.attributes 0 : { *(.ARM.attributes) }
MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM_SHARED
MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM_SHARED
- MB_MEM2 : { *(MB_MEM2) } >RAM_SHARED
- TAG_OTA_START : { KEEP (*(TAG_OTA_START)) } >FLASH
- TAG_OTA_END : { KEEP (*(TAG_OTA_END)) } >OTA_TAG
+ MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM_SHARED
+ TAG_OTA_END(NOLOAD) : { KEEP (*(TAG_OTA_END)) } >FLASH
}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/startup_stm32wb55xx_cm4.s
index 023c1b016..f79eec117 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/startup_stm32wb55xx_cm4.s
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/startup_stm32wb55xx_cm4.s
@@ -44,21 +44,29 @@ defined in linker script */
.word _sbss
/* end address for the .bss section. defined in linker script */
.word _ebss
-
- .section .text.Reset_Handler
- .weak Reset_Handler
- .type Reset_Handler, %function
-Reset_Handler:
- ldr r0, =_estack
- mov sp, r0 /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
- ldr r0, =_sdata
- ldr r1, =_edata
- ldr r2, =_sidata
+/* start address for the .MB_MEM2 section. defined in linker script */
+.word _sMB_MEM2
+/* end address for the .MB_MEM2 section. defined in linker script */
+.word _eMB_MEM2
+
+/* INIT_BSS macro is used to fill the specified region [start : end] with zeros */
+.macro INIT_BSS start, end
+ ldr r0, =\start
+ ldr r1, =\end
movs r3, #0
- b LoopCopyDataInit
+ bl LoopFillZerobss
+.endm
+
+/* INIT_DATA macro is used to copy data in the region [start : end] starting from 'src' */
+.macro INIT_DATA start, end, src
+ ldr r0, =\start
+ ldr r1, =\end
+ ldr r2, =\src
+ movs r3, #0
+ bl LoopCopyDataInit
+.endm
+.section .text.data_initializers
CopyDataInit:
ldr r4, [r2, r3]
str r4, [r0, r3]
@@ -67,21 +75,31 @@ CopyDataInit:
LoopCopyDataInit:
adds r4, r0, r3
cmp r4, r1
- bcc CopyDataInit
-
-/* Zero fill the bss segment. */
- ldr r2, =_sbss
- ldr r4, =_ebss
- movs r3, #0
- b LoopFillZerobss
+ bcc CopyDataInit
+ bx lr
FillZerobss:
- str r3, [r2]
- adds r2, r2, #4
+ str r3, [r0]
+ adds r0, r0, #4
LoopFillZerobss:
- cmp r2, r4
+ cmp r0, r1
bcc FillZerobss
+ bx lr
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr r0, =_estack
+ mov sp, r0 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ INIT_DATA _sdata, _edata, _sidata
+
+/* Zero fill the bss segments. */
+ INIT_BSS _sbss, _ebss
+ INIT_BSS _sMB_MEM2, _eMB_MEM2
/* Call the clock system intitialization function.*/
bl SystemInit
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/syscalls.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/syscalls.c
index e266506b6..9b7c4071a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/syscalls.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRate_ota/SW4STM32/syscalls.c
@@ -3,20 +3,23 @@
**
** File : syscalls.c
**
+** Author : Auto-generated by System workbench for STM32
+**
** Abstract : System Workbench Minimal System calls file
**
** For more information about which c-functions
** need which of these lowlevel functions
** please consult the Newlib libc-manual
**
-** Environment : System Workbench for MCU
+** Target : STMicroelectronics STM32
**
** Distribution: The file is distributed as is, without any warranty
** of any kind.
**
*****************************************************************************
+** @attention
**
-** <h2><center>&copy; COPYRIGHT(c) 2019 Ac6</center></h2>
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
**
** Redistribution and use in source and binary forms, with or without modification,
** are permitted provided that the following conditions are met:
@@ -25,7 +28,7 @@
** 2. Redistributions in binary form must reproduce the above copyright notice,
** this list of conditions and the following disclaimer in the documentation
** and/or other materials provided with the distribution.
-** 3. Neither the name of Ac6 nor the names of its contributors
+** 3. Neither the name of STMicroelectronics nor the names of its contributors
** may be used to endorse or promote products derived from this software
** without specific prior written permission.
**
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/Core/Src/app_entry.c
index 5b2d3f212..62da533ad 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/Core/Src/app_entry.c
@@ -227,6 +227,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
/**< Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewd
index 5689e7748..c76bc6c9c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_Hid</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewp
index 54cd372d0..6e224ab07 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/EWARM/BLE_Hid.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_Hid</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_Hid\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_Hid\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_Hid\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -654,7 +654,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -662,7 +662,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>stm32wb55rg_nucleo_BLE_Hid.bin</state>
+ <state>BLE_Hid.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1054,9 +1054,6 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
@@ -1066,6 +1063,9 @@
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
</file>
</group>
@@ -1144,12 +1144,6 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr_ex.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi.c</name>
- </file>
- <file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi_ex.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc.c</name>
</file>
<file>
@@ -1162,6 +1156,12 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc_ex.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi_ex.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart.c</name>
</file>
<file>
@@ -1233,10 +1233,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvoptx
index ca7a7309b..bfcef34bd 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvoptx
@@ -22,7 +22,7 @@
</DaveTm>
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_Hid</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -77,7 +77,7 @@
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
- <CpuCode>0</CpuCode>
+ <CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@@ -175,21 +175,13 @@
</Target>
<Group>
- <GroupName>::CMSIS</GroupName>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <cbSel>0</cbSel>
- <RteFlg>1</RteFlg>
- </Group>
-
- <Group>
<GroupName>Application/Core</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -201,7 +193,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -213,7 +205,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -225,7 +217,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -237,7 +229,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -249,7 +241,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>2</GroupNumber>
+ <GroupNumber>1</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -269,7 +261,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>3</GroupNumber>
+ <GroupNumber>2</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
@@ -289,7 +281,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>4</GroupNumber>
+ <GroupNumber>3</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -301,7 +293,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>4</GroupNumber>
+ <GroupNumber>3</GroupNumber>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -321,7 +313,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>5</GroupNumber>
+ <GroupNumber>4</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -341,7 +333,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>6</GroupNumber>
+ <GroupNumber>5</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
@@ -361,7 +353,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>7</GroupNumber>
+ <GroupNumber>6</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -381,7 +373,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>8</GroupNumber>
+ <GroupNumber>7</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -401,7 +393,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -413,7 +405,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -425,7 +417,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -437,7 +429,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -449,7 +441,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -461,7 +453,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -473,7 +465,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -485,7 +477,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -497,7 +489,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -509,7 +501,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -521,7 +513,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -533,7 +525,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -545,7 +537,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -557,7 +549,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -569,7 +561,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -581,7 +573,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>9</GroupNumber>
+ <GroupNumber>8</GroupNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -601,7 +593,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>10</GroupNumber>
+ <GroupNumber>9</GroupNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -613,7 +605,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>10</GroupNumber>
+ <GroupNumber>9</GroupNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -633,7 +625,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>11</GroupNumber>
+ <GroupNumber>10</GroupNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -645,7 +637,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>11</GroupNumber>
+ <GroupNumber>10</GroupNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -657,7 +649,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>11</GroupNumber>
+ <GroupNumber>10</GroupNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -669,7 +661,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>11</GroupNumber>
+ <GroupNumber>10</GroupNumber>
<FileNumber>35</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -681,7 +673,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>11</GroupNumber>
+ <GroupNumber>10</GroupNumber>
<FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -693,7 +685,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>11</GroupNumber>
+ <GroupNumber>10</GroupNumber>
<FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -713,7 +705,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>12</GroupNumber>
+ <GroupNumber>11</GroupNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -725,7 +717,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>12</GroupNumber>
+ <GroupNumber>11</GroupNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -745,7 +737,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>13</GroupNumber>
+ <GroupNumber>12</GroupNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -765,7 +757,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>14</GroupNumber>
+ <GroupNumber>13</GroupNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -777,7 +769,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>14</GroupNumber>
+ <GroupNumber>13</GroupNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -789,7 +781,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>14</GroupNumber>
+ <GroupNumber>13</GroupNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -801,7 +793,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>14</GroupNumber>
+ <GroupNumber>13</GroupNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -813,7 +805,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>14</GroupNumber>
+ <GroupNumber>13</GroupNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -833,7 +825,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>15</GroupNumber>
+ <GroupNumber>14</GroupNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -845,7 +837,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>15</GroupNumber>
+ <GroupNumber>14</GroupNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -857,7 +849,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>15</GroupNumber>
+ <GroupNumber>14</GroupNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -869,7 +861,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>15</GroupNumber>
+ <GroupNumber>14</GroupNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -889,7 +881,7 @@
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
- <GroupNumber>16</GroupNumber>
+ <GroupNumber>15</GroupNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -901,7 +893,7 @@
<bShared>0</bShared>
</File>
<File>
- <GroupNumber>16</GroupNumber>
+ <GroupNumber>15</GroupNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
@@ -914,4 +906,12 @@
</File>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvprojx
index fa9e3f34a..5b02b78c4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/MDK-ARM/BLE_Hid.uvprojx
@@ -7,15 +7,16 @@
<Targets>
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_Hid</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
- <PackID>Keil.STM32WBxx_DFP.1.0.0</PackID>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
<PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@@ -47,11 +48,11 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_Hid\Exe\</OutputDirectory>
<OutputName>BLE_Hid</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>0</CreateHexFile>
+ <CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
<ListingPath></ListingPath>
@@ -79,9 +80,9 @@
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
+ <UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -183,7 +184,6 @@
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>2</RvdsVP>
- <RvdsMve>0</RvdsMve>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
@@ -379,9 +379,6 @@
</TargetOption>
<Groups>
<Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
- <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -711,6 +708,9 @@
</File>
</Files>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ </Group>
</Groups>
</Target>
</Targets>
@@ -721,7 +721,7 @@
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_Hid"/>
</targetInfos>
</component>
</components>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/.cproject
index a07074f78..c51f83aba 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.935197529" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1655926578" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1036835239" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.580281990" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_Hid}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.580281990" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -140,7 +140,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.453196243" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_Hid.fr.ac6.managedbuild.target.gnu.cross.exe.453196243" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -151,7 +151,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_Hid"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/.project
index fefbeea5e..95116fc82 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_Hid</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/SW4STM32/BLE_Hid/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/readme.txt
index f4cd2b3eb..a708d0085 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Hid/readme.txt
@@ -38,11 +38,6 @@ It is free text.
@note The application needs to ensure that the SysTick time base is always set to 1 millisecond
to have correct HAL operation.
-@par Keywords
-
-Add here all the importants words of the example separated by "," + $moduleName$ $exampleName$
-$moduleName$, $exampleName$, Security, IEC 60870-5, hardware CRC,
-
@par Directory contents
- BLE/BLE_Hid/Core/Inc/stm32wbxx_hal_conf.h HAL configuration file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd
index c0a0ebd4d..2c34928be 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_MeshLightingDemo</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp
index b1726412f..794c7c007 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_MeshLightingDemo</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_MeshLightingDemo\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_MeshLightingDemo\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_MeshLightingDemo\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -658,7 +658,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -666,7 +666,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>BLE_Lighting_Demo.bin</state>
+ <state>BLE_MeshLightingDemo.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx
index 455c240a8..bc9edd50b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx
@@ -22,7 +22,7 @@
</DaveTm>
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_MeshLightingDemo</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx
index d035661f3..0869cd566 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx
@@ -7,7 +7,7 @@
<Targets>
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_MeshLightingDemo</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
@@ -16,7 +16,7 @@
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
- <PackID>Keil.STM32WBxx_DFP.1.0.0</PackID>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
<PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IRAM(0x20000000,0x000040000) IROM(0x08000000,0x001000000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ESEL ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@@ -48,12 +48,12 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_MeshLightingDemo\Exe\</OutputDirectory>
<OutputName>BLE_MeshLightingDemo</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>0</CreateHexFile>
- <DebugInformation>0</DebugInformation>
+ <CreateHexFile>1</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
<ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
@@ -80,9 +80,9 @@
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
+ <UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -184,7 +184,6 @@
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>2</RvdsVP>
- <RvdsMve>0</RvdsMve>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
@@ -827,7 +826,7 @@
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.1.2" condition="ARMv6_7_8-M Device">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.4.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_MeshLightingDemo"/>
</targetInfos>
</component>
</components>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/stm32wb55xx_flash_cm4.sct
index cf34d405e..63845c07b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/stm32wb55xx_flash_cm4.sct
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -1,6 +1,7 @@
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
+
LR_IROM1 0x08000000 0x00080000 { ; load region size_region
ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
*.o (RESET, +First)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c
index 1b0822341..7afb360a4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c
@@ -80,6 +80,14 @@ MOBLE_RESULT Appli_Generic_OnOff_Set(Generic_OnOffStatus_t* pGeneric_OnOffParam,
{
Appli_LightPwmValue.IntensityValue = AppliOnOffSet.Present_OnOffValue;
Light_UpdateLedValue(LOAD_STATE ,Appli_LightPwmValue);
+ if(AppliOnOffSet.Present_OnOffValue > 16000)
+ {
+ BSP_LED_On(LED_BLUE);
+ }
+ else
+ {
+ BSP_LED_Off(LED_BLUE);
+ }
}
else
{
@@ -87,22 +95,17 @@ MOBLE_RESULT Appli_Generic_OnOff_Set(Generic_OnOffStatus_t* pGeneric_OnOffParam,
{
Appli_LightPwmValue.IntensityValue = PWM_TIME_PERIOD;
Light_UpdateLedValue(LOAD_STATE , Appli_LightPwmValue);
+ BSP_LED_On(LED_BLUE);
}
else
{
Appli_LightPwmValue.IntensityValue = PWM_VALUE_OFF;
Light_UpdateLedValue(RESET_STATE , Appli_LightPwmValue);
+ BSP_LED_Off(LED_BLUE);
}
}
- if(AppliOnOffSet.Present_OnOffValue > 16000)
- {
- BSP_LED_On(LED_BLUE);
- }
- else
- {
- BSP_LED_Off(LED_BLUE);
- }
+
TRACE_M(TF_SERIAL_CTRL,"#8202%02hx!\n\r",AppliOnOffSet.Present_OnOff);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h
index 6ce7e0810..4aa2505a9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h
@@ -277,9 +277,9 @@ This may result into excessive flash erase operations, this should be avoided to
USER_BOARD_COOL_WHITE_LED ,USER_BOARD_RGB_LED
Default transition is provided only for one led.
*/
-//#define USER_BOARD_1LED
+#define USER_BOARD_1LED
//#define USER_BOARD_COOL_WHITE_LED
-#define USER_BOARD_RGB_LED
+//#define USER_BOARD_RGB_LED
#if defined(STEVAL_BLUEMIC_1_BOARD_PWM_SELECTION)
#define SINGLE_LED PWM1
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/.cproject
index 86533e7da..3094e829a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/.cproject
@@ -14,7 +14,7 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <configuration artifactExtension="elf" artifactName="BLE_MeshLightingDemo" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.932618172" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;" preannouncebuildStep="" prebuildStep="">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.932618172" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;" preannouncebuildStep="" prebuildStep="">
<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.932618172." name="/" resourcePath="">
<toolChain errorParsers="" id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.1248264837" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
<option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1386704338" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.530437801" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.933963350" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.softfp" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1585545483" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" errorParsers="org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator" id="fr.ac6.managedbuild.builder.gnu.cross.1262206442" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_MeshLightingDemo}/Debug" errorParsers="org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator" id="fr.ac6.managedbuild.builder.gnu.cross.1262206442" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -164,7 +164,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.708479980" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_MeshLightingDemo.fr.ac6.managedbuild.target.gnu.cross.exe.708479980" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -175,7 +175,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="/Production"/>
+ <resource resourceType="PROJECT" workspacePath="/BLE_MeshLightingDemo"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/.project
index f2679ddc9..396d514aa 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_MeshLightingDemo</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_MeshLightingDemo/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/app_entry.c
index 997336e08..089e5054c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/app_entry.c
@@ -267,6 +267,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/main.c
index d6b19bf43..de64081e4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/Core/Src/main.c
@@ -210,7 +210,7 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/BLE_MultiAppAt.ewd
index 5b75a501b..4d4cadd44 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/BLE_MultiAppAt.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>ble_multi_app_at</name>
+ <name>BLE_MultiAppAt</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/BLE_MultiAppAt.ewp
index 9bf377b88..cada6268f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/BLE_MultiAppAt.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>ble_multi_app_at</name>
+ <name>BLE_MultiAppAt</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>1</debug>
<option>
<name>ExePath</name>
- <state>ble_multi_app_at/Exe</state>
+ <state>BLE_MultiAppAt/Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>ble_multi_app_at/Obj</state>
+ <state>BLE_MultiAppAt/Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>ble_multi_app_at/List</state>
+ <state>BLE_MultiAppAt/List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -661,7 +661,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>ble_multi_app_at.hex</state>
+ <state>BLE_MultiAppAt.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -716,7 +716,7 @@
</option>
<option>
<name>IlinkOutputFile</name>
- <state>ble_multi_app_at.out</state>
+ <state>BLE_MultiAppAt.out</state>
</option>
<option>
<name>IlinkDebugInfoEnable</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.eww b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/Project.eww
index 6a1ba964e..2c2b2a98c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/ble_multi_app_at.eww
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/EWARM/Project.eww
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<workspace>
<project>
- <path>$WS_DIR$\ble_multi_app_at.ewp</path>
+ <path>$WS_DIR$\BLE_MultiAppAt.ewp</path>
</project>
<batchBuild />
</workspace>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvoptx
index 8b5ed4a5a..b2cb43e71 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvoptx
@@ -22,7 +22,7 @@
</DaveTm>
<Target>
- <TargetName>ble_multi_app_at</TargetName>
+ <TargetName>BLE_MultiAppAt</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvprojx
index 41b84e066..274472a80 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/MDK-ARM/ble_multi_app_at.uvprojx
@@ -7,7 +7,7 @@
<Targets>
<Target>
- <TargetName>ble_multi_app_at</TargetName>
+ <TargetName>BLE_MultiAppAt</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
@@ -48,8 +48,8 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>ble_multi_app_at\Exe\</OutputDirectory>
- <OutputName>ble_multi_app_at</OutputName>
+ <OutputDirectory>BLE_MultiAppAt\Exe\</OutputDirectory>
+ <OutputName>BLE_MultiAppAt</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
@@ -298,8 +298,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress>0x20000000</StartAddress>
- <Size>0x40000</Size>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fffc</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.cproject
index 360396269..a2a0829e2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.cproject
@@ -1,201 +1,158 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.186557892">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.186557892" moduleId="org.eclipse.cdt.core.settings" name="Debug">
- <externalSettings />
+ <externalSettings/>
<extensions>
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser" />
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser" />
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.186557892" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.186557892." name="/" resourcePath="">
<toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.581438154" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
- <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1039857997" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1203159679" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.board.1372440300" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1039857997" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1203159679" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.1372440300" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55-NUCLEO" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
- <listOptionValue builtIn="false" value="ARM Cortex-M4" />
- <listOptionValue builtIn="false" value="CM4" />
+ <listOptionValue builtIn="false" value="ARM Cortex-M4"/>
+ <listOptionValue builtIn="false" value="CM4"/>
</option>
- <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.573214506" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.860021008" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1215900952" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated" />
- <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.806304321" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross" />
- <builder buildPath="${workspace_loc:/ble_multi_app_at}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1487861510" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.573214506" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.860021008" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1215900952" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.806304321" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+ <builder buildPath="${workspace_loc:/BLE_MultiAppAt}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1487861510" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
- <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug" />
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
</builder>
-
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1504589846" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
- <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.660496895" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated" />
- <option id="gnu.c.compiler.option.debugging.level.848830022" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated" />
- <option id="gnu.c.compiler.option.include.paths.1597026139" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"><listOptionValue builtIn="false" value="../../../Core/Inc" /><listOptionValue builtIn="false" value="../../../STM32_WPAN/App" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/lhci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Inc" /></option>
- <option id="gnu.c.compiler.option.preprocessor.def.symbols.1460212809" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"><listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32WB55xx" /></option>
- <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1125107205" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.962158481" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1606612068" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s" />
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.660496895" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.848830022" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.include.paths.1597026139" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/lhci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Inc"/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.1460212809" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1125107205" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.962158481" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1606612068" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
</tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.858114747" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
- <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.199295621" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated" />
- <option id="gnu.cpp.compiler.option.debugging.level.1913057085" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated" />
- <option id="gnu.cpp.compiler.option.include.paths.1219134927" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"><listOptionValue builtIn="false" value="../../../Core/Inc" /><listOptionValue builtIn="false" value="../../../STM32_WPAN/App" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/lhci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Inc" /></option>
- <option id="gnu.cpp.compiler.option.preprocessor.def.546757646" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols"><listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32WB55xx" /></option>
- <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.1016831914" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1219279242" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1370884803" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s" />
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.199295621" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1913057085" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.include.paths.1219134927" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/lhci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Inc"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.546757646" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.1016831914" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1219279242" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1370884803" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
</tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.1076671478" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
- <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1573864803" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string" />
- <option id="gnu.c.link.option.libs.1600860379" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs" />
- <option id="gnu.c.link.option.paths.1280243558" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths" />
- <option id="gnu.c.link.option.ldflags.219916395" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" />
- <option id="gnu.c.link.option.other.1141008382" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList" />
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1573864803" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.c.link.option.libs.1600860379" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
+ <option id="gnu.c.link.option.paths.1280243558" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
+ <option id="gnu.c.link.option.ldflags.219916395" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.c.link.option.other.1141008382" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.600290977" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
- <additionalInput kind="additionalinput" paths="$(LIBS)" />
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1200213178" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
- <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1927909423" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string" />
- <option id="gnu.cpp.link.option.libs.1767931887" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs" />
- <option id="gnu.cpp.link.option.paths.1150241898" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths" />
- <option id="gnu.cpp.link.option.flags.1228279002" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" />
- <option id="gnu.cpp.link.option.other.1449383098" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList" />
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1927909423" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.cpp.link.option.libs.1767931887" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+ <option id="gnu.cpp.link.option.paths.1150241898" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
+ <option id="gnu.cpp.link.option.flags.1228279002" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.cpp.link.option.other.1449383098" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1270652376" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
- <additionalInput kind="additionalinput" paths="$(LIBS)" />
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.archiver.2122235672" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver" />
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.2122235672" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.1749585121" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
- <option id="gnu.both.asm.option.include.paths.1704168204" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
-
-
- </option>
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.409578849" superClass="cdt.managedbuild.tool.gnu.assembler.input" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.151878919" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input" />
- </tool>
- </toolChain>
- </folderInfo>
- <sourceEntries>
- <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="" />
- </sourceEntries>
- </configuration>
- </storageModule>
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings" />
- </cconfiguration>
- <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.release.746946791">
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.746946791" moduleId="org.eclipse.cdt.core.settings" name="Release">
- <externalSettings />
- <extensions>
- <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser" />
- <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
- <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
- <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
- <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser" />
- <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
- </extensions>
- </storageModule>
- <storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.746946791" name="Release" parent="fr.ac6.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
- <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.release.746946791." name="/" resourcePath="">
- <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release.1541052874" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release">
- <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1039857997" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1203159679" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.board.1372440300" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
- <listOptionValue builtIn="false" value="ARM Cortex-M4" />
- <listOptionValue builtIn="false" value="CM4" />
- </option>
- <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.573214506" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.860021008" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated" />
- <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1215900952" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated" />
- <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.806304321" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross" />
- <builder buildPath="${workspace_loc:/ble_multi_app_at}/Release" id="fr.ac6.managedbuild.builder.gnu.cross.1487861510" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
- <outputEntries>
- <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release" />
- </outputEntries>
- </builder>
-
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1504589846" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
- <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.660496895" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated" />
- <option id="gnu.c.compiler.option.debugging.level.848830022" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated" />
- <option id="gnu.c.compiler.option.include.paths.1597026139" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"><listOptionValue builtIn="false" value="../../../Core/Inc" /><listOptionValue builtIn="false" value="../../../STM32_WPAN/App" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/lhci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Inc" /></option>
- <option id="gnu.c.compiler.option.preprocessor.def.symbols.1460212809" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"><listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32WB55xx" /></option>
- <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1125107205" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.962158481" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1606612068" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s" />
- </tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.858114747" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
- <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.199295621" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated" />
- <option id="gnu.cpp.compiler.option.debugging.level.1913057085" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.debugging.level.max" valueType="enumerated" />
- <option id="gnu.cpp.compiler.option.include.paths.1219134927" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"><listOptionValue builtIn="false" value="../../../Core/Inc" /><listOptionValue builtIn="false" value="../../../STM32_WPAN/App" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/lhci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Inc" /></option>
- <option id="gnu.cpp.compiler.option.preprocessor.def.symbols.1284475127" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"><listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32WB55xx" /></option>
- <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.1016831914" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1219279242" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1370884803" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s" />
- </tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.1076671478" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
- <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1573864803" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string" />
- <option id="gnu.c.link.option.libs.1600860379" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs" />
- <option id="gnu.c.link.option.paths.1280243558" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths" />
- <option id="gnu.c.link.option.ldflags.219916395" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" />
- <option id="gnu.c.link.option.other.1141008382" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList" />
- <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.600290977" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
- <additionalInput kind="additionalinput" paths="$(LIBS)" />
- </inputType>
- </tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1200213178" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
- <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1927909423" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string" />
- <option id="gnu.cpp.link.option.libs.1767931887" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs" />
- <option id="gnu.cpp.link.option.paths.1150241898" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths" />
- <option id="gnu.cpp.link.option.ldflags.746920153" superClass="gnu.cpp.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" />
- <option id="gnu.cpp.link.option.other.1449383098" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList" />
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1270652376" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
- <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
- <additionalInput kind="additionalinput" paths="$(LIBS)" />
- </inputType>
- </tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.archiver.2122235672" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver" />
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release.537913474" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release">
- <option id="gnu.both.asm.option.include.paths.1704168204" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
-
- </option>
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.409578849" superClass="cdt.managedbuild.tool.gnu.assembler.input" />
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.151878919" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input" />
+ <option id="gnu.both.asm.option.include.paths.1704168204" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.409578849" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.151878919" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
<sourceEntries>
- <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="" />
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
- <storageModule moduleId="org.eclipse.cdt.core.externalSettings" />
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="ble_multi_app_at.fr.ac6.managedbuild.target.gnu.cross.exe.61749870" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe" />
+ <project id="BLE_MultiAppAt.fr.ac6.managedbuild.target.gnu.cross.exe.61749870" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
- <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="" />
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.186557892;fr.ac6.managedbuild.config.gnu.cross.exe.debug.186557892.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1504589846;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.962158481">
- <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId="" />
+ <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
- <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders" />
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="ble_multi_app_at" />
+ <resource resourceType="PROJECT" workspacePath="BLE_MultiAppAt"/>
</configuration>
</storageModule>
+ <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
</cproject>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.project
index eba96994d..dc8b68ddb 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/SW4STM32/BLE_MultiAppAt/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>ble_multi_app_at</name>
+ <name>BLE_MultiAppAt</name>
<comment></comment>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/readme.txt
index b7d8fc32e..83c61a1bb 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MultiAppAt/readme.txt
@@ -69,6 +69,7 @@ How to use multi BLE applications using a network processor architecture.
- Nucleo board (MB1355C) Set-up
- Connect the Nucleo Board to your PC with a USB cable type A to mini-B to ST-LINK connector (USB_STLINK).
- Please ensure that the ST-LINK connectors and jumpers are fitted.
+ - Connect an USB-UART converter from PC to STM32WB LPUART pins. (PA2(CN10.35) = LPUART1_TX ; PA3(CN10.37) = LPUART1_RX)
One STM32WB55xx and one computer running a Terminal like TeraTerm are used. The computer is the orders giver and the STM32WB55xx is the slave that listens to the orders and performs them.
The STM32WB55xx can either run the AT_P2PServer application, the AT_P2PClient application or the AT_HeartRate application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Binary/BLE_Ota_reference.hex b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Binary/BLE_Ota_reference.hex
index 84d8114a1..900524111 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Binary/BLE_Ota_reference.hex
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Binary/BLE_Ota_reference.hex
@@ -1,202 +1,202 @@
:020000040800F2
-:10000000F023002019420008214100082341000884
-:1000100035420008394200083D4200080000000057
-:100020000000000000000000000000002541000862
-:100030002741000800000000294100082B4100086A
-:100040004142000845420008494200083B4100087F
-:100050004D4200085142000855420008594200082C
-:100060005D420008614200086542000869420008DC
-:100070006D4200087142000875420008794200088C
-:100080007D4200088142000885420008894200083C
-:100090008D420008914200089542000899420008EC
-:1000A0009D420008A1420008A5420008A94200089C
-:1000B000AD420008B1420008B5420008B94200084C
-:1000C000BD420008C1420008C5420008C9420008FC
-:1000D0002F410008CD420008D1420008D542000857
-:1000E000D9420008DD420008E1420008E54200086C
-:1000F000434100083F410008E9420008ED42000882
-:10010000F1420008F5420008F9420008FD420008EB
-:100110000143000805430008094300080D43000897
-:100120001143000815430008354100081943000831
-:100130001D430008214300082543000838B504008A
-:1001400009D004F17C05696809B900F01EF800F0D7
+:10000000F0230020454400084D4300084F430008FA
+:1000100061440008654400086944000800000000CD
+:100020000000000000000000000000005143000834
+:1000300053430008000000005543000857430008E0
+:100040006D440008714400087544000867430008C7
+:10005000794400087D440008814400088544000874
+:10006000894400088D440008914400089544000824
+:10007000994400089D440008A1440008A5440008D4
+:10008000A9440008AD440008B1440008B544000884
+:10009000B9440008BD440008C1440008C544000834
+:1000A000C9440008CD440008D1440008D5440008E4
+:1000B000D9440008DD440008E1440008E544000894
+:1000C000E9440008ED440008F1440008F544000844
+:1000D0005B430008F9440008FD440008014500089E
+:1000E00005450008094500080D45000811450008B0
+:1000F0006F4300086B4300081545000819450008C8
+:100100001D4500082145000825450008294500082F
+:100110002D450008314500083545000839450008DF
+:100120003D45000841450008614300084545000879
+:10013000494500084D4500085145000838B5040000
+:1001400009D004F17C05686808B900F01EF800F0D9
:1001500021F8012801D1012032BDA06A08B100F0C8
:100160002AF800F00AF821F02A01FFE7816000F088
:100170001BF8BDE8324000F0DEBD2068416821F484
-:1001800090414160206881687047002028702046B7
-:1001900000F0C8BE2421696020680268520852003D
-:1001A0000260204600F0F0B82068016841F00101CB
+:1001800090414160206881687047002129702046B5
+:1001900000F0C3BE24206860206801684908490057
+:1001A0000160204600F0F0B82068016841F00101CC
:1001B000016020467047204600F05ABD20688168E3
:1001C0004A067047F8B5044640F60F002568E9690D
-:1001D0002A68AB6808400DD1880602D5960602D47D
+:1001D0002A68AB6808400DD1880602D5900602D483
:1001E000D80040F18980E16E00294FD02046BDE85B
:1001F000F44008476248034204BF624E32427BD05B
-:10020000CE0709D5D70507D501262E62D4F8885028
-:1002100045F00105C4F888508D070AD5DE0708D5DA
-:10022000276802253D62D4F8885045F00405C4F8DB
-:1002300088504D070AD5DE0708D5276804253D629A
+:10020000CF0709D5D60507D501262E62D4F8885028
+:1002100045F00105C4F888508D070AD5DD0708D5DB
+:10022000266802253562D4F8885045F00405C4F8E4
+:1002300088504D070AD5DD0708D5266804253562A4
:10024000D4F8885045F00205C4F888500D070CD545
-:10025000960601D4034208D0256808202862D4F805
-:10026000880040F00800C4F8880008050BD5550147
-:1002700009D526684FF400603062D4F8880040F059
-:100280002000C4F88800D4F88800002870D08806C0
-:1002900007D5910601D4D80003D5E16E09B12046F7
+:10025000950601D4034208D0256808202862D4F806
+:10026000880040F00800C4F8880008050BD550014C
+:1002700009D525684FF400602862D4F8880040F062
+:100280002000C4F88800D4F88800002870D08906BF
+:1002900007D5900601D4D80003D5E16E09B12046F8
:1002A0008847D4F8880021688A68510602D410F083
-:1002B000280F1AD0204600F0B2FDFFF77FFF0FD5C0
+:1002B000280F1AD0204600F0ABFDFFF77FFF0FD5C7
:1002C00000F057F860B1DFF888198163A06F00F083
-:1002D00022FF00284CD0A06F816BBDE8F440084796
-:1002E0002046BDE8F24000F0EDBF204600F0EAFFF6
-:1002F0000020C4F88800F1BDC80209D55E0207D508
-:100300004FF4801028622046BDE8F24000F0F8BFAC
-:10031000080609D5160601D4180205D5216F39B390
-:100320002046BDE8F440084748060FD553060DD5D2
+:1002D00020FF00284CD0A06F816BBDE8F440084798
+:1002E0002046BDE8F24000F0E9BF204600F0E6FFFE
+:1002F0000020C4F88800F1BDC80209D5580207D50E
+:100300004FF4801028622046BDE8F24000F0D8BFCC
+:10031000080609D5100601D4180205D5216F39B396
+:100320002046BDE8F440084748060FD550060DD5D5
:10033000286820F0400028602021C4F880100020A8
-:1003400020672046BDE8F24000F063BE080206D5F3
-:10035000530004D52046BDE8F24000F0D2BFC801EA
-:1003600048BF002A04D52046BDE8F24000F0CABFCD
+:1003400020672046BDE8F24000F05FBE080206D5F7
+:10035000500004D52046BDE8F24000F0B2BFC8010D
+:1003600048BF002A04D52046BDE8F24000F0AABFED
:10037000F1BD816821F040018160A06F70470000ED
:1003800001000010200100042DE9F84F0446DFF8B9
-:10039000C8182768DFF8C4B83A68A068DFF8C0A8B2
-:1003A0000A402169024360690A43E1690243606EC1
-:1003B0000A4302433A6000267968E068DFF894282F
-:1003C00021F44051014379609742A1691CBF206A22
-:1003D0000143BA68DFF8680A02401143B960B046C9
-:1003E000F96A606A090940EA0111F9625F454FF450
-:1003F00000404FF480754FF400714FF480624FF469
+:10039000C8082768DFF8C4B83968DFF8C4A8014086
+:1003A000A06801432069014360690143E06901439A
+:1003B000606E0143396000267968E06821F440519D
+:1003C00001437960B046A169DFF8880887421CBF05
+:1003D000206A0143BA68DFF85C0A02401143B96041
+:1003E0004FF48075F96A606A090940EA0111F962FF
+:1003F0005F454FF400404FF400714FF480624FF4BA
:1004000000634FF4805C4FF4005E4FF4804929D1C3
:10041000DAF800B00BF0030BBBF1030F3ED8DFE8B6
:100420000BF00237343A4FF0010AD4F81CB05746AB
-:10043000BBF5004F4FF6F07A40F01283012F09D040
-:10044000022F00F05582042F00F08E82082F00F05A
-:10045000C382F6E200F0B3FF0146606A002840F074
-:100460001C8243E2DFF8ECB75F4517D1DAF800A051
+:10043000BBF5004F4FF6F07A40F01183012F09D041
+:10044000022F00F05482042F00F08D82082F00F05C
+:10045000C282F5E200F093FF0146606A002840F096
+:100460001B8242E2DFF8ECB75F4517D1DAF800A053
:100470001AF4406A27D0BAF5806F09D0BAF5006F38
:1004800003D0BAF5406F06D008E04FF0020A07E04B
:100490004FF0040A04E04FF0080A01E04FF0100AA0
:1004A000DFF8B0B75F45C0D1BAF1000F0BD0BAF199
:1004B000020F49D0BAF1040F00F08280BAF1080FA0
-:1004C00000F0B180B7E300F072FF0146606A58B3F4
+:1004C00000F0B080B6E300F052FF0146606A58B316
:1004D000012808BF022028D0022808BF042024D009
:1004E000032808BF062020D0042808BF08201CD0FD
:1004F000052808BF0A2018D0062808BF0C2014D0F1
:10050000072808BF102010D0082808BF20200CD0D2
:10051000092808BF402008D00A2808BF802004D03E
:100520000B2808BF284600D00120B1FBF0F00028BE
-:1005300000F08383626802EB4201884203D3130315
-:10054000834280F0A28076E3606AB0B3012808BFDE
-:10055000DFF8F008EED0022808BFDFF8EC08E9D099
-:10056000032808BFDFF8E408E4D0042808BFDFF858
-:10057000E008DFD0052808BFDFF8D808DAD0062861
-:1005800008BFDFF8D408D5D0072808BFDFF8CC08AB
-:10059000D0D0082808BFDFF8C808CBD0092808BF8A
-:1005A000DFF8C008C6D00A2808BFDFF8BC08C1D0F1
-:1005B0000B2808BF4FF22440BCD0DFF8B008B9E7E1
-:1005C00000F0ABFE0146606A0028ADD0012808BFEC
-:1005D0000220AAD0022808BF0420A6D0032808BF02
-:1005E0000620A2D0042808BF08209ED0052808BFF6
-:1005F0000A209AD0062808BF0C2096D0072808BFEA
-:10060000102092D0082808BF20208ED0092808BFCB
-:1006100040208AD00A2808BF802086D00B2808BF37
-:100620002846FAD080E7676A002FC8D0012F08BF9C
-:10063000484629D0022F08BF704625D0032F08BF97
-:1006400041F2555020D0042F08BF60461CD0052F22
-:1006500008BF40F6CC4017D0062F08BF40F6AA20AE
-:1006600012D0072F08BF18460ED0082F08BF10461B
-:100670000AD0092F08BF084606D00A2F08BF28460F
-:1006800002D00B2F00D1802054E7BAF1000F0BD01D
-:10069000BAF1020F38D0BAF1040F00F07280BAF14B
-:1006A000080F00F0A780ECE000F081FE0146606AD0
-:1006B00040B3012808BF02251ED0022808BF042528
-:1006C0001AD0032808BF062516D0042808BF08251D
-:1006D00012D0052808BF0A250ED0062808BF0C2511
-:1006E0000AD0072808BF102506D0082808BF2025F3
-:1006F00002D0092808BF402572D00A280CBF8025E7
-:100700000B286DD001256BE0606A002836D00128E7
-:1007100008BFDFF86C672BD0022808BFDFF86467DA
-:1007200026D0032808BFDFF8606721D0042808BF5F
-:10073000DFF858671CD0052808BFDFF8546717D0CA
-:10074000062808BFDFF84C6712D0072808BFDFF87B
-:1007500048670DD0082808BFDFF8406708D009288F
-:1007600008BFDFF83C6703D00A2808BFDFF834670A
-:100770007CD00B2808BFDFF8F46677D0DFF8286755
-:1007800074E000F0CAFD0146606A40B3012808BF6A
-:10079000022525D0022808BF042521D0032808BF40
-:1007A00006251DD0042808BF082519D0052808BF34
-:1007B0000A2515D0062808BF0C2511D0072808BF28
-:1007C00010250DD0082808BF202509D0092808BF0A
-:1007D000402505D00A280CBF80250B2800D0012514
-:1007E0006268B1FBF5F65008002110EB062051EBD2
-:1007F000166141E0606A002836D0012808BF4FF436
-:10080000800633D0022808BF4FF400162ED00328EC
-:1008100008BFDFF8986629D0042808BF4FF4801677
-:1008200024D0052808BFDFF888661FD0062808BF37
-:10083000DFF880661AD0072808BF4FF4002615D0CD
-:10084000082808BF4FF4802610D0092808BF4FF4AD
-:1008500000360BD00A2808BF4FF4803606D00B288C
-:1008600008BF4FF4004601D04FF40006C2460021F5
-:1008700016EB52004AEB0101002300F0BDFD0646D5
-:1008800001E04FF00108A6F54070DFF82C16884211
-:1008900080F0D1812268D660CFE1012808BF02250F
-:1008A0001AD0022808BF042516D0032808BF062541
-:1008B00012D0042808BF08250ED0052808BF0A2535
-:1008C0000AD0062808BF0C2506D0072808BF102527
-:1008D00002D0082808BF202575D0092808BF402568
-:1008E00071D00A280CBF80250B286CD001256AE046
-:1008F000606AB0B3012808BFDFF8700521D0022874
-:1009000008BFDFF840051CD0032808BFDFF8AC059E
-:1009100017D0042808BFDFF8300512D0052808BF1B
-:10092000DFF89C050DD0062808BFDFF8200508D0A9
-:10093000072808BFDFF8180503D0082808BFDFF82C
-:100940001C057AD0092808BFDFF8140575D00A28DD
-:1009500008BFDFF8100570D00B2808BFDFF80805C6
-:100960006BD0DFF8400568E000F0D7FC0146606A14
-:1009700040B3012808BF022525D0022808BF04255E
-:1009800021D0032808BF06251DD0042808BF08254C
-:1009900019D0052808BF0A2515D0062808BF0C2540
-:1009A00011D0072808BF10250DD0082808BF202522
-:1009B00009D0092808BF402505D00A280CBF80258A
-:1009C0000B2800D001256068B1FBF5F1420802EB6D
-:1009D0004102B2FBF0F632E0666A66B3012E2CD01B
-:1009E000022E08BF484628D0032E08BF42F6AA2090
-:1009F00023D0042E08BF70461FD0052E08BF41F635
-:100A000098101AD0062E08BF41F2545015D0072E68
-:100A100008BF604611D0082E08BF18460DD0092E19
-:100A200008BF104609D00A2E08BF084605D00B2E75
-:100A300008BF284601D04FF4803000F013F9B6B259
-:100A400001E04FF00108A6F11000504580F0F3805E
-:100A50000AEA0601C6F3420001432068C160ECE0E7
-:100A6000012F07D0022F35D0042F70D0082F00F0AF
-:100A7000A580D7E000F0A3FC0146606A40B30128DE
-:100A800008BF022516D0022808BF042512D003286B
-:100A900008BF06250ED0042808BF08250AD005285F
-:100AA00008BF0A2506D0062808BF0C2502D0072853
-:100AB00008BF10257AD0082808BF202576D009283D
-:100AC00008BF402572D00A280CBF80250B286DD0A6
-:100AD00001256BE0606AB0B3012808BFDFF864133A
-:100AE00033D0022808BFDFF860132ED0032808BFD8
-:100AF000DFF8581329D0042808BFDFF8541324D096
-:100B0000052808BFDFF84C131FD0062808BFDFF800
-:100B100048131AD0072808BFDFF8401315D008285B
-:100B200008BFDFF83C1310D0092808BFDFF83413E2
-:100B30000BD00A2808BFDFF8301306D00B2808BFF7
-:100B40004FF2244101D0DFF82413606831E000F057
-:100B5000E4FB0146606A40B3012808BF022525D0A6
-:100B6000022808BF042521D0032808BF06251DD070
-:100B7000042808BF082519D0052808BF0A2515D064
-:100B8000062808BF0C2511D0072808BF10250DD056
-:100B9000082808BF202509D0092808BF402505D00E
-:100BA0000A280CBF80250B2800D001256068B1FB06
-:100BB000F5F101EB5001B1FBF0F631E0666A6EB37E
-:100BC000012E08BF484629D0022E08BF704625D006
-:100BD000032E08BF41F2555020D0042E08BF6046B6
-:100BE0001CD0052E08BF40F6CC4017D0062E08BFFB
-:100BF00040F6AA2012D0072E08BF18460ED0082EA5
-:100C000008BF10460AD0092E08BF084606D00A2E93
-:100C100008BF284602D00B2E08BF802000F022F823
-:100C2000B6B201E04FF00108A6F11000504502D223
-:100C30002168CE6001E04FF0010804F16800012155
-:100C4000002341800180436083604046BDE8F28F0D
-:100C5000710E000800800040F369FFCF00380140AA
+:1005300000F08283626802EB4201884203D3110318
+:10054000814280F0A18075E3606AB0B3012808BFE2
+:10055000DFF8E408EED0022808BFDFF8E008E9D0B1
+:10056000032808BFDFF8D808E4D0042808BFDFF864
+:10057000D408DFD0052808BFDFF8CC08DAD0062879
+:1005800008BFDFF8C808D5D0072808BFDFF8C008C3
+:10059000D0D0082808BFDFF8BC08CBD0092808BF96
+:1005A000DFF8B408C6D00A2808BFDFF8B008C1D009
+:1005B0000B2808BF4FF22440BCD0DFF8A408B9E7ED
+:1005C00000F08BFE0146606A58B3012808BF022084
+:1005D000ABD0022808BF0420A7D0032808BF0620FC
+:1005E000A3D0042808BF08209FD0052808BF0A20F0
+:1005F0009BD0062808BF0C2097D0072808BF1020E2
+:1006000093D0082808BF20208FD0092808BF402099
+:100610008BD00A2808BF802087D00B2808BF284627
+:1006200083D081E7676A002F84D0012F08BF484636
+:10063000FAD0022F08BF7046F6D0032F08BF41F250
+:100640005550F1D0042F08BF6046EDD0052F08BFEC
+:1006500040F6CC40E8D0062F08BF40F6AA2012D0C2
+:10066000072F08BF18460ED0082F08BF10460AD023
+:10067000092F08BF084606D00A2F08BF284602D017
+:100680000B2F00D1802055E7BAF1000F0BD0BAF143
+:10069000020F38D0BAF1040F00F07280BAF1080FDF
+:1006A00000F0A780ECE000F062FE0146606A40B313
+:1006B000012808BF02251ED0022808BF04251AD031
+:1006C000032808BF062516D0042808BF082512D025
+:1006D000052808BF0A250ED0062808BF0C250AD019
+:1006E000072808BF102506D0082808BF202502D0FB
+:1006F000092808BF402572D00A280CBF80250B2886
+:100700006DD001256BE0606A002836D0012808BF53
+:10071000DFF860672BD0022808BFDFF85C6726D0BF
+:10072000032808BFDFF8546721D0042808BFDFF88A
+:1007300050671CD0052808BFDFF8486717D0062887
+:1007400008BFDFF8446712D0072808BFDFF83C670E
+:100750000DD0082808BFDFF8386708D0092808BF7F
+:10076000DFF8306703D00A2808BFDFF82C677CD099
+:100770000B2808BFDFF8E86677D0DFF8206774E061
+:1007800000F0ABFD0146606A40B3012808BF0225B6
+:1007900025D0022808BF042521D0032808BF06253C
+:1007A0001DD0042808BF082519D0052808BF0A2530
+:1007B00015D0062808BF0C2511D0072808BF102522
+:1007C0000DD0082808BF202509D0092808BF4025DA
+:1007D00005D00A280CBF80250B2800D001256268AF
+:1007E000B1FBF5F65008002110EB062051EB166125
+:1007F00041E0606A002836D0012808BF4FF4800627
+:1008000033D0022808BF4FF400162ED0032808BFAB
+:10081000DFF88C6629D0042808BF4FF4801624D056
+:10082000052808BFDFF87C661FD0062808BFDFF860
+:1008300078661AD0072808BF4FF4002615D008287C
+:1008400008BF4FF4802610D0092808BF4FF40036A7
+:100850000BD00A2808BF4FF4803606D00B2808BFFB
+:100860004FF4004601D04FF40006C246002116EBBB
+:1008700052004AEB0101002300F09EFD064601E014
+:100880004FF00108A6F54070DFF82016884280F08E
+:10089000D1812168CE60CFE1012808BF02251AD09E
+:1008A000022808BF042516D0032808BF062512D049
+:1008B000042808BF08250ED0052808BF0A250AD03D
+:1008C000062808BF0C2506D0072808BF102502D02F
+:1008D000082808BF202575D0092808BF402571D0F9
+:1008E0000A280CBF80250B286CD001256AE0606ABD
+:1008F000B0B3012808BFDFF8680521D0022808BF7F
+:10090000DFF834051CD0032808BFDFF8A40517D092
+:10091000042808BFDFF8240512D0052808BFDFF837
+:1009200094050DD0062808BFDFF8140508D0072865
+:1009300008BFDFF8100503D0082808BFDFF810054E
+:100940007AD0092808BFDFF80C0575D00A2808BF3F
+:10095000DFF8040570D00B2808BFDFF800056BD066
+:10096000DFF8340568E000F0B8FC0146606A40B387
+:10097000012808BF022525D0022808BF042521D060
+:10098000032808BF06251DD0042808BF082519D054
+:10099000052808BF0A2515D0062808BF0C2511D048
+:1009A000072808BF10250DD0082808BF202509D02A
+:1009B000092808BF402505D00A280CBF80250B2830
+:1009C00000D001256068B1FBF5F1420802EB41025D
+:1009D000B2FBF0F632E0666A66B3012E2CD0022E2E
+:1009E00008BF484628D0032E08BF42F6AA2023D0CD
+:1009F000042E08BF70461FD0052E08BF41F6981080
+:100A00001AD0062E08BF41F2545015D0072E08BF49
+:100A1000604611D0082E08BF18460DD0092E08BF19
+:100A2000104609D00A2E08BF084605D00B2E08BF75
+:100A3000284601D04FF4803000F014F9B6B201E03E
+:100A40004FF00108A6F11000504580F0F3800AEA4B
+:100A50000601C6F3420001432068C160ECE0012FAB
+:100A600007D0022F35D0042F70D0082F00F0A580BA
+:100A7000D7E000F084FC0146606A40B3012808BF5B
+:100A8000022516D0022808BF042512D0032808BF6B
+:100A900006250ED0042808BF08250AD0052808BF5F
+:100AA0000A2506D0062808BF0C2502D0072808BF53
+:100AB00010257AD0082808BF202576D0092808BF3D
+:100AC000402572D00A280CBF80250B286DD0012547
+:100AD0006BE0606AB0B3012808BFDFF85C1333D065
+:100AE000022808BFDFF854132ED0032808BFDFF810
+:100AF000501329D0042808BFDFF8481324D0052854
+:100B000008BFDFF844131FD0062808BFDFF83C13E6
+:100B10001AD0072808BFDFF8381315D0082808BFF7
+:100B2000DFF8301310D0092808BFDFF82C130BD0E2
+:100B30000A2808BFDFF8241306D00B2808BF4FF29D
+:100B4000244101D0DFF81813606831E000F0C5FBE4
+:100B50000146606A40B3012808BF022525D002285B
+:100B600008BF042521D0032808BF06251DD004286E
+:100B700008BF082519D0052808BF0A2515D0062862
+:100B800008BF0C2511D0072808BF10250DD0082854
+:100B900008BF202509D0092808BF402505D00A280C
+:100BA0000CBF80250B2800D001256068B1FBF5F152
+:100BB00001EB5001B1FBF0F631E0666A6EB3012E35
+:100BC00008BF484629D0022E08BF704625D0032E04
+:100BD00008BF41F2555020D0042E08BF60461CD0FB
+:100BE000052E08BF40F6CC4017D0062E08BF40F6B1
+:100BF000AA2012D0072E08BF18460ED0082E08BF14
+:100C000010460AD0092E08BF084606D00A2E08BF93
+:100C1000284602D00B2E08BF802000F023F8B6B281
+:100C200001E04FF00108A6F11000504502D2206803
+:100C3000C66001E04FF0010804F168000121418025
+:100C400001800021416081604046BDE8F28F0000D4
+:100C5000650E000800800040F369FFCF00380140B6
:100C600088000058616800EB5100B0FBF1F6704756
:100C700090F82810CA0706D502685368C16A23F4A1
:100C800000330B43536090F828108A0706D502689A
@@ -207,882 +207,917 @@
:100CD00002689368C16B23F480530B43936090F8D0
:100CE00028108A0606D502689368016C23F4005325
:100CF0000B43936090F828104A0610D50268536899
-:100D0000416C23F480130B435360436CB3F5801F95
+:100D0000416C23F480130B435360416CB1F5801F99
:100D100005D15368816C23F4C0030B43536090F8F2
:100D200028100A0606D501684A68C06C22F4002221
:100D300002434A607047F8B5044604F17C05002080
-:100D4000E8606FF07E4700F0DBFB06462068016834
+:100D4000E8606FF07E4700F04FFC064620680168BF
:100D50000A0708D50097334600224FF400112046B9
:100D600000F016F860B9206801684A070AD50097B4
:100D7000334600224FF48001204600F009F808B104
:100D80000320F2BD20206860A86000202870F2BD1A
:100D90002DE9F041069C05460E4690461F46286800
-:100DA000C1693140B1420CBF01200020404528D12B
-:100DB00014F1010FF3D000F0A3FBC01B844200D359
-:100DC0004CB92868016821F4D071016000F01CF86A
-:100DD0000021017013E0286801684A07DFD5C16966
-:100DE0000A05DCD54FF4006101622868026822F42C
-:100DF000D0720260002200F007F8C1600270032088
-:100E000000E00020BDE8F0812868816849084900B9
-:100E1000816005F17C00202141608160704701689C
-:100E20000A6822F490720A60DFF8981002689368EA
-:100E30000B4093602022C0F884200021C1667047D7
-:100E4000FFF4FF1100127A0000093D00AAB028004B
-:100E500080841E00006A18005558140040420F009C
-:100E600020A1070090D0030048E801000024F4000E
-:100E7000806A00F1560100220A810A8000F022BA3D
-:100E80000000127A0000093D00AAB0280080841EEC
-:100E900000006A18005558140040420F0020A107B6
-:100EA0000090D0030048E801000024F4005515002C
-:100EB00000CC0C0000AA0A0000FD0F005461510094
-:100EC00000D43000FEFFFFEF574900E0574981B0E2
-:100ED0000A6802430A60096808400090009801B05F
-:100EE000704790B95248534901604FF4E132426073
-:100EF00000230C224FF400418360C36003618361CF
-:100F00004261C1618362FFF719B97047002804BFCD
-:100F10004748FFF757B9704718B94548406F00F088
-:100F200030B9704770B586B004466846142100F0A9
-:100F3000EDFA25683F4EB54262D10220FFF7C6FFA9
-:100F40000221019100220292402000F05BF83B4D0B
-:100F5000284600F0DFFA0220FFF7B8FF02210191D6
-:100F600000220292802000F04DF8284600F0D2FACC
-:100F70000120FFF7ABFF0221019102914FF40060C5
-:100F800000F040F84FF0904000F0C4FA2C482D4D8E
-:100F9000816A8908890041F00101816200220168AB
-:100FA00041F4804101600F21006800F48040059009
-:100FB0000598242000F08AFB242000F0A4FB0220E6
-:100FC000FFF782FF0420FFF77FFF1F4828600F21F3
-:100FD000696000201022E86080216861A861E861F2
-:100FE0002862AA602961284600F030F86567AC6283
-:100FF00000220F213A2000F069FB3A2000F083FB29
-:1010000006B070BD03210090039107220492694647
-:10101000704700680749884204D1074A10680028D1
-:1010200018BF004770470000480000584C000058A7
-:101030004811002000380140E4130020000400485B
-:1010400060000058541200204404024070B50400AF
-:1010500001D1012070BD2268DFF840329A4204F1CC
-:1010600024050BD2DFF8380281181426B1FBF6F103
-:101070008900DFF830322962EB610AE0DFF82802EC
-:1010800081181423B1FBF3F18900DFF820022962F3
-:10109000E861022169701368A068E1686FF30E13BC
-:1010A000034320690B4361690343A0690B43E16972
-:1010B0000343206A0B4303431360204600F0C2F849
-:1010C000A068B0F5804F04BF00216160696A207993
-:1010D00000F01BF838B1052805D2204600F0CFF803
-:1010E00000F00CF803E0002028636863A863002187
-:1010F000A961012068702970002070BD296B002053
-:101100000860696BA86B486070470860A96AE86A64
-:1011100048606068704738B500F1240200245178B7
-:10112000022903D004209061012428E001680B68A3
-:1011300023F00E030B6001680D686D086D000D60F3
-:10114000516A0B6823F480730B60012192F8203000
-:10115000D56903F01C0399406960936AD16A5960AC
-:10116000116B31B10B6823F480730B60536B916B7F
-:101170005960012151701470516901B188472046AE
-:1011800032BDF8B500F124010423CA69146802686D
-:10119000156891F8206006F01C0603FA06F73C4239
-:1011A00010D06F070ED51468A50603D4146824F078
-:1011B0000404146000F03DF8C968002938D0BDE887
-:1011C000F4400847022303FA06F73C4213D0AF0766
-:1011D00011D51468A50605D4146824F00A04146017
-:1011E00001224A7000F025F800220A708968F9B1DE
-:1011F000BDE8F4400847082303FA06F6344217D046
-:101200002B0715D5146824F00E041460012291F800
-:101210002030CC6903F01C039A40626001228A618D
-:101220004A7000220A70096911B1BDE8F44008470C
-:10123000F1BD91F82020CC6902F01C02934063605C
-:101240007047000010B5416C0268144B89089A423F
-:1012500039BF174C04EB8101164B03EB810181640C
-:1012600002F0FF02083A1421B2FBF1F1012301F070
-:101270001C01114AC26403FA01F1016510BD017934
-:101280000E4A0F4B836502EB81024265491E012223
-:1012900001F003018A40C265704700000804024063
-:1012A000F8FFFDBF00000240F8FBFDBF0004024054
-:1012B000000802401C08024080080240FC0802406E
-:1012C00040090240704730B4002513E050F8042B69
-:1012D000D30744BFA9F101039A18091F042942F852
-:1012E000045BFAD213468C0744BF15809B1CC907C8
-:1012F00048BF1D7050F8041B0029E7D130BC70476F
-:1013000070477047704700004FF0B040006800F031
-:10131000F000B02888BFB020704738B54FF0B04417
-:10132000304DA16811F00C0106D1FFF7EDFFC0F3BD
-:10133000031055F8200032BD04292B4A05D0082996
-:101340002A4804D12168C90222D5104632BDE1687D
-:1013500001F00301022904D0032904D12168C90244
-:1013600007D5104605E0FFF7CFFFC0F3031055F88F
-:101370002000E168E268E368C1F306214843C2F354
-:101380000211491C5B0FB0FBF1F05B1CB0FBF3F0EA
-:1013900032BD80B5FFF7C1FF1149FFE7144A096864
-:1013A000C1F3031152F82110B0FBF1F002BD80B57A
-:1013B000FFF7EFFF00F010F8C1F3022106E080B55F
-:1013C000FFF7E7FF00F008F8C1F3C22112F821107F
-:1013D00001F01F01C84002BD0149064A0968704773
-:1013E00008000058504000080024F4000048E801BC
-:1013F00010400008B4410008D3BBD9B1B2F5803F1A
-:101400005BD2022A1ED98C46B1FBF2F102FB11C35A
-:101410001B0443EA1043B3FBF2FC02FB1C3380B213
-:1014200040EA0343B3FBF2F002FB103240EA0C4007
-:1014300000237047022A05D98446B0FBF2F002FB74
-:1014400010C270474AB105D100F0010249085FEAB5
-:101450003000704700220023704700F0ABB90B004A
-:101460000200002100207047F7D3002200237047BC
-:10147000904271EB030CF2D370B5B1FA81F4B3FA78
-:1014800083F52C1BA340C4F1200532FA05F6334343
-:10149000A2405FF00046E64002E05B085FEA3202ED
-:1014A000841A71EB030524BF204629467641F4D304
-:1014B00002000B003000002170BD70B5B1FA81F45C
-:1014C000B2FA82F5C4F120046419B4F12006DAD32B
-:1014D000B2405FF00044F440002502E052085FEAA9
-:1014E0003303C61A71EB020E24BF304671466441C5
-:1014F0006D41F3D302000B002000290070BD0000F5
-:1015000001480068704700BF60100020002200F012
-:1015100053B900002DE9F04106460A464FF0000C91
-:101520004FF00F082CE0554FBE4214BF4FF0070E8E
-:101530004FF0040E0EFA01F1294344F82310C14381
-:101540004F4C236855680B40ED0348BF03432360AD
-:10155000636855680B40AD0348BF03436360494C63
-:10156000236855680B40ED0248BF0343236063685E
-:101570000B4051688D0248BF034363600CF1010CBE
-:10158000106830FA0CF172D0012303FA0CF3184002
-:10159000F4D05468022C18BF122C4FEA8C010ED1E3
-:1015A0004FEADC0406EB840401F01C0E256A08FAFD
-:1015B0000EF7BD43176907FA0EF73D4325624FEA60
-:1015C0004C0403253768A540ED4305EA070E17795B
-:1015D00007F00307A74047EA0E0737605768012F57
-:1015E00018BF022F03D0112F18BF122F11D1B768C7
-:1015F00005EA070ED768A74047EA0E07B760776885
-:1016000027EA03035768C7F3001707FA0CF73B43B1
-:101610007360F3681D40936803FA04F42C43F4608C
-:101620005468E300AAD5184C4FEA9C0354F8237081
-:1016300001F00C0108FA01F5B6F1904F27EA050513
-:1016400008BF4FF0000E11D0104FBE4208BF4FF040
-:10165000010E0BD00E4FBE4208BF4FF0020E05D058
-:101660000C4FBE427FF45FAF4FF0030E62E7BDE860
-:10167000F0810AB1816170478162704700100048B3
-:101680008008005800080058080001400004004885
-:1016900000080048000C00480901020002D43C4840
-:1016A000815470473B4B02F00F021A4402F8041CAD
-:1016B0007047394B19684FF6FF020002114000F4E1
-:1016C000E0600843354908431860704738B5324B2D
-:1016D0001C68C4F30223C3F10704052C28BF0424AB
-:1016E0001D1D072D34BF0023DB1E012505FA04F460
-:1016F000641E2140994005FA03F35B1E1A40114312
-:10170000BDE83440C8E7010007D4012200F01F0102
-:10171000234B8A40400943F82020704701000BD436
-:10172000012200F01F011F4B8A40400943F820208E
-:10173000BFF34F8FBFF36F8F704710B5401EB0F1EE
-:10174000807F01D3012010BD174C60600F214FF046
-:10175000FF30FFF7A1FF0021A160072020600020DB
-:1017600010BD010007D4012200F01F010F4B8A4079
-:10177000400943F820207047010007D4012200F0FF
-:101780001F010B4B8A40400943F82020704700009E
-:1017900000E400E018ED00E00CED00E00000FA05C8
-:1017A00000E100E080E100E010E000E000E200E0A5
-:1017B00080E200E07047000000B500BF13009646CD
-:1017C0009446103928BFA0E80C50FAD85FEA417C53
-:1017D00028BF0CC048BF40F8042BC90728BF20F819
-:1017E000022B48BF00F8012B00BD0000DFF8FC14FD
-:1017F0000A6892B200E00246086880B28242FAD1DA
-:1018000070472DE9F041DFF8E864DFF8E8843178CB
-:10181000044618256843062908EB000708D13078EC
-:101820007070347079754FF0FF30706000203DE0CB
-:1018300000F07BF8B9680918B96008F10803B968C5
-:1018400032786A439A589142327813D308F11503DB
-:1018500015FB02FC13F80C30062B29D008F1080602
-:101860006B43F358994222BF08F115036A439A5C0F
-:10187000ECD21DE01146337869439A420FD008F14B
-:10188000140C08F1150E1CF8013015FB03F50EF8C9
-:1018900005407A753B7508F11402545403E008F1D1
-:1018A00014037A755C54317871703470BDE8F0813E
-:1018B0001146694308F115035B5C062B04D008F15F
-:1018C000140615FB03F574557B753A7508F115027E
-:1018D0005454EBE7F0B5DFF81834DFF818541E78ED
-:1018E000182402466243B0422A4404D11878587042
-:1018F000547D1C700FE0167D507D92F815C005F1E7
-:1019000015076643062807F806C004D0167D14356F
-:1019100014FB00F42E55012010731A78062A02BF1A
-:1019200000294FF0FF305860F0BD10B5DFF8C0431C
-:10193000606810F1010F10D0FFF758FF6168DFF801
-:10194000B82381422FBF636861685388CB185178F0
-:101950001278181A4843D04000E0002080B210BD31
-:101960002DE9F84FDFF89053DFF890B3D5F80880F1
-:10197000D8F80000DBF800104A0500F07AF9DFF82B
-:101980007063DFF870A321F4806181604FF0180963
-:1019900034780AF1080019FB04F14758FFF7C5FF36
-:1019A000874211D200270121B170062C3FD019FBCC
-:1019B00004F40AF108010A59824210D200230B51A3
-:1019C0000AEB04014C7DF0E7A9884118B94202D224
-:1019D000AF880021E8E701223F1AB270E5E70A5913
-:1019E0000AF10803121A1A51EAE7022802DA2878E3
-:1019F000012800D07F1ED8F80000C1684A07FAD538
-:101A000000F02AF9DBF80C00000CBFB247EA0047EF
-:101A1000CBF80C70FFF7EAFE7060A8680068816878
-:101A200041F480618160AFF30080BDE8F18FB8B20E
-:101A30000028DAD1FFF7DAFE70600320BDE8F24F2C
-:101A4000FFF78FBE2DE9F843EFF3108872B6AA4D69
-:101A5000A84BA8680168CA224A625320486218202D
-:101A60008A6822F480628A60A14A16783746474322
-:101A70001F44387B022823D13C68D7F81090907817
-:101A8000D8B17A7B012A0AD101213046FFF722FF23
-:101A900088F310887968304600F0F1F804E088F3A4
-:101AA0001088304600F09EF8A86800F01AF8314619
-:101AB0002246484600F02CF90DE0FFF751FF08E000
-:101AC000C8684207FCD500F086F84FF400208C4926
-:101AD000086088F31088FF22A86801684A62BDE8A0
-:101AE000F1830068CA214162532242627047F8B50F
-:101AF000814CA160CA2209684A6253237F4A4B6223
-:101B0000156845F020051560136803F00703C3F15D
-:101B10000403237095682D0C05F07F056D1C65701E
-:101B2000EDB29268C2F30E02521C628092B2521E53
-:101B30006A43A2F5A072DA404FF6FF739A422CBFB7
-:101B4000A380A2806F4A136843F4002313606E4B96
-:101B50001D6845F400251D6048BB6548012383705E
-:101B60004FF0FF3545600023624D00260C355FFACB
-:101B700083FC182717FB0CFC5B1CDFB205F80C601C
-:101B8000062FF4DB06230370886820F480608860E9
-:101B900000F021F84FF40021D1600320FFF7ECFDA5
-:101BA000A0680068816841F48041816005E0C868F0
-:101BB000410544BF0320FFF7D4FDA1680A68FF2058
-:101BC0005062002203210320FFF780FDBDE8F240B0
-:101BD0000320FFF798BDC86800F0800060F49060B3
-:101BE000C8607047F8B50746EFF3108472B603205B
-:101BF000FFF794FD404DAE683068FFF773FF3B463A
-:101C0000182042494343CA5C022A1BD100213846AE
-:101C1000FFF760FE3648017806290ED13068374953
-:101C20000A68530500F025F821F480618160C168DD
-:101C30004A07FCD500F010F804E04078884218BF4D
-:101C4000FFF78EFEA9680A68FF2050620320FFF7A5
-:101C50005AFD84F31088F1BDC16801F0800161F480
-:101C60009061C1604FF40020254908600320FFF710
-:101C700083BD02D5C1684A07FCD4816870472DE94D
-:101C8000F04180460F46424618201A4942438C18BC
-:101C9000237B022B04BF4046FFF7A4FFEFF3108520
-:101CA00072B60320FFF73AFD134EB068FFF719FF35
-:101CB00002202073A76067604046FFF7A2FD0C4931
-:101CC0000A784978914202D0FFF74AFE02E0A16803
-:101CD000081AA060FF20B1680A6850620320FFF76D
-:101CE00012FD85F31088BDE8F0810000282800402F
-:101CF000D8130020B81000209813002008280040B6
-:101D00000C0800580008005880080058C410002033
-:101D10001047000030B595B009A88549854C0FF2F1
-:101D20006525302200F054F90094019569460FF2C0
-:101D30003D2000F059F90121022000F038FA7E4AD6
-:101D40000021012000F0AAFA09A800F043FB0020BE
-:101D5000ADF81A0000F052FB00F0D0F80246062160
-:101D6000002000F076FB4EF66E51744A0891062171
-:101D70001068079007AA2E2000F06BFB8AA21021A2
-:101D8000182000F066FB00BF8BA21021082000F095
-:101D900060FB1821012000F07DFB00F0B2FB0DF18B
-:101DA000160006A90190009105AB07220021012031
-:101DB00000F045FD78A0BDF8181000900723BDF88D
-:101DC0001400002200F05AFC0DF11A0000900223CA
-:101DD000BDF81610BDF81400002200F04FFC0020E2
-:101DE00000F0EAFC002004901023554903910820DC
-:101DF000002201930090029200230121012000F0B3
-:101E0000EFFC00F0B3FD4F484FF400410160016F5B
-:101E10000220019001F0FF014FF000504278029241
-:101E2000062A0ED200210170BFF34F8F4649474862
-:101E30000A6802F4E06202430A60BFF34F8F00BFFA
-:101E4000FDE7837803939B1899423CBF891A03915D
-:101E500000F020FE694601A800F08EFE00F02AFE88
-:101E600000F04CF83A4942790A7203794B72C27811
-:101E70008A728378CB7242780A7303785B1C4B7347
-:101E8000062142798DF8052003798DF80430C27857
-:101E90008DF8032083788DF8023042788DF8012088
-:101EA0006A460078401C8DF80000002000F0D1FA4E
-:101EB00000F00AF815B030BD80B54078052808BF9D
-:101EC00000F002F8012002BD00B587B000200690A6
-:101ED000059000223CA00492082100230290019169
-:101EE00000920393A0228021002000F014FC07B090
-:101EF0005DF804EB16490E2000F0D0BC10B50F4978
-:101F00000A6812F1010F0DD012484B6802701B0ACB
-:101F1000140A120C4470827049680371C1701B0A64
-:101F2000437110BD002000F0A7FE00B91CA010BD39
-:101F3000C8400008AC080320272000088075FF1F58
-:101F400007B20100104000580CED00E00400FA0553
-:101F500004000020B01300200021012000F0ABB9E4
-:101F6000012000F0CAB9012000F0CFB910B5044635
-:101F7000616801F1080000F009FD00B10120207046
-:101F800010BD000010B1012803D07047012000F0FF
-:101F9000A2B900F0A8B90000424C45636F72650019
-:101FA0006C7AD8AC57720000123456789ABCDEF0C6
-:101FB000123456789ABCDEF0FEDCBA0987654321FC
-:101FC000FEDCBA09876543210953544D5F4F5441E4
-:101FD0004AB1000011F8013B521E00F8013B1CBF42
-:101FE00011F8013BF8E770477FB50C466A4D616810
-:101FF0006A4EE8612962284600F052FE246805F125
-:10200000240000604060746006F1080000604060D9
-:1020100001203070296829B10FF249120092029410
-:10202000684688477FBD1FB55C4C04F1080000F08E
-:1020300044FEE8B92078D8B1694604F1080000F000
-:1020400065FE012054492070C96941B10098029091
-:1020500001A888479DF804102170080003D000985B
-:1020600000F007FF04E0009904F1080000F02EFEE4
-:1020700004F1080000F021FE28B9207818B104F11D
-:102080000800FFF769FF1FBD2DE9FC410446002051
-:1020900000F05EF866882088A268DFF8FC80C6F34E
-:1020A000090646EA8026E068B6B2C1B2304600F0C2
-:1020B0003BF8002548F2E800FFF755FF08E0788874
-:1020C000B04202D1226939781170787800B10125C7
-:1020D00008F1240000F0F1FDF0B9694608F1240090
-:1020E00000F014FE0098014600F10B07487A0F2813
-:1020F000E5D0B7F80100B0420CD1887A6169C01E02
-:10210000C0B28842C8BF0846606102462069F91C17
-:10211000FFF75EFF3878D9E72800CBD0012000F028
-:1021200017F80020BDE8F68110B513461B4A546825
-:10213000A4F80900E1720A46194604F10C00FFF701
-:1021400047FF154A1369BDE81040002100201847D9
-:102150001149096A08B921B1084700291CBF0120AB
-:102160000847704710B50146487A0F2818BF0E2857
-:1021700007D10B4800F0B4FDBDE810400020FFF788
-:10218000EFBE064C04F1080000F0AAFD04F10800BF
-:10219000BDE81040FFF7E0BEB41200207813002025
-:1021A000D81200200C48002101604160704710B532
-:1021B00000F00CF85C6819B1012904D1204301E05A
-:1021C00024EA0000586082F3108810BDEFF31082FB
-:1021D00072B6014B70470000B81300202DE9F041A2
-:1021E000544CDFF85481A5692840A06131E0491CB6
-:1021F00054F831000742FAD004EBC107184079685F
-:102200001040014204BF4FF0FF327A607E683040D8
-:1022100000F094F86062012101FA00F086437E60CC
-:10222000EFF3108272B6606A23698140C9430B40A4
-:102230002361022004EBC00353F8087C0F40401ECA
-:1022400043F8087CF6D182F31088606A58F82010B1
-:10225000884763692069A2691840104207D0E06985
-:10226000216A084203D1002103EA0207C0E7C04601
-:10227000C046EFF3108872B621696069A269014017
-:10228000114201BFE069216A084200F0ECFE88F3C8
-:102290001088C046C046A561BDE8F08138B5144637
-:1022A000EFF3108572B600F049F8234941F8204059
-:1022B00085F3108831BD30B5EFF3108272B61D4B37
-:1022C0001C6904431C6153F83150284343F8310022
-:1022D00082F3108830BDEFF3108172B6154A53694E
-:1022E00023EA000005E0EFF3108172B6114A53694A
-:1022F0001843506181F310887047EFF3108172B674
-:102300000C4AD3691843D061F4E770B5094C656A8B
-:10231000266A2062012101FA05F502E0284600F054
-:10232000A3FE216AE0690842F8D088432662E06192
-:1023300070BD000038100020D4110020024600209B
-:10234000110C090404BF1020120412F07F4F04BFC7
-:102350000830120205A312F0704F04BF001D1201D5
-:10236000120FC0F11F00995C401A7047040302026B
-:102370000101010100000000000000001FB504463B
-:1023800000F030F84FF6524000F0CEFE14B19DF848
-:102390000F0020700EE01FB5002408B10090042447
-:1023A00009B10191241D6B466A46E1B24FF65440D3
-:1023B00000F0BAFE9DF80E0004B010BD00F0B4FEAF
-:1023C0009DF80E0005B000BDF8B500F00BF84FF613
-:1023D0005A40F3E7F8B500F10C026B4621214FF6A5
-:1023E0006640EBE76B46002200217047F8B500F12C
-:1023F0000C026B460F214FF66840DFE700B587B04F
-:1024000000F013F800F020F8032100F009F800F0C4
-:1024100013F800284CBFFF209DF8000007B000BD56
-:10242000ADF80410ADF80610704700208DF80000DC
-:102430007047049207A9039101220692CDF814D0A7
-:10244000002101A8FFF720BE1822002101A800F0FA
-:10245000C1BE18B50C46C7B0114600F03BF88DF868
-:102460001D4022460DF11E0000F0AEFE00F027F8E0
-:102470003F21ADF804100C2200F026F8A41C0692AF
-:10248000049400F038F800284CBFFF209DF80000AD
-:1024900048B010BD00B5C7B000F00AF80F2200F038
-:1024A0001FF800284CBFFF209DF8000047B000BD7A
-:1024B00000238DF81C008DF81D108DF800301822B7
-:1024C000002101A800F086BEADF8062007A90391FF
-:1024D0000122704700228DF800208DF81C00704703
-:1024E000ADF806203F21ADF804100222049207A99E
-:1024F000039101220692CDF814D0002101A8FFF724
-:10250000C3BD00B587B000208DF8000000F0E3F8EF
-:1025100040F2011200F0F9F80122069200F0E2F810
-:1025200000284CBFFF209DF8000007B000BD2DE93A
-:10253000F84104460128C7B0884616461F4608BF22
-:10254000022003D002280CBF102000200DF11D0333
-:102550001D1800F035F8012C8DF81C4002D0022C1B
-:102560001AD01BE00224224641460DF11D0000F066
-:102570002BFE2E706F7000F0AEF800F0A6F84FF44E
-:10258000817200F017F8E41C0692049400F0AAF897
-:10259000002805D5FF2009E01024E4E7472005E0E6
-:1025A0009DF8000010B94E9800F063F8FFE748B0BE
-:1025B000BDE8F081ADF8062007A90391032270471A
-:1025C00003220021684600F005BE2DE9F64F0C46B7
-:1025D0000546012CC7B09B4608BF022003D0022C41
-:1025E0000CBF102000200DF11F031E18FFF7E8FF9D
-:1025F000012CADF81C508DF81E4002D0022C2BD0BF
-:102600002CE00227569C559DDDF85091DDF84CA139
-:10261000DDF8488148993A4600F053F8A6F800B032
-:1026200086F8028086F803A086F804907571B4716C
-:1026300000F051F800F049F84FF4827207A9ADF8A4
-:10264000062003910A3703220497069200F04AF805
-:10265000002805D5FF2009E01027D3E7472005E033
-:102660009DF8000010B9579800F003F849B0BDE894
-:10267000F08FBDF8011001800020704778B5C7B019
-:102680001D464C9B00F034F800268DF800608DF854
-:1026900021502A4619460DF1220000F095FD00F068
-:1026A0001AF800F012F84FF4837200F028F8AD1D0C
-:1026B00000F016F800284CBFFF209DF8000049B03C
-:1026C00060BD0DF11F0000F07FBD3F21ADF804108B
-:1026D00070478DF800301822002101A800F07ABD63
-:1026E00006920495CDF814D0002101A8FFF7CCBCC8
-:1026F000ADF81C00ADF81E108DF820207047ADF825
-:10270000062007A9039101227047ADF806203F215A
-:10271000ADF8041070472DE9F84DC7B09446DDF8C8
-:1027200040E1519A559D569EDDF84CA1ADF81D1023
-:102730008DF81C004FF0000BADF81FC08DF8213054
-:102740008DF822E000F02CF800F01FF824F8095F63
-:10275000668000F0DAF83F20ADF804008321012004
-:10276000ADF8061000F00AF800F0D9F800284CBFC8
-:10277000FF209DF8000048B0BDE8F08D07AA57443F
-:10278000069003920D370497704788F800A007ACB5
-:102790005499E419524608F10100544400F014BD64
-:1027A0008DF82320174652998DF800B00DF12408BA
-:1027B00009A8B84400F008BD00B5C7B000F08CF817
-:1027C00000F0A3F800F09BF8852200F08BF800F0F1
-:1027D000A5F800284CBFFF209DF8000047B000BDC1
-:1027E0002DE9F043C7B0DDF838814F9E509D519FD1
-:1027F000529C8DF81C004FF0000907A88DF800903E
-:10280000417082700DF123018DF81F308DF820800A
-:102810008DF821608DF822500F608DF8274000F070
-:1028200074F8862200F065F80C2200F073F8002896
-:102830004CBFFF209DF8000047B0BDE8F083F8B51D
-:10284000C8B005460E4617461C4600F022F808A8F8
-:10285000467087708DF8205000F078F88A2200F0DA
-:1028600064F8032200F067F8002848BFFF200ED468
-:102870009DF8000058B94F994E98BDF8012022806C
-:10288000BDF803300380BDF805000880002049B082
-:10289000F0BD07220021684600F09CBC18B5C7B007
-:1028A000002304468DF800308DF81C40224600F0CD
-:1028B00052F800F02AF800F022F88E2200F04FF8CB
-:1028C000641C0692049400F02AF800284CBFFF20F4
-:1028D0009DF8000048B010BD00228DF800208DF852
-:1028E0001C007047ADF8062007A90391012204924D
-:1028F0007047ADF806203F21ADF8041070473F2126
-:10290000ADF8041070478DF800301822002101A89E
-:1029100000F060BC049207A9039101220692CDF851
-:1029200014D0002101A8FFF7AFBBADF80A203F216A
-:10293000ADF808107047059208A904910722079284
-:10294000CDF818D0002102A8FFF79EBB1822002165
-:1029500002A800F03FBC0DF11D0000F035BCADF841
-:10296000062007A903910122704700001C4900209E
-:10297000087700221B48027000F036B818490A7F19
-:1029800041F82200087F401C0877704770B5044664
-:102990006078FF2802BFB4F8030000F47F40B0F570
-:1029A000406F12D100260E4D00E0761C297FF0B258
-:1029B00088420AD2F1B255F8212020469047010002
-:1029C000F3D002D0022805D006E02046BDE87040D2
-:1029D000FFF772BA002070BD012070BD000000003A
-:1029E00028130020E813002080B5C046C046C0462A
-:1029F000C046C046C046C046C046C046C046C046A7
-:102A0000C046C046C046C046C046C046C046C04696
-:102A1000C046C046C046C046C04600F021FCC04685
-:102A2000C046C046C046BDE8014000F08FBC000073
-:102A3000DFF800F0891000202DE9F041484E0746EC
-:102A400030780128884614461D4608BF02201CD055
-:102A5000012030700021716000F019F8010012D1DE
-:102A6000012F22462B4603D1404600F06BF803E0CD
-:102A700011464046FFF7DCFF00F009F839490A68C3
-:102A800022EA07070F6000213170BDE8F0814FF4A2
-:102A90007A701AE03549CA680020002A00D47047CD
-:102AA00010B5334A334C0A600C60C968002948BF2E
-:102AB000012010BD2B490A6842F000420A60002044
-:102AC0000968002958BF0120704770B50546FEF718
-:102AD00017FD0646244C2068C10310D5FEF710FDF3
-:102AE000801BA842F7D3032070BD1D494860012018
-:102AF00070BDFEF705FD801BA84216D3F3E72068E2
-:102B0000C10744BF01222260A2684CF2FA3108409A
-:102B100002F08042104310F0404F00F00BF81CBF51
-:102B200020F0404222600028DFD120684103E0D439
-:102B3000002070BD04D0A26800F040410A43A260AA
-:102B40008100704710B507490C6844F001040C601F
-:102B500040F8042BBFF36F8F036010BD000000002E
-:102B600060130020144000581040005808400058DE
-:102B700023016745AB89EFCD2DE9F04100F05EF808
-:102B8000884608BF022057D00120207000216160D4
-:102B900000F059F801004DD12968DFF8CC70042904
-:102BA00008D1786940F4803040F00400786100F08A
-:102BB0004AF819E04FF0FF31C8F800106E6800E0E5
-:102BC000761C6968AA6851188E4208D2304600F017
-:102BD0003EF800F038F80100F2D0C8F800607A69D9
-:102BE000DFF888100A407A613A6891050FD53A6893
-:102BF00022F400723A60396841F4006139603A6841
-:102C000022F400623A60396841F4007139603A6830
-:102C100051050FD53A6822F480623A60396841F470
-:102C2000805139603A6822F480523A60396841F440
-:102C30008061396000222270BDE8F0810D4C0546AC
-:102C40002078012870474FF47A70FFF73EBF08499B
-:102C50000A6822F4FF6242EAC00242F4803242F083
-:102C600002020A60704700000040005805F8FFFFAC
-:102C7000144000586013002020B501460648074D57
-:102C8000C2798A4218BFA84218BF0838F8D18A42D0
-:102C900018BF002020BD00BFF873FF1F0070FF1F8A
-:102CA0000249034A01600261704700BF6D2D0008B0
-:102CB000972D0008006040607047EFF3108172B6F6
-:102CC000026882420CBF012000201CE0EFF310825A
-:102CD00072B603680B60486001600868416023E0D9
-:102CE000EFF3108272B6086043684B604160486839
-:102CF000016019E0EFF3108172B6436802681A6050
-:102D000042680068426081F31088704710B5EFF3A5
-:102D1000108472B602680A600068FFE7FFF7EAFFF6
-:102D200084F3108810BD086082F31088704700009B
-:102D300000F082BB6C486D49016001F120024260E5
-:102D400001F13003836001F13C02026201F14403AE
-:102D5000C36001F14C02026101F16803436101F1BA
-:102D60006C0282617831C16100F06EBB38B50446F7
-:102D70005F4D05F11000FFF79DFF5B494868A168B2
-:102D8000016005F11001E268C2608160456000F0F9
-:102D900077FB58482DE080B553494A6813680120F5
-:102DA000187200F073FB002002BD38B5514C504D35
-:102DB00007E0694605F11000FFF7A8FF00982168B9
-:102DC000884705F11000FFF778FF0028F1D031BDEA
-:102DD00048484168084738B50446474D28460060D2
-:102DE00040604149C868A1680160456000F053FB3C
-:102DF00042482168016062684260002032BD80B5AF
-:102E00003949CA6813681020187200F04AFB002084
-:102E100002BD3549CA68394910680B68184738B58A
-:102E2000364C354D06E069462846FFF76FFF00989F
-:102E3000616888472846FFF740FF0028F3D031BD7E
-:102E400038B504462E4D2846006040602D4800608D
-:102E5000406025480069A1688160E268C260056140
-:102E60002168016062684260216941616269826132
-:102E700031BD80B501462348FFF732FFBDE802406F
-:102E80000FF2050000F01DBB38B5174C1D4D08E0D2
-:102E900069462846FFF73AFF009920690069FFF765
-:102EA0001FFF2846FFF709FF0028F1D031BD10B5FC
-:102EB000154C2046006040600B4948690460BDE83D
-:102EC000104000F012BB1CB50F4C06E069462046CE
-:102ED000FFF71CFF0098C046C0462046FFF7EDFEF6
-:102EE0000028F3D013BD000000000320B809032020
-:102EF0008C080320C8130020A4080320D01300204E
-:102F00003C0A0320C0130020440A0320BFF34F8F64
-:102F1000284929480A6802F4E06202430A60BFF3C4
-:102F20004F8F00BFFDE710B52448254C88B00168DD
-:102F300041F400410160FFF735F922490020FEF716
-:102F4000D6FD00F0F2FA01210120FFF730F9002050
-:102F500000F09AFB012000F097FB022000F094FBA8
-:102F6000012000F0B5FB0121002000F0CAFBFFF7B3
-:102F7000E1FE154A00210220FFF790F904F23C51CE
-:102F8000009169460FF245020FF24500019200F0F0
-:102F900079F804F25471029104F5C96240F23C518F
-:102FA00003920591049402A8FFF74AFFFFF7C0FEC1
-:102FB00008B010BD0CED00E00400FA050800005850
-:102FC0002C000320E0120020C730000870470000EA
-:102FD00038B5406800F10B052988B1F5124F15D1BD
-:102FE000002000F07DFBA8784FF0005478B92178DC
-:102FF000022908BF20702FD000F0A6FA002101207E
-:10300000FFF7D5F8BDE83140FEF784BE31BD0020A2
-:10301000FFF7B4F9FF281FD028B1002000F058FBBB
-:1030200000F01DF8FCE72078022809D1002121706A
-:10303000FFF7CAF9002000F04BFB00F010F8FCE7A6
-:103040000220207000210020FFF7A5F9002000F0E9
-:103050003FFB00F004F8FCE7FFF758FF00BF012139
-:10306000002000F0ADBB70474FF0FF30FFF7B6B85F
-:1030700000210220FFF71FB90220FFF73EB902200E
-:10308000FFF743B97FB50C464C4D61684C4EE86183
-:103090002962284600F0B8FB2468746006F1080035
-:1030A00000604060012000F065F801203070296860
-:1030B00041B10FF2E5020FF2E9030092019302948D
-:1030C000684688477FBD1FB53D4C04F10800FFF7F7
-:1030D000F4FDE8B92078D8B1694604F10800FFF79B
-:1030E00015FE012035492070C96941B10098029050
-:1030F00001A888479DF804102170080003D00098AB
-:10310000FFF7B7FE04E0009904F10800FFF7DEFDC9
-:1031100004F10800FFF7D1FD28B9207818B104F1B7
-:103120000800FFF7A5FF1FBD2DE9F04105460E463B
-:1031300090461C46002000F01DF8214F7868A0F84A
-:103140000950C672324641460C30FEF741FF1B4A19
-:10315000136900210020984748F2E800FFF78FFF2D
-:1031600079688A78D21C04F10800FEF731FFBDE8C7
-:10317000F041012010B51149124C096A20B901B182
-:1031800088470021217010BD0120207011B1BDE8D9
-:103190001040084710BD00000020FFF76DBF000081
-:1031A00010B50146064C04F10800FFF799FD04F143
-:1031B0000800BDE81040FFF75BBF000004130020CB
-:1031C00088130020E913002010B50446FEF700FF25
-:1031D000204610BD10B5044610460A46014620465A
-:1031E00000F01CFB204610BD1CB541780024FF29CF
-:1031F00034D1B0F80310434A40F60143C91A02D053
-:1032000016391AD02AE05388B0F807105B1C99428F
-:103210000BD1002200F10D038DF80420009301244E
-:10322000B0F80B108DF8051015E0D288521C9142B1
-:1032300014D101248DF8044006E0117A71B11472A2
-:10324000032201248DF8042000F10D030093B0F84F
-:103250000B008DF80500684600F0FAFA204616BD0E
-:1032600010B586B02848274CFFF788FB0094082348
-:103270005FF0010225A10220FFF759F90021049116
-:103280000191A01C05900A220123042103920293BC
-:1032900000910423B4F8000020A20221FFF795F961
-:1032A0000021049102910191201D05900A22202104
-:1032B00003920091012320881CA20221FFF785F9C7
-:1032C000A01D059001210491029100200A22019085
-:1032D0000421039200911423B4F8000017A20221E4
-:1032E000FFF773F90020207206B010BD1CB50091E5
-:1032F0000124044881880472012300880022FFF71A
-:10330000BDF916BDA4130020E93100088FE5B3D53F
-:103310002E7F4A982A487ACC20FE000019ED82AE12
-:10332000ED214C9D4145228E22FE000019ED82AE1A
-:10333000ED214C9D4145228E23FE000019ED82AE09
-:10334000ED214C9D4145228E24FE00007047000077
-:10335000C0680840884201D10120704700207047B2
-:10336000C0690840884201D10120704700207047A1
-:1033700010B5614C02212046FFF7F2FF38B16068BA
-:10338000C043810703D5FFF74AFD022018E0012161
-:103390002046FFF7E5FF38B16068C043C10703D599
-:1033A000FFF703FD01200BE008212046FFF7D8FFBF
-:1033B00038B16068C043010703D5FFF784FD0820DA
-:1033C000A06010BD10B54C4C00F033F818B960681F
-:1033D000C043810306D400F02CF830B96068C043C4
-:1033E000810302D5BDE8104064E0082100F022F816
-:1033F00070B96068C04301030AD560683F4940F472
-:1034000000206060086880474FF40022A26010BD71
-:10341000202100F00FF858B96068C043810207D539
-:10342000606840F400106060BDE81040FFF7D0BC59
-:1034300010BD022120468BE740BF20BF3048016805
-:1034400041F400410160704780B52E48016841F4A5
-:1034500080110160006800F48010009000982648F8
-:10346000016841F001010160026842F480320260AB
-:103470002C20FEF748F9BDE802402D20FEF743B9A5
-:103480002148016849084900016070471F494FF40D
-:103490008030086070471C48016821F0020101601B
-:1034A000704719484FF400314160026822F400323D
-:1034B000026070471448016841F400310160FFF771
-:1034C000A8BC38B504460C4D08212846FFF740FF3C
-:1034D00030B10A480460696821F40021696031BD97
-:1034E000A0474FF40020A86031BD0748016821F0D3
-:1034F0000801016070470000000C0058E013002034
-:103500000C04005850000058040C0058080C0058D7
-:10351000484900E0484981B00A6802430A600968E6
-:1035200008400090009801B0704780B500F07AFA2A
-:1035300000F07AFA4148016841F48031016000F0FE
-:1035400085FABDE801400EE000B587B04FEA0D00F6
-:1035500040A11C22FEF73CFDFFF7A9FC6846FEF7E0
-:1035600045FF07B000BDF0B585B068461421FDF7F2
-:10357000CDFF0026002500240021314A02EBC102C4
-:10358000907988B11368B3F1904F08D02D4FBB42AA
-:1035900008D02D4FBB4204BF9088044304E09088BC
-:1035A000064301E092881543491C2029E5DB0021F0
-:1035B00002910122032101920391B0B288B10090DF
-:1035C0000120FFF7A5FF0120FFF7A4FF69464FF098
-:1035D0009040FDF79FFF0022B1B24FF09040FEF700
-:1035E00048F8A8B280B100900220FFF791FF0220B6
-:1035F000FFF790FF134E69463046FDF78BFF002220
-:10360000A9B23046FEF735F8A0B280B10090042090
-:10361000FFF77EFF0420FFF77DFF0B4D694628462C
-:10362000FDF778FF0022A1B22846FEF722F805B088
-:10363000F0BD00004C0000584C01005890080058A4
-:10364000103F000800040048000800480020FDF773
-:1036500048BC000000000000000000000000000066
-:10366000103F000824000320280003202004040049
-:10367000DFF81C1181B00A6802430A60096808403B
-:103680000090009801B0704778B585B0044600F00E
-:103690007BF80220FFF7ECFF0FF20411DFF8F46073
-:1036A00031F814500095012101910022022102926B
-:1036B0000391694656F82400FDF72CFF00F002F84C
-:1036C00006B070BD56F8240000222946FDF7D1BF90
-:1036D00010B500F00DF8BDE810400122FDF7C9BF9C
-:1036E00010B500F005F8BDE810400022FDF7C1BF9D
-:1036F0000FF2AC03DFF89C4033F8101054F82000B0
-:10370000704730B585B004460D4600F03DF8210005
-:1037100008BF042004D0012C18BF022C02D10820BD
-:10372000FFF7A6FF2900DFF870200FF27C000ED112
-:1037300030F814100091002301930121022302911B
-:10374000039300F01CF8012000F012FA15E0012D9F
-:1037500013D130F81400DFF8443000900295019343
-:1037600000F00DF80FF24800045D00220F2160B256
-:10377000FDF7ACFF60B2FDF7C6FF05B030BD69468E
-:1037800052F82400FDF7C6BE68461421FDF7BEBE00
-:103790004C0000586C100020781000200000211010
-:1037A00020000100020000001000010002000000E3
-:1037B0000A0607001148016841F4807101607047F2
-:1037C00010B50C460E490028086805D1810507D5BB
-:1037D00000F0FAF920B110BD810558BF00F0EEF9F4
-:1037E0000848016821F00401012C016001D130BFBB
-:1037F00010BD40BF20BF20BF10BD00000004005816
-:103800001404005810ED00E00249034A016002610F
-:10381000704700BFD72D0008FF2D00084018491C35
-:103820001CBFB1F1010100F8012DF9D17047000072
-:1038300000EB8100664AD0F88010914201D001204F
-:1038400070470020704742F4806240F821207047A2
-:103850002DE9F8430546DFF87C912879DFF8788177
-:103860005E4E20B1012830D0032874D016E02968BC
-:103870000A78012A4FF0006004D0022A10D0072AEB
-:103880001BD00BE00023737430606A792B68521EE2
-:10389000591C3046FEF79CFB00223274BDE8F183D0
-:1038A00001217174306028686A79411C521E3046CB
-:1038B000FEF78EFB00213174F0E701208DF8000047
-:1038C00069460220FFF712FDE8E76C790027022124
-:1038D0004046FFF7ADFF0028F9D1FFF7DBF822E003
-:1038E000296806F1080339441844FEF771FB00F01B
-:1038F0007FF8D6E9022331680120FFF79DF8D6F85A
-:1039000000C0D6E90201DCE900238B4208BF8242F5
-:1039100009D10CF108003060307CC0F10800241A95
-:10392000C71900203074307CC0F108029442D7D20D
-:10393000FFF7C0F800F058F8002CAFD02868357CAD
-:10394000C11906F1080322465819FEF741FB307CE5
-:1039500024183474A2E7307CD0B102214046FFF72E
-:1039600067FF0028F9D1FFF795F804E000F040F870
-:103970000120FFF761F83168D6E90223D1E900455B
-:103980009D4208BF9442F1D1FFF794F800F02CF863
-:10399000707C90B10128DDD14FF0005200211170F0
-:1039A000BFF34F8F0E490F480B6803F4E0630343E6
-:1039B0000B60BFF34F8F00BFFDE7FEF7DFFC002079
-:1039C000FEF7DCFC01210020FFF7FAFEFAE7000019
-:1039D00000040080104000580014005848130020D4
-:1039E0000CED00E00400FA050022022140462AE71F
-:1039F000D9F80000C00C10F00100F9D170470000A8
-:103A0000032010B5FDF755FE0F2000F0FFF800244D
-:103A1000002814BF012400F017F8204610BD084804
-:103A200080687047074805E00648016841F00201D8
-:103A300001607047016841F00101016070470000BA
-:103A400060100020042004E07047000080B5FFF7FC
-:103A5000FDFD022100910023044800F124014FF4F0
-:103A60008052001D00F0F4F801BD00001400002099
-:103A700010B5FFF7C5FF4A4C606840010ED560687D
-:103A8000C0000BD4FFF796FEFFF794FE206840F4C9
-:103A900080302060216821F48031216000F022F81C
-:103AA000FFF788FEFFF786FE206840F001002060E7
-:103AB00020688007FCD5002261683A4821F4404123
-:103AC00041F48041616001680260036903F05003C2
-:103AD000036100F028F8FFF726FA4FF0FF30FEF7F9
-:103AE0007DFBFAE7304881B0016841F48011016044
-:103AF0003F21006800F48010009000982B4841603E
-:103B00004161016841F47C110160026942F47C1258
-:103B10000261016841F03F010160026942F03F0229
-:103B2000026101B0704710B5FFF744FEFFF742FE97
-:103B30001B481F4C016821F4407141F48071016001
-:103B40000F21026842F40042026047F6FF721948F2
-:103B50008160C260046000F091F8CA206062532165
-:103B60006162FF21A068C008C000A060616210BD52
-:103B700038B50446FDF7C4FC14F1010F054609D021
-:103B8000FFF74DFF041905E00B48016821F004011F
-:103B9000016030BFFDF7B4FC401BA042F4D331BD3F
-:103BA000900000588008005850000058040C00583D
-:103BB00000280040E012002010ED00E010480168ED
-:103BC00041F480410160704710B50D4A0D4B1068FB
-:103BD00020F48040106032211C680B48B4FBF0F0E8
-:103BE00048435369990506D5002818BF401EF8D1EF
-:103BF00001E0002010BD50698105FAD5032010BDF9
-:103C0000000400588410002040420F0070B50F4E91
-:103C10000446B0680025A8B1FDF7BBFBB2684FF4BD
-:103C20007A71B1FBF2F2B0FBF2F0FDF786FD48B914
-:103C3000102C07D2002221464FF0FF30FDF746FD41
-:103C4000746000E00125284670BD00BF60100020B0
-:103C500030B5039C016000250021C1604161056110
-:103C6000A107856142600381047704D5008910B102
-:103C70004FF0FF3030BD002030BD000070B50400B3
-:103C800049D094F8210028B9002184F8201020465A
-:103C9000C046C04600F04EF853202168486200F04C
-:103CA00052F8FF2510B100F03FF834E02168DFF84A
-:103CB000AC008A6802408A6022689368666821695D
-:103CC000A0690E430643334393602068E1680161B5
-:103CD00020680169A26841EA024101612068C16867
-:103CE00021F08001C1602068C16C89088900C1642D
-:103CF0002168CA6CE369606903431A43CA64216896
-:103D00008868810609D400F01CF830B1206845624B
-:103D1000042100F01DF8012070BD206845620121DA
-:103D200084F82110002070BD20684562042184F8C9
-:103D300021107047022084F82100CA2122685162B4
-:103D4000704720460CE0204623E02068C0F824801D
-:103D500084F82110002084F820007047BFFF8FFFF7
-:103D600038B504462068C16821F0A001C160FDF7A4
-:103D7000C7FB05462068C168880608D4FDF7C0FB6C
-:103D8000401B40F2E9318842F4D3032032BD0020C9
-:103D900032BD38B504462068C1684A0612D44FF0D7
-:103DA000FF31C160FDF7ACFB05462068C1684806DD
-:103DB00008D4FDF7A5FB401B40F2E9318842F4D35B
-:103DC000032032BD002032BD4748484A01681268CE
-:103DD000B1F1006F0AD3120302F47F224448821823
-:103DE0008A4203D308684349884201D000207047C3
-:103DF0000120704780B5404940480860026882F35E
-:103E000008884068804730BF01BD10B5FFF7DCFF70
-:103E10004FF0005420B100202070BDE81040E9E7C9
-:103E200001210720FF2221706070A27010BD38B5FB
-:103E3000334C2068C00002D4206880011AD54FF0AE
-:103E40000055287828B9FFF7BFFF10B1FFF7D2FF60
-:103E500012E0287848B9FFF7B7FF30B901200721F1
-:103E6000FF2228706970AA7006E02878012818BF20
-:103E7000022801D0FFF7C9FF2248016841F4700110
-:103E800001600020FEF7F8FE40B180791E49A16074
-:103E9000A26822F47C5242EA0022A2604FF0B040B5
-:103EA000016841F48031016018490A68D208D200E3
-:103EB00042F001020A600A6802F00702012AFAD100
-:103EC00001688903FCD582689208920042F00202E0
-:103ED0008260816801F00C010829FAD10168490863
-:103EE0004900016031BD0000407100088040005869
-:103EF000FCFFFF07298A449408ED00E000700008E9
-:103F00009400005888ED00E0FECAFECA0040005848
-:103F1000000000480100000000000048010000000F
-:103F200000000048010000000000004801000000FF
-:103F300000000048010000000000004801000000EF
-:103F400000000048010000000000004801000000DF
-:103F500000000048010000000000004801000000CF
-:103F600000000048010000000000004801000000BF
-:103F700000000048010000000000004801000000AF
-:103F8000000000480100000000000048010000009F
-:103F9000000000480100000000000048010000008F
-:103FA000000000480100000000000048010000007F
-:103FB000000000480100000000000048010000006F
-:103FC000000000480100000000000048010000005F
-:103FD000000000480100000000000048010000004F
-:103FE000000000480100000000000048010000003F
-:103FF000000000480100000000000048010000002F
-:10400000000000480100000000000048010000001E
-:104010000100000003000000050000000100000096
-:1040200001000000060000000A000000200000005F
-:104030000200000004000000080000001000000062
-:1040400040000000800000000001000000020000AD
-:10405000A0860100400D0300801A060000350C0008
-:1040600040420F0080841E0000093D0000127A00CB
-:104070000024F40000366E010048E801006CDC0208
-:104080000000000000000000000000000000000030
-:1040900030B5016884684218416802EB5103C907D2
-:1040A0000BD54C4409E012F9011B12F8015B002901
-:1040B00004F8015B05D5491CF9D19A42F3D10C30C3
-:1040C00030BD491EF1D5F8E70000000000000000F7
-:1040D0000000000000000000000000004400080094
-:1040E000400508013A799C00F4010000FFFFFFFF42
-:1040F000480101000000000010B50749794418315B
-:10410000064C7C44163404E00A68081D11448847B4
-:104110000146A142F8D110BD6400000098000000E3
-:104120007047FEE770477047704700F00DB80020F9
-:10413000FCF7ECBE0020FCF7EFBEFDF783BCFFF7F9
-:1041400041B9FFF715B9000002490A68886882186A
-:104150000A607047601000204EF68851CEF20001D0
-:10416000086840F470000860BFF34F8FBFF36F8F93
-:104170004FF00070E1EE100A704700004BD1FFFFD6
-:1041800034030000B8100020800800002C00032039
-:1041900000000000FDFEFFFF90010000460100004E
-:1041A00004000020EDFEFFFF2302000004000000D9
-:1041B00024000320000000000000000000000000B8
-:1041C00000000000010000000200000003000000E9
-:1041D000040000000120C046002801D0FFF78CFF3A
-:1041E000AFF300800020AFF30080FFF741FC00F048
-:1041F00000F800F001B800000746384600F002F869
-:10420000FBE7000080B5AFF30080024A11001820E0
-:10421000ABBEFBE72600020001488047014800478B
-:104220002F3E000829420008AFF30080FFF794FFFB
-:10423000FFF7D0FFFFF7FEBFFFF7FEBFFFF7FEBFA0
-:10424000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA2
-:10425000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF92
-:10426000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF82
-:10427000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF72
-:10428000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF62
-:10429000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF52
-:1042A000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF42
-:1042B000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF32
-:1042C000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF22
-:1042D000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF12
-:1042E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF02
-:1042F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF2
-:10430000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFE1
-:10431000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFD1
-:10432000FFF7FEBFFFF7FEBF030DFF0186F400009D
-:104330000181008100810081008100810081008174
-:104340000081008100810081008100810081008165
-:104350000081008100810081008100810081008155
-:104360000081008100810081008100810081008145
-:1043700000A900F8FFF0000010FD000001FC004A59
-:1043800004004800040048000400480008004800F9
-:104390000C0048000C004800093D0030B50A4B5A9B
-:1043A0006842F480225A60EFF3108472B680225182
-:1043B000F8045B40F8045B521EF9D11868C103FC95
-:0D43C000D484F3108830BD10400058F80080
-:040000050800422984
+:100DA000C1693140B1420CBF0120002040451CD137
+:100DB00014F1010FF3D000F017FCC01B844200D3E4
+:100DC00014B900F015F80CE0286801684A07E6D568
+:100DD000C1690A05E3D54FF40062026200F008F829
+:100DE000C16000210170032000E00020BDE8F08117
+:100DF0002868016821F4D071016028688168490879
+:100E00004900816005F17C002021416081607047CC
+:100E100001680A6822F490720A60DFF89C10026888
+:100E200093680B4093602021C0F884100021C166B4
+:100E300070470000FFF4FF1100127A0000093D0026
+:100E4000AAB0280080841E00006A180055581400BB
+:100E500040420F0020A1070090D0030048E80100A5
+:100E60000024F400806A00F1560100220A810A8001
+:100E700000F024BA0000127A0000093D00AAB02850
+:100E80000080841E00006A18005558140040420F6C
+:100E90000020A1070090D0030048E801000024F4DE
+:100EA0000055150000CC0C0000AA0A0000FD0F0040
+:100EB0005461510000D43000FEFFFFEF584900E0BC
+:100EC000584981B00A6802430A60096808400090E6
+:100ED000009801B0704798B95348544901604FF4E5
+:100EE000E131416000218160C160016181610C21BB
+:100EF00041614FF40041C16100218162FFF71EB9D9
+:100F00007047002804BF4848FFF75CB9704718B91C
+:100F10004548406F00F033B9704738B586B0044695
+:100F20006846142100F066FB2168404A91425FD177
+:100F30000220FFF7C5FF402000F05CF83D4D284639
+:100F400000F05CFB0220FFF7BBFF802000F052F8AE
+:100F5000284600F053FB0120FFF7B2FF4FF400607A
+:100F60000221009001910291072003210391049036
+:100F700069464FF0904000F041FB2F482F4D816AA9
+:100F80008908890041F0010181620022016841F471
+:100F9000804101600F21006800F4804005900598B1
+:100FA000242000F021FC242000F03BFC0220FFF76D
+:100FB00085FF0420FFF782FF214828600F2068602A
+:100FC0001020A8600020E86080202861002068616F
+:100FD000A861E8612862284600F034F86567AC62D1
+:100FE00000220F213A2000F0FFFB3A2000F019FC0C
+:100FF00007B030BD00900221002001910290032132
+:1010000007200391049069467047006807498842A9
+:1010100004D107490868002818BF0047704700003E
+:10102000480000584C00005848110020003801408A
+:10103000E41300200004004860000058541200200F
+:101040004404024038B5040001D1012032BD2168BA
+:10105000DFF84002814204F1240500F042F802204A
+:1010600068700A68A0686FF30E120243E0680243DA
+:101070002069024360690243A0690243E0690243B8
+:10108000206A02430A60204600F0DAF8A068B0F552
+:10109000804F04BF00216160696A207900F014F874
+:1010A00038B1052805D2204600F0E4F800F012F827
+:1010B00003E0002028636863A8630020A861012082
+:1010C00068700020287032BD0860A96AE86A48602C
+:1010D00060687047296B00200860696BA86B4860E6
+:1010E00070470AD2DFF8B00142181423B2FBF3F2C2
+:1010F00092002A62DFF8A40109E0DFF8A401421897
+:101100001423B2FBF3F292002A62DFF89801E8613F
+:10111000704738B500F1240200245178022903D029
+:1011200004209061012428E001680B6823F00E037D
+:101130000B6001680D686D086D000D60516A0B68E9
+:1011400023F480730B60012192F82030D56903F0FD
+:101150001C0399406960936AD16A5960116B31B17F
+:101160000B6823F480730B60536B916B5960012102
+:1011700051701470516901B18847204632BDF8B5ED
+:1011800000F124010423CA6914680268156891F803
+:10119000206006F01C0603FA06F73C4210D06F07E9
+:1011A0000ED51468A50603D4156825F0040515604E
+:1011B00000F03DF8C968002938D0BDE8F440084780
+:1011C000022303FA06F73C4213D0AF0711D5146887
+:1011D000A50605D4156825F00A05156001224A7098
+:1011E00000F025F800220A708968F9B1BDE8F440E2
+:1011F0000847082303FA06F6344217D02B0715D503
+:10120000136823F00E031360012291F82030CC699B
+:1012100003F01C039A40626001228A614A70002236
+:101220000A70096911B1BDE8F4400847F1BD91F8B1
+:101230002020CC6902F01C029340636070470000DC
+:10124000416C0268134B89089A4234BF164B174B06
+:1012500003EB8101816402F0FF02083A1421B2FB22
+:10126000F1F1134AC26401F01C01012202FA01F1FA
+:101270000165704701790F4A02EB81024265491E00
+:101280000D4A826501F0030101228A40C265704760
+:101290000000000008040240F8FFFDBF000002400B
+:1012A000F8FBFDBF00040240000802401C08024099
+:1012B00080080240FC0802404009024070470000DC
+:1012C00070477047704700004FF0B040006800F072
+:1012D000F000B02888BFB020704738B54FF0B04458
+:1012E000304DA16811F00C0106D1FFF7EDFFC0F3FE
+:1012F000031055F8200032BD04292B4A05D00829D7
+:101300002A4804D12168C90222D5104632BDE168BD
+:1013100001F00301022904D0032904D12168C90284
+:1013200007D5104605E0FFF7CFFFC0F3031055F8CF
+:101330002000E168E268E368C1F306214843C2F394
+:101340000211491C5B0FB0FBF1F05B1CB0FBF3F02A
+:1013500032BD80B5FFF7C1FF1149FFE7144A0968A4
+:10136000C1F3031152F82110B0FBF1F002BD80B5BA
+:10137000FFF7EFFF00F010F8C1F3022106E080B59F
+:10138000FFF7E7FF00F008F8C1F3C22112F82110BF
+:1013900001F01F01C84002BD0149064A09687047B3
+:1013A000080000586C4200080024F4000048E801DE
+:1013B0002C420008E0430008B3BBD9B1B2F5803F2E
+:1013C0007DD2022A1ED98C46B1FBF2F102FB11C379
+:1013D0001B0443EA1043B3FBF2FC02FB1C3380B254
+:1013E00040EA0343B3FBF2F002FB103240EA0C4048
+:1013F00000237047022A05D98446B0FBF2F002FBB5
+:1014000010C270474AB105D100F0010249085FEAF5
+:101410003000704700220023704700F059BA0B00DB
+:101420000200002100207047904271EB030CF6D3BC
+:10143000B3F5803F2FD2F0B5B3FA83F7B1FA81F458
+:10144000A7F10F0E3D1B5340CEF1200602FA0EF21B
+:10145000F3415340B5F10F0746D80F3C2C444140AF
+:10146000C4F12006A040F1414140B1FBF3F603FB7B
+:101470001611A2FB0645001BA94102D2761E801858
+:10148000594180EA010221FA0EF362FA0EF20021BC
+:101490005A403046F0BD30B4B1FBF3FC03FB1C11E5
+:1014A000A2FB0C45001BA94103D2ACF1010C801832
+:1014B000594130BC02460B46604600217047B2F1EC
+:1014C000807F65D3F0B5B2FA82F7B1FA81F4C7F143
+:1014D0000F063D1B22FA06F307F1110EF2412035EB
+:1014E0005A40B5F10F07B8D94140C4F12006A040D9
+:1014F000F1414140B1FBF3FC03FB1C11A2FB0C4585
+:10150000001BA94103D2BCF1010C801859410F2FD7
+:1015100012D30F3FC90341EA5041B1FBF3F603FB7D
+:101520001611A2FB0645D4EBC030A94102D2761EAB
+:101530008018594146EACC3C07B34140C7F1200628
+:10154000B840F1414140B1FBF3F603FB1611A2FB99
+:101550000645001BA94102D2761E8018594180EA37
+:10156000010221FA0EF3C7F1200462FA0EF20CFA1E
+:1015700007F05A402CFA04F13043F0BD80EA010232
+:1015800021FA0EF3002162FA0EF260465A40F0BDD5
+:101590008C46B1FBF2F102FB11C31B0243EA10635C
+:1015A000B3FBF2FC02FB1C331B024CEA002043EAB3
+:1015B0001063B3FBF2FC02FB1C331B024CEA00205D
+:1015C00043EA1063B3FBF2FC02FB1C331B024CEA40
+:1015D000002043EA1063B3FBF2FC02FB1C324CEA2E
+:1015E000002000237047000001480068704700BFDA
+:1015F00060100020002200F06DB900002DE9F84FC6
+:101600004FF0000C634A644BDFF890814FF00F09F4
+:1016100082460F4633E0624DAA4514BF07250425D4
+:101620008D40254348F82E50C1431C6801EA040E42
+:101630007C68E50348BF40EA0E0EC3F800E05C6832
+:1016400001EA040E7C68A50348BF40EA0E0EC3F809
+:1016500004E0146801EA040E7C68E50248BF40EA31
+:101660000E0EC2F800E0546801EA040E79688C029C
+:1016700048BF40EA0E0EC2F804E00CF1010C3968D4
+:1016800031FA0CF000F07C80012000FA0CFE1EEA1A
+:101690000100F2D07C68022C18BF122C4FEA8C019A
+:1016A00010D14FEADC040AEB840401F01C05266A21
+:1016B00009FA05FB26EA0B06D7F810B00BFA05F578
+:1016C000354325624FEA4C040325DAF8006097F8A9
+:1016D00004B0A540ED430BF0030B2E400BFA04FBC6
+:1016E0004BEA0606CAF800607E68012E18BF022E7B
+:1016F00003D0112E18BF122E17D1DAF80860D7F8D0
+:101700000CB02E400BFA04FB4BEA0606CAF8086040
+:10171000DAF8046026EA0E0E7E68C6F3001606FAB2
+:101720000CF646EA0E06CAF80460DAF80C6035409A
+:10173000BE6806FA04F42C43CAF80C407C68E40046
+:101740009BD54FEA9C0E58F82E5001F00C0109FA77
+:1017500001F425EA0404BAF1904F08BF00250ED029
+:10176000104DAA4508BF012509D00F4DAA4508BF55
+:10177000022504D00D4DAA457FF44DAF03254FE758
+:10178000BDE8F18F81B0002A14BF8161816201B090
+:101790007047000000080058800800580800014009
+:1017A000001000480004004800080048000C0048F1
+:1017B0000901020081B002D43C48815405E03C4854
+:1017C00002F00F02104400F8041C01B07047394ABF
+:1017D00013684FF6FF0100020B4000F4E06018436D
+:1017E000354908431060704738B5324B1C68C4F364
+:1017F0000223C3F10704052C28BF04241D1D072D57
+:1018000034BF0023DB1E012505FA04F4641E2140C9
+:10181000994005FA03F35B1E1A401143BDE83440BA
+:10182000C6E7010007D4012200F01F01234B8A40C4
+:10183000400943F82020704701000BD4012200F03A
+:101840001F011F4B8A40400943F82020BFF34F8FF0
+:10185000BFF36F8F704710B5401EB0F1807F01D38A
+:10186000012010BD174C60600F214FF0FF30FFF7D3
+:101870009FFF0022A26007202060002010BD010011
+:1018800007D4012200F01F010F4B8A40400943F8A2
+:1018900020207047010007D4012200F01F010B4BEC
+:1018A0008A40400943F820207047000000E400E02F
+:1018B00018ED00E00CED00E00000FA0500E100E0AA
+:1018C00080E100E010E000E000E200E080E200E003
+:1018D0007047000000B500BF1300964694461039CB
+:1018E00028BFA0E80C50FAD85FEA417C28BF0CC0A2
+:1018F00048BF40F8042BC90728BF20F8022B48BF77
+:1019000000F8012B00BD0000DFF8F0140A6892B265
+:1019100000E00246086880B28242FAD170472DE9A1
+:10192000FC4104461825DFF8D884DFF8D864684302
+:1019300008EB00073078062808D1317871703470D0
+:1019400078754FF0FF307060002039E000F077F8D4
+:10195000B9680918B96008F10803B96832786A43B0
+:101960009A589142327813D308F1150315FB02FC03
+:1019700013F80C30062B25D008F108066B43F358FA
+:10198000994222BF08F115036A439A5CEED219E02E
+:101990001146337869439A420BD008F1140308F1D9
+:1019A000150C5B5C15FB03F50CF805407A753B756F
+:1019B00000E07A7508F11402545431787170347073
+:1019C000BDE8F6811146694308F115035B5C062BFF
+:1019D00004D008F1140615FB03F574557B753A75B0
+:1019E00008F115025454EBE7F8B5DFF81834DFF8C6
+:1019F00010541E78182402466243B0422A4404D18F
+:101A000018785870507D18700FE0167D507D92F850
+:101A100015C005F115076643062807F806C004D06F
+:101A2000167D143514FB00F42E5501201073187820
+:101A3000062802BF00294FF0FF315960F1BD10B5F3
+:101A4000DFF8C043606810F1010F0FD0FFF75CFFB3
+:101A50006168DFF8B423814261683CBF5388C918CC
+:101A6000081A517848431178C84000E0002080B23D
+:101A700010BD2DE9F84FDFF89053DFF890B3D5F89B
+:101A80000880D8F80000DBF800104A0500F06AF979
+:101A9000DFF87063DFF868A321F4806181604FF0A4
+:101AA000180934780AF1080019FB04F14758FFF7C8
+:101AB000C6FF874217D200270121B170062C3DD006
+:101AC00019FB04F40AF108010AF1080209598142DC
+:101AD00023BF0AF108010959091A002111510AEB23
+:101AE00004014C7DEAE7A9884118B94202D2AF88C7
+:101AF0000021E2E73F1ADFE7022802DA287801280E
+:101B000000D07F1ED8F80000C1684A07FAD500F05F
+:101B10002FF9DBF80C00000CBFB247EA0047CBF806
+:101B20000C70FFF7F1FE7060A8680068816841F4EE
+:101B300080618160AFF30080BDE8F18FB8B200280A
+:101B4000DAD1FFF7E1FE70600320BDE8F24FFFF746
+:101B500096BE2DE9F843EFF3108872B6AA4DA84B54
+:101B6000A8680168CA224A6253204862A54A886868
+:101B700020F48060886018201678374647431F4459
+:101B8000387B022826D13C68D7F810909078F0B1C5
+:101B90007A7B012A0AD101213046FFF725FF88F31D
+:101BA00010887968304600F0F0F804E088F3108877
+:101BB000304600F09BF8A8680068CA2141622246BE
+:101BC000532141624846314600F02AF90BE0FFF705
+:101BD00050FF06E0C8684207FCD500F07EF88C494B
+:101BE000086088F31088FF21A86802685162BDE888
+:101BF000F183F8B5844CA160CA2209684A62532275
+:101C00004A62824A136843F020031360136803F0AA
+:101C10000703C3F10403237095682D0C05F07F05BD
+:101C20006D1C6570EDB29268C2F30E02521C6280A8
+:101C300092B2521E6A43A2F5A072DA404FF6FF73C9
+:101C40009A422CBFA380A280724A136843F40023F7
+:101C50001360714B1D6845F400251D6048BB694841
+:101C6000674E0123837018254FF0FF334360002334
+:101C70005FFA83FC06F10C0715FB0CFC4FF0000E1D
+:101C800007F80CE05B1CDFB2062FF1DB06230370C4
+:101C9000886820F48060886000F01FF8D06003201E
+:101CA000FFF7F8FDA1680868826842F4804282600C
+:101CB00005E0C868410544BF0320FFF7E0FDA168C7
+:101CC0000A68FF205062002203210320FFF78CFDE9
+:101CD000BDE8F2400320FFF7A4BDC86800F0800013
+:101CE00060F49060C8604FF400207047F8B5074674
+:101CF000EFF3108472B60320FFF79EFD424DAE68ED
+:101D00003068CA2141623A46532141621820434952
+:101D10004243895C02291BD100213846FFF764FE4B
+:101D20003848017806290ED1306838490A685305C9
+:101D300000F018F821F480618160C1684A07FCD581
+:101D400000F016F804E04078884218BFFFF791FED3
+:101D5000A9680A68FF2050620320FFF762FD84F340
+:101D60001088F1BD02D5C1684A07FCD4816870476C
+:101D7000C16801F0800161F49061C1604FF40020FE
+:101D8000234908600320FFF785BD2DE9F041804617
+:101D90000F46424618201A4942438C18207B0228DD
+:101DA00004BF4046FFF7A2FFEFF3108572B6032091
+:101DB000FFF742FD144EB0680068CA21416253210A
+:101DC000416202202073A76067604046FFF7A7FDCD
+:101DD0000C490A784978914202D0FFF74AFE02E0A6
+:101DE000A168081AA060FF20B1680A685062032049
+:101DF000FFF717FD85F31088BDE8F0812828004023
+:101E0000B8100020D81300209813002008280040A4
+:101E10000C0800580008005880080058C410002022
+:101E20001047000018B595B009A80FF2BC21874CE7
+:101E3000302200F081F90FF265200190009469468C
+:101E40000FF2412000F0BCF90121022000F0A1FABC
+:101E50007F4A0021012000F016FB09A800F0B8FB22
+:101E60000020ADF81A0000F0C7FB00F0D3F80246DE
+:101E70000621002000F0E4FB4EF66E50089007AA01
+:101E800074490868079006212E2000F0D9FB0FF254
+:101E900030221021182000F0D3FB0FF23422102141
+:101EA000082000F0CDFB1821012000F0F0FB00F02D
+:101EB00019FC0DF1160006A90190009105AB07224F
+:101EC0000021012000F0A7FD0FF2E410BDF818106A
+:101ED00000900723BDF81400002200F0C3FC0DF1B0
+:101EE0001A0000900223BDF81610BDF8140000225D
+:101EF00000F0B8FC002000F042FD00200490102308
+:101F0000554903910820002201930090029200237A
+:101F10000121012000F04CFD00F010FE4F484FF46D
+:101F2000004101600221006F019100F0FF004FF0BD
+:101F300000514A780292062A0ED200200870BFF3A0
+:101F40004F8F474947480A6802F4E06202430A603B
+:101F5000BFF34F8F00BFFDE789780391891888424E
+:101F60003CBF801A039000F07CFE694601A800F097
+:101F7000D3FE00F084FE00F04DF83B4942790A722E
+:101F800002794A72C2788A728278CA7242780A7377
+:101F90000278521C4A73062142798DF80520027995
+:101FA0008DF80420C2788DF8032082788DF8022005
+:101FB00042788DF801206A460078401C8DF80000B8
+:101FC000002000F03DFB00F00AF816B010BD80B50F
+:101FD0004078052808BF00F002F8012002BD00B5D6
+:101FE00087B000200690059000220FF2F4000492C2
+:101FF000082100230290019100920393A0228021E6
+:10200000002000F073FC07B05DF804EB16490E20C9
+:1020100000F031BD10B50F490A6812F1010F0DD063
+:1020200012484B6802701B0A140A120C447082702A
+:1020300049680371C1701B0A437110BD002000F094
+:10204000EDFE08B90FF2700010BD0000AC080320CF
+:10205000FF2100088075FF1F07B2010010400058E3
+:102060000CED00E00400FA0504000020B01300208D
+:102070000021012000F014BA012000F033BA012041
+:1020800000F038BA10B50446616801F1080000F0AC
+:1020900065FD00B10120207010BD000010B10128C5
+:1020A00003D07047012000F00BBA00F011BA000015
+:1020B000424C45636F7265006C7AD8AC5772000071
+:1020C000123456789ABCDEF0123456789ABCDEF0A0
+:1020D000FEDCBA0987654321FEDCBA098765432126
+:1020E0000953544D5F4F54410000000000000000B0
+:1020F0000000000000000000000000004400080094
+:10210000400508013A799C00F4010000FFFFFFFF41
+:10211000480101000000000062B38B0708D0521E86
+:1021200011F8013B00F8013B00F024808B07F6D149
+:10213000830740F0208000BF103A07D330B4B1E8E5
+:102140003810103AA0E83810F9D230BC530724BF39
+:10215000B1E80810A0E8081044BF51F8043B40F86B
+:10216000043BD20724BF31F8022B20F8022B44BFD6
+:102170000B7803707047121F17D35B0009D151F819
+:10218000043B20F8023B1B0C121F20F8023BF6D246
+:102190000BE051F8043B00F8013B1B0A20F8023B1E
+:1021A0001B0C121F00F8013BF3D238BF121D521E48
+:1021B00024BF11F8013B00F8013BF8D8704700003C
+:1021C0007FB50C466D4D61686D4EE8612962284609
+:1021D00000F036FE246805F1240000604060746061
+:1021E00006F108000060406001203070296829B1C4
+:1021F0000FF2551000900294684688477FBD1FB5C6
+:102200005F4C04F1080000F028FE00BB2178F1B11A
+:10221000694604F1080000F049FE5848C16949B117
+:102220000098029001228DF8042001A888479DF8AB
+:10223000040000E001202070207818B1009800F020
+:10224000E8FE04E0009904F1080000F00FFE04F13C
+:10225000080000F002FE28B9207818B104F1080047
+:10226000FFF706FF1FBD2DE9F8430646002000F0EA
+:102270005FF874883088B268DFF80081C4F309041D
+:1022800044EA8024F068A4B2C1B2204600F03CF8D1
+:10229000002748F2E8094846FFF7F1FE08E06888A1
+:1022A000A04202D1316928780870687800B101270E
+:1022B00008F1240000F0D1FDF0B9694608F12400CE
+:1022C00000F0F4FD009800F10B05407A0F28E6D0ED
+:1022D000B5F80110A1420DD10098817AC81E71692C
+:1022E000C0B28842C8BF0846706102463069E91C26
+:1022F000FFF712FF2878D9E73800CCD0012000F092
+:1023000017F80020BDE8F28310B513461C4A546844
+:10231000A4F80900E1720A46194604F10C00FFF71F
+:10232000FBFE164A1369BDE8104000210020184743
+:102330001249096A82B008B921B101E011B1012046
+:1023400002B0084702B0704710B50146487A0F281E
+:1023500018BF0E2807D10B4800F092FDBDE81040D1
+:102360000020FFF789BE064C04F1080000F088FD4C
+:1023700004F10800BDE81040FFF77ABEB412002057
+:1023800078130020D81200200C4800210160416021
+:10239000704710B500F00CF85C6819B1012904D140
+:1023A000204301E024EA0000586082F3108810BD49
+:1023B000EFF3108272B6014B70470000B813002093
+:1023C0002DE9FC47594CDFF86891A5692840A061C8
+:1023D0004FF0010A4FF0FF3830E0491C54F831004B
+:1023E0000642FAD004EBC107184079681040014258
+:1023F00008BFC7F804807E68304000F09BF8606238
+:102400000AFA00F086437E60EFF3108172B6626ACA
+:1024100020690AFA02F2D24310402061022004EB44
+:10242000C00353F8086C1640401E43F8086CF6D100
+:1024300081F31088606A59F8201088476369206921
+:10244000A2691840104207D0E069216A084203D10E
+:10245000002103EA0206C1E7C046C046EFF3108937
+:1024600072B6216960690140A069014201BFE1695A
+:10247000206A014200F0C8FE89F31088C046C046B9
+:10248000A561BDE8F38738B51446EFF3108572B641
+:1024900000F050F8264941F8204085F3108831BDFE
+:1024A00010B5EFF3108272B6204B1C6904431C6117
+:1024B00053F83140204343F8310082F3108810BDB7
+:1024C000EFF3108172B6194A536923EA000005E060
+:1024D000EFF3108172B6154A53691843506181F3C6
+:1024E00010887047EFF3108172B6104AD369184311
+:1024F000D061F4E72DE9F0410C4C626A266A206253
+:10250000012101FA02F803E03946404600F07DFE61
+:10251000276AE5693D42F7D0404600F00BF825EA0E
+:102520000707E76126626062BDE8F081381000208D
+:10253000D411002002460020110C090404BF102011
+:10254000120412F07F4F04BF083012020FF218017C
+:1025500012F0704F04BF001D1201120FC0F11F00D6
+:10256000895C401A70470000040302020101010166
+:1025700000000000000000001FB5044600F030F825
+:102580004FF6524000F0A5FE14B19DF80F002070E8
+:102590000EE01FB5002408B10090042409B1019198
+:1025A000241D6B466A46E1B24FF6544000F091FE9E
+:1025B0009DF80E0004B010BD00F08BFE9DF80E00DB
+:1025C00005B000BDF8B500F00BF84FF65A40F3E740
+:1025D000F8B500F10C026B4621214FF66640EBE79F
+:1025E0006B46002200217047F8B500F10C026B46E3
+:1025F0000F214FF66840DFE700B587B000F010F814
+:10260000012003220690ADF80420ADF8062000F06A
+:1026100011F800284CBFFF209DF8000007B000BD56
+:1026200000208DF800001822002101A800F0A6BEAD
+:1026300003900691CDF814D0002101A8FFF713BE36
+:1026400018B50C46C7B0114600228DF800208DF851
+:102650001C008DF81D4022460DF11E0000F088FE82
+:1026600000F02AF83F200C21ADF80400ADF8061068
+:1026700007A8012103900691A41C049400F02CF8F3
+:1026800000284CBFFF209DF8000048B010BD00B5E9
+:10269000C7B000F00AF80F2000F013F800284CBF74
+:1026A000FF209DF8000047B000BD00228DF80020FB
+:1026B0008DF81C008DF81D101822002101A800F0D3
+:1026C0005DBEADF8060007A9022004903F2201205C
+:1026D00003910690ADF80420CDF814D0002101A894
+:1026E000FFF7C1BD00B587B000208DF8000000F0F5
+:1026F000E0F840F20110ADF806003F2201200690FC
+:1027000000F0ECF800284CBFFF209DF8000007B057
+:1027100000BD2DE9F84107460128C7B08846154697
+:102720001E4608BF022003D002280CBF1020002044
+:102730000DF11D010C1800F036F8012F8DF81C70FA
+:1027400002D0022F18D019E002273A4641460DF177
+:102750001D0000F00DFE2570667000F0AAF83F2005
+:102760004FF4817100F016F8FF1C049700F0B8F8E0
+:10277000002805D5FF2009E01027E6E7472005E0FF
+:102780009DF8000010B94E9800F067F8FFE748B0D8
+:10279000BDE8F081ADF80400ADF8061007A80321EC
+:1027A00003900691704703220021684600F0E6BDC1
+:1027B0002DE9F64F0C460546012CC7B09B4608BFD5
+:1027C000022003D0022C0CBF102000200DF11F01AD
+:1027D0000E18FFF7E8FF012CADF81C508DF81E40D5
+:1027E00002D0022C2CD02DE00227569C559DDDF8FE
+:1027F0005091DDF84CA1DDF8488148993A4600F047
+:1028000054F8A6F800B086F8028086F803A086F88F
+:1028100004907571B47100F04CF83F20ADF80400DD
+:102820004FF4827107A8ADF80610039003210A3710
+:102830000497069100F054F8002805D5FF2009E020
+:102840001027D2E7472005E09DF8000010B95798FF
+:1028500000F003F849B0BDE8F08FBDF80110018029
+:102860000020704730B5C7B01C464A9B00F026F8E0
+:1028700000258DF800508DF82140224619460DF1B3
+:10288000220000F075FD00F014F83F204FF4837132
+:1028900000F01BF8A41D049400F022F800284CBF9F
+:1028A000FF209DF8000047B030BD0DF11F0000F083
+:1028B0005FBD1822002101A800F060BDADF81C002A
+:1028C000ADF81E108DF820207047ADF80400ADF86B
+:1028D000061007A80121039006917047ADF8042067
+:1028E000CDF814D0002101A8FFF7BDBC2DE9F84DAB
+:1028F000C7B09446DDF840E1519A559D569EDDF8EB
+:102900004CA1ADF81D108DF81C004FF0000BADF878
+:102910001FC08DF821308DF822E000F024F800F07F
+:1029200017F824F8095F668000F0CCF83F20832177
+:1029300000F0ECF8574406910D37049700F0CEF8FC
+:1029400000284CBFFF209DF8000048B0BDE8F08D86
+:1029500088F800A007AC5499E419524608F1010028
+:10296000544400F005BD8DF82320174652998DF888
+:1029700000B00DF1240809A8B84400F0F9BC00B576
+:10298000C7B000F00CF8852000F090F800F0A3F834
+:1029900000284CBFFF209DF8000047B000BD00217B
+:1029A0008DF81C008DF80010182201A800F0E6BC7C
+:1029B0002DE9F841C7B04FF0000800F026F80DF1FE
+:1029C0002300DDF844E14E9F4F9E509D529C8DF8B0
+:1029D0001F30C0F800E08DF800808DF820708DF871
+:1029E00021608DF822508DF8274000F06BF886208A
+:1029F000ADF8060007A90C2000F069F800284CBFCC
+:102A0000FF209DF8000000F08DB88DF81C0007A88D
+:102A1000417082707047F8B5C8B005460E4617463B
+:102A20001C4600F023F808A8467087708DF82050E7
+:102A300000F067F88A21ADF80A103F20032100F06A
+:102A400053F8002848BFFF200ED49DF8000058B965
+:102A50004F994E98BDF801202280BDF803200280D6
+:102A6000BDF805000880002049B0F0BD0722002114
+:102A7000684600F083BC18B5C7B0044600F01EF8E5
+:102A80008DF81C40224600F049F800F01BF83F206A
+:102A90008E2100F04AF8641C049400F01FF800280E
+:102AA0004CBFFF209DF8000048B010BDADF80600F7
+:102AB00007A901203F2203910490704700208DF860
+:102AC000000070471822002101A800F057BC0490B4
+:102AD0003F22012003910690ADF80420CDF814D0D8
+:102AE000002101A8FFF7BFBBADF80800059108A8B9
+:102AF000072104900791CDF818D0002102A8FFF714
+:102B0000B2BB1822002102A800F038BCADF80400C6
+:102B1000ADF8061007A80121039070470DF11D00C4
+:102B200000F026BC48B0BDE8F081ADF80400ADF877
+:102B3000061007A801210390069170471C49002048
+:102B4000087700221B48027000F036B818490A7F47
+:102B500041F82200087F401C0877704770B5044692
+:102B60006078FF2802BFB4F8031001F47F41B1F58B
+:102B7000406F12D100260E4D00E0761C297FF0B286
+:102B800088420AD2F1B255F8211020468847010048
+:102B9000F3D002D0022805D006E02046BDE8704000
+:102BA000FFF715BA002070BD012070BD00000000C5
+:102BB00028130020E813002080B5C046C046C04658
+:102BC000C046C046C046C046C046C046C046C046D5
+:102BD000C046C046C046C046C046C046C046C046C5
+:102BE000C046C046C046C046C04600F00DFCC046C8
+:102BF000C046C046C046BDE8014000F07DBC0000B4
+:102C0000DFF800F0891000202DE9F0413C4F064626
+:102C100038780128884614461D4608BF02201BD07C
+:102C2000012139700020786000F018F8010011D1FE
+:102C3000012E22462B46404602D100F054F802E015
+:102C40001146FFF7DDFF00F009F82E490A6822EA75
+:102C500006060E6000213970BDE8F0814FF47A70ED
+:102C600018E02A49CA680020002A07D5284B294ABB
+:102C70000B600A60C968002948BF012070472149DC
+:102C80000A6842F000420A6000200968002958BF23
+:102C90000120704770B50546FEF7A6FC06461A4CA3
+:102CA0002068C10311D5FEF79FFC801BA842F7D313
+:102CB000032070BD124920604860012070BDFEF7FE
+:102CC00093FC801BA84209D3F2E72068C10744BFE8
+:102CD000012121604CF2FA310840EBD12068410318
+:102CE000EDD4002070BD10B506490C6844F0010415
+:102CF0000C6040F8042BBFF36F8F036010BD000021
+:102D0000601300201440005810400058084000583C
+:102D100023016745AB89EFCD2DE9F04100F05CF868
+:102D2000884608BF022055D000F05BF800F05EF83E
+:102D300001004DD12968DFF8D470042908D17869E1
+:102D400040F4803040F00400786100F04FF819E062
+:102D50004FF0FF31C8F800106E6800E0761C69681B
+:102D6000AA6851188E4208D2304600F043F800F0AD
+:102D70003DF80100F2D0C8F800607A69DFF89010E1
+:102D80000A407A6139688A050FD53A6822F40072E0
+:102D90003A60396841F4006139603A6822F40062AF
+:102DA0003A60396841F4007139603A6851050FD5CD
+:102DB000396821F4806139603A6842F480523A609F
+:102DC000396821F4805139603A6842F480623A608F
+:102DD00000212170BDE8F0810F4C054620780128C4
+:102DE0007047002001216060217070474FF47A70B5
+:102DF000FFF750BF07490A6822F4FF6242EAC002A7
+:102E000042F4803242F002020A60704700400058EB
+:102E100005F8FFFF144000586013002001460648E3
+:102E2000064AC3798B4218BF904218BF0838F8D1C0
+:102E30008B4218BF00207047F873FF1F0070FF1F00
+:102E40000249016002490161704700BF0D2F00086F
+:102E5000372F0008006040607047EFF3108172B6B2
+:102E6000026882420CBF012000201CE0EFF31082B8
+:102E700072B603680B60486001600868416023E037
+:102E8000EFF3108272B6086043684B604160486897
+:102E9000016019E0EFF3108172B6436802681A60AE
+:102EA00042680068426081F31088704710B5EFF304
+:102EB000108472B602680A600068FFE7FFF7EAFF55
+:102EC00084F3108810BD086082F3108870470000FA
+:102ED00000F088BB6C486D49016001F1200242603E
+:102EE00001F13002826001F13C02026201F1440210
+:102EF000C26001F14C02026101F16802426101F11C
+:102F00006C0282617831C16100F07EBB38B5044645
+:102F10005F4D05F11000FFF79DFF5B494868A16810
+:102F20000160E168C160456005F11001816000F059
+:102F300087FB58482DE080B553494A681368012043
+:102F4000187200F083FB002002BD38B5514C504D83
+:102F500007E0694605F11000FFF7A8FF0098216817
+:102F6000884705F11000FFF778FF0028F1D031BD48
+:102F700048484168084738B50446474D2846006030
+:102F800040604148C068A1680160456000F063FB93
+:102F900042482168016061684160002032BD80B50F
+:102FA0003949CA6813681020187200F05AFB0020D3
+:102FB00002BD3549CA68394910680B68184738B5E9
+:102FC000364C354D06E069462846FFF76FFF0098FE
+:102FD000616888472846FFF740FF0028F3D031BDDD
+:102FE00038B504462E4D2846006040602D480060EC
+:102FF000406025480069A1688160E168C1600561A1
+:103000002168016061684160216941616169816194
+:1030100031BD80B501462348FFF732FFBDE80240CD
+:103020000FF2050000F02DBB38B5174C1D4D08E020
+:1030300069462846FFF73AFF009920690069FFF7C3
+:103040001FFF2846FFF709FF0028F1D031BD10B55A
+:10305000154C2046006040600B4841690C60BDE89B
+:10306000104000F022BB1CB50F4C06E0694620461C
+:10307000FFF71CFF0098C046C0462046FFF7EDFE54
+:103080000028F3D013BD000000000320B80903207E
+:103090008C080320C8130020A4080320D0130020AC
+:1030A0003C0A0320C0130020440A0320BFF34F8FC3
+:1030B000284929480A6802F4E06202430A60BFF323
+:1030C0004F8F00BFFDE710B52448254C88B001683C
+:1030D00041F400410160FFF757F922490020FEF753
+:1030E00088FD00F006FB01210120FFF752F90020C6
+:1030F00000F034FC012000F031FC022000F02EFC36
+:10310000012000F052FC0121002000F064FCFFF7D8
+:10311000E1FE154A00210220FFF7B5F904F23C5008
+:103120000FF249010090019169460FF2450000F04D
+:103130007BF804F25470029004F5C96140F23C50EF
+:1031400005900391049402A8FFF74AFFFFF7C0FE21
+:1031500008B010BD0CED00E00400FA0508000058AE
+:103160002C000320E01200206B32000870470000A2
+:1031700070B50546686800F10B063188B1F5124F4D
+:1031800015D1002000F01CFCB0784FF0005478B945
+:103190002178022908BF20702FD000F0B9FA002151
+:1031A0000120FFF7F6F8FEF73DFE0120287070BD04
+:1031B0000020FFF7E1F9FF281FD028B1002000F020
+:1031C000F4FB00F01DF8FCE72078022809D100216B
+:1031D0002170FFF7F7F9002000F0E7FB00F010F88E
+:1031E000FCE70220207000210020FFF7D2F9002028
+:1031F00000F0DBFB00F004F8FCE7FFF757FF00BF2F
+:103200000121002000F046BC70474FF0FF30FFF76F
+:10321000D7B800210220FFF743B90220FFF762B9B7
+:103220000220FFF767B900007FB50C464D4D61687D
+:103230004D4EE8612962284600F050FC2468746015
+:1032400006F1080000604060012000F068F80120ED
+:103250003070296841B10FF2E9000FF2ED020090E1
+:1032600001920294684688477FBD1FB53E4C04F129
+:103270000800FFF7F2FD00BB2178F1B1694604F1C7
+:103280000800FFF713FE3748C16949B10098029062
+:1032900001228DF8042001A888479DF8040000E071
+:1032A00001202070207818B10098FFF7B2FE04E0EA
+:1032B000009904F10800FFF7D9FD04F10800FFF7B9
+:1032C000CCFD28B9207818B104F10800FFF7A1FF60
+:1032D0001FBD2DE9F04105460E4690461C460020D4
+:1032E00000F01DF8204F7868A0F80950C6723246E9
+:1032F00041460C30FEF710FF1A4A136900210020E6
+:10330000984748F2E800FFF78BFF79688A78D21C6B
+:1033100004F10800FEF700FFBDE8F04101201CB5F4
+:103320001049124C096A20B901B188470020207069
+:1033300013BD0120207011B1BDE81C40084713BD2A
+:103340000020FFF76ABF000010B50146064C04F1EB
+:103350000800FFF795FD04F10800BDE81040FFF7F5
+:1033600058BF00000413002088130020E913002038
+:1033700010B50446FEF7D0FE204610BD10B5044639
+:1033800010460A460146204600F0B2FB204610BD1A
+:103390001CB541780024FF2934D1B0F80310444A09
+:1033A00040F60143C91A02D016391AD02AE05388D0
+:1033B000B0F807105B1C99420BD100218DF8041066
+:1033C00000F10D0200920124B0F80B108DF80510E9
+:1033D00015E0D288521C914214D101248DF804408A
+:1033E00006E0117A71B11472032101248DF80410E2
+:1033F00000F10D020092B0F80B008DF80500684650
+:1034000000F0BAFB204616BD10B586B02948284CFE
+:10341000FFF79CFB0094082301220FF29C0102207D
+:10342000FFF777F9002104910191A01C05900A2271
+:1034300001230421039202930091042320880FF2B8
+:1034400088020221FFF7B4F9002104910291019151
+:10345000201D05900A22202103920091012320883B
+:103460000FF274020221FFF7A3F9A01D05900121BC
+:103470000491029100200A220190042103920091FC
+:10348000142320880FF260020221FFF791F9002037
+:10349000207206B010BD80B50091012204488188D9
+:1034A0000272012300880022FFF7DCF902BD000050
+:1034B000A4130020913300088FE5B3D52E7F4A98DE
+:1034C0002A487ACC20FE000019ED82AEED214C9DF9
+:1034D0004145228E22FE000019ED82AEED214C9D69
+:1034E0004145228E23FE000019ED82AEED214C9D58
+:1034F0004145228E24FE000070470000C06808404D
+:10350000884201D10120704700207047C0690840FF
+:10351000884201D1012070470020704710B5664CE9
+:1035200002212046FFF7F2FF38B16068C0438107EF
+:1035300003D5FFF744FD022018E001212046FFF7E4
+:10354000E5FF38B16068C043C10703D5FFF7FDFC54
+:1035500001200BE008212046FFF7D8FF38B1606852
+:10356000C043010703D5FFF77EFD0820A06010BD12
+:1035700010B5514C00F033F818B96068C0438103AE
+:1035800006D400F02CF830B96068C043810302D53E
+:10359000BDE810406EE0082100F022F870B96068C4
+:1035A000C04301030AD56068444940F400206060CC
+:1035B000086880474FF40020A06010BD202100F073
+:1035C0000FF858B96068C043810207D5606840F4BD
+:1035D00000106060BDE81040FFF7CABC10BD0221BA
+:1035E00020468BE73648016841F400710160354898
+:1035F000026842F40072026040BF20BF3248016896
+:1036000041F400410160704780B53048016841F4E1
+:1036100080110160006800F4801000900098264836
+:10362000016841F001010160026842F480320260E9
+:103630002C20FEF7F6F8BDE802402D20FEF7F1B889
+:1036400023480168490849000160704721494FF447
+:103650008030086070471E48016821F00201016057
+:1036600070471B484FF400314160016821F400317C
+:10367000016070471648016841F400310160FFF7AE
+:1036800098BC38B504460C4D08212846FFF736FF94
+:1036900030B10A480460686820F40020686031BDD9
+:1036A000A0474FF40021A96031BD0948016821F00D
+:1036B0000801016070470000000C0058E013002072
+:1036C000D4080058200800580C0400585000005836
+:1036D000040C0058080C0058484900E0484981B0E3
+:1036E0000A6802430A60096808400090009801B027
+:1036F000704780B500F028FB00F028FB41480168C6
+:1037000041F48031016000F033FBBDE801400EE080
+:1037100000B587B068460FF210211C22FEF70CFDA1
+:10372000FFF795FC6846FEF75FFF07B000BDF0B5F8
+:1037300085B068461421FDF75DFF002600250024B2
+:1037400000210FF2D40000EBC102907988B1136818
+:10375000B3F1904F08D02C4FBB4208D02B4FBB4247
+:1037600004BF9088044304E09088064301E09088F9
+:103770000543491C2229E4DB00200290012103209B
+:1037800003900191B0B288B100900120FFF7A4FF2F
+:103790000120FFF7A3FF69464FF09040FDF72EFF91
+:1037A0000022B1B24FF09040FDF7ECFFA8B280B11B
+:1037B00000900220FFF790FF0220FFF78FFF124ECC
+:1037C00069463046FDF71AFF0022A9B23046FDF7E0
+:1037D000D9FFA0B280B100900420FFF77DFF042044
+:1037E000FFF77CFF094D69462846FDF707FF0022D9
+:1037F000A1B22846FDF7C6FF05B0F0BD4C00005849
+:103800004C01005890080058000400480008004887
+:103810000020FDF760BB0000000000480100000030
+:103820000000004801000000000000480100000006
+:1038300000000048010000000000004801000000F6
+:1038400000000048010000000000004801000000E6
+:1038500000000048010000000000004801000000D6
+:1038600000000048010000000000004801000000C6
+:1038700000000048010000000000004801000000B6
+:1038800000000048010000000000004801000000A6
+:103890000000004801000000000000480100000096
+:1038A0000000004801000000000000480100000086
+:1038B0000000004801000000000000480100000076
+:1038C0000000004801000000000000480100000066
+:1038D0000000004801000000000000480100000056
+:1038E0000000004801000000000000480100000046
+:1038F0000000004801000000000000480100000036
+:103900000000004801000000000000480100000025
+:103910000000004801000000000000480100000015
+:10392000000000480100000000000000000000004E
+:10393000000000001838000824000320280003209D
+:1039400022040400DFF81C1181B00A6802430A60F7
+:10395000096808400090009801B0704778B585B0BC
+:10396000044600F07AF80220FFF7ECFF00F010F8B0
+:1039700000950120019000210220039002916946E8
+:1039800056F82400FDF73AFE00F009F806B070BDC5
+:103990000FF2E000DFF8D06030F81450704756F8AE
+:1039A000240000222946FDF7EDBE0FF2C801DFF822
+:1039B000B83031F8101053F820000122FDF7E2BEB4
+:1039C0000FF2B001DFF8A03031F8101053F82000EA
+:1039D0000022FDF7D7BEF0B585B005460C4600F0D5
+:1039E0003CF80DB9042004E0012D18BF022D02D1CE
+:1039F0000820FFF7A7FF2000DFF870600FF27C07B8
+:103A00000DD137F81500009000210191012002909E
+:103A10000221039100F01CF8012000F03BFA012C78
+:103A200014D137F8150000900121DFF8440001900F
+:103A3000029100F00DF80FF24C00445D00220F21BE
+:103A400060B2FDF7D1FE60B2FDF7EBFE05B0F0BD50
+:103A5000694656F82500FDF7D1BD68461421FDF7EB
+:103A6000C9BD00004C0000586C10002078100020E8
+:103A700000002110200001000200000010000100E1
+:103A8000020000000A0607001148016841F4807135
+:103A90000160704710B50C460E490028086805D132
+:103AA000810507D500F022FA20B110BD810558BF6D
+:103AB00000F016FA0848016821F00401012C0160A9
+:103AC00001D130BF10BD40BF20BF20BF10BD0000DE
+:103AD000000400581404005810ED00E00249016091
+:103AE00002490161704700BF772F00089F2F00082F
+:103AF00062F30F2262F31F42401810F0030308D054
+:103B0000C91A1FD3DB0748BF00F8012D28BF20F8D2
+:103B1000022D130030B414461546103928BF20E991
+:103B20003C00FAD8490728BF20E90C0048BF40F8FC
+:103B3000042D890028BF20F8022D48BF00F8012D70
+:103B400030BC7047C91818BF00F8012DCB0728BF3B
+:103B500000F8012D7047000000EB8100604AD0F8AA
+:103B60008010914201D0012070470020704742F43C
+:103B7000806240F8212070472DE9F8430546DFF8C0
+:103B800064912879DFF86081584E20B1012825D052
+:103B9000032869D010E029680A78012A4FF00060F4
+:103BA00004D0022A0AD0072A10D005E00022306093
+:103BB000727400F0ACF83274BDE8F183012130601A
+:103BC000717400F0A4F800203074F5E701228DF83C
+:103BD000002069460220FFF75EFCEDE76C790027C4
+:103BE00002214046FFF7B8FF0028F9D1FFF739F866
+:103BF00022E0296806F1080339441844FEF78CFADC
+:103C000000F07EF8D6E9022331680120FEF7FCFFC0
+:103C1000D6F800C0D6E90201DCE900238B4208BFD8
+:103C2000824209D10CF108003060307CC0F10800FC
+:103C3000241AC71900203074307CC0F10802944265
+:103C4000D7D2FFF71CF800F057F8002CB4D0286842
+:103C5000337CC11906F1080022461844FEF75CFACD
+:103C6000307C24183474A7E7307CD0B10221404660
+:103C7000FFF772FF0028F9D1FEF7F3FF04E000F030
+:103C80003FF80120FEF7C0FF3168D6E90223D1E9F1
+:103C900000459D4208BF9442F1D1FEF7F0FF00F0CD
+:103CA0002BF8707C90B1012886D14FF00051002094
+:103CB0000870BFF34F8F0E490E480A6802F4E062A5
+:103CC00002430A60BFF34F8F00BFFDE7FEF754FCCD
+:103CD0000020FEF751FC01210020FFF7DBFEFAE790
+:103CE00000040080104000580014005848130020C1
+:103CF0000CED00E00400FA0500220221404636E700
+:103D0000D9F80000C00C10F00100F9D17047286804
+:103D1000C178317029688878707028684178B170EE
+:103D200070470000032010B5FDF751FD0F2000F093
+:103D3000FFF80024002814BF012400F017F82046E3
+:103D400010BD084880687047074805E006480168CC
+:103D500041F0020101607047016841F0010101601A
+:103D60007047000060100020042004E0704700004D
+:103D700080B5FFF74DFD022100910023044800F1BA
+:103D800024014FF48052001D00F0F4F801BD000042
+:103D90001400002010B5FFF7C5FF4A4C60684001D1
+:103DA0000ED56068C0000BD4FFF76EFEFFF76CFE07
+:103DB000206840F480302060216821F48031216047
+:103DC00000F022F8FFF760FEFFF75EFE206840F08B
+:103DD0000100206020688007FCD50022606820F484
+:103DE000404040F4804060603748016802600269EA
+:103DF00002F05002026100F028F8FFF764F94FF07A
+:103E0000FF30FEF7DDFAFAE7304881B0016841F48F
+:103E1000801101603F21006800F48010009000983C
+:103E20002B4841604161016841F47C1101600269E5
+:103E300042F47C120261016841F03F0101600269B5
+:103E400042F03F02026101B0704710B5FFF71CFE5F
+:103E5000FFF71AFE1B481F4C016821F4407141F422
+:103E6000807101600F21026842F4004202601A482A
+:103E7000816047F6FF71C160046000F08FF8CA20CE
+:103E80006062FF2153206062A068C008C000A0608B
+:103E9000616210BD38B50446FDF7A6FB14F1010FB1
+:103EA000054609D0FFF74DFF041905E00B480168EE
+:103EB00021F00401016030BFFDF796FB401BA042DA
+:103EC000F4D331BD900000588008005850000058CD
+:103ED000040C005800280040E012002010ED00E023
+:103EE0001048016841F480410160704710B50D4AE7
+:103EF0000D4B106820F48040106032211C680B4884
+:103F0000B4FBF0F0484351698B0506D5002818BF73
+:103F1000401EF8D101E0002010BD50698105FAD59E
+:103F2000032010BD000400588410002040420F0000
+:103F300070B50F4E0446B0680025A8B1FDF709FA28
+:103F4000B2684FF47A71B1FBF2F1B0FBF1F0FDF71A
+:103F500082FC48B9102C07D2002221464FF0FF30D6
+:103F6000FDF742FC746000E00125284670BD00BFEB
+:103F70006010002010B5029C016042600021C16009
+:103F80000161416181610381A107047704D5008942
+:103F900010B14FF0FF3010BD002010BD38B5040047
+:103FA00044D094F8210028B9002184F8201020463C
+:103FB000C046C04600F049F8FF2510B100F03FF8B8
+:103FC00034E02168DFF8B0008A6802408A60216826
+:103FD0008A68636820690343A06903431A438A60BF
+:103FE0002168E068086120680169A26841EA02412D
+:103FF00001612068C16821F08001C1602068C16C46
+:1040000089088900C1642168CA6CE3696069034357
+:104010001A43CA6420688168880609D400F020F831
+:1040200030B120684562042100F01FF8012032BD44
+:1040300020684562012184F82110002032BD2068EB
+:104040004562042184F821107047022084F8210081
+:10405000CA2021684862532022685062204626E028
+:1040600020460BE02068C0F8248084F8211000204E
+:1040700084F8200070470000BFFF8FFF70B5044632
+:1040800040F2E9362068C16821F0A001C160FDF767
+:10409000ABFA05462068C168880606D4FDF7A4FA85
+:1040A000401BB042F6D3032070BD002070BD70B538
+:1040B00004462068C1684A0612D44FF0FF32C2603D
+:1040C00040F2E936FDF790FA05462068C1684806D7
+:1040D00006D4FDF789FA401BB042F6D3032070BD29
+:1040E000002070BD4748484A01681268B1F1006F6E
+:1040F0000AD3120302F47F22444882188A4203D36F
+:1041000008684349884201D0002070470120704769
+:1041100080B5404940480860016881F308884068DC
+:10412000804730BF01BD10B5FFF7DCFF4FF00054F2
+:1041300020B100202070BDE81040E9E70120207088
+:1041400007206070FF20A07010BD38B5334C206888
+:10415000C00002D4206880011AD54FF0005528789D
+:1041600028B9FFF7BFFF10B1FFF7D2FF12E02878A0
+:1041700048B9FFF7B7FF30B90120287007206870F1
+:10418000FF20A87006E02878012818BF022801D077
+:10419000FFF7C9FF2248016841F470010160002067
+:1041A000FEF73CFE40B180791E49A160A16821F470
+:1041B0007C5141EA0021A1604FF0B040016841F418
+:1041C0008031016018490A68D208D20042F0010229
+:1041D0000A600A6802F00702012AFAD1016889031D
+:1041E000FCD581688908890041F0020181608168FD
+:1041F00001F00C010829FAD1016849084900016061
+:1042000031BD00004071000880400058FCFFFF07EE
+:10421000298A449408ED00E00070000894000058DA
+:1042200088ED00E0FECAFECA004000580100000010
+:104230000300000005000000010000000100000074
+:10424000060000000A00000020000000020000003C
+:104250000400000008000000100000004000000002
+:10426000800000000001000000020000A0860100A4
+:10427000400D0300801A060000350C0040420F007C
+:1042800080841E0000093D0000127A000024F40022
+:1042900000366E010048E801006CDC0200000000FE
+:1042A00000000000000000000000000019E050F8CD
+:1042B000042BD30744BFA9F101039A18091F002357
+:1042C000042942F8043BF9D25FEA817C134604D505
+:1042D0004FF0000CA2F800C09B1CC90744BF00218E
+:1042E000197050F8041B0029E1D1704730B50168FE
+:1042F00084684218416802EB5103C9070BD54C444E
+:1043000009E012F9011B12F8015B002904F8015BB6
+:1043100005D5491CF9D19A42F3D10C3030BD491E64
+:10432000F1D5F8E710B5074979441831064C7C44BB
+:10433000163404E00A68081D114488470146A1426A
+:10434000F8D110BD64000000980000007047FEE73F
+:1043500070477047704700F00DB80020FCF7D1BDE2
+:104360000020FCF7D4BDFDF7F4BBFFF701B9FFF760
+:10437000D5B8000002490A68886882180A60704748
+:10438000601000204EF68851CEF20001086840F41B
+:1043900070000860BFF34F8FBFF36F8F4FF0007056
+:1043A000E1EE100A7047000005FFFFFF3403000034
+:1043B000B8100020800800002C000320000000003E
+:1043C0002DFFFFFF900100004601000004000020C7
+:1043D0001DFFFFFF23020000040000002400032053
+:1043E00000000000000000000000000000000000CD
+:1043F00001000000020000000300000004000000B3
+:104400000120C046002801D0FFF78CFFAFF30080E9
+:104410000020AFF30080FFF7BDFC00F000F800F0D3
+:1044200001B800000746384600F002F8FBE700003C
+:1044300080B5AFF30080024A11001820ABBEFBE745
+:104440002600020001488047014800474B41000810
+:1044500055440008AFF30080FFF794FFFFF7D0FF4B
+:10446000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF80
+:10447000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF70
+:10448000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF60
+:10449000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF50
+:1044A000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF40
+:1044B000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF30
+:1044C000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF20
+:1044D000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF10
+:1044E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF00
+:1044F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF0
+:10450000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFDF
+:10451000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFCF
+:10452000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFBF
+:10453000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFAF
+:10454000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF9F
+:10455000FFF7FEBF030DFF0186F40000018100811B
+:104560000081008100810081008100810081008143
+:104570000081008100810081008100810081008133
+:104580000081008100810081008100810081008123
+:1045900000810081008100810081008100A900F874
+:1045A000FFF0000010FD000001FC004A040048007C
+:1045B0000400480004004800080048000C004800BF
+:1045C0000C004800093D0030B50A4B5A6842F4809F
+:1045D000225A60EFF3108472B6802251F8045B40D7
+:1045E000F8045B521EF9D11868C103FCD484F3109F
+:0945F0008830BD10400058F800AD
+:040000050800445556
:00000001FF
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_debug.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_debug.c
index 81f0b31a8..793fb3e2c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_debug.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_debug.c
@@ -52,7 +52,7 @@ typedef PACKED_STRUCT
/* Private defines -----------------------------------------------------------*/
#define GPIO_NBR_OF_RF_SIGNALS 9
-#define GPIO_CFG_NBR_OF_FEATURES 32
+#define GPIO_CFG_NBR_OF_FEATURES 34
#define NBR_OF_TRACES_CONFIG_PARAMETERS 4
#define NBR_OF_GENERAL_CONFIG_PARAMETERS 4
@@ -107,8 +107,11 @@ static const APPD_GpioConfig_t aGpioConfigList[GPIO_CFG_NBR_OF_FEATURES] =
{ GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVMA_WRITE_ONGOING - Set on Entry / Reset on Exit */
{ GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVMA_WRITE_COMPLETE - Set on Entry / Reset on Exit */
{ GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVMA_CLEANUP - Set on Entry / Reset on Exit */
- { GPIOA, LL_GPIO_PIN_0, 0, 0},
- { GPIOA, LL_GPIO_PIN_0, 0, 0},
+/* From v1.4.0 */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVMA_START - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* FLASH_EOP - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* FLASH_WRITE - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* FLASH_ERASE - Set on Entry / Reset on Exit */
};
/**
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_entry.c
index 4c46b8e58..22ff2d777 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/Core/Src/app_entry.c
@@ -56,7 +56,7 @@ static void Led_Init( void );
static void Button_Init( void );
static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status );
static void APPE_SysUserEvtRx( void * pPayload );
-static void APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt );
+static SHCI_TL_UserEventFlowStatus_t APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt );
/* Functions Definition ------------------------------------------------------*/
void APPE_Init( void )
@@ -187,8 +187,13 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * The type of the payload for a system user event is
- * tSHCI_UserEvtRxParam
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
static void APPE_SysUserEvtRx( void * pPayload )
{
@@ -199,7 +204,7 @@ static void APPE_SysUserEvtRx( void * pPayload )
switch(p_sys_event->subevtcode)
{
case SHCI_SUB_EVT_CODE_READY:
- APPE_SysevtReadyProcessing( (SHCI_C2_Ready_Evt_t*)p_sys_event->payload );
+ ((tSHCI_UserEvtRxParam*)pPayload)->status = APPE_SysevtReadyProcessing( (SHCI_C2_Ready_Evt_t*)p_sys_event->payload );
break;
default:
@@ -209,9 +214,10 @@ static void APPE_SysUserEvtRx( void * pPayload )
return;
}
-static void APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
+static SHCI_TL_UserEventFlowStatus_t APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
{
uint8_t fus_state_value;
+ SHCI_TL_UserEventFlowStatus_t return_value;
#if ( CFG_LED_SUPPORTED != 0)
BSP_LED_Off(LED_BLUE);
@@ -219,6 +225,8 @@ static void APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
if(pReadyEvt->sysevt_ready_rsp == WIRELESS_FW_RUNNING)
{
+ return_value = SHCI_TL_UserEventFlow_Enable;
+
if(CFG_OTA_REBOOT_VAL_MSG == CFG_REBOOT_ON_CPU2_UPGRADE)
{
/**
@@ -247,6 +255,7 @@ static void APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
/**
* FUS is running on CPU2
*/
+ return_value = SHCI_TL_UserEventFlow_Disable;
/**
* The CPU2 firmware update procedure is starting from now
@@ -331,7 +340,7 @@ static void APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
}
}
- return;
+ return return_value;
}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewd
index bf29a7bba..d4ffaa124 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewd
@@ -3,7 +3,7 @@
<project>
<fileVersion>2</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_Ota</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewp
index 2d2bda399..546fd54ed 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/EWARM/BLE_Ota.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_Ota</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_Ota\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_Ota\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_Ota\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -660,7 +660,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>stm32wb55rg_nucleo_BLE_Ota.hex</state>
+ <state>BLE_Ota.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1050,9 +1050,6 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
@@ -1062,6 +1059,9 @@
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
</file>
</group>
@@ -1226,10 +1226,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvoptx
index aadda47d9..007805502 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvoptx
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_Ota</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvprojx
index 2f376b3ec..c30b22b84 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/MDK-ARM/BLE_Ota.uvprojx
@@ -6,7 +6,7 @@
<Targets>
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_Ota</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -43,14 +43,14 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_Ota\Exe\</OutputDirectory>
<OutputName>BLE_Ota</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath>BLE_Ota\List</ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
@@ -742,7 +742,7 @@
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_Ota"/>
</targetInfos>
</component>
</components>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/otas_app.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/otas_app.c
index 45b58ee34..d0104cb96 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/otas_app.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/otas_app.c
@@ -72,14 +72,18 @@ void OTAS_STM_Notification( OTA_STM_Notification_t *p_notification )
case OTAS_STM_WIRELESS_FW_UPLOAD:
OTAS_APP_Context.file_type = Wireless_Fw;
OTAS_APP_Context.base_address = FLASH_BASE;
- memcpy( (uint8_t*)&OTAS_APP_Context.base_address, ((OTA_STM_Base_Addr_Event_Format_t*)(p_notification->pPayload))->Base_Addr, p_notification->ValueLength -1 );
+ ((uint8_t*)&OTAS_APP_Context.base_address)[0] = (((uint8_t*)((OTA_STM_Base_Addr_Event_Format_t*)(p_notification->pPayload))->Base_Addr))[2];
+ ((uint8_t*)&OTAS_APP_Context.base_address)[1] = (((uint8_t*)((OTA_STM_Base_Addr_Event_Format_t*)(p_notification->pPayload))->Base_Addr))[1];
+ ((uint8_t*)&OTAS_APP_Context.base_address)[2] = (((uint8_t*)((OTA_STM_Base_Addr_Event_Format_t*)(p_notification->pPayload))->Base_Addr))[0];
OTAS_APP_Context.write_value_index = 0;
break;
case OTAS_STM_APPLICATION_UPLOAD:
OTAS_APP_Context.file_type = Fw_App;
OTAS_APP_Context.base_address = FLASH_BASE;
- memcpy( (uint8_t*)&OTAS_APP_Context.base_address, ((OTA_STM_Base_Addr_Event_Format_t*)(p_notification->pPayload))->Base_Addr, p_notification->ValueLength -1 );
+ ((uint8_t*)&OTAS_APP_Context.base_address)[0] = (((uint8_t*)((OTA_STM_Base_Addr_Event_Format_t*)(p_notification->pPayload))->Base_Addr))[2];
+ ((uint8_t*)&OTAS_APP_Context.base_address)[1] = (((uint8_t*)((OTA_STM_Base_Addr_Event_Format_t*)(p_notification->pPayload))->Base_Addr))[1];
+ ((uint8_t*)&OTAS_APP_Context.base_address)[2] = (((uint8_t*)((OTA_STM_Base_Addr_Event_Format_t*)(p_notification->pPayload))->Base_Addr))[0];
OTAS_APP_Context.write_value_index = 0;
break;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/.cproject
index 9f9137d77..0e249431d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.609782680" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.986342475" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1214800679" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.500418524" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_Ota}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.500418524" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -137,7 +137,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.989600035" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_Ota.fr.ac6.managedbuild.target.gnu.cross.exe.989600035" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -148,7 +148,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_Ota"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/.project
index 849198254..59b255021 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_Ota</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/SW4STM32/BLE_Ota/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/readme.txt
index 3d27417ca..e25515101 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/readme.txt
@@ -83,7 +83,11 @@ On the android/ios device, enable the Bluetooth communications, and if not done
https://play.google.com/store/apps/details?id=com.st.bluems
https://itunes.apple.com/us/App/st-bluems/id993670214?mt=8
-The Ble_Ota Application allows a remote device to download an application binary.
+The Ble_Ota Application allows a remote device to download an application binary
+on CPU1 application processor or to download a Wireless FW (as radio stack or RSS/FUS updates)
+on CPU2 Stack processor.
+
+For application binary update example:
- At Startup, the Ble_Ota application advertises "STM_OTA"
- with Smart Phone "ST BLE Sensor" application, scan and connect to "STM_OTA" Application.
- Next, select the binary to be downloaded on the Application Processor
@@ -91,6 +95,16 @@ The Ble_Ota Application allows a remote device to download an application binary
- Start download
- New Application is running and can be connected
+For Wireless FW binary update example:
+ - At Startup, the Ble_Ota application advertises "STM_OTA"
+ - with Smart Phone "ST BLE Sensor" application, scan and connect to "STM_OTA" Application.
+ - Next, select the binary to be downloaded on the Stack Processor
+ - copy into Smart phone directory binaries available in STM32WB_Copro_Wireless_Binaries folder
+ as stm32wb5x_FUS_fw.bin or stm32wb5x_BLE_Stack_fw.bin
+ (please refer to UM2551 - STM32CubeWB Nucleo demonstration firmware, chapter 4.3)
+ - Start download in free area of non secure Flash memory
+ - New Application is running and can be connected
+
For more details refer to the Application Note:
AN5289 - Building a Wireless application
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/BLE_Peripheral_Lite.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/BLE_Peripheral_Lite.ewd
new file mode 100644
index 000000000..3b7065801
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/BLE_Peripheral_Lite.ewd
@@ -0,0 +1,1419 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <fileVersion>3</fileVersion>
+ <configuration>
+ <name>BLE_Peripheral_Lite</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>C-SPY</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>29</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCVariant</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>MemOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MemFile</name>
+ <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32WB55_CM4.ddf</state>
+ </option>
+ <option>
+ <name>RunToEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RunToName</name>
+ <state>main</state>
+ </option>
+ <option>
+ <name>CExtraOptionsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDDFArgumentProducer</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadSuppressDownload</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDownloadVerifyAll</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCProductVersion</name>
+ <state>7.10.3.6927</state>
+ </option>
+ <option>
+ <name>OCDynDriverList</name>
+ <state>STLINK_ID</state>
+ </option>
+ <option>
+ <name>OCLastSavedByProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>UseFlashLoader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CLowLevel</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacFile2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CDevice</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>FlashLoadersV3</name>
+ <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32WB_M4.board</state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck1</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck3</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath3</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OverrideDefFlashBoard</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesOffset1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesOffset2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesOffset3</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesUse1</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesUse2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesUse3</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDeviceConfigMacroFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDebuggerExtraOption</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCAllMTBOptions</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCMulticoreNrOfCores</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCMulticoreMaster</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCMulticorePort</name>
+ <state>53461</state>
+ </option>
+ <option>
+ <name>OCMulticoreWorkspace</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCMulticoreSlaveProject</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCMulticoreSlaveConfiguration</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadExtraImage</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCAttachSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MassEraseBeforeFlashing</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ARMSIM_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCSimDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCSimEnablePSP</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspOverrideConfig</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspConfigFile</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CADI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCadiMemory</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Fast Model</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCADILogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCADILogFileEditB</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CMSISDAP_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>4</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CatchSFERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCIarProbeScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CMSISDAPResetList</name>
+ <version>1</version>
+ <state>10</state>
+ </option>
+ <option>
+ <name>CMSISDAPHWResetDuration</name>
+ <state>300</state>
+ </option>
+ <option>
+ <name>CMSISDAPHWResetDelay</name>
+ <state>200</state>
+ </option>
+ <option>
+ <name>CMSISDAPDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CMSISDAPInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiTargetEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPRestoreBreakpointsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPUpdateBreakpointsEdit</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>RDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchUndef</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchData</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchPrefetch</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchMMERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchNOCPERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchCHKERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSTATERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchBUSERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchINTERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchHARDERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiCPUEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiCPUNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeCfgOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeConfig</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CMSISDAPProbeConfigRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPSelectedCPUBehaviour</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ICpuName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCJetEmuParams</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCCMSISDAPUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCCMSISDAPUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>GDBSERVER_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJTagBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IJET_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>8</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CatchSFERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCIarProbeScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetResetList</name>
+ <version>1</version>
+ <state>10</state>
+ </option>
+ <option>
+ <name>IjetHWResetDuration</name>
+ <state>300</state>
+ </option>
+ <option>
+ <name>IjetHWResetDelay</name>
+ <state>200</state>
+ </option>
+ <option>
+ <name>IjetPowerFromProbe</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetPowerRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>IjetInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiTargetEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetProtocolRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetSwoPin</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetCpuClockEdit</name>
+ <state>72.0</state>
+ </option>
+ <option>
+ <name>IjetSwoPrescalerList</name>
+ <version>1</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetRestoreBreakpointsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetUpdateBreakpointsEdit</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>RDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchUndef</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchData</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchPrefetch</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchMMERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchNOCPERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchCHKERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSTATERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchBUSERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchINTERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchHARDERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeCfgOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeConfig</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IjetProbeConfigRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiCPUEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiCPUNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetSelectedCPUBehaviour</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ICpuName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCJetEmuParams</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetPreferETB</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetTraceSettingsList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetTraceSizeList</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>FlashBoardPathSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIjetUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCIjetUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>JLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>16</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCCatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>JLinkSpeed</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCJLinkDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJLinkHWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>JLinkInitialSpeed</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCDoJlinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkCommRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>CCJLinkSpeedRadioV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCUSBDevice</name>
+ <version>1</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkResetList</name>
+ <version>6</version>
+ <state>7</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJLinkUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCTcpIpAlt</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTcpIpSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCCpuClockEdit</name>
+ <state>72.0</state>
+ </option>
+ <option>
+ <name>CCSwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSwoClockEdit</name>
+ <state>2000</state>
+ </option>
+ <option>
+ <name>OCJLinkTraceSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkTraceSourceDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkDeviceName</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>LMIFTDI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>2</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>LmiftdiSpeed</name>
+ <state>500</state>
+ </option>
+ <option>
+ <name>CCLmiftdiDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiftdiLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCLmiFtdiInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiFtdiInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>PEMICRO_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>3</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJPEMicroShowSettings</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>STLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>4</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCSTLinkInterfaceRadio</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCSTLinkInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkResetList</name>
+ <version>3</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>CCCpuClockEdit</name>
+ <state>32.0</state>
+ </option>
+ <option>
+ <name>CCSwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSwoClockEdit</name>
+ <state>2000</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCSTLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCSTLinkUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkDAPNumber</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCSTLinkDebugAccessPortRadio</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>THIRDPARTY_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CThirdPartyDriverDll</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileEditB</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>TIFET_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetResetList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetVccTypeDefault</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetVoltage</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>CCMSPFetVCCDefault</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetSettlingtime</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetRadioJtagSpeedType</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetConnection</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetUsbComPort</name>
+ <state>Automatic</state>
+ </option>
+ <option>
+ <name>CCMSPFetAllowAccessToBSL</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCMSPFetRadioEraseFlash</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>XDS100_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>6</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TIPackageOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>TIPackage</name>
+ <state></state>
+ </option>
+ <option>
+ <name>BoardFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCXds100BreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100DoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100UpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCXds100CatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCXds100SwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SwoClockEdit</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCXds100HWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100ResetList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100UsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCXds100UsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100JtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100InterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100InterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100ProbeList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SWOPortRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SWOPort</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <debuggerPlugins>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+ <loadFlag>1</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ </debuggerPlugins>
+ </configuration>
+</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/BLE_Peripheral_Lite.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/BLE_Peripheral_Lite.ewp
new file mode 100644
index 000000000..a1e7fc045
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/BLE_Peripheral_Lite.ewp
@@ -0,0 +1,1199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <fileVersion>3</fileVersion>
+ <configuration>
+ <name>BLE_Peripheral_Lite</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>General</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <version>30</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>ExePath</name>
+ <state>BLE_Peripheral_Lite\Exe</state>
+ </option>
+ <option>
+ <name>ObjPath</name>
+ <state>BLE_Peripheral_Lite\Obj</state>
+ </option>
+ <option>
+ <name>ListPath</name>
+ <state>BLE_Peripheral_Lite\List</state>
+ </option>
+ <option>
+ <name>GEndianMode</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>Input description</name>
+ <state>Full formatting, with multibyte support.</state>
+ </option>
+ <option>
+ <name>Output description</name>
+ <state>Full formatting, with multibyte support.</state>
+ </option>
+ <option>
+ <name>GOutputBinary</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGCoreOrChip</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelect</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelectSlave</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>RTDescription</name>
+ <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+ </option>
+ <option>
+ <name>OGProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>OGLastSavedByProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>GeneralEnableMisra</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraVerbose</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGChipSelectEditMenu</name>
+ <state>STM32WB55RG ST STM32WB55RG</state>
+ </option>
+ <option>
+ <name>GenLowLevelInterface</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GEndianModeBE</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGBufferedTerminalOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GenStdoutInterface</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules98</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>GeneralMisraVer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules04</name>
+ <version>0</version>
+ <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+ </option>
+ <option>
+ <name>RTConfigPath2</name>
+ <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>
+ </option>
+ <option>
+ <name>GBECoreSlave</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>OGUseCmsis</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGUseCmsisDspLib</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GRuntimeLibThreads</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CoreVariant</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>GFPUDeviceSlave</name>
+ <state>STM32WB55RG ST STM32WB55RG</state>
+ </option>
+ <option>
+ <name>FPU2</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>NrRegs</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>NEON</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GFPUCoreSlave2</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>OGCMSISPackSelectDevice</name>
+ </option>
+ <option>
+ <name>OgLibHeap</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGLibAdditionalLocale</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGPrintfVariant</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGPrintfMultibyteSupport</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGScanfVariant</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGScanfMultibyteSupport</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GenLocaleTags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>GenLocaleDisplayOnly</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DSPExtension</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TrustZone</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ICCARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>34</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCDefines</name>
+ <state>USE_STM32WBXX_NUCLEO</state>
+ <state>USE_HAL_DRIVER</state>
+ <state>STM32WB55xx</state>
+ <state>HAL_RTC_MODULE_ENABLED</state>
+ </option>
+ <option>
+ <name>CCPreprocFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocComments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocLine</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCListCFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMnemonics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMessages</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagSuppress</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagRemark</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagWarning</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagError</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCAllowList</name>
+ <version>1</version>
+ <state>11111110</state>
+ </option>
+ <option>
+ <name>CCDebugInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IEndianMode</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IExtraOptionsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCLangConformance</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSignedPlainChar</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRequirePrototypes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagWarnAreErr</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCompilerRuntimeInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>CCLibConfigHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>PreInclude</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CompilerMisraOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIncludePath2</name>
+ <state>$PROJ_DIR$/../Inc</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/utilities</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/lpm/tiny_lpm</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/sequencer</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/ble</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/ble/core</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo</state>
+ </option>
+ <option>
+ <name>CCStdIncCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCodeSection</name>
+ <state>.text</state>
+ </option>
+ <option>
+ <name>IProcessorMode2</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevel</name>
+ <state>3</state>
+ </option>
+ <option>
+ <name>CCOptStrategy</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevelSlave</name>
+ <state>3</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules98</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules04</name>
+ <version>0</version>
+ <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+ </option>
+ <option>
+ <name>CCPosIndRopi</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPosIndRwpi</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPosIndNoDynInit</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccLang</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCDialect</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccAllowVLA</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccStaticDestr</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccCppInlineSemantics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCmsis</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccFloatSemantics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptimizationNoSizeConstraints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCNoLiteralPool</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptStrategySlave</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCGuardCalls</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCEncSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEncOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEncOutputBom</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCEncInput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccExceptions2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccRTTI2</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>AARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>10</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>AObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ACaseSensitivity</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacroChars</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnWhat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnOne</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>ADebug</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AltRegisterNames</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ADefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AList</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AListHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AListing</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Includes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacExps</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacExec</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OnlyAssed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MultiLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>TabSpacing</name>
+ <state>8</state>
+ </option>
+ <option>
+ <name>AXRef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDefines</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefInternal</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDual</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AOutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>ALimitErrorsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ALimitErrorsEdit</name>
+ <state>100</state>
+ </option>
+ <option>
+ <name>AIgnoreStdInclude</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AUserIncludes</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AExtraOptionsCheckV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AExtraOptionsV2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AsmNoLiteralPool</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>OBJCOPY</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OOCOutputFormat</name>
+ <version>3</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCOutputOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCOutputFile</name>
+ <state>BLE_Peripheral_Lite.hex</state>
+ </option>
+ <option>
+ <name>OOCCommandLineProducer</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCObjCopyEnable</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CUSTOM</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <extensions></extensions>
+ <cmdline></cmdline>
+ <hasPrio>0</hasPrio>
+ </data>
+ </settings>
+ <settings>
+ <name>BICOMP</name>
+ <archiveVersion>0</archiveVersion>
+ <data />
+ </settings>
+ <settings>
+ <name>BUILDACTION</name>
+ <archiveVersion>1</archiveVersion>
+ <data>
+ <prebuild></prebuild>
+ <postbuild></postbuild>
+ </data>
+ </settings>
+ <settings>
+ <name>ILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>20</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IlinkLibIOConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XLinkMisraHandler</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkInputFileSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOutputFile</name>
+ <state>BLE_Peripheral_Lite.out</state>
+ </option>
+ <option>
+ <name>IlinkDebugInfoEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkKeepSymbols</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySymbol</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySegment</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryAlign</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkConfigDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkMapFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogInitialization</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogModule</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogSection</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogVeneer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile</name>
+ <state>$PROJ_DIR$\stm32wb55xx_flash_cm4.icf</state>
+ </option>
+ <option>
+ <name>IlinkIcfFileSlave</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkSuppressDiags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsRem</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsWarn</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsErr</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkWarningsAreErrors</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkUseExtraOptions</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkLowLevelInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAutoLibEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAdditionalLibs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkOverrideProgramEntryLabel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabelSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabel</name>
+ <state>__iar_program_start</state>
+ </option>
+ <option>
+ <name>DoFill</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FillerByte</name>
+ <state>0xFF</state>
+ </option>
+ <option>
+ <name>FillerStart</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>FillerEnd</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>CrcSize</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcAlign</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcPoly</name>
+ <state>0x11021</state>
+ </option>
+ <option>
+ <name>CrcCompl</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcBitOrder</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcInitialValue</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>DoCrc</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkBufferedTerminalOutput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkStdoutInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcFullSize</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIElfToolPostProcess</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogAutoLibSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogRedirSymbols</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogUnusedFragments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCrcReverseByteOrder</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCrcUseAsInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptInline</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOptExceptionsAllow</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptExceptionsForce</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCmsis</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptMergeDuplSections</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOptUseVfe</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptForceVfe</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkStackAnalysisEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkStackControlFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkStackCallGraphFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CrcAlgorithm</name>
+ <version>1</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcUnitSize</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkThreadsSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogCallGraph</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile_AltDefault</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEncInput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkEncOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkEncOutputBom</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkHeapSelect</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLocaleSelect</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IARCHIVE</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IarchiveInputs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IarchiveOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IarchiveOutput</name>
+ <state>###Unitialized###</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>BILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data />
+ </settings>
+ </configuration>
+ <group>
+ <name>Application</name>
+ <group>
+ <name>EWARM</name>
+ <file>
+ <name>$PROJ_DIR$\startup_stm32wb55xx_cm4.s</name>
+ </file>
+ </group>
+ <group>
+ <name>User</name>
+ <file>
+ <name>$PROJ_DIR$\..\Src\app_debug.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Src\gatt_service.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Src\hw_ipcc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Src\main.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Src\stm32wbxx_hal_msp.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Src\stm32wbxx_it.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>Doc</name>
+ <file>
+ <name>$PROJ_DIR$\..\readme.txt</name>
+ </file>
+ </group>
+ <group>
+ <name>Drivers</name>
+ <group>
+ <name>BSP</name>
+ <group>
+ <name>P-NUCLEO-WB55.Nucleo</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\P-NUCLEO-WB55.Nucleo\stm32wbxx_nucleo.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>CMSIS</name>
+ <file>
+ <name>$PROJ_DIR$\..\Src\system_stm32wbxx.c</name>
+ </file>
+ </group>
+ <group>
+ <name>STM32WBxx_HAL_Driver</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_cortex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_exti.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_flash.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_flash_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_gpio.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_hsem.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_tim.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_tim_ex.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>Middlewares</name>
+ <group>
+ <name>STM32_WPAN</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\core\auto\ble_events.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\core\auto\ble_gap_aci.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\core\auto\ble_gatt_aci.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\core\auto\ble_hal_aci.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\core\auto\ble_hci_le.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\core\auto\ble_l2cap_aci.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\core\template\osal.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\otp.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\shci\shci.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_list.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_queue.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\svc\Src\svc_ctl.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\tl_mbox.c</name>
+ </file>
+ </group>
+ </group>
+</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/Project.eww b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/Project.eww
new file mode 100644
index 000000000..a133c30ad
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/Project.eww
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workspace>
+ <project>
+ <path>$WS_DIR$\BLE_Peripheral_Lite.ewp</path>
+ </project>
+ <batchBuild />
+</workspace>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/startup_stm32wb55xx_cm4.s
index 1f886ff59..1f886ff59 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/startup_stm32wb55xx_cm4.s
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/startup_stm32wb55xx_cm4.s
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/stm32wb55xx_flash_cm4.icf b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/stm32wb55xx_flash_cm4.icf
new file mode 100644
index 000000000..46f07d1f3
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/EWARM/stm32wb55xx_flash_cm4.icf
@@ -0,0 +1,40 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x08000000;
+/*-Memory Regions-*/
+/***** FLASH Part dedicated to M4 *****/
+define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
+define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
+define symbol __ICFEDIT_region_RAM_start__ = 0x20000004;
+define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF;
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x1000;
+define symbol __ICFEDIT_size_heap__ = 0x400;
+/**** End of ICF editor section. ###ICF###*/
+
+define symbol __ICFEDIT_region_RAM_SHARED_start__ = 0x20030000;
+define symbol __ICFEDIT_region_RAM_SHARED_end__ = 0x200327FF;
+
+define memory mem with size = 4G;
+define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
+define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
+define region RAM_SHARED_region = mem:[from __ICFEDIT_region_RAM_SHARED_start__ to __ICFEDIT_region_RAM_SHARED_end__];
+
+define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
+define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
+
+/* MB_MEM1 and MB_MEM2 are sections reserved to mailbox communication. It is placed in the shared memory */
+initialize by copy { readwrite };
+do not initialize { section .noinit,
+ section MAPPING_TABLE,
+ section MB_MEM1 };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region { readonly };
+place in RAM_region { readwrite,block CSTACK, block HEAP };
+place in RAM_SHARED_region { first section MAPPING_TABLE};
+place in RAM_SHARED_region { section MB_MEM1};
+place in RAM_SHARED_region { section MB_MEM2};
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_common.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_common.h
index 4defc5d7a..4defc5d7a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_common.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_common.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_conf.h
new file mode 100644
index 000000000..8a2db7f4f
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_conf.h
@@ -0,0 +1,214 @@
+/**
+ ******************************************************************************
+ * File Name : app_conf.h
+ * Description : Application configuration file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_CONF_H
+#define APP_CONF_H
+
+#include "hw.h"
+#include "hw_conf.h"
+#include "hw_if.h"
+
+/******************************************************************************
+ * Application Config
+ ******************************************************************************/
+
+/**< generic parameters ********************************************************/
+
+/**
+ * Define Tx Power
+ */
+#define CFG_TX_POWER (0x18) /**< 0dbm */
+
+/**
+ * Radio activity event
+ */
+#define CFG_RADIO_ACTIVITY_EVENT_MASK (0x0006) /**< 0x0000 default */
+
+/**
+ * Define Advertising parameters
+ */
+#define CFG_FAST_CONN_ADV_INTERVAL_MIN (0x00C8) /**< 250ms */
+#define CFG_FAST_CONN_ADV_INTERVAL_MAX (0x00C8) /**< 250ms */
+#define CFG_LP_CONN_ADV_INTERVAL_MIN (0x0640) /**< 1s */
+#define CFG_LP_CONN_ADV_INTERVAL_MAX (0x0FA0) /**< 2.5s */
+
+/******************************************************************************
+ * BLE Stack
+ ******************************************************************************/
+/**
+ * Maximum number of simultaneous connections that the device will support.
+ * Valid values are from 1 to 8
+ */
+#define CFG_BLE_NUM_LINK 8
+
+/**
+ * Maximum number of Services that can be stored in the GATT database.
+ * Note that the GAP and GATT services are automatically added so this parameter should be 2 plus the number of user services
+ */
+#define CFG_BLE_NUM_GATT_SERVICES 8
+
+/**
+ * Maximum number of Attributes
+ * (i.e. the number of characteristic + the number of characteristic values + the number of descriptors, excluding the services)
+ * that can be stored in the GATT database.
+ * Note that certain characteristics and relative descriptors are added automatically during device initialization
+ * so this parameters should be 9 plus the number of user Attributes
+ */
+#define CFG_BLE_NUM_GATT_ATTRIBUTES 68
+
+/**
+ * Maximum supported ATT_MTU size
+ */
+#define CFG_BLE_MAX_ATT_MTU (156)
+
+/**
+ * Size of the storage area for Attribute values
+ * This value depends on the number of attributes used by application. In particular the sum of the following quantities (in octets) should be made for each attribute:
+ * - attribute value length
+ * - 5, if UUID is 16 bit; 19, if UUID is 128 bit
+ * - 2, if server configuration descriptor is used
+ * - 2*DTM_NUM_LINK, if client configuration descriptor is used
+ * - 2, if extended properties is used
+ * The total amount of memory needed is the sum of the above quantities for each attribute.
+ */
+#define CFG_BLE_ATT_VALUE_ARRAY_SIZE (1344)
+
+/**
+ * Prepare Write List size in terms of number of packet with ATT_MTU=23 bytes
+ */
+#define CFG_BLE_PREPARE_WRITE_LIST_SIZE ( 0x3A )
+
+/**
+ * Number of allocated memory blocks
+ */
+#define CFG_BLE_MBLOCK_COUNT ( 0x79 )
+
+/**
+ * Enable or disable the Extended Packet length feature. Valid values are 0 or 1.
+ */
+#define CFG_BLE_DATA_LENGTH_EXTENSION 1
+
+/**
+ * Sleep clock accuracy in Slave mode (ppm value)
+ */
+#define CFG_BLE_SLAVE_SCA 500
+
+/**
+ * Sleep clock accuracy in Master mode
+ * 0 : 251 ppm to 500 ppm
+ * 1 : 151 ppm to 250 ppm
+ * 2 : 101 ppm to 150 ppm
+ * 3 : 76 ppm to 100 ppm
+ * 4 : 51 ppm to 75 ppm
+ * 5 : 31 ppm to 50 ppm
+ * 6 : 21 ppm to 30 ppm
+ * 7 : 0 ppm to 20 ppm
+ */
+#define CFG_BLE_MASTER_SCA 0
+
+/**
+ * Source for the 32 kHz slow speed clock
+ * 1 : internal RO
+ * 0 : external crystal ( no calibration )
+ */
+#define CFG_BLE_LSE_SOURCE 0
+
+/**
+ * Start up time of the high speed (16 or 32 MHz) crystal oscillator in units of 625/256 us (~2.44 us)
+ */
+#define CFG_BLE_HSE_STARTUP_TIME 0x148
+
+/**
+ * Maximum duration of the connection event when the device is in Slave mode in units of 625/256 us (~2.44 us)
+ */
+#define CFG_BLE_MAX_CONN_EVENT_LENGTH ( 0xFFFFFFFF )
+
+/**
+ * Viterbi Mode
+ * 1 : enabled
+ * 0 : disabled
+ */
+#define CFG_BLE_VITERBI_MODE 1
+
+/**
+ * LL Only Mode
+ * 1 : LL Only
+ * 0 : LL + Host
+ */
+#define CFG_BLE_LL_ONLY 0
+/******************************************************************************
+ * Transport Layer
+ ******************************************************************************/
+/**
+ * Queue length of BLE Event
+ * This parameter defines the number of asynchronous events that can be stored in the HCI layer before
+ * being reported to the application. When a command is sent to the BLE core coprocessor, the HCI layer
+ * is waiting for the event with the Num_HCI_Command_Packets set to 1. The receive queue shall be large
+ * enough to store all asynchronous events received in between.
+ * When CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE is set to 27, this allow to store three 255 bytes long asynchronous events
+ * between the HCI command and its event.
+ * This parameter depends on the value given to CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE. When the queue size is to small,
+ * the system may hang if the queue is full with asynchronous events and the HCI layer is still waiting
+ * for a CC/CS event, In that case, the notification TL_BLE_HCI_ToNot() is called to indicate
+ * to the application a HCI command did not receive its command event within 30s (Default HCI Timeout).
+ */
+#define CFG_TLBLE_EVT_QUEUE_LENGTH 5
+/**
+ * This parameter should be set to fit most events received by the HCI layer. It defines the buffer size of each element
+ * allocated in the queue of received events and can be used to optimize the amount of RAM allocated by the Memory Manager.
+ * It should not exceed 255 which is the maximum HCI packet payload size (a greater value is a lost of memory as it will
+ * never be used)
+ * It shall be at least 4 to receive the command status event in one frame.
+ * The default value is set to 27 to allow receiving an event of MTU size in a single buffer. This value maybe reduced
+ * further depending on the application.
+ *
+ */
+#define CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE 255 /**< Set to 255 with the memory manager and the mailbox */
+
+#define TL_BLE_EVENT_FRAME_SIZE ( TL_EVT_HDR_SIZE + CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE )
+
+/******************************************************************************
+ * Debug
+ ******************************************************************************/
+/**
+ * When set, this resets some hw resources to set the device in the same state than the power up
+ * The FW resets only register that may prevent the FW to run properly
+ *
+ * This shall be set to 0 in a final product
+ *
+ */
+#define CFG_HW_RESET_BY_FW 1
+
+/**
+ * keep debugger enabled while in any low power mode when set to 1
+ * should be set to 0 in production
+ */
+#define CFG_DEBUGGER_SUPPORTED 1
+
+/******************************************************************************
+ * OTP manager
+ ******************************************************************************/
+#define CFG_OTP_BASE_ADDRESS OTP_AREA_BASE
+
+#define CFG_OTP_END_ADRESS OTP_AREA_END_ADDR
+
+#endif /*APP_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_debug.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_debug.h
new file mode 100644
index 000000000..13485c16b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/app_debug.h
@@ -0,0 +1,45 @@
+
+/**
+ ******************************************************************************
+ * @file app_debug.h
+ * @author MCD Application Team
+ * @brief Interface to support debug in the application
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __APP_DEBUG_H
+#define __APP_DEBUG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /* Includes ------------------------------------------------------------------*/
+ /* Exported types ------------------------------------------------------------*/
+ /* Exported constants --------------------------------------------------------*/
+ /* External variables --------------------------------------------------------*/
+ /* Exported macros -----------------------------------------------------------*/
+ /* Exported functions ------------------------------------------------------- */
+ void APPD_Init( void );
+ void APPD_EnableCPU2( void );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__APP_DEBUG_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/ble_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/ble_conf.h
new file mode 100644
index 000000000..fc9c10d82
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/ble_conf.h
@@ -0,0 +1,65 @@
+/**
+ ******************************************************************************
+ * File Name : App/ble_conf.h
+ * Description : Configuration file for BLE
+ * middleWare.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef BLE_CONF_H
+#define BLE_CONF_H
+
+#include "app_conf.h"
+
+/******************************************************************************
+ *
+ * BLE SERVICES CONFIGURATION
+ * blesvc
+ *
+ ******************************************************************************/
+
+ /**
+ * This setting shall be set to '1' if the device needs to support the Peripheral Role
+ * In the MS configuration, both BLE_CFG_PERIPHERAL and BLE_CFG_CENTRAL shall be set to '1'
+ */
+#define BLE_CFG_PERIPHERAL 1
+
+/**
+ * This setting shall be set to '1' if the device needs to support the Central Role
+ * In the MS configuration, both BLE_CFG_PERIPHERAL and BLE_CFG_CENTRAL shall be set to '1'
+ */
+#define BLE_CFG_CENTRAL 0
+
+/**
+ * There is one handler per service enabled
+ * Note: There is no handler for the Device Information Service
+ *
+ * This shall take into account all registered handlers
+ * (from either the provided services or the custom services)
+ */
+#define BLE_CFG_SVC_MAX_NBR_CB 5
+
+#define BLE_CFG_CLT_MAX_NBR_CB 0
+
+/******************************************************************************
+ * GAP Service - Apprearance
+ ******************************************************************************/
+
+#define BLE_CFG_UNKNOWN_APPEARANCE (0)
+#define BLE_CFG_HR_SENSOR_APPEARANCE (832)
+#define BLE_CFG_GAP_APPEARANCE (BLE_CFG_UNKNOWN_APPEARANCE)
+
+#endif /*BLE_CONF_H */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/ble_dbg_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/ble_dbg_conf.h
new file mode 100644
index 000000000..ceef47f82
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/ble_dbg_conf.h
@@ -0,0 +1,199 @@
+/**
+ ******************************************************************************
+ * File Name : App/ble_dbg_conf.h
+ * Description : Debug configuration file for BLE
+ * middleWare.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __BLE_DBG_CONF_H
+#define __BLE_DBG_CONF_H
+
+/**
+ * Enable or Disable traces from BLE
+ */
+
+#define BLE_DBG_APP_EN 0
+#define BLE_DBG_DIS_EN 0
+#define BLE_DBG_HRS_EN 0
+#define BLE_DBG_SVCCTL_EN 1
+#define BLE_DBG_BLS_EN 0
+#define BLE_DBG_HTS_EN 0
+#define BLE_DBG_P2P_STM_EN 0
+
+/**
+ * Macro definition
+ */
+#if ( BLE_DBG_APP_EN != 0 )
+#define BLE_DBG_APP_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_APP_MSG PRINT_NO_MESG
+#endif
+
+#if ( BLE_DBG_DIS_EN != 0 )
+#define BLE_DBG_DIS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_DIS_MSG PRINT_NO_MESG
+#endif
+
+#if ( BLE_DBG_HRS_EN != 0 )
+#define BLE_DBG_HRS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_HRS_MSG PRINT_NO_MESG
+#endif
+
+#if ( BLE_DBG_P2P_STM_EN != 0 )
+#define BLE_DBG_P2P_STM_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_P2P_STM_MSG PRINT_NO_MESG
+#endif
+
+#if ( BLE_DBG_TEMPLATE_STM_EN != 0 )
+#define BLE_DBG_TEMPLATE_STM_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_TEMPLATE_STM_MSG PRINT_NO_MESG
+#endif
+
+#if ( BLE_DBG_EDS_STM_EN != 0 )
+#define BLE_DBG_EDS_STM_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_EDS_STM_MSG PRINT_NO_MESG
+#endif
+
+#if ( BLE_DBG_LBS_STM_EN != 0 )
+#define BLE_DBG_LBS_STM_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_LBS_STM_MSG PRINT_NO_MESG
+#endif
+
+#if ( BLE_DBG_SVCCTL_EN != 0 )
+#define BLE_DBG_SVCCTL_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_SVCCTL_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_CTS_EN != 0)
+#define BLE_DBG_CTS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_CTS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_HIDS_EN != 0)
+#define BLE_DBG_HIDS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_HIDS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_PASS_EN != 0)
+#define BLE_DBG_PASS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_PASS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_BLS_EN != 0)
+#define BLE_DBG_BLS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_BLS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_HTS_EN != 0)
+#define BLE_DBG_HTS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_HTS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_ANS_EN != 0)
+#define BLE_DBG_ANS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_ANS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_ESS_EN != 0)
+#define BLE_DBG_ESS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_ESS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_GLS_EN != 0)
+#define BLE_DBG_GLS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_GLS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_BAS_EN != 0)
+#define BLE_DBG_BAS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_BAS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_RTUS_EN != 0)
+#define BLE_DBG_RTUS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_RTUS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_HPS_EN != 0)
+#define BLE_DBG_HPS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_HPS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_TPS_EN != 0)
+#define BLE_DBG_TPS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_TPS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_LLS_EN != 0)
+#define BLE_DBG_LLS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_LLS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_IAS_EN != 0)
+#define BLE_DBG_IAS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_IAS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_WSS_EN != 0)
+#define BLE_DBG_WSS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_WSS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_LNS_EN != 0)
+#define BLE_DBG_LNS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_LNS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_SCPS_EN != 0)
+#define BLE_DBG_SCPS_MSG PRINT_MESG_DBG
+#else
+#define BLE_DBG_SCPS_MSG PRINT_NO_MESG
+#endif
+
+#if (BLE_DBG_DTS_EN != 0)
+#define BLE_DBG_DTS_MSG PRINT_MESG_DBG
+#define BLE_DBG_DTS_BUF PRINT_LOG_BUFF_DBG
+#else
+#define BLE_DBG_DTS_MSG PRINT_NO_MESG
+#define BLE_DBG_DTS_BUF PRINT_NO_MESG
+#endif
+
+#endif /*__BLE_DBG_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/gatt_service.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/gatt_service.h
new file mode 100644
index 000000000..e68ebae02
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/gatt_service.h
@@ -0,0 +1,52 @@
+/**
+ ******************************************************************************
+ * @file gatt_service.h
+ * @author MCD Application Team
+ * @brief Header for gatt_service.c module
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __GATT_SERVICE_H
+#define __GATT_SERVICE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+/* Exported defines ----------------------------------------------------------*/
+#define MY_VERY_OWN_SERVICE_UUID (0xFE40)
+#define MY_VERY_OWN_WRITE_CHARACTERISTIC_UUID (0xFE41)
+#define MY_VERY_OWN_NOTIFY_CHARACTERISTIC_UUID (0xFE42)
+
+#define MY_VERY_OWN_NOTIFY_CHARACTERISTIC_VALUE_LENGTH 2
+#define MY_VERY_OWN_WRITE_CHARACTERISTIC_VALUE_LENGTH 2
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+/* External variables --------------------------------------------------------*/
+/* Exported macros -----------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+void MyVeryOwnService_Init(void);
+tBleStatus MyVeryOwnWriteCharacteristic_Update(uint16_t UUID, uint16_t newValueLength, uint8_t *pNewValue);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __GATT_SERVICE_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/hw_conf.h
new file mode 100644
index 000000000..e1aa2cf3e
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/hw_conf.h
@@ -0,0 +1,168 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : hw_conf.h
+ * Description : Hardware configuration file for BLE
+ * middleWare.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef HW_CONF_H
+#define HW_CONF_H
+
+/******************************************************************************
+ * Semaphores
+ * THIS SHALL NO BE CHANGED AS THESE SEMAPHORES ARE USED AS WELL ON THE CM0+
+ *****************************************************************************/
+/* Index of the semaphore used to manage the entry Stop Mode procedure */
+#define CFG_HW_ENTRY_STOP_MODE_SEMID 4
+
+/* Index of the semaphore used to access the RCC */
+#define CFG_HW_RCC_SEMID 3
+
+/* Index of the semaphore used to access the FLASH */
+#define CFG_HW_FLASH_SEMID 2
+
+/* Index of the semaphore used to access the PKA */
+#define CFG_HW_PKA_SEMID 1
+
+/* Index of the semaphore used to access the RNG */
+#define CFG_HW_RNG_SEMID 0
+
+/******************************************************************************
+ * HW TIMER SERVER
+ *****************************************************************************/
+/**
+ * The user may define the maximum number of virtual timers supported.
+ * It shall not exceed 255
+ */
+#define CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER 6
+
+/**
+ * The user may define the priority in the NVIC of the RTC_WKUP interrupt handler that is used to manage the
+ * wakeup timer.
+ * This setting is the preemptpriority part of the NVIC.
+ */
+#define CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO 3
+
+/**
+ * The user may define the priority in the NVIC of the RTC_WKUP interrupt handler that is used to manage the
+ * wakeup timer.
+ * This setting is the subpriority part of the NVIC. It does not exist on all processors. When it is not supported
+ * on the CPU, the setting is ignored
+ */
+#define CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO 0
+
+/**
+ * Define a critical section in the Timer server
+ * The Timer server does not support the API to be nested
+ * The Application shall either:
+ * a) Ensure this will never happen
+ * b) Define the critical section
+ * The default implementations is masking all interrupts using the PRIMASK bit
+ * The TimerServer driver uses critical sections to avoid context corruption. This is achieved with the macro
+ * TIMER_ENTER_CRITICAL_SECTION and TIMER_EXIT_CRITICAL_SECTION. When CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION is set
+ * to 1, all STM32 interrupts are masked with the PRIMASK bit of the CortexM CPU. It is possible to use the BASEPRI
+ * register of the CortexM CPU to keep allowed some interrupts with high priority. In that case, the user shall
+ * re-implement TIMER_ENTER_CRITICAL_SECTION and TIMER_EXIT_CRITICAL_SECTION and shall make sure that no TimerServer
+ * API are called when the TIMER critical section is entered
+ */
+#define CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION 1
+
+/**
+ * This value shall reflect the maximum delay there could be in the application between the time the RTC interrupt
+ * is generated by the Hardware and the time when the RTC interrupt handler is called. This time is measured in
+ * number of RTCCLK ticks.
+ * A relaxed timing would be 10ms
+ * When the value is too short, the timerserver will not be able to count properly and all timeout may be random.
+ * When the value is too long, the device may wake up more often than the most optimal configuration. However, the
+ * impact on power consumption would be marginal (unless the value selected is extremely too long). It is strongly
+ * recommended to select a value large enough to make sure it is not too short to ensure reliability of the system
+ * as this will have marginal impact on low power mode
+ */
+#define CFG_HW_TS_RTC_HANDLER_MAX_DELAY ( 10 * (LSI_VALUE/1000) )
+
+ /**
+ * Interrupt ID in the NVIC of the RTC Wakeup interrupt handler
+ * It shall be type of IRQn_Type
+ */
+#define CFG_HW_TS_RTC_WAKEUP_HANDLER_ID RTC_WKUP_IRQn
+
+/******************************************************************************
+ * HW UART
+ *****************************************************************************/
+
+#define CFG_HW_LPUART1_ENABLED 0
+#define CFG_HW_LPUART1_DMA_TX_SUPPORTED 0
+
+#define CFG_HW_USART1_ENABLED 0
+#define CFG_HW_USART1_DMA_TX_SUPPORTED 0
+
+/**
+ * UART1
+ */
+#define CFG_HW_USART1_PREEMPTPRIORITY 0x0F
+#define CFG_HW_USART1_SUBPRIORITY 0
+
+/** < The application shall check the selected source clock is enable */
+#define CFG_HW_USART1_SOURCE_CLOCK RCC_USART1CLKSOURCE_SYSCLK
+
+#define CFG_HW_USART1_BAUDRATE 115200
+#define CFG_HW_USART1_WORDLENGTH UART_WORDLENGTH_8B
+#define CFG_HW_USART1_STOPBITS UART_STOPBITS_1
+#define CFG_HW_USART1_PARITY UART_PARITY_NONE
+#define CFG_HW_USART1_HWFLOWCTL UART_HWCONTROL_NONE
+#define CFG_HW_USART1_MODE UART_MODE_TX_RX
+#define CFG_HW_USART1_ADVFEATUREINIT UART_ADVFEATURE_NO_INIT
+#define CFG_HW_USART1_OVERSAMPLING UART_OVERSAMPLING_8
+
+#define CFG_HW_USART1_TX_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define CFG_HW_USART1_TX_PORT GPIOB
+#define CFG_HW_USART1_TX_PIN GPIO_PIN_6
+#define CFG_HW_USART1_TX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_TX_PULL GPIO_NOPULL
+#define CFG_HW_USART1_TX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_TX_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_RX_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define CFG_HW_USART1_RX_PORT GPIOB
+#define CFG_HW_USART1_RX_PIN GPIO_PIN_7
+#define CFG_HW_USART1_RX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_RX_PULL GPIO_NOPULL
+#define CFG_HW_USART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_RX_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_USART1_CTS_PORT GPIOA
+#define CFG_HW_USART1_CTS_PIN GPIO_PIN_11
+#define CFG_HW_USART1_CTS_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_CTS_PULL GPIO_PULLDOWN
+#define CFG_HW_USART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_CTS_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_DMA_TX_PREEMPTPRIORITY 0x0F
+#define CFG_HW_USART1_DMA_TX_SUBPRIORITY 0
+
+#define CFG_HW_USART1_DMAMUX_CLK_ENABLE __HAL_RCC_DMAMUX1_CLK_ENABLE
+#define CFG_HW_USART1_DMA_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
+#define CFG_HW_USART1_TX_DMA_REQ DMA_REQUEST_USART1_TX
+#define CFG_HW_USART1_TX_DMA_CHANNEL DMA2_CHANNEL_4
+#define CFG_HW_USART1_TX_DMA_IRQn DMA2_CHANNEL_4_IRQn
+#define CFG_HW_USART1_DMA_TX_IRQHandler DMA2_CHANNEL_4_IRQHandler
+
+#endif /*HW_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/hw_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/hw_if.h
index 271a222a9..271a222a9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/hw_if.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/hw_if.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/main.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/main.h
new file mode 100644
index 000000000..2010fb041
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/main.h
@@ -0,0 +1,80 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file main.h
+ * @author MCD Application Team
+ * @brief Header for main.c module
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32wbxx_hal.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "stm32wbxx_nucleo.h"
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void Error_Handler(void);
+
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+/* Private defines -----------------------------------------------------------*/
+/* USER CODE BEGIN Private defines */
+
+#define RAM_BASE 0x20000000
+#define RAM_BB_BASE 0x22000000
+#define VariableBit_Reset_BB(VariableAddress, BitNumber) \
+(*(volatile uint32_t *) (RAM_BB_BASE | ((VariableAddress - RAM_BASE) << 5) | ((BitNumber) << 2)) = 0)
+#define VariableBit_Set_BB(VariableAddress, BitNumber) \
+(*(volatile uint32_t *) (RAM_BB_BASE | ((VariableAddress - RAM_BASE) << 5) | ((BitNumber) << 2)) = 1)
+#define VariableBit_Get_BB(VariableAddress, BitNumber) \
+(*(volatile uint32_t *) (RAM_BB_BASE | ((VariableAddress - RAM_BASE) << 5) | ((BitNumber) << 2)))
+
+/* USER CODE END Private defines */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_hal_conf.h
new file mode 100644
index 000000000..a39a652d7
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_hal_conf.h
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * @file stm32wbxx_hal_conf.h
+ * @author MCD Application Team
+ * @brief HAL configuration file.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32WBxx_HAL_CONF_H
+#define __STM32WBxx_HAL_CONF_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* ########################## Module Selection ############################## */
+/**
+ * @brief This is the list of modules to be used in the HAL driver
+ */
+#define HAL_MODULE_ENABLED
+/*#define HAL_ADC_MODULE_ENABLED */
+/*#define HAL_CRYP_MODULE_ENABLED */
+/*#define HAL_COMP_MODULE_ENABLED */
+/*#define HAL_CRC_MODULE_ENABLED */
+#define HAL_HSEM_MODULE_ENABLED
+/*#define HAL_I2C_MODULE_ENABLED */
+/*#define HAL_IPCC_MODULE_ENABLED */
+/*#define HAL_IRDA_MODULE_ENABLED */
+/*#define HAL_IWDG_MODULE_ENABLED */
+/*#define HAL_LCD_MODULE_ENABLED */
+/*#define HAL_LPTIM_MODULE_ENABLED */
+/*#define HAL_PCD_MODULE_ENABLED */
+/*#define HAL_PKA_MODULE_ENABLED */
+/*#define HAL_QSPI_MODULE_ENABLED */
+/*#define HAL_RNG_MODULE_ENABLED */
+/*#define HAL_RTC_MODULE_ENABLED */
+/*#define HAL_SAI_MODULE_ENABLED */
+/*#define HAL_SMBUS_MODULE_ENABLED */
+/*#define HAL_SMARTCARD_MODULE_ENABLED */
+/*#define HAL_SPI_MODULE_ENABLED */
+/*#define HAL_TIM_MODULE_ENABLED */
+/*#define HAL_TSC_MODULE_ENABLED */
+/*#define HAL_UART_MODULE_ENABLED */
+/*#define HAL_USART_MODULE_ENABLED */
+/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
+#define HAL_CORTEX_MODULE_ENABLED
+#define HAL_DMA_MODULE_ENABLED
+#define HAL_FLASH_MODULE_ENABLED
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED
+
+#define USE_HAL_ADC_REGISTER_CALLBACKS 0u
+#define USE_HAL_COMP_REGISTER_CALLBACKS 0u
+#define USE_HAL_CRYP_REGISTER_CALLBACKS 0u
+#define USE_HAL_I2C_REGISTER_CALLBACKS 0u
+#define USE_HAL_IRDA_REGISTER_CALLBACKS 0u
+#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0u
+#define USE_HAL_PCD_REGISTER_CALLBACKS 0u
+#define USE_HAL_PKA_REGISTER_CALLBACKS 0u
+#define USE_HAL_QSPI_REGISTER_CALLBACKS 0u
+#define USE_HAL_RNG_REGISTER_CALLBACKS 0u
+#define USE_HAL_RTC_REGISTER_CALLBACKS 0u
+#define USE_HAL_SAI_REGISTER_CALLBACKS 0u
+#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0u
+#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0u
+#define USE_HAL_SPI_REGISTER_CALLBACKS 0u
+#define USE_HAL_TIM_REGISTER_CALLBACKS 0u
+#define USE_HAL_TSC_REGISTER_CALLBACKS 0u
+#define USE_HAL_UART_REGISTER_CALLBACKS 0u
+#define USE_HAL_USART_REGISTER_CALLBACKS 0u
+#define USE_HAL_WWDG_REGISTER_CALLBACKS 0u
+
+/* ########################## Oscillator Values adaptation ####################*/
+/**
+ * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSE is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSE_VALUE)
+#define HSE_VALUE 32000000U /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (HSE_STARTUP_TIMEOUT)
+ #define HSE_STARTUP_TIMEOUT ((uint32_t)100) /*!< Time out for HSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief Internal Multiple Speed oscillator (MSI) default value.
+ * This value is the default MSI range value after Reset.
+ */
+#if !defined (MSI_VALUE)
+ #define MSI_VALUE ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* MSI_VALUE */
+
+/**
+ * @brief Internal High Speed oscillator (HSI) value.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSI is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSI_VALUE)
+#define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @brief Internal Low Speed oscillator (LSI1) value.
+ */
+#if !defined (LSI1_VALUE)
+ #define LSI1_VALUE ((uint32_t)32000) /*!< LSI1 Typical Value in Hz*/
+#endif /* LSI1_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+/**
+ * @brief Internal Low Speed oscillator (LSI2) value.
+ */
+#if !defined (LSI2_VALUE)
+ #define LSI2_VALUE ((uint32_t)32000) /*!< LSI2 Typical Value in Hz*/
+#endif /* LSI2_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+
+/**
+ * @brief External Low Speed oscillator (LSE) value.
+ * This value is used by the UART, RTC HAL module to compute the system frequency
+ */
+#if !defined (LSE_VALUE)
+#define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/
+#endif /* LSE_VALUE */
+
+/**
+ * @brief Internal Multiple Speed oscillator (HSI48) default value.
+ * This value is the default HSI48 range value after Reset.
+ */
+#if !defined (HSI48_VALUE)
+ #define HSI48_VALUE ((uint32_t)48000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI48_VALUE */
+
+#if !defined (LSE_STARTUP_TIMEOUT)
+#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief External clock source for SAI1 peripheral
+ * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source
+ * frequency.
+ */
+#if !defined (EXTERNAL_SAI1_CLOCK_VALUE)
+ #define EXTERNAL_SAI1_CLOCK_VALUE ((uint32_t)2097000) /*!< Value of the SAI1 External clock source in Hz*/
+#endif /* EXTERNAL_SAI1_CLOCK_VALUE */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+ === you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+ * @brief This is the HAL system configuration section
+ */
+
+#define VDD_VALUE 3300U /*!< Value of VDD in mv */
+#define TICK_INT_PRIORITY 0U /*!< tick interrupt priority */
+#define USE_RTOS 0U
+#define PREFETCH_ENABLE 1U
+#define INSTRUCTION_CACHE_ENABLE 1U
+#define DATA_CACHE_ENABLE 1U
+
+/* ########################## Assert Selection ############################## */
+/**
+ * @brief Uncomment the line below to expanse the "assert_param" macro in the
+ * HAL drivers code
+ */
+/* #define USE_FULL_ASSERT 1U */
+
+/* ################## SPI peripheral configuration ########################## */
+
+/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
+ * Activated: CRC code is present inside driver
+ * Deactivated: CRC code cleaned from driver
+ */
+
+#define USE_SPI_CRC 0U
+
+/* Includes ------------------------------------------------------------------*/
+/**
+ * @brief Include module's header file
+ */
+#ifdef HAL_DMA_MODULE_ENABLED
+ #include "stm32wbxx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+ #include "stm32wbxx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_COMP_MODULE_ENABLED
+ #include "stm32wbxx_hal_comp.h"
+#endif /* HAL_COMP_MODULE_ENABLED */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+ #include "stm32wbxx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+ #include "stm32wbxx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_CRYP_MODULE_ENABLED
+ #include "stm32wbxx_hal_cryp.h"
+#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+ #include "stm32wbxx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+ #include "stm32wbxx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+#ifdef HAL_HSEM_MODULE_ENABLED
+ #include "stm32wbxx_hal_hsem.h"
+#endif /* HAL_HSEM_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+ #include "stm32wbxx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_IPCC_MODULE_ENABLED
+ #include "stm32wbxx_hal_ipcc.h"
+#endif /* HAL_IPCC_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+ #include "stm32wbxx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+ #include "stm32wbxx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_LCD_MODULE_ENABLED
+ #include "stm32wbxx_hal_lcd.h"
+#endif /* HAL_LCD_MODULE_ENABLED */
+
+#ifdef HAL_LPTIM_MODULE_ENABLED
+ #include "stm32wbxx_hal_lptim.h"
+#endif /* HAL_LPTIM_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+ #include "stm32wbxx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_PKA_MODULE_ENABLED
+ #include "stm32wbxx_hal_pka.h"
+#endif /* HAL_PKA_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+ #include "stm32wbxx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_QSPI_MODULE_ENABLED
+ #include "stm32wbxx_hal_qspi.h"
+#endif /* HAL_QSPI_MODULE_ENABLED */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+ #include "stm32wbxx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_RNG_MODULE_ENABLED
+ #include "stm32wbxx_hal_rng.h"
+#endif /* HAL_RNG_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+ #include "stm32wbxx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_SAI_MODULE_ENABLED
+ #include "stm32wbxx_hal_sai.h"
+#endif /* HAL_SAI_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+ #include "stm32wbxx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_SMBUS_MODULE_ENABLED
+ #include "stm32wbxx_hal_smbus.h"
+#endif /* HAL_SMBUS_MODULE_ENABLED */
+
+#ifdef HAL_SPI_MODULE_ENABLED
+ #include "stm32wbxx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+ #include "stm32wbxx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_TSC_MODULE_ENABLED
+ #include "stm32wbxx_hal_tsc.h"
+#endif /* HAL_TSC_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+ #include "stm32wbxx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+ #include "stm32wbxx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+ #include "stm32wbxx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+/* Exported macro ------------------------------------------------------------*/
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief The assert_param macro is used for function's parameters check.
+ * @param expr If expr is false, it calls assert_failed function
+ * which reports the name of the source file and the source
+ * line number of the call that failed.
+ * If expr is true, it returns no value.
+ * @retval None
+ */
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+ void assert_failed(uint8_t* file, uint32_t line);
+#else
+ #define assert_param(expr) ((void)0U)
+#endif /* USE_FULL_ASSERT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32WBxx_HAL_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_it.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_it.h
new file mode 100644
index 000000000..bdf9838a0
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_it.h
@@ -0,0 +1,71 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32wbxx_it.h
+ * @author MCD Application Team
+ * @brief This file contains the headers of the interrupt handlers.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32WBxx_IT_H
+#define __STM32WBxx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "app_common.h"
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void SVC_Handler(void);
+void DebugMon_Handler(void);
+void PendSV_Handler(void);
+void SysTick_Handler(void);
+/* USER CODE BEGIN EFP */
+void IPCC_C1_TX_IRQHandler(void);
+void IPCC_C1_RX_IRQHandler(void);
+/* USER CODE END EFP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32WBxx_IT_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/utilities_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/utilities_conf.h
index 4dde3509a..4dde3509a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/utilities_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Inc/utilities_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/BLE_Peripheral_Lite.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/BLE_Peripheral_Lite.uvoptx
new file mode 100644
index 000000000..cd6da8dbb
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/BLE_Peripheral_Lite.uvoptx
@@ -0,0 +1,737 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>BLE_Peripheral_Lite</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>8000000</CLKADS>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>0</RunSim>
+ <RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath></ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>18</CpuCode>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>1</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>0</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>11</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Src/app_debug.c</PathWithFileName>
+ <FilenameWithoutPath>app_debug.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Src/gatt_service.c</PathWithFileName>
+ <FilenameWithoutPath>gatt_service.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Src/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Src/stm32wbxx_hal_msp.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_msp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_exti.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_hsem.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.c</PathWithFileName>
+ <FilenameWithoutPath>ble_events.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/BLE_Peripheral_Lite.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/BLE_Peripheral_Lite.uvprojx
new file mode 100644
index 000000000..7e3265d3d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/BLE_Peripheral_Lite.uvprojx
@@ -0,0 +1,636 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+ <SchemaVersion>2.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>BLE_Peripheral_Lite</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>STM32WB55RGVx</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx_DFP.1.1.0</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
+ <Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>BLE_Peripheral_Lite\Exe\</OutputDirectory>
+ <OutputName>BLE_Peripheral_Lite</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>1</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath></ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments>-REMAP -MPU</SimDllArguments>
+ <SimDlgDll>DCM.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments>-MPU</TargetDllArguments>
+ <TargetDlgDll>TCM.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>4101</DriverSelection>
+ </Flash1>
+ <bUseTDR>1</bUseTDR>
+ <Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
+ <Flash3>"" ()</Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>1</AdsALst>
+ <AdsACrf>1</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>"Cortex-M4"</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>2</RvdsVP>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>1</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>0</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fffc</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>1</interw>
+ <Optim>4</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>1</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <uSurpInc>0</uSurpInc>
+ <uC99>1</uC99>
+ <uGnu>0</uGnu>
+ <useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define>USE_STM32WBXX_NUCLEO,USE_HAL_DRIVER,STM32WB55xx,HAL_RTC_MODULE_ENABLED</Define>
+ <Undefine></Undefine>
+ <IncludePath>../Inc;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Middlewares/ST/STM32_WPAN/ble;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/CMSIS/Include;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>0</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x08000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
+ <pXoBase></pXoBase>
+ <ScatterFile>stm32wb55xx_flash_cm4.sct</ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc>--diag_suppress=L6329</Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <Files>
+ <File>
+ <FileName>startup_stm32wb55xx_cm4.s</FileName>
+ <FileType>2</FileType>
+ <FilePath>startup_stm32wb55xx_cm4.s</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User</GroupName>
+ <Files>
+ <File>
+ <FileName>app_debug.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Src/app_debug.c</FilePath>
+ </File>
+ <File>
+ <FileName>gatt_service.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Src/gatt_service.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_ipcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Src/hw_ipcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>main.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Src/main.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_msp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Src/stm32wbxx_hal_msp.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_it.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Src/stm32wbxx_it.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Doc</GroupName>
+ <Files>
+ <File>
+ <FileName>readme.txt</FileName>
+ <FileType>5</FileType>
+ <FilePath>../readme.txt</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_nucleo.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <Files>
+ <File>
+ <FileName>system_stm32wbxx.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Src/system_stm32wbxx.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_hal.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_cortex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_exti.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_gpio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_hsem.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_tim.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_tim_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <Files>
+ <File>
+ <FileName>ble_events.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.c</FilePath>
+ </File>
+ <File>
+ <FileName>ble_gap_aci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</FilePath>
+ </File>
+ <File>
+ <FileName>ble_gatt_aci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</FilePath>
+ </File>
+ <File>
+ <FileName>ble_hal_aci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</FilePath>
+ </File>
+ <File>
+ <FileName>ble_hci_le.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</FilePath>
+ </File>
+ <File>
+ <FileName>ble_l2cap_aci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</FilePath>
+ </File>
+ <File>
+ <FileName>hci_tl.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</FilePath>
+ </File>
+ <File>
+ <FileName>hci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>osal.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</FilePath>
+ </File>
+ <File>
+ <FileName>otp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_list.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_queue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</FilePath>
+ </File>
+ <File>
+ <FileName>svc_ctl.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_mbox.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+ <RTE>
+ <apis/>
+ <components/>
+ <files/>
+ </RTE>
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..e05e3c5ca
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,368 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : STM32WB55xx devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the CortexM4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;******************************************************************************
+;* @attention
+;*
+;* Copyright (c) 2019 STMicroelectronics. All rights reserved.
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; <h> Stack Configuration
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size EQU 0x1000
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size EQU 0x400
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM detector
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper and TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_PVM_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_LSECSS_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_IRQHandler [WEAK]
+ EXPORT USB_HP_IRQHandler [WEAK]
+ EXPORT USB_LP_IRQHandler [WEAK]
+ EXPORT C2SEV_PWR_C2H_IRQHandler [WEAK]
+ EXPORT COMP_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_IRQHandler [WEAK]
+ EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_TIM17_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT PKA_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT TSC_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+ EXPORT PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler [WEAK]
+ EXPORT IPCC_C1_RX_IRQHandler [WEAK]
+ EXPORT IPCC_C1_TX_IRQHandler [WEAK]
+ EXPORT HSEM_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT LCD_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT AES1_IRQHandler [WEAK]
+ EXPORT AES2_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT DMA2_Channel1_IRQHandler [WEAK]
+ EXPORT DMA2_Channel2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel3_IRQHandler [WEAK]
+ EXPORT DMA2_Channel4_IRQHandler [WEAK]
+ EXPORT DMA2_Channel5_IRQHandler [WEAK]
+ EXPORT DMA2_Channel6_IRQHandler [WEAK]
+ EXPORT DMA2_Channel7_IRQHandler [WEAK]
+ EXPORT DMAMUX1_OVR_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_PVM_IRQHandler
+TAMP_STAMP_LSECSS_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_IRQHandler
+USB_HP_IRQHandler
+USB_LP_IRQHandler
+C2SEV_PWR_C2H_IRQHandler
+COMP_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_IRQHandler
+TIM1_UP_TIM16_IRQHandler
+TIM1_TRG_COM_TIM17_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+PKA_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+LPUART1_IRQHandler
+SAI1_IRQHandler
+TSC_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+CRS_IRQHandler
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+IPCC_C1_RX_IRQHandler
+IPCC_C1_TX_IRQHandler
+HSEM_IRQHandler
+LPTIM1_IRQHandler
+LPTIM2_IRQHandler
+LCD_IRQHandler
+QUADSPI_IRQHandler
+AES1_IRQHandler
+AES2_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_IRQHandler
+DMA2_Channel5_IRQHandler
+DMA2_Channel6_IRQHandler
+DMA2_Channel7_IRQHandler
+DMAMUX1_OVR_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/stm32wb55xx_flash_cm4.sct
new file mode 100644
index 000000000..0c8a4261d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -0,0 +1,20 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x08000000 0x00080000 { ; load region size_region
+ ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ }
+ RW_IRAM1 0x20000004 0x2FFFC { ; RW data
+ .ANY (+RW +ZI)
+ }
+
+ RW_RAM_SHARED 0x20030000 0x2800 { ; RW data
+ *(MAPPING_TABLE,First)
+ *(MB_MEM1)
+ *(MB_MEM2)
+ }
+ } \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/.cproject
new file mode 100644
index 000000000..3b24a0fdf
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/.cproject
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1539450082">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1539450082" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <externalSettings />
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser" />
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1539450082" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1539450082." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.1277938562" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.530645054" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1643694367" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.1330091111" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="ARM Cortex-M4" />
+ <listOptionValue builtIn="false" value="CM4" />
+ </option>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1091780791" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1545741691" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1553906696" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated" />
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.706120334" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross" />
+ <builder buildPath="${workspace_loc:/BLE_Peripheral_Lite}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1863785615" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <outputEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug" />
+ </outputEntries>
+ </builder>
+
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1011189033" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.196730665" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated" />
+ <option id="gnu.c.compiler.option.debugging.level.1408956266" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated" />
+ <option id="gnu.c.compiler.option.include.paths.683454588" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"><listOptionValue builtIn="false" value="../../../Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo" /></option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.734221275" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"><listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32WB55xx" /><listOptionValue builtIn="false" value="HAL_RTC_MODULE_ENABLED" /></option>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.783276604" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1217970000" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.278225223" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s" />
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1068133630" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.917815242" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated" />
+ <option id="gnu.cpp.compiler.option.debugging.level.1985222155" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated" />
+ <option id="gnu.cpp.compiler.option.include.paths.1204814080" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"><listOptionValue builtIn="false" value="../../../Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo" /></option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.971725059" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols"><listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32WB55xx" /><listOptionValue builtIn="false" value="HAL_RTC_MODULE_ENABLED" /></option>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.2111821685" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1523933082" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.684294845" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s" />
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.1825502629" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1155854604" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string" />
+ <option id="gnu.c.link.option.libs.1879637857" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs" />
+ <option id="gnu.c.link.option.paths.2106880013" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths" />
+ <option id="gnu.c.link.option.ldflags.877926585" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" />
+ <option id="gnu.c.link.option.other.910726286" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList" />
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1290699950" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
+ <additionalInput kind="additionalinput" paths="$(LIBS)" />
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.749405790" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.444642330" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string" />
+ <option id="gnu.cpp.link.option.libs.239516015" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs" />
+ <option id="gnu.cpp.link.option.paths.716696917" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths" />
+ <option id="gnu.cpp.link.option.flags.1182351593" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" />
+ <option id="gnu.cpp.link.option.other.1483636783" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList" />
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.20270577" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
+ <additionalInput kind="additionalinput" paths="$(LIBS)" />
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1663297044" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver" />
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.1929559413" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+ <option id="gnu.both.asm.option.include.paths.1991325161" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+
+
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1889063679" superClass="cdt.managedbuild.tool.gnu.assembler.input" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.437396714" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input" />
+ </tool>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="" />
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings" />
+ </cconfiguration>
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.release.880393766">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.880393766" moduleId="org.eclipse.cdt.core.settings" name="Release">
+ <externalSettings />
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser" />
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser" />
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.880393766" name="Release" parent="fr.ac6.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.release.880393766." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release.8951889" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.530645054" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1643694367" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.1330091111" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="ARM Cortex-M4" />
+ <listOptionValue builtIn="false" value="CM4" />
+ </option>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1091780791" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1545741691" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated" />
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1553906696" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated" />
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.706120334" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross" />
+ <builder buildPath="${workspace_loc:/BLE_Peripheral_Lite}/Release" id="fr.ac6.managedbuild.builder.gnu.cross.1863785615" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <outputEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release" />
+ </outputEntries>
+ </builder>
+
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1011189033" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.196730665" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated" />
+ <option id="gnu.c.compiler.option.debugging.level.1408956266" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated" />
+ <option id="gnu.c.compiler.option.include.paths.683454588" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"><listOptionValue builtIn="false" value="../../../Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo" /></option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.734221275" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"><listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32WB55xx" /><listOptionValue builtIn="false" value="HAL_RTC_MODULE_ENABLED" /></option>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.783276604" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1217970000" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.278225223" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s" />
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1068133630" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.917815242" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated" />
+ <option id="gnu.cpp.compiler.option.debugging.level.1985222155" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.debugging.level.max" valueType="enumerated" />
+ <option id="gnu.cpp.compiler.option.include.paths.1204814080" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"><listOptionValue builtIn="false" value="../../../Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm" /><listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template" /><listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/ble/core" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include" /><listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo" /></option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.symbols.294530574" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"><listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO" /><listOptionValue builtIn="false" value="USE_HAL_DRIVER" /><listOptionValue builtIn="false" value="STM32WB55xx" /><listOptionValue builtIn="false" value="HAL_RTC_MODULE_ENABLED" /></option>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.2111821685" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" value="-fmessage-length=0" valueType="string" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1523933082" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.684294845" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s" />
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.1825502629" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1155854604" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string" />
+ <option id="gnu.c.link.option.libs.1879637857" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs" />
+ <option id="gnu.c.link.option.paths.2106880013" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths" />
+ <option id="gnu.c.link.option.ldflags.877926585" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" />
+ <option id="gnu.c.link.option.other.910726286" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" valueType="stringList" />
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1290699950" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
+ <additionalInput kind="additionalinput" paths="$(LIBS)" />
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.749405790" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.444642330" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string" />
+ <option id="gnu.cpp.link.option.libs.239516015" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs" />
+ <option id="gnu.cpp.link.option.paths.716696917" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths" />
+ <option id="gnu.cpp.link.option.ldflags.435502386" superClass="gnu.cpp.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" />
+ <option id="gnu.cpp.link.option.other.1483636783" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList" />
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.20270577" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" />
+ <additionalInput kind="additionalinput" paths="$(LIBS)" />
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1663297044" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver" />
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release.125691047" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release">
+ <option id="gnu.both.asm.option.include.paths.1991325161" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1889063679" superClass="cdt.managedbuild.tool.gnu.assembler.input" />
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.437396714" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input" />
+ </tool>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry excluding="" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="" />
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings" />
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="BLE_Peripheral_Lite.fr.ac6.managedbuild.target.gnu.cross.exe.2007208314" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe" />
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="" />
+ <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1539450082;fr.ac6.managedbuild.config.gnu.cross.exe.debug.1539450082.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1011189033;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1217970000">
+ <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId="" />
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders" />
+ <storageModule moduleId="refreshScope" versionNumber="2">
+ <configuration artifactName="${ProjName}" configurationName="Debug">
+ <resource resourceType="PROJECT" workspacePath="BLE_Peripheral_Lite" />
+ </configuration>
+ </storageModule>
+</cproject>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/.project
new file mode 100644
index 000000000..eceb2bd4a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/.project
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
+ <name>BLE_Peripheral_Lite</name>
+ <comment/>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>Application/SW4STM32/syscalls.c</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/syscalls.c</location>
+ </link><link>
+ <name>Application/SW4STM32/startup_stm32wb55xx_cm4.s</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/startup_stm32wb55xx_cm4.s</location>
+ </link>
+
+ <link>
+ <name>Application/User/app_debug.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Src/app_debug.c</location>
+ </link>
+ <link>
+ <name>Application/User/gatt_service.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Src/gatt_service.c</location>
+ </link>
+ <link>
+ <name>Application/User/hw_ipcc.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Src/hw_ipcc.c</location>
+ </link>
+ <link>
+ <name>Application/User/main.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Src/main.c</location>
+ </link>
+ <link>
+ <name>Application/User/stm32wbxx_hal_msp.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Src/stm32wbxx_hal_msp.c</location>
+ </link>
+ <link>
+ <name>Application/User/stm32wbxx_it.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Src/stm32wbxx_it.c</location>
+ </link>
+ <link>
+ <name>Doc/readme.txt</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/readme.txt</location>
+ </link>
+ <link>
+ <name>Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</location>
+ </link>
+ <link>
+ <name>Drivers/CMSIS/system_stm32wbxx.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Src/system_stm32wbxx.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_cortex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_exti.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_gpio.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_hsem.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble_events.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_events.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble_gap_aci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble_gatt_aci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble_hal_aci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble_hci_le.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ble_l2cap_aci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/hci_tl.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/hci_tl_if.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/osal.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/otp.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/otp.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci_tl.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci_tl_if.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/stm_list.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_list.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/stm_queue.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/svc_ctl.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/tl_mbox.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</location>
+ </link>
+ </linkedResources>
+</projectDescription> \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/stm32wb55xx_flash_cm4.ld
new file mode 100644
index 000000000..ab9923784
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/BLE_Peripheral_Lite/stm32wb55xx_flash_cm4.ld
@@ -0,0 +1,187 @@
+/**
+*****************************************************************************
+**
+** File : stm32wb55xx_flash_cm4.ld
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+*****************************************************************************
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 Ac6</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of Ac6 nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20030000; /* end of RAM */
+/* Generate a link error if heap and stack don't fit into RAM */
+_Min_Heap_Size = 0x400; /* required amount of heap */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
+
+/* Specify the memory areas */
+MEMORY
+{
+FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
+RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 191K
+RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K
+}
+
+/* Define output sections */
+SECTIONS
+{
+ /* The startup code goes first into FLASH */
+ .isr_vector :
+ {
+ . = ALIGN(4);
+ KEEP(*(.isr_vector)) /* Startup code */
+ . = ALIGN(4);
+ } >FLASH
+
+ /* The program code and other data goes into FLASH */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* Constant data goes into FLASH */
+ .rodata :
+ {
+ . = ALIGN(4);
+ *(.rodata) /* .rodata sections (constants, strings, etc.) */
+ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+ .ARM : {
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ } >FLASH
+
+ .preinit_array :
+ {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array*))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } >FLASH
+ .init_array :
+ {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array*))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } >FLASH
+ .fini_array :
+ {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(SORT(.fini_array.*)))
+ KEEP (*(.fini_array*))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } >FLASH
+
+ /* used by the startup to initialize data */
+ _sidata = LOADADDR(.data);
+
+ /* Initialized data sections goes into RAM, load LMA copy after code */
+ .data :
+ {
+ . = ALIGN(4);
+ _sdata = .; /* create a global symbol at data start */
+ *(.data) /* .data sections */
+ *(.data*) /* .data* sections */
+
+ . = ALIGN(4);
+ _edata = .; /* define a global symbol at data end */
+ } >RAM1 AT> FLASH
+
+
+ /* Uninitialized data section */
+ . = ALIGN(4);
+ .bss :
+ {
+ /* This is used by the startup in order to initialize the .bss secion */
+ _sbss = .; /* define a global symbol at bss start */
+ __bss_start__ = _sbss;
+ *(.bss)
+ *(.bss*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ _ebss = .; /* define a global symbol at bss end */
+ __bss_end__ = _ebss;
+ } >RAM1
+
+ /* User_heap_stack section, used to check that there is enough RAM left */
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE ( end = . );
+ PROVIDE ( _end = . );
+ . = . + _Min_Heap_Size;
+ . = . + _Min_Stack_Size;
+ . = ALIGN(8);
+ } >RAM1
+
+
+
+ /* Remove information from the standard libraries */
+ /DISCARD/ :
+ {
+ libc.a ( * )
+ libm.a ( * )
+ libgcc.a ( * )
+ }
+
+ .ARM.attributes 0 : { *(.ARM.attributes) }
+ MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM_SHARED
+ MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM_SHARED
+ MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM_SHARED
+}
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..f79eec117
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,445 @@
+/**
+ ******************************************************************************
+ * @file startup_stm32wb55xx_cm4.s
+ * @author MCD Application Team
+ * @brief STM32WB55xx devices vector table GCC toolchain.
+ * This module performs:
+ * - Set the initial SP
+ * - Set the initial PC == Reset_Handler,
+ * - Set the vector table entries with the exceptions ISR address
+ * - Branches to main in the C library (which eventually
+ * calls main()).
+ * After Reset the Cortex-M4 processor is in Thread mode,
+ * priority is Privileged, and the Stack is set to Main.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+ .syntax unified
+ .cpu cortex-m4
+ .fpu softvfp
+ .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+/* start address for the .MB_MEM2 section. defined in linker script */
+.word _sMB_MEM2
+/* end address for the .MB_MEM2 section. defined in linker script */
+.word _eMB_MEM2
+
+/* INIT_BSS macro is used to fill the specified region [start : end] with zeros */
+.macro INIT_BSS start, end
+ ldr r0, =\start
+ ldr r1, =\end
+ movs r3, #0
+ bl LoopFillZerobss
+.endm
+
+/* INIT_DATA macro is used to copy data in the region [start : end] starting from 'src' */
+.macro INIT_DATA start, end, src
+ ldr r0, =\start
+ ldr r1, =\end
+ ldr r2, =\src
+ movs r3, #0
+ bl LoopCopyDataInit
+.endm
+
+.section .text.data_initializers
+CopyDataInit:
+ ldr r4, [r2, r3]
+ str r4, [r0, r3]
+ adds r3, r3, #4
+
+LoopCopyDataInit:
+ adds r4, r0, r3
+ cmp r4, r1
+ bcc CopyDataInit
+ bx lr
+
+FillZerobss:
+ str r3, [r0]
+ adds r0, r0, #4
+
+LoopFillZerobss:
+ cmp r0, r1
+ bcc FillZerobss
+ bx lr
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr r0, =_estack
+ mov sp, r0 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ INIT_DATA _sdata, _edata, _sidata
+
+/* Zero fill the bss segments. */
+ INIT_BSS _sbss, _ebss
+ INIT_BSS _sMB_MEM2, _eMB_MEM2
+
+/* Call the clock system intitialization function.*/
+ bl SystemInit
+/* Call static constructors */
+ bl __libc_init_array
+/* Call the application s entry point.*/
+ bl main
+
+LoopForever:
+ b LoopForever
+
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief This is the code that gets called when the processor receives an
+ * unexpected interrupt. This simply enters an infinite loop, preserving
+ * the system state for examination by a debugger.
+ *
+ * @param None
+ * @retval None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex-M4. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+ .section .isr_vector,"a",%progbits
+ .type g_pfnVectors, %object
+ .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+ .word _estack
+ .word Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0
+ .word PendSV_Handler
+ .word SysTick_Handler
+ .word WWDG_IRQHandler
+ .word PVD_PVM_IRQHandler
+ .word TAMP_STAMP_LSECSS_IRQHandler
+ .word RTC_WKUP_IRQHandler
+ .word FLASH_IRQHandler
+ .word RCC_IRQHandler
+ .word EXTI0_IRQHandler
+ .word EXTI1_IRQHandler
+ .word EXTI2_IRQHandler
+ .word EXTI3_IRQHandler
+ .word EXTI4_IRQHandler
+ .word DMA1_Channel1_IRQHandler
+ .word DMA1_Channel2_IRQHandler
+ .word DMA1_Channel3_IRQHandler
+ .word DMA1_Channel4_IRQHandler
+ .word DMA1_Channel5_IRQHandler
+ .word DMA1_Channel6_IRQHandler
+ .word DMA1_Channel7_IRQHandler
+ .word ADC1_IRQHandler
+ .word USB_HP_IRQHandler
+ .word USB_LP_IRQHandler
+ .word C2SEV_PWR_C2H_IRQHandler
+ .word COMP_IRQHandler
+ .word EXTI9_5_IRQHandler
+ .word TIM1_BRK_IRQHandler
+ .word TIM1_UP_TIM16_IRQHandler
+ .word TIM1_TRG_COM_TIM17_IRQHandler
+ .word TIM1_CC_IRQHandler
+ .word TIM2_IRQHandler
+ .word PKA_IRQHandler
+ .word I2C1_EV_IRQHandler
+ .word I2C1_ER_IRQHandler
+ .word I2C3_EV_IRQHandler
+ .word I2C3_ER_IRQHandler
+ .word SPI1_IRQHandler
+ .word SPI2_IRQHandler
+ .word USART1_IRQHandler
+ .word LPUART1_IRQHandler
+ .word SAI1_IRQHandler
+ .word TSC_IRQHandler
+ .word EXTI15_10_IRQHandler
+ .word RTC_Alarm_IRQHandler
+ .word CRS_IRQHandler
+ .word PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .word IPCC_C1_RX_IRQHandler
+ .word IPCC_C1_TX_IRQHandler
+ .word HSEM_IRQHandler
+ .word LPTIM1_IRQHandler
+ .word LPTIM2_IRQHandler
+ .word LCD_IRQHandler
+ .word QUADSPI_IRQHandler
+ .word AES1_IRQHandler
+ .word AES2_IRQHandler
+ .word RNG_IRQHandler
+ .word FPU_IRQHandler
+ .word DMA2_Channel1_IRQHandler
+ .word DMA2_Channel2_IRQHandler
+ .word DMA2_Channel3_IRQHandler
+ .word DMA2_Channel4_IRQHandler
+ .word DMA2_Channel5_IRQHandler
+ .word DMA2_Channel6_IRQHandler
+ .word DMA2_Channel7_IRQHandler
+ .word DMAMUX1_OVR_IRQHandler
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+ .weak NMI_Handler
+ .thumb_set NMI_Handler,Default_Handler
+
+ .weak HardFault_Handler
+ .thumb_set HardFault_Handler,Default_Handler
+
+ .weak MemManage_Handler
+ .thumb_set MemManage_Handler,Default_Handler
+
+ .weak BusFault_Handler
+ .thumb_set BusFault_Handler,Default_Handler
+
+ .weak UsageFault_Handler
+ .thumb_set UsageFault_Handler,Default_Handler
+
+ .weak SVC_Handler
+ .thumb_set SVC_Handler,Default_Handler
+
+ .weak DebugMon_Handler
+ .thumb_set DebugMon_Handler,Default_Handler
+
+ .weak PendSV_Handler
+ .thumb_set PendSV_Handler,Default_Handler
+
+ .weak SysTick_Handler
+ .thumb_set SysTick_Handler,Default_Handler
+
+ .weak WWDG_IRQHandler
+ .thumb_set WWDG_IRQHandler,Default_Handler
+
+ .weak PVD_PVM_IRQHandler
+ .thumb_set PVD_PVM_IRQHandler,Default_Handler
+
+ .weak TAMP_STAMP_LSECSS_IRQHandler
+ .thumb_set TAMP_STAMP_LSECSS_IRQHandler,Default_Handler
+
+ .weak RTC_WKUP_IRQHandler
+ .thumb_set RTC_WKUP_IRQHandler,Default_Handler
+
+ .weak FLASH_IRQHandler
+ .thumb_set FLASH_IRQHandler,Default_Handler
+
+ .weak RCC_IRQHandler
+ .thumb_set RCC_IRQHandler,Default_Handler
+
+ .weak EXTI0_IRQHandler
+ .thumb_set EXTI0_IRQHandler,Default_Handler
+
+ .weak EXTI1_IRQHandler
+ .thumb_set EXTI1_IRQHandler,Default_Handler
+
+ .weak EXTI2_IRQHandler
+ .thumb_set EXTI2_IRQHandler,Default_Handler
+
+ .weak EXTI3_IRQHandler
+ .thumb_set EXTI3_IRQHandler,Default_Handler
+
+ .weak EXTI4_IRQHandler
+ .thumb_set EXTI4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel1_IRQHandler
+ .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel2_IRQHandler
+ .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel3_IRQHandler
+ .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel4_IRQHandler
+ .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel5_IRQHandler
+ .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel6_IRQHandler
+ .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel7_IRQHandler
+ .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
+
+ .weak ADC1_IRQHandler
+ .thumb_set ADC1_IRQHandler,Default_Handler
+
+ .weak USB_HP_IRQHandler
+ .thumb_set USB_HP_IRQHandler,Default_Handler
+
+ .weak USB_LP_IRQHandler
+ .thumb_set USB_LP_IRQHandler,Default_Handler
+
+ .weak C2SEV_PWR_C2H_IRQHandler
+ .thumb_set C2SEV_PWR_C2H_IRQHandler,Default_Handler
+
+ .weak COMP_IRQHandler
+ .thumb_set COMP_IRQHandler,Default_Handler
+
+ .weak EXTI9_5_IRQHandler
+ .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+ .weak TIM1_BRK_IRQHandler
+ .thumb_set TIM1_BRK_IRQHandler,Default_Handler
+
+ .weak TIM1_UP_TIM16_IRQHandler
+ .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler
+
+ .weak TIM1_TRG_COM_TIM17_IRQHandler
+ .thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler
+
+ .weak TIM1_CC_IRQHandler
+ .thumb_set TIM1_CC_IRQHandler,Default_Handler
+
+ .weak TIM2_IRQHandler
+ .thumb_set TIM2_IRQHandler,Default_Handler
+
+ .weak PKA_IRQHandler
+ .thumb_set PKA_IRQHandler,Default_Handler
+
+ .weak I2C1_EV_IRQHandler
+ .thumb_set I2C1_EV_IRQHandler,Default_Handler
+
+ .weak I2C1_ER_IRQHandler
+ .thumb_set I2C1_ER_IRQHandler,Default_Handler
+
+ .weak I2C3_EV_IRQHandler
+ .thumb_set I2C3_EV_IRQHandler,Default_Handler
+
+ .weak I2C3_ER_IRQHandler
+ .thumb_set I2C3_ER_IRQHandler,Default_Handler
+
+ .weak SPI1_IRQHandler
+ .thumb_set SPI1_IRQHandler,Default_Handler
+
+ .weak SPI2_IRQHandler
+ .thumb_set SPI2_IRQHandler,Default_Handler
+
+ .weak USART1_IRQHandler
+ .thumb_set USART1_IRQHandler,Default_Handler
+
+ .weak LPUART1_IRQHandler
+ .thumb_set LPUART1_IRQHandler,Default_Handler
+
+ .weak SAI1_IRQHandler
+ .thumb_set SAI1_IRQHandler,Default_Handler
+
+ .weak TSC_IRQHandler
+ .thumb_set TSC_IRQHandler,Default_Handler
+
+ .weak EXTI15_10_IRQHandler
+ .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+ .weak RTC_Alarm_IRQHandler
+ .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+ .weak CRS_IRQHandler
+ .thumb_set CRS_IRQHandler,Default_Handler
+
+ .weak PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .thumb_set PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_RX_IRQHandler
+ .thumb_set IPCC_C1_RX_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_TX_IRQHandler
+ .thumb_set IPCC_C1_TX_IRQHandler,Default_Handler
+
+ .weak HSEM_IRQHandler
+ .thumb_set HSEM_IRQHandler,Default_Handler
+
+ .weak LPTIM1_IRQHandler
+ .thumb_set LPTIM1_IRQHandler,Default_Handler
+
+ .weak LPTIM2_IRQHandler
+ .thumb_set LPTIM2_IRQHandler,Default_Handler
+
+ .weak LCD_IRQHandler
+ .thumb_set LCD_IRQHandler,Default_Handler
+
+ .weak QUADSPI_IRQHandler
+ .thumb_set QUADSPI_IRQHandler,Default_Handler
+
+ .weak AES1_IRQHandler
+ .thumb_set AES1_IRQHandler,Default_Handler
+
+ .weak AES2_IRQHandler
+ .thumb_set AES2_IRQHandler,Default_Handler
+
+ .weak RNG_IRQHandler
+ .thumb_set RNG_IRQHandler,Default_Handler
+
+ .weak FPU_IRQHandler
+ .thumb_set FPU_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel1_IRQHandler
+ .thumb_set DMA2_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel2_IRQHandler
+ .thumb_set DMA2_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel3_IRQHandler
+ .thumb_set DMA2_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel4_IRQHandler
+ .thumb_set DMA2_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel5_IRQHandler
+ .thumb_set DMA2_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel6_IRQHandler
+ .thumb_set DMA2_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel7_IRQHandler
+ .thumb_set DMA2_Channel7_IRQHandler,Default_Handler
+
+ .weak DMAMUX1_OVR_IRQHandler
+ .thumb_set DMAMUX1_OVR_IRQHandler,Default_Handler
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/syscalls.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/syscalls.c
new file mode 100644
index 000000000..9b7c4071a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/SW4STM32/syscalls.c
@@ -0,0 +1,207 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Author : Auto-generated by System workbench for STM32
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Target : STMicroelectronics STM32
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+** @attention
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of STMicroelectronics nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+#include <signal.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/times.h>
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/app_debug.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/app_debug.c
new file mode 100644
index 000000000..b5e8863a2
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/app_debug.c
@@ -0,0 +1,349 @@
+/**
+ ******************************************************************************
+ * @file app_debug.c
+ * @author MCD Application Team
+ * @brief Debug capabilities
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+
+#include "app_debug.h"
+#include "utilities_common.h"
+#include "shci.h"
+#include "tl.h"
+#include "dbg_trace.h"
+
+/* Private typedef -----------------------------------------------------------*/
+typedef PACKED_STRUCT
+{
+ GPIO_TypeDef* port;
+ uint16_t pin;
+ uint8_t enable;
+ uint8_t reserved;
+} APPD_GpioConfig_t;
+
+typedef PACKED_STRUCT
+{
+ uint8_t thread_config;
+ uint8_t ble_config;
+ uint8_t mac_802_15_4;
+ uint8_t reserved;
+} APPD_TracesConfig_t;
+
+typedef PACKED_STRUCT
+{
+ uint8_t ble_dtb_cfg;
+ uint8_t reserved[3];
+} APPD_GeneralConfig_t;
+
+/* Private defines -----------------------------------------------------------*/
+#define GPIO_NBR_OF_RF_SIGNALS 9
+#define GPIO_CFG_NBR_OF_FEATURES 34
+#define NBR_OF_TRACES_CONFIG_PARAMETERS 4
+#define NBR_OF_GENERAL_CONFIG_PARAMETERS 4
+
+/**
+ * THIS SHALL BE SET TO A VALUE DIFFERENT FROM 0 ONLY ON REQUEST FROM ST SUPPORT
+ */
+#define BLE_DTB_CFG 0
+
+/* Private macros ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static APPD_TracesConfig_t APPD_TracesConfig={0, 0, 0, 0};
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static APPD_GeneralConfig_t APPD_GeneralConfig={BLE_DTB_CFG, {0, 0, 0}};
+
+/**
+ * THE DEBUG ON GPIO FOR CPU2 IS INTENDED TO BE USED ONLY ON REQUEST FROM ST SUPPORT
+ * It provides timing information on the CPU2 activity.
+ * All configuration of (port, pin) is supported for each features and can be selected by the user
+ * depending on the availability
+ */
+static const APPD_GpioConfig_t aGpioConfigList[GPIO_CFG_NBR_OF_FEATURES] =
+{
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* BLE_ISR - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* BLE_STACK_TICK - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* BLE_CMD_PROCESS - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* BLE_ACL_DATA_PROCESS - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* SYS_CMD_PROCESS - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* RNG_PROCESS - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVM_PROCESS - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_GENERAL - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_BLE_CMD_RX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_BLE_EVT_TX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_BLE_ACL_DATA_RX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_SYS_CMD_RX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_SYS_EVT_TX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_CLI_CMD_RX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_OT_CMD_RX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_OT_ACK_TX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_CLI_ACK_TX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_MEM_MANAGER_RX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IPCC_TRACES_TX - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* HARD_FAULT - Set on Entry / Reset on Exit */
+/* From v1.1.1 */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* IP_CORE_LP_STATUS - Set on Entry / Reset on Exit */
+/* From v1.2.0 */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* END_OF_CONNECTION_EVENT - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* TIMER_SERVER_CALLBACK - Toggle on Entry */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* PES_ACTIVITY - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* MB_BLE_SEND_EVT - Set on Entry / Reset on Exit */
+/* From v1.3.0 */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* BLE_NO_DELAY - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* BLE_STACK_STORE_NVM_CB - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVMA_WRITE_ONGOING - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVMA_WRITE_COMPLETE - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVMA_CLEANUP - Set on Entry / Reset on Exit */
+/* From v1.4.0 */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* NVMA_START - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* FLASH_EOP - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* FLASH_WRITE - Set on Entry / Reset on Exit */
+ { GPIOA, LL_GPIO_PIN_0, 0, 0}, /* FLASH_ERASE - Set on Entry / Reset on Exit */
+};
+
+/**
+ * THE DEBUG ON GPIO FOR CPU2 IS INTENDED TO BE USED ONLY ON REQUEST FROM ST SUPPORT
+ * This table is relevant only for BLE
+ * It provides timing information on BLE RF activity.
+ * New signals may be allocated at any location when requested by ST
+ * The GPIO allocated to each signal depend on the BLE_DTB_CFG value and cannot be changed
+ */
+#if( BLE_DTB_CFG == 7)
+static const APPD_GpioConfig_t aRfConfigList[GPIO_NBR_OF_RF_SIGNALS] =
+{
+ { GPIOB, LL_GPIO_PIN_2, 0, 0}, /* DTB10 */
+ { GPIOB, LL_GPIO_PIN_7, 0, 0}, /* DTB11 */
+ { GPIOA, LL_GPIO_PIN_8, 0, 0}, /* DTB12 */
+ { GPIOA, LL_GPIO_PIN_9, 0, 0}, /* DTB13 */
+ { GPIOA, LL_GPIO_PIN_10, 0, 0}, /* DTB14 */
+ { GPIOA, LL_GPIO_PIN_11, 0, 0}, /* DTB15 */
+ { GPIOB, LL_GPIO_PIN_8, 0, 0}, /* DTB16 */
+ { GPIOB, LL_GPIO_PIN_11, 0, 0}, /* DTB17 */
+ { GPIOB, LL_GPIO_PIN_10, 0, 0}, /* DTB18 */
+};
+#endif
+
+/* Global variables ----------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+static void APPD_SetCPU2GpioConfig( void );
+static void APPD_BleDtbCfg( void );
+
+/* Functions Definition ------------------------------------------------------*/
+void APPD_Init( void )
+{
+#if (CFG_DEBUGGER_SUPPORTED == 1)
+ /**
+ * Keep debugger enabled while in any low power mode
+ */
+ HAL_DBGMCU_EnableDBGSleepMode();
+ HAL_DBGMCU_EnableDBGStopMode();
+ HAL_DBGMCU_EnableDBGStandbyMode();
+
+ /***************** ENABLE DEBUGGER *************************************/
+ LL_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
+
+#else
+
+ HAL_DBGMCU_DisableDBGSleepMode();
+ HAL_DBGMCU_DisableDBGStopMode();
+ HAL_DBGMCU_DisableDBGStandbyMode();
+
+#endif /* (CFG_DEBUGGER_SUPPORTED == 1) */
+
+#if(CFG_DEBUG_TRACE != 0)
+ DbgTraceInit();
+#endif
+
+ APPD_SetCPU2GpioConfig( );
+ APPD_BleDtbCfg( );
+
+ return;
+}
+
+void APPD_EnableCPU2( void )
+{
+ SHCI_C2_DEBUG_Init_Cmd_Packet_t DebugCmdPacket =
+ {
+ {{0,0,0}}, /**< Does not need to be initialized */
+ {(uint8_t *)aGpioConfigList,
+ (uint8_t *)&APPD_TracesConfig,
+ (uint8_t *)&APPD_GeneralConfig,
+ GPIO_CFG_NBR_OF_FEATURES,
+ NBR_OF_TRACES_CONFIG_PARAMETERS,
+ NBR_OF_GENERAL_CONFIG_PARAMETERS}
+ };
+
+ /**< Traces channel initialization */
+ TL_TRACES_Init( );
+
+ /** GPIO DEBUG Initialization */
+ SHCI_C2_DEBUG_Init( &DebugCmdPacket );
+
+ return;
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+static void APPD_SetCPU2GpioConfig( void )
+{
+ GPIO_InitTypeDef gpio_config = {0};
+ uint8_t local_loop;
+ uint16_t gpioa_pin_list;
+ uint16_t gpiob_pin_list;
+ uint16_t gpioc_pin_list;
+
+ gpioa_pin_list = 0;
+ gpiob_pin_list = 0;
+ gpioc_pin_list = 0;
+
+ for(local_loop = 0 ; local_loop < GPIO_CFG_NBR_OF_FEATURES; local_loop++)
+ {
+ if( aGpioConfigList[local_loop].enable != 0)
+ {
+ switch((uint32_t)aGpioConfigList[local_loop].port)
+ {
+ case (uint32_t)GPIOA:
+ gpioa_pin_list |= aGpioConfigList[local_loop].pin;
+ break;
+
+ case (uint32_t)GPIOB:
+ gpiob_pin_list |= aGpioConfigList[local_loop].pin;
+ break;
+
+ case (uint32_t)GPIOC:
+ gpioc_pin_list |= aGpioConfigList[local_loop].pin;
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+
+ gpio_config.Pull = GPIO_NOPULL;
+ gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
+ gpio_config.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+
+ if(gpioa_pin_list != 0)
+ {
+ gpio_config.Pin = gpioa_pin_list;
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_C2GPIOA_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOA, &gpio_config);
+ HAL_GPIO_WritePin(GPIOA, gpioa_pin_list, GPIO_PIN_RESET);
+ }
+
+ if(gpiob_pin_list != 0)
+ {
+ gpio_config.Pin = gpiob_pin_list;
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ __HAL_RCC_C2GPIOB_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOB, &gpio_config);
+ HAL_GPIO_WritePin(GPIOB, gpiob_pin_list, GPIO_PIN_RESET);
+ }
+
+ if(gpioc_pin_list != 0)
+ {
+ gpio_config.Pin = gpioc_pin_list;
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_C2GPIOC_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOC, &gpio_config);
+ HAL_GPIO_WritePin(GPIOC, gpioc_pin_list, GPIO_PIN_RESET);
+ }
+
+ return;
+}
+
+static void APPD_BleDtbCfg( void )
+{
+#if (BLE_DTB_CFG != 0)
+ GPIO_InitTypeDef gpio_config = {0};
+ uint8_t local_loop;
+ uint16_t gpioa_pin_list;
+ uint16_t gpiob_pin_list;
+
+ gpioa_pin_list = 0;
+ gpiob_pin_list = 0;
+
+ for(local_loop = 0 ; local_loop < GPIO_NBR_OF_RF_SIGNALS; local_loop++)
+ {
+ if( aRfConfigList[local_loop].enable != 0)
+ {
+ switch((uint32_t)aRfConfigList[local_loop].port)
+ {
+ case (uint32_t)GPIOA:
+ gpioa_pin_list |= aRfConfigList[local_loop].pin;
+ break;
+
+ case (uint32_t)GPIOB:
+ gpiob_pin_list |= aRfConfigList[local_loop].pin;
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+
+ gpio_config.Pull = GPIO_NOPULL;
+ gpio_config.Mode = GPIO_MODE_AF_PP;
+ gpio_config.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ gpio_config.Alternate = GPIO_AF6_RF_DTB7;
+
+ if(gpioa_pin_list != 0)
+ {
+ gpio_config.Pin = gpioa_pin_list;
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_C2GPIOA_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOA, &gpio_config);
+ }
+
+ if(gpiob_pin_list != 0)
+ {
+ gpio_config.Pin = gpiob_pin_list;
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ __HAL_RCC_C2GPIOB_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOB, &gpio_config);
+ }
+#endif
+
+ return;
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+*************************************************************/
+#if (CFG_DEBUG_TRACE != 0)
+void DbgOutputInit( void )
+{
+ HW_UART_Init(CFG_DEBUG_TRACE_UART);
+ return;
+}
+
+
+void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) )
+{
+ HW_UART_Transmit_DMA(CFG_DEBUG_TRACE_UART, p_data, size, cb);
+ return;
+}
+#endif
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/gatt_service.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/gatt_service.c
new file mode 100644
index 000000000..410a5defd
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/gatt_service.c
@@ -0,0 +1,231 @@
+/**
+******************************************************************************
+* @file gatt_service.c
+* @author MCD Application Team
+* @brief My Very Own Service (Custom STM)
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+* All rights reserved.</center></h2>
+*
+* This software component is licensed by ST under Ultimate Liberty license
+* SLA0044, the "License"; You may not use this file except in compliance with
+* the License. You may obtain a copy of the License at:
+* www.st.com/SLA0044
+*
+******************************************************************************
+*/
+
+
+/* Includes ------------------------------------------------------------------*/
+#include "ble_common.h"
+#include "ble.h"
+#include "gatt_service.h"
+#include "main.h"
+
+/* Private typedef -----------------------------------------------------------*/
+typedef struct{
+ uint16_t MyVeryOwnServiceHandle; /**< Service handle */
+ uint16_t MyVeryOwnWriteCharacteristicHandle; /**< Write Characteristic handle */
+ uint16_t MyVeryOwnNotifyCharacteristicHandle; /**< Notify Characteristic handle */
+} MyVeryOwnServiceContext_t;
+
+/* Private defines -----------------------------------------------------------*/
+/* My Very Own Service and Characteristics UUIDs */
+/*
+The following 128bits UUIDs have been generated from the random UUID
+generator:
+D973F2E0-B19E-11E2-9E96-0800200C9A66: Service 128bits UUID
+D973F2E1-B19E-11E2-9E96-0800200C9A66: Characteristic_1 128bits UUID
+D973F2E2-B19E-11E2-9E96-0800200C9A66: Characteristic_2 128bits UUID
+*/
+#define COPY_MY_VERY_OWN_SERVICE_UUID(uuid_struct) COPY_UUID_128(uuid_struct,0x00,0x00,0xfe,0x40,0xcc,0x7a,0x48,0x2a,0x98,0x4a,0x7f,0x2e,0xd5,0xb3,0xe5,0x8f)
+#define COPY_MY_VERY_OWN_WRITE_CHARACTERISTIC_UUID(uuid_struct) COPY_UUID_128(uuid_struct,0x00,0x00,0xfe,0x41,0x8e,0x22,0x45,0x41,0x9d,0x4c,0x21,0xed,0xae,0x82,0xed,0x19)
+#define COPY_MY_VERY_OWN_NOTIFY_CHARACTERISTIC_UUID(uuid_struct) COPY_UUID_128(uuid_struct,0x00,0x00,0xfe,0x42,0x8e,0x22,0x45,0x41,0x9d,0x4c,0x21,0xed,0xae,0x82,0xed,0x19)
+
+/** Max_Attribute_Records = 2*no_of_char + 1
+ * service_max_attribute_record = 1 for My Very Own service +
+ * 2 for My Very Own Write characteristic +
+ * 2 for My Very Own Notify characteristic +
+ * 1 for client char configuration descriptor +
+ *
+ */
+#define MY_VERY_OWN_SERVICE_MAX_ATT_RECORDS 8
+
+#define CHARACTERISTIC_VALUE_ATTRIBUTE_OFFSET 1
+
+/* Private macros ------------------------------------------------------------*/
+#define COPY_UUID_128(uuid_struct, uuid_15, uuid_14, uuid_13, uuid_12, uuid_11, uuid_10, uuid_9, uuid_8, uuid_7, uuid_6, uuid_5, uuid_4, uuid_3, uuid_2, uuid_1, uuid_0) \
+do {\
+ uuid_struct[0] = uuid_0; uuid_struct[1] = uuid_1; uuid_struct[2] = uuid_2; uuid_struct[3] = uuid_3; \
+ uuid_struct[4] = uuid_4; uuid_struct[5] = uuid_5; uuid_struct[6] = uuid_6; uuid_struct[7] = uuid_7; \
+ uuid_struct[8] = uuid_8; uuid_struct[9] = uuid_9; uuid_struct[10] = uuid_10; uuid_struct[11] = uuid_11; \
+ uuid_struct[12] = uuid_12; uuid_struct[13] = uuid_13; uuid_struct[14] = uuid_14; uuid_struct[15] = uuid_15; \
+}while(0)
+
+/* Private variables ---------------------------------------------------------*/
+
+/**
+* START of Section BLE_DRIVER_CONTEXT
+*/
+PLACE_IN_SECTION("BLE_DRIVER_CONTEXT") static MyVeryOwnServiceContext_t myVeryOwnServiceContext;
+
+/**
+* END of Section BLE_DRIVER_CONTEXT
+*/
+/* Private function prototypes -----------------------------------------------*/
+static SVCCTL_EvtAckStatus_t MyVeryOwnService_EventHandler(void *pckt);
+
+/* Functions Definition ------------------------------------------------------*/
+/* Private functions ---------------------------------------------------------*/
+
+/**
+* @brief Event handler
+* @param Event: Address of the buffer holding the Event
+* @retval Ack: Return whether the Event has been managed or not
+*/
+static SVCCTL_EvtAckStatus_t MyVeryOwnService_EventHandler(void *Event)
+{
+ SVCCTL_EvtAckStatus_t return_value;
+ hci_event_pckt *event_pckt;
+ evt_blue_aci *blue_evt;
+ aci_gatt_attribute_modified_event_rp0 *attribute_modified;
+ return_value = SVCCTL_EvtNotAck;
+ event_pckt = (hci_event_pckt *)(((hci_uart_pckt*)Event)->data);
+
+ switch(event_pckt->evt)
+ {
+ case EVT_VENDOR:
+ {
+ blue_evt = (evt_blue_aci*)event_pckt->data;
+ switch(blue_evt->ecode)
+ {
+ case EVT_BLUE_GATT_ATTRIBUTE_MODIFIED:
+ attribute_modified = (aci_gatt_attribute_modified_event_rp0*)blue_evt->data;
+ if(attribute_modified->Attr_Handle == (myVeryOwnServiceContext.MyVeryOwnWriteCharacteristicHandle + CHARACTERISTIC_VALUE_ATTRIBUTE_OFFSET))
+ {
+ if (attribute_modified->Attr_Data[1] == 0x01)
+ {
+ BSP_LED_On(LED_BLUE);
+ }
+ else {
+ BSP_LED_Off(LED_BLUE);
+ }
+ }
+
+ break;
+
+ default:
+ break;
+ }
+ }
+ break; /* HCI_EVT_VENDOR_SPECIFIC */
+
+ default:
+ break;
+ }
+
+ return(return_value);
+}/* end SVCCTL_EvtAckStatus_t */
+
+/* Public functions ----------------------------------------------------------*/
+
+/**
+* @brief Service initialization
+* @param None
+* @retval None
+*/
+void MyVeryOwnService_Init(void)
+{
+ tBleStatus ret = BLE_STATUS_SUCCESS;
+ Char_UUID_t uuid16;
+
+ /**
+ * Register the event handler to the BLE controller
+ */
+ SVCCTL_RegisterSvcHandler(MyVeryOwnService_EventHandler);
+
+ /**
+ * Add My Very Own Service
+ */
+ COPY_MY_VERY_OWN_SERVICE_UUID(uuid16.Char_UUID_128);
+ ret = aci_gatt_add_service(UUID_TYPE_128,
+ (Service_UUID_t *) &uuid16,
+ PRIMARY_SERVICE,
+ MY_VERY_OWN_SERVICE_MAX_ATT_RECORDS,
+ &(myVeryOwnServiceContext.MyVeryOwnServiceHandle));
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Add My Very Own Write Characteristic
+ */
+ COPY_MY_VERY_OWN_WRITE_CHARACTERISTIC_UUID(uuid16.Char_UUID_128);
+ ret = aci_gatt_add_char(myVeryOwnServiceContext.MyVeryOwnServiceHandle,
+ UUID_TYPE_128, &uuid16,
+ MY_VERY_OWN_WRITE_CHARACTERISTIC_VALUE_LENGTH,
+ CHAR_PROP_WRITE_WITHOUT_RESP|CHAR_PROP_READ,
+ ATTR_PERMISSION_NONE,
+ GATT_NOTIFY_ATTRIBUTE_WRITE, /* gattEvtMask */
+ 10, /* encryKeySize */
+ 1, /* isVariable */
+ &(myVeryOwnServiceContext.MyVeryOwnWriteCharacteristicHandle));
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Add My Very Own Notify Characteristic
+ */
+ COPY_MY_VERY_OWN_NOTIFY_CHARACTERISTIC_UUID(uuid16.Char_UUID_128);
+ ret = aci_gatt_add_char(myVeryOwnServiceContext.MyVeryOwnServiceHandle,
+ UUID_TYPE_128, &uuid16,
+ MY_VERY_OWN_NOTIFY_CHARACTERISTIC_VALUE_LENGTH,
+ CHAR_PROP_NOTIFY,
+ ATTR_PERMISSION_NONE,
+ GATT_NOTIFY_ATTRIBUTE_WRITE, /* gattEvtMask */
+ 10, /* encryKeySize */
+ 1, /* isVariable: 1 */
+ &(myVeryOwnServiceContext.MyVeryOwnNotifyCharacteristicHandle));
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ return;
+} /* MyVeryOwnService_Init() */
+
+/**
+* @brief Characteristic update
+* @param UUID: UUID of the characteristic
+* @param newValueLength: Length of the new value data to be written
+* @param pNewValue: Pointer to the new value data
+*/
+tBleStatus MyVeryOwnWriteCharacteristic_Update(uint16_t UUID, uint16_t newValueLength, uint8_t *pNewValue)
+{
+ tBleStatus ret = BLE_STATUS_INVALID_PARAMS;
+
+ switch(UUID)
+ {
+ case MY_VERY_OWN_NOTIFY_CHARACTERISTIC_UUID:
+ if (newValueLength <= MY_VERY_OWN_NOTIFY_CHARACTERISTIC_VALUE_LENGTH)
+ {
+ ret = aci_gatt_update_char_value(myVeryOwnServiceContext.MyVeryOwnServiceHandle,
+ myVeryOwnServiceContext.MyVeryOwnNotifyCharacteristicHandle,
+ 0, /* charValOffset */
+ newValueLength, /* charValueLen */
+ (uint8_t *) pNewValue);
+ }
+ break;
+ default:
+ break;
+ }
+
+ return ret;
+}/* end MyVeryOwnWriteCharacteristic_Update() */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/hw_ipcc.c
new file mode 100644
index 000000000..721c42fde
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/hw_ipcc.c
@@ -0,0 +1,263 @@
+/**
+ ******************************************************************************
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "mbox_def.h"
+
+/* Global variables ---------------------------------------------------------*/
+/* Private defines -----------------------------------------------------------*/
+#define HW_IPCC_TX_PENDING( channel ) ( !(LL_C1_IPCC_IsActiveFlag_CHx( IPCC, channel )) ) && (((~(IPCC->C1MR)) & (channel << 16U)))
+#define HW_IPCC_RX_PENDING( channel ) (LL_C2_IPCC_IsActiveFlag_CHx( IPCC, channel )) && (((~(IPCC->C1MR)) & (channel << 0U)))
+
+/* Private macros ------------------------------------------------------------*/
+/* Private typedef -----------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+static void (*FreeBufCb)( void );
+
+/* Private function prototypes -----------------------------------------------*/
+static void HW_IPCC_BLE_EvtHandler( void );
+static void HW_IPCC_BLE_AclDataEvtHandler( void );
+static void HW_IPCC_MM_FreeBufHandler( void );
+static void HW_IPCC_SYS_CmdEvtHandler( void );
+static void HW_IPCC_SYS_EvtHandler( void );
+static void HW_IPCC_TRACES_EvtHandler( void );
+
+/* Public function definition -----------------------------------------------*/
+
+/******************************************************************************
+ * INTERRUPT HANDLER
+ ******************************************************************************/
+void HW_IPCC_Rx_Handler( void )
+{
+ if (HW_IPCC_RX_PENDING( HW_IPCC_SYSTEM_EVENT_CHANNEL ))
+ {
+ HW_IPCC_SYS_EvtHandler();
+ }
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_BLE_EVENT_CHANNEL ))
+ {
+ HW_IPCC_BLE_EvtHandler();
+ }
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_TRACES_CHANNEL ))
+ {
+ HW_IPCC_TRACES_EvtHandler();
+ }
+
+ return;
+}
+
+void HW_IPCC_Tx_Handler( void )
+{
+ if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_SYS_CmdEvtHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_SYS_CmdEvtHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ))
+ {
+ HW_IPCC_MM_FreeBufHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_HCI_ACL_DATA_CHANNEL ))
+ {
+ HW_IPCC_BLE_AclDataEvtHandler();
+ }
+
+ return;
+}
+/******************************************************************************
+ * GENERAL
+ ******************************************************************************/
+void HW_IPCC_Enable( void )
+{
+ /**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
+ * In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
+ * In that case, to keep the mechanism transparent to the user application, it shall call the system command
+ * SHCI_C2_Reinit( ) before jumping to the application.
+ * When the CPU2 receives that command, it waits for its event input to be set to restart the CPU2 firmware.
+ * This is required because once C2BOOT has been set once, a clear/set on C2BOOT has no effect.
+ * When SHCI_C2_Reinit( ) is not called, generating an event to the CPU2 does not have any effect
+ * So, by default, the application shall both set the event flag and set the C2BOOT bit.
+ */
+ __SEV( ); /* Set the internal event flag and send an event to the CPU2 */
+ __WFE( ); /* Clear the internal event flag */
+ LL_PWR_EnableBootC2( );
+
+ return;
+}
+
+void HW_IPCC_Init( void )
+{
+ LL_AHB3_GRP1_EnableClock( LL_AHB3_GRP1_PERIPH_IPCC );
+
+ LL_C1_IPCC_EnableIT_RXO( IPCC );
+ LL_C1_IPCC_EnableIT_TXF( IPCC );
+
+ HAL_NVIC_EnableIRQ(IPCC_C1_RX_IRQn);
+ HAL_NVIC_EnableIRQ(IPCC_C1_TX_IRQn);
+
+ return;
+}
+
+/******************************************************************************
+ * BLE
+ ******************************************************************************/
+void HW_IPCC_BLE_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_BLE_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_BLE_CMD_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_BLE_EvtHandler( void )
+{
+ HW_IPCC_BLE_RxEvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_BLE_SendAclData( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_BLE_AclDataEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+
+ HW_IPCC_BLE_AclDataAckNot();
+
+ return;
+}
+
+__weak void HW_IPCC_BLE_AclDataAckNot( void ){};
+__weak void HW_IPCC_BLE_RxEvtNot( void ){};
+
+/******************************************************************************
+ * SYSTEM
+ ******************************************************************************/
+void HW_IPCC_SYS_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_SYS_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_SYS_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+
+ HW_IPCC_SYS_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_SYS_EvtHandler( void )
+{
+ HW_IPCC_SYS_EvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
+
+ return;
+}
+
+__weak void HW_IPCC_SYS_CmdEvtNot( void ){};
+__weak void HW_IPCC_SYS_EvtNot( void ){};
+
+/******************************************************************************
+ * MEMORY MANAGER
+ ******************************************************************************/
+void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )
+{
+ if ( LL_C1_IPCC_IsActiveFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ) )
+ {
+ FreeBufCb = cb;
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+ }
+ else
+ {
+ cb();
+
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+ }
+
+ return;
+}
+
+static void HW_IPCC_MM_FreeBufHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+
+ FreeBufCb();
+
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+
+ return;
+}
+
+/******************************************************************************
+ * TRACES
+ ******************************************************************************/
+void HW_IPCC_TRACES_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_TRACES_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_TRACES_EvtHandler( void )
+{
+ HW_IPCC_TRACES_EvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_TRACES_CHANNEL );
+
+ return;
+}
+
+__weak void HW_IPCC_TRACES_EvtNot( void ){};
+
+/******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/main.c
new file mode 100644
index 000000000..4679fe5ab
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/main.c
@@ -0,0 +1,1115 @@
+/* USER CODE BEGIN Header */
+/**
+******************************************************************************
+* @file main.c
+* @author MCD Application Team
+* @brief BLE application with BLE core
+*
+@verbatim
+==============================================================================
+##### IMPORTANT NOTE #####
+==============================================================================
+
+This application requests having the stm32wb5x_BLE_Stack_fw.bin binary
+flashed on the Wireless Coprocessor.
+If it is not the case, you need to use STM32CubeProgrammer to load the appropriate
+binary.
+
+All available binaries are located under following directory:
+/Projects/STM32_Copro_Wireless_Binaries
+
+Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
+Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the
+detailed procedure to change the Wireless Coprocessor binary.
+
+@endverbatim
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+* All rights reserved.</center></h2>
+*
+* This software component is licensed by ST under Ultimate Liberty license
+* SLA0044, the "License"; You may not use this file except in compliance with
+* the License. You may obtain a copy of the License at:
+* www.st.com/SLA0044
+*
+******************************************************************************
+*/
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "app_common.h"
+#include "hw_conf.h"
+#include "otp.h"
+#include "main.h"
+#include "ble.h"
+#include "hci_tl.h"
+#include "shci_tl.h"
+#include "shci.h"
+#include "app_debug.h"
+#include "gatt_service.h"
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+#define EVT_END_OF_RADIO_ACTIVITY 0x0004
+
+#define BD_ADDR_SIZE_LOCAL 6
+#define APP_BLE_GAP_DEVICE_NAME_LENGTH sizeof(gap_device_name)
+#define EVENT_POOL_SIZE (CFG_TLBLE_EVT_QUEUE_LENGTH*4U*DIVC(( sizeof(TL_PacketHeader_t) + TL_BLE_EVENT_FRAME_SIZE ), 4U))
+
+#define APP_FLAG_CPU2_INITIALIZED 0
+#define APP_FLAG_CPU2_ERROR 24
+#define APP_FLAG_WIRELESS_FW_RUNNING 1
+#define APP_FLAG_FUS_FW_RUNNING 2
+#define APP_FLAG_BLE_INITIALIZATION_ERROR 25
+#define APP_FLAG_BLE_INITIALIZED 3
+#define APP_FLAG_BLE_ADVERTISING 4
+#define APP_FLAG_BLE_CONNECTED 5
+#define APP_FLAG_HCI_COMMAND_SENT 16
+#define APP_FLAG_SHCI_COMMAND_SENT 17
+#define APP_FLAG_HCI_EVENT_PENDING 18
+#define APP_FLAG_SHCI_EVENT_PENDING 19
+#define APP_FLAG_GET(flag) VariableBit_Get_BB(((uint32_t)&APP_State), flag)
+#define APP_FLAG_SET(flag) VariableBit_Set_BB(((uint32_t)&APP_State), flag)
+#define APP_FLAG_RESET(flag) VariableBit_Reset_BB(((uint32_t)&APP_State), flag)
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+
+/* USER CODE BEGIN PV */
+static volatile uint32_t APP_State = 0x00000000;
+
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t EvtPool[EVENT_POOL_SIZE];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t SystemCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t BleCmdBuffer;
+PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static uint8_t SystemSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t BleSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255];
+
+static uint8_t bd_address_udn[BD_ADDR_SIZE_LOCAL];
+
+static uint8_t myVeryOwnNotifyCharacteristicData[MY_VERY_OWN_NOTIFY_CHARACTERISTIC_VALUE_LENGTH] = {0x00, 0x00};
+
+/* Generic Access GATT Service Characteristics configuration data */
+static const char gap_device_name[] = { 'H', 'E', 'L', 'L', 'O', '!' };
+static const uint16_t gap_appearance = BLE_CFG_GAP_APPEARANCE;
+
+/* GAP Advertising data */
+static const char ad_local_name[] = { AD_TYPE_COMPLETE_LOCAL_NAME, 'H', 'E', 'L', 'L', 'O', '!' };
+static uint8_t ad_manufacturer_specific_data[14] = { /* Manufacturer specific data used to get compliant with ST BLE Sensor smart phone apk */
+ sizeof(ad_manufacturer_specific_data)-1,
+ AD_TYPE_MANUFACTURER_SPECIFIC_DATA,
+ 0x01, /* BlueST Protocol version */
+ 0x83, /* BlueST Device Id: 0x83 - P2PServer1 - for more details please see BLE_p2pServer example project */
+ 0x00, /* BlueST Feature Mask bits 24~31 */
+ 0x00, /* BlueST Feature Mask bits 16~23 */
+ 0x00, /* BlueST Feature Mask bits 8~15 */
+ 0x00, /* BlueST Feature Mask bits 0~7 */
+ 0x00, /* BlueST Device MAC byte 5 */
+ 0x00, /* BlueST Device MAC byte 4 */
+ 0x00, /* BlueST Device MAC byte 3 */
+ 0x00, /* BlueST Device MAC byte 2 */
+ 0x00, /* BlueST Device MAC byte 1 */
+ 0x00 /* BlueST Device MAC byte 0 */
+};
+
+/* More details about BlueST protocol and how it is used in our demos and examples
+ can be found in the related documentation, e.g. in UM2496 */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_RF_Init(void);
+/* USER CODE BEGIN PFP */
+static void Tune_HSE(void);
+static void CPU2_Init(void);
+static void Ble_Tl_Init(void);
+static void Ble_Hci_Gap_Gatt_Init(void);
+static const uint8_t* Ble_GetBdAddress(void);
+static void SYS_UserEventReceivedCallback(void * pData);
+static void SYS_StatusNotificationCallback(SHCI_TL_CmdStatus_t status);
+static void SYS_ProcessEvent(void);
+static void BLE_UserEventReceivedCallback(void * pData);
+static void BLE_StatusNotificationCallback(HCI_TL_CmdStatus_t status);
+static void BLE_Init(void);
+static void BLE_Advertising(FlagStatus setReset);
+static void BLE_ProcessEvent(void);
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ /* USER CODE BEGIN 1 */
+ uint32_t prevTick = 0;
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* Tune the HSE internal load capacitors - P-NUCLEO-WB55.Nucleo board */
+ Tune_HSE();
+
+ /* Configure the debug support if needed */
+ APPD_Init();
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_RF_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* Initialize the GPIO pins for P-NUCLEO-WB55.Nucleo board LEDs control */
+ BSP_LED_Init(LED_RED);
+ BSP_LED_Init(LED_GREEN);
+ BSP_LED_Init(LED_BLUE);
+
+ /* Initialize all transport layers */
+ CPU2_Init();
+
+ /* Set the red LED On to indicate that the CPU2 is initializing */
+ BSP_LED_On(LED_RED);
+
+ /* Wait until the CPU2 gets initialized */
+ while((APP_FLAG_GET(APP_FLAG_CPU2_INITIALIZED) == 0) \
+ || (APP_FLAG_GET(APP_FLAG_WIRELESS_FW_RUNNING) == 0))
+ {
+ /* Process pending SYSTEM event coming from CPU2 (if any) */
+ SYS_ProcessEvent();
+ }
+
+ /* Configure the CPU2 Debug (Optional) */
+ APPD_EnableCPU2();
+
+ /* Set the red LED Off to indicate that the CPU2 is initialized */
+ BSP_LED_Off(LED_RED);
+
+ /* Set the green LED On to indicate that the wireless stack FW is running */
+ BSP_LED_On(LED_GREEN);
+
+ /* At this point it is still unknown from the app perspective, which wireless stack
+ and which version is installed on CPU2. It is expected that a BLE stack is installed.
+ In order to check that, SHCI_GetWirelessFwInfo(...) can be used to read out
+ the information about the CM0+ wireless stack FW running since the Device Information Table
+ is initialized. For more information on this topic, please refer to AN5289 and AN5185. */
+
+ /* Initialize BLE (BLE TL, BLE stack, HAL, HCI, GATT, GAP) */
+ BLE_Init();
+
+ /* Set the blue LED On to indicate that the BLE stack is initialized */
+ BSP_LED_On(LED_BLUE);
+
+ /* Initialize My Very Own GATT Service - user may also implement SVCCTL_InitCustomSvc()
+ interface function as explained in AN5289. SVCCTL_InitCustomSvc() is called at the end of
+ SVCCTL_Init() called from BLE_Init() */
+ MyVeryOwnService_Init();
+
+ /* Reset BLUE LED => Will be used by the example */
+ BSP_LED_Off(LED_BLUE);
+
+ /* Start BLE advertising */
+ BLE_Advertising(SET);
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while(1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ /* Process pending BLE event coming from CPU2 (if any) */
+ BLE_ProcessEvent();
+ /* Process pending SYSTEM event coming from CPU2 (if any) */
+ SYS_ProcessEvent();
+
+ /* Update the My Very Own Notify Characteristic every ~1 second and only if BLE connected.
+ It might be also done only after the GATT client enables the notifications,
+ but that is out of scope of this basic example */
+ if (APP_FLAG_GET(APP_FLAG_BLE_CONNECTED) != 0x00)
+ {
+ if ((HAL_GetTick() - prevTick) > 1000)
+ {
+ prevTick = HAL_GetTick();
+ myVeryOwnNotifyCharacteristicData[1] ^= 0x01;
+ if (MyVeryOwnWriteCharacteristic_Update(MY_VERY_OWN_NOTIFY_CHARACTERISTIC_UUID,
+ MY_VERY_OWN_NOTIFY_CHARACTERISTIC_VALUE_LENGTH,
+ myVeryOwnNotifyCharacteristicData) != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+ }
+ }
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+
+ /** Configure LSE Drive Capability
+ */
+ __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+ /** Initializes the CPU, AHB and APB busses clocks
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE
+ |RCC_OSCILLATORTYPE_LSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.LSEState = RCC_LSE_ON;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4|RCC_CLOCKTYPE_HCLK2
+ |RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLK2Divider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLK4Divider = RCC_SYSCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Initializes the peripherals clocks
+ */
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RFWAKEUP;
+ PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
+ PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
+
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief RF Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_RF_Init(void)
+{
+
+ /* USER CODE BEGIN RF_Init 0 */
+
+ /* USER CODE END RF_Init 0 */
+
+ /* USER CODE BEGIN RF_Init 1 */
+
+ /* USER CODE END RF_Init 1 */
+ /* USER CODE BEGIN RF_Init 2 */
+
+ /* USER CODE END RF_Init 2 */
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+
+}
+
+/* USER CODE BEGIN 4 */
+
+/**
+* @brief This function initializes and releases the CPU2 subsystem
+* @param None
+* @retval None
+*/
+static void CPU2_Init( void )
+{
+ TL_MM_Config_t tl_mm_config;
+ SHCI_TL_HciInitConf_t SHci_Tl_Init_Conf;
+
+ /**< Reference table initialization */
+ TL_Init();
+
+ /**< System channel initialization */
+ SHci_Tl_Init_Conf.p_cmdbuffer = (uint8_t*)&SystemCmdBuffer;
+ SHci_Tl_Init_Conf.StatusNotCallBack = SYS_StatusNotificationCallback;
+ shci_init(SYS_UserEventReceivedCallback, (void*) &SHci_Tl_Init_Conf);
+
+ /**< Memory Manager channel initialization */
+ tl_mm_config.p_AsynchEvtPool = EvtPool;
+ tl_mm_config.p_BleSpareEvtBuffer = BleSpareEvtBuffer; /* UNUSED, but kept for future compatibility */
+ tl_mm_config.p_SystemSpareEvtBuffer = SystemSpareEvtBuffer; /* UNUSED, but kept for future compatibility, but used by FUS today only */
+ tl_mm_config.AsynchEvtPoolSize = EVENT_POOL_SIZE;
+ TL_MM_Init( &tl_mm_config );
+
+ /**< Release the CPU2 */
+ TL_Enable();
+
+ return;
+}
+
+/**
+* @brief This function initializes the BLE stack
+* @param None
+* @retval None
+*/
+static void BLE_Init( void )
+{
+ SHCI_CmdStatus_t ret;
+
+ SHCI_C2_Ble_Init_Cmd_Packet_t ble_init_cmd_packet =
+ {
+ {{0,0,0}}, /**< Header unused */
+ {0, /** pBleBufferAddress not used */
+ 0, /** BleBufferSize not used */
+ CFG_BLE_NUM_GATT_ATTRIBUTES,
+ CFG_BLE_NUM_GATT_SERVICES,
+ CFG_BLE_ATT_VALUE_ARRAY_SIZE,
+ CFG_BLE_NUM_LINK,
+ CFG_BLE_DATA_LENGTH_EXTENSION,
+ CFG_BLE_PREPARE_WRITE_LIST_SIZE,
+ CFG_BLE_MBLOCK_COUNT,
+ CFG_BLE_MAX_ATT_MTU,
+ CFG_BLE_SLAVE_SCA,
+ CFG_BLE_MASTER_SCA,
+ CFG_BLE_LSE_SOURCE,
+ CFG_BLE_MAX_CONN_EVENT_LENGTH,
+ CFG_BLE_HSE_STARTUP_TIME,
+ CFG_BLE_VITERBI_MODE,
+ CFG_BLE_LL_ONLY,
+ 0}
+ };
+
+ /**
+ * Initialize Ble Transport Layer
+ */
+ Ble_Tl_Init( );
+
+ /**
+ * Starts the BLE Stack on CPU2
+ */
+ ret = SHCI_C2_BLE_Init( &ble_init_cmd_packet );
+ if (ret != SHCI_Success)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Initialization of HCI & GATT & GAP layer
+ */
+ Ble_Hci_Gap_Gatt_Init();
+
+ /**
+ * Initialization of the BLE Services
+ */
+ SVCCTL_Init();
+
+ return;
+}
+
+/**
+* @brief This function is used to process all events coming from BLE stack by executing the related callback
+* @param None
+* @retval None
+*/
+static void BLE_ProcessEvent(void)
+{
+ if (APP_FLAG_GET(APP_FLAG_HCI_EVENT_PENDING) == 1)
+ {
+ APP_FLAG_RESET(APP_FLAG_HCI_EVENT_PENDING);
+ hci_user_evt_proc();
+ }
+}
+
+/**
+* @brief This function initializes the BLE Transport Layer
+* @param None
+* @retval None
+*/
+static void Ble_Tl_Init( void )
+{
+ HCI_TL_HciInitConf_t Hci_Tl_Init_Conf;
+
+ /**< BLE channel initialization */
+ Hci_Tl_Init_Conf.p_cmdbuffer = (uint8_t*)&BleCmdBuffer;
+ Hci_Tl_Init_Conf.StatusNotCallBack = BLE_StatusNotificationCallback;
+ hci_init(BLE_UserEventReceivedCallback, (void*) &Hci_Tl_Init_Conf);
+
+ return;
+}
+
+/**
+* @brief This function starts or stops the BLE advertising
+* @param newState: SET to start the advertising, RESET to stop
+* @retval None
+*/
+static void BLE_Advertising(FlagStatus newState)
+{
+ tBleStatus ret = BLE_STATUS_SUCCESS;
+
+ if (newState == SET)
+ {
+ if (APP_FLAG_GET(APP_FLAG_BLE_ADVERTISING) == 0)
+ {
+ /**
+ * Put the device in a advertising & connectable mode.
+ */
+ ret = aci_gap_set_discoverable(ADV_IND, /*< Advertise as connectable, undirected. */
+ CFG_FAST_CONN_ADV_INTERVAL_MIN, /*< Set the advertising interval min value. */
+ CFG_FAST_CONN_ADV_INTERVAL_MAX, /*< Set the advertising interval max value. */
+ PUBLIC_ADDR, /*< Use the public address. */
+ NO_WHITE_LIST_USE, /*< No white list. */
+ sizeof(ad_local_name), (uint8_t*)ad_local_name,/*< Use a local name. */
+ 0, NULL, /*< Do not include the service UUID list. (no adopted services) */
+ 0x0000, 0x0000); /*< NaN, do not put in advertising data. */
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Update the advertising data.
+ */
+ ret = aci_gap_update_adv_data(sizeof(ad_manufacturer_specific_data), (uint8_t*)ad_manufacturer_specific_data);
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+ APP_FLAG_SET(APP_FLAG_BLE_ADVERTISING);
+ }
+ }
+ else {
+ /**
+ * Stop device advertising.
+ */
+ ret = aci_gap_set_non_discoverable();
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+ APP_FLAG_RESET(APP_FLAG_BLE_ADVERTISING);
+ }
+
+ return;
+}
+
+/**
+* @brief This function initializes the BLE stack and all its modules
+* @param None
+* @retval None
+*/
+static void Ble_Hci_Gap_Gatt_Init(void)
+{
+ uint16_t gap_service_handle, gap_dev_name_char_handle, gap_appearance_char_handle;
+ const uint8_t *bd_address;
+ uint32_t srd_bd_address[2];
+ tBleStatus ret = BLE_STATUS_SUCCESS;
+
+ /**
+ * BLE HCI Reset to synchronize BLE Stack
+ */
+ hci_reset();
+
+ /**
+ * Write the BD Address
+ */
+ bd_address = Ble_GetBdAddress();
+ aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET,
+ CONFIG_DATA_PUBADDR_LEN,
+ (uint8_t*) bd_address);
+
+ /**
+ * Put the BD address in the manufacturer specific advertising data (for iOS devices)
+ */
+ ad_manufacturer_specific_data[sizeof(ad_manufacturer_specific_data)-6] = bd_address[5];
+ ad_manufacturer_specific_data[sizeof(ad_manufacturer_specific_data)-5] = bd_address[4];
+ ad_manufacturer_specific_data[sizeof(ad_manufacturer_specific_data)-4] = bd_address[3];
+ ad_manufacturer_specific_data[sizeof(ad_manufacturer_specific_data)-3] = bd_address[2];
+ ad_manufacturer_specific_data[sizeof(ad_manufacturer_specific_data)-2] = bd_address[1];
+ ad_manufacturer_specific_data[sizeof(ad_manufacturer_specific_data)-1] = bd_address[0];
+
+ /**
+ * Static random Address
+ * The two upper bits shall be set to 1
+ * The lowest 32bits is read from the UDN to differentiate between devices
+ * The RNG may be used to provide a random number on each power on
+ */
+ srd_bd_address[1] = 0x0000ED6E;
+ srd_bd_address[0] = LL_FLASH_GetUDN( );
+ ret = aci_hal_write_config_data(CONFIG_DATA_RANDOM_ADDRESS_OFFSET,
+ CONFIG_DATA_RANDOM_ADDRESS_LEN,
+ (uint8_t*)srd_bd_address);
+
+ /**
+ * Set TX Power.
+ */
+ ret = aci_hal_set_tx_power_level(0, CFG_TX_POWER);
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Set Radio activity event mask.
+ */
+ ret = aci_hal_set_radio_activity_mask(CFG_RADIO_ACTIVITY_EVENT_MASK);
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Initialize GATT
+ */
+ ret = aci_gatt_init();
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Initialize GAP
+ */
+ ret = aci_gap_init(GAP_PERIPHERAL_ROLE,
+ 0,
+ APP_BLE_GAP_DEVICE_NAME_LENGTH,
+ &gap_service_handle,
+ &gap_dev_name_char_handle,
+ &gap_appearance_char_handle);
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Update GAP Service Device Name characteristic value
+ */
+ ret = aci_gatt_update_char_value(gap_service_handle,
+ gap_dev_name_char_handle,
+ 0,
+ sizeof(gap_device_name),
+ (uint8_t *)gap_device_name);
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ /**
+ * Update GAP Service Appearence characteristic value
+ */
+ ret = aci_gatt_update_char_value(gap_service_handle,
+ gap_appearance_char_handle,
+ 0,
+ sizeof(gap_appearance),
+ (uint8_t *)&gap_appearance);
+ if (ret != BLE_STATUS_SUCCESS)
+ {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ return;
+}
+
+/**
+* @brief This function generates the unique BD address from the UDN
+* @param None
+* @retval Pointer to the array holding the BD address
+*/
+const uint8_t* Ble_GetBdAddress(void)
+{
+ const uint8_t *bd_address;
+ uint32_t udn;
+ uint32_t company_id;
+ uint32_t device_id;
+
+ udn = LL_FLASH_GetUDN();
+
+ if(udn != 0xFFFFFFFF)
+ {
+ company_id = LL_FLASH_GetSTCompanyID();
+ device_id = LL_FLASH_GetDeviceID();
+
+ bd_address_udn[0] = (uint8_t)(udn & 0x000000FF);
+ bd_address_udn[1] = (uint8_t)( (udn & 0x0000FF00) >> 8 );
+ bd_address_udn[2] = (uint8_t)( (udn & 0x00FF0000) >> 16 );
+ bd_address_udn[3] = (uint8_t)device_id;
+ bd_address_udn[4] = (uint8_t)(company_id & 0x000000FF);;
+ bd_address_udn[5] = (uint8_t)( (company_id & 0x0000FF00) >> 8 );
+
+ bd_address = (const uint8_t *)bd_address_udn;
+ }
+ else {
+ Error_Handler(); /* UNEXPECTED */
+ }
+
+ return bd_address;
+}
+
+/**
+* @brief Interrupt service routine that must be called when the system channel
+* reports a packet has been received
+* As stated in AN5289, this API notifies the user that a system user event has been received.
+* The user has to call the shci_user_evt_proc() to process
+* the notification in the system transport layer.
+* As the shci_notify_asynch_evt() notification is called from the IPCC
+* Interrupt Service Routine, it is strongly recommended to implement
+* a background mechanism to call shci_user_evt_proc()
+* (out of IPCC Interrupt Service Routine).
+* @param pdata: Pointer to the packet or event data
+* @retval None
+*/
+void shci_notify_asynch_evt(void* pdata)
+{
+ APP_FLAG_SET(APP_FLAG_SHCI_EVENT_PENDING);
+ return;
+}
+
+/**
+* @brief This function informs the user that the response of the pending
+* system command has been received. It is called in the IPCC interrupt
+* context. When moving out from this API, the application may return
+* from the API shci_cmd_resp_wait().
+* @param flag: Release flag, always 0 (unused)
+* @retval None
+*/
+void shci_cmd_resp_release(uint32_t flag)
+{
+ APP_FLAG_RESET(APP_FLAG_SHCI_COMMAND_SENT);
+ return;
+}
+
+/**
+* @brief This function is called when an System HCI Command is sent and the response
+* is waited from the CPU2.
+* The application shall implement a mechanism to not return from this function
+* until the waited event is received.
+* This is notified to the application with shci_cmd_resp_release().
+* It is called from the same context the System HCI command has been sent.
+*
+* @param timeout: Waiting timeout, SHCI_TL_DEFAULT_TIMEOUT passed (fixed to 33 seconds as of today)
+* @retval None
+*/
+void shci_cmd_resp_wait(uint32_t timeout)
+{
+ APP_FLAG_SET(APP_FLAG_SHCI_COMMAND_SENT);
+ while (APP_FLAG_GET(APP_FLAG_SHCI_COMMAND_SENT) == 1);
+ return;
+}
+
+
+/**
+* @brief As stated in AN5289, this is the system event user callback. It is
+* registered and passed as argument to shci_init() function.
+* This reports the received system user event.
+* The buffer holding the received event is freed on return
+* of this function.
+* @param pData: pointer to a structure of tSHCI_UserEvtRxParam type
+*
+* typedef struct
+* {
+* SHCI_TL_UserEventFlowStatus_t status;
+* TL_EvtPacket_t *pckt;
+* } tSHCI_UserEvtRxParam;
+*
+* pckt: holds the address of the received event
+* status: provides a way for user to notify the system transport layer that the received packet
+* has not been processed and must not be thrown away. When not filled by the user on return
+* of UserEvtRx(), this parameter is set to SHCI_TL_UserEventFlow_Enable, which means the
+* user has processed the received event
+* @retval None
+*/
+static void SYS_UserEventReceivedCallback( void * pData )
+{
+ TL_AsynchEvt_t *p_sys_event;
+ SHCI_C2_Ready_Evt_t *p_sys_ready_event;
+ SCHI_SystemErrCode_t *p_sys_error_code;
+
+ p_sys_event = (TL_AsynchEvt_t*)(((tSHCI_UserEvtRxParam*)pData)->pckt->evtserial.evt.payload);
+
+ /* We have received some event from CPU2, so CPU2 to be considered as running and responding */
+ APP_FLAG_SET(APP_FLAG_CPU2_INITIALIZED);
+
+ switch(p_sys_event->subevtcode)
+ {
+ case SHCI_SUB_EVT_CODE_READY:
+ p_sys_ready_event = (SHCI_C2_Ready_Evt_t*)p_sys_event->payload;
+ if (p_sys_ready_event->sysevt_ready_rsp == WIRELESS_FW_RUNNING)
+ {
+ APP_FLAG_RESET(APP_FLAG_FUS_FW_RUNNING);
+ APP_FLAG_SET(APP_FLAG_WIRELESS_FW_RUNNING);
+ /* RF stack installed and ready */
+ }
+ else if (p_sys_ready_event->sysevt_ready_rsp == RSS_FW_RUNNING)
+ {
+ APP_FLAG_SET(APP_FLAG_FUS_FW_RUNNING);
+ APP_FLAG_RESET(APP_FLAG_WIRELESS_FW_RUNNING);
+
+ /* No RF stack installed most probably */
+ Error_Handler(); /* UNEXPECTED */
+ }
+ else {
+ APP_FLAG_SET(APP_FLAG_CPU2_ERROR);
+ Error_Handler(); /* UNEXPECTED */
+ }
+ break; /* SHCI_SUB_EVT_CODE_READY */
+ case SHCI_SUB_EVT_ERROR_NOTIF:
+ APP_FLAG_SET(APP_FLAG_CPU2_ERROR);
+
+ p_sys_error_code = (SCHI_SystemErrCode_t*)p_sys_event->payload;
+ if (p_sys_error_code == ERR_BLE_INIT)
+ {
+ /* Error during BLE stack initialization */
+ APP_FLAG_SET(APP_FLAG_BLE_INITIALIZATION_ERROR);
+ Error_Handler(); /* UNEXPECTED */
+ }
+ else {
+ Error_Handler(); /* UNEXPECTED */
+ }
+ break; /* SHCI_SUB_EVT_ERROR_NOTIF */
+ default:
+ break;
+ }
+
+ ((tSHCI_UserEvtRxParam *)pData)->status = SHCI_TL_UserEventFlow_Disable;
+
+ return;
+}
+
+/**
+* @brief As stated in AN5289, this is the callback used to acknowledge
+* if a system command can be sent. It is registered in shci_init()
+* It must be used in a multi-thread application where the system commands
+* may be sent from different threads.
+*
+* switch (status)
+* {
+* case SHCI_TL_CmdBusy:
+* break;
+* case SHCI_TL_CmdAvailable:
+* break;
+* default:
+* break;
+*
+* @param status: SHCI_TL_CmdBusy in case the system transport layer is busy and no
+* new system command are be sent, SHCI_TL_CmdAvailable otherwise
+* @retval None
+*/
+static void SYS_StatusNotificationCallback( SHCI_TL_CmdStatus_t status )
+{
+ /* Callback not implemented - code flow under control of the developer */
+ UNUSED(status);
+ return;
+}
+
+/**
+* @brief This function is used to process all events coming from BLE stack by executing the related callback
+* @param None
+* @retval None
+*/
+static void SYS_ProcessEvent(void)
+{
+ if (APP_FLAG_GET(APP_FLAG_SHCI_EVENT_PENDING) == 1)
+ {
+ APP_FLAG_RESET(APP_FLAG_SHCI_EVENT_PENDING);
+ shci_user_evt_proc();
+ }
+}
+
+/**
+* @brief Callback called from related IPCC RX Interrupt Service Routine, called when the BLE core (CPU2)
+* reports a packet received or an event to the host.
+* As stated in AN5289, this API notifies the user that a BLE user event has been received.
+* The user has to call the hci_user_evt_proc() to process
+* the notification in the BLE transport layer.
+* As the hci_notify_asynch_evt() notification is called from the IPCC
+* Interrupt Service Routine, it is strongly recommended to implement
+* a background mechanism to call hci_user_evt_proc()
+* (out of IPCC Interrupt Service Routine).
+* @param pdata: Pointer to the packet or event data
+* @retval None
+*/
+void hci_notify_asynch_evt(void* pdata)
+{
+ APP_FLAG_SET(APP_FLAG_HCI_EVENT_PENDING);
+ return;
+}
+
+/**
+* @brief As stated in AN5289, this function is called when an ACI/HCI command is sent and the response is
+* received from the BLE core.
+*
+* @param flag: Release flag, always 0 (unused)
+* @retval None
+*/
+void hci_cmd_resp_release(uint32_t flag)
+{
+ APP_FLAG_RESET(APP_FLAG_HCI_COMMAND_SENT);
+ return;
+}
+
+/**
+* @brief As stated in AN5289, this function is called when an ACI/HCI command is sent and the response
+* is waited from the BLE core.
+* The application shall implement a mechanism to not return from this function
+* until the waited event is received.
+* This is notified to the application with hci_cmd_resp_release().
+* It is called from the same context the HCI command has been sent.
+*
+* @param timeout: Waiting timeout, HCI_TL_DEFAULT_TIMEOUT passed (fixed to 33 seconds as of today)
+* @retval None
+*/
+void hci_cmd_resp_wait(uint32_t timeout)
+{
+ APP_FLAG_SET(APP_FLAG_HCI_COMMAND_SENT);
+ while (APP_FLAG_GET(APP_FLAG_HCI_COMMAND_SENT) == 1);
+ return;
+}
+
+/**
+* @brief As stated in AN5289, this is the BLE event user callback. It is
+* registered and passed as argument to hci_init() function.
+* This reports the received BLE user event.
+* The buffer holding the received event is freed on return
+* of this function.
+* @param pData: pointer to a structure of tHCI_UserEvtRxParam type
+*
+* typedef struct
+* {
+* HCI_TL_UserEventFlowStatus_t status;
+* TL_EvtPacket_t *pckt;
+* } tHCI_UserEvtRxParam;
+*
+* pckt: holds the address of the received event
+* status: provides a way for the user to notify the HCI transport layer that the received packet has not been processed and
+* must not be thrown away. When not filled by the user on return of UserEvtRx(), this parameter is set to HCI_TL_UserEventFlow_Enable
+* which means the user has processed the received event.
+* @retval None
+*/
+static void BLE_UserEventReceivedCallback( void * pData )
+{
+ SVCCTL_UserEvtFlowStatus_t svctl_return_status;
+ tHCI_UserEvtRxParam *pParam;
+
+ pParam = (tHCI_UserEvtRxParam *)pData;
+
+ svctl_return_status = SVCCTL_UserEvtRx((void *)&(pParam->pckt->evtserial));
+ if (svctl_return_status != SVCCTL_UserEvtFlowDisable)
+ {
+ pParam->status = HCI_TL_UserEventFlow_Enable;
+ }
+ else
+ {
+ pParam->status = HCI_TL_UserEventFlow_Disable;
+ }
+}
+
+/**
+* @brief As stated in AN5289, this is the callback used to acknowledge
+* if a BLE command can be sent. It is registered in hci_init()
+* It must be used in a multi-thread application where the BLE commands
+* may be sent from different threads.
+*
+* switch (status)
+* {
+* case HCI_TL_CmdBusy:
+* break;
+* case HCI_TL_CmdAvailable:
+* break;
+* default:
+* break;
+*
+* @param status: HCI_TL_CmdBusy in case HCI transport layer is busy and no new
+* BLE command can be sent, HCI_TL_CmdAvailable otherwise
+* @retval None
+*/
+static void BLE_StatusNotificationCallback(HCI_TL_CmdStatus_t status)
+{
+ /* Callback not implemented - code flow under control of the developer */
+ UNUSED(status);
+ return;
+}
+
+/**
+* @brief Read the HSE trimming value from OTP memory
+* @param None
+* @retval None
+*/
+static void Tune_HSE(void)
+{
+/* !!! WARNING !!! Following code is valid only for P-NUCLEO-WB55 boards.
+Code must be reviewed and optionally reimplemented depending on the target HW
+and HSE capacitor tuning value storage location.
+Please read AN5042 - HSE trimming for RF applications using the STM32WB series. */
+
+ OTP_ID0_t * p_otp;
+
+ /**
+ * Read HSE_Tuning from OTP
+ */
+ p_otp = (OTP_ID0_t *) OTP_Read(0);
+ if (p_otp)
+ {
+ LL_RCC_HSE_SetCapacitorTuning(p_otp->hse_tuning);
+ }
+
+ return;
+}
+
+/**
+* @brief This callback is triggered when either
+* + a GAP event is received from the BLE core device.
+* + a GATT event that has not been positively acknowledged by the registered handler is received from the
+* BLE core device.
+* The event is returned in a HCI packet. The full HCI packet is stored in a single buffer and is available when
+* this callback is triggered. However, an ACI event may be longer than a HCI packet and could be fragmented over
+* several HCI packets. The HCI layer only handles HCI packets so when an ACI packet is split over several HCI
+* packets, this callback is triggered for each HCI fragment. It is the responsibility of the application to
+* reassemble the ACI event.
+* This callback is triggered in the TL_BLE_HCI_UserEvtProc() context
+*
+* @param pckt: The user event received from the BLE core device
+* @retval None
+*/
+SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
+{
+ hci_event_pckt *event_pckt;
+ evt_blue_aci *blue_evt;
+ evt_le_meta_event *le_meta_evt;
+
+ event_pckt = (hci_event_pckt*) ((hci_uart_pckt *) pckt)->data;
+
+ switch (event_pckt->evt)
+ {
+ case EVT_DISCONN_COMPLETE:
+ APP_FLAG_RESET(APP_FLAG_BLE_CONNECTED);
+ /* Start advertising */
+ BLE_Advertising(SET);
+ break; /* EVT_DISCONN_COMPLETE */
+ case EVT_LE_META_EVENT:
+ le_meta_evt = (evt_le_meta_event *)(event_pckt->data);
+ switch (le_meta_evt->subevent)
+ {
+ case EVT_LE_CONN_COMPLETE:
+ APP_FLAG_RESET(APP_FLAG_BLE_ADVERTISING);
+ APP_FLAG_SET(APP_FLAG_BLE_CONNECTED);
+ break; /* EVT_LE_CONN_COMPLETE */
+ default:
+ break;
+ }
+ break; /* EVT_LE_CONN_COMPLETE */
+ case EVT_VENDOR:
+ blue_evt = (evt_blue_aci*) event_pckt->data;
+ switch (blue_evt->ecode)
+ {
+ case EVT_END_OF_RADIO_ACTIVITY:
+ BSP_LED_Toggle(LED_GREEN);
+ break; /* EVT_END_OF_RADIO_ACTIVITY */
+ }
+ break; /* EVT_VENDOR */
+
+ default:
+ break;
+ }
+
+ return (SVCCTL_UserEvtFlowEnable);
+}
+
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+
+ while(1)
+ {
+ BSP_LED_Toggle(LED_RED);
+ HAL_Delay(250);
+ }
+
+ /* USER CODE END Error_Handler_Debug */
+}
+
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/stm32wbxx_hal_msp.c
new file mode 100644
index 000000000..636f1185b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/stm32wbxx_hal_msp.c
@@ -0,0 +1,83 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : stm32wbxx_hal_msp.c
+ * Description : This file provides code for the MSP Initialization
+ * and de-Initialization codes.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Define */
+
+/* USER CODE END Define */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Macro */
+
+/* USER CODE END Macro */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* External functions --------------------------------------------------------*/
+/* USER CODE BEGIN ExternalFunctions */
+
+/* USER CODE END ExternalFunctions */
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+/**
+ * Initializes the Global MSP.
+ */
+void HAL_MspInit(void)
+{
+ /* USER CODE BEGIN MspInit 0 */
+
+ /* USER CODE END MspInit 0 */
+
+ __HAL_RCC_HSEM_CLK_ENABLE();
+
+ /* System interrupt init*/
+
+ /* USER CODE BEGIN MspInit 1 */
+
+ /* USER CODE END MspInit 1 */
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/stm32wbxx_it.c
new file mode 100644
index 000000000..55e1e5b61
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/stm32wbxx_it.c
@@ -0,0 +1,219 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32wbxx_it.c
+ * @author MCD Application Team
+ * @brief Main Interrupt Service Routines.
+ * This file provides template for all exceptions handler and
+ * peripherals interrupt service routine.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32wbxx_it.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/* Cortex Processor Interruption and Exception Handlers */
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+
+ /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+ /* USER CODE END W1_HardFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+ /* USER CODE END W1_MemoryManagement_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Prefetch fault, memory access fault.
+ */
+void BusFault_Handler(void)
+{
+ /* USER CODE BEGIN BusFault_IRQn 0 */
+
+ /* USER CODE END BusFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_BusFault_IRQn 0 */
+ /* USER CODE END W1_BusFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Undefined instruction or illegal state.
+ */
+void UsageFault_Handler(void)
+{
+ /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+ /* USER CODE END UsageFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
+ /* USER CODE END W1_UsageFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles System service call via SWI instruction.
+ */
+void SVC_Handler(void)
+{
+ /* USER CODE BEGIN SVCall_IRQn 0 */
+
+ /* USER CODE END SVCall_IRQn 0 */
+ /* USER CODE BEGIN SVCall_IRQn 1 */
+
+ /* USER CODE END SVCall_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Debug monitor.
+ */
+void DebugMon_Handler(void)
+{
+ /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+ /* USER CODE END DebugMonitor_IRQn 0 */
+ /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+ /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Pendable request for system service.
+ */
+void PendSV_Handler(void)
+{
+ /* USER CODE BEGIN PendSV_IRQn 0 */
+
+ /* USER CODE END PendSV_IRQn 0 */
+ /* USER CODE BEGIN PendSV_IRQn 1 */
+
+ /* USER CODE END PendSV_IRQn 1 */
+}
+
+/**
+ * @brief This function handles System tick timer.
+ */
+void SysTick_Handler(void)
+{
+ /* USER CODE BEGIN SysTick_IRQn 0 */
+
+ /* USER CODE END SysTick_IRQn 0 */
+ HAL_IncTick();
+ /* USER CODE BEGIN SysTick_IRQn 1 */
+
+ /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32WBxx Peripheral Interrupt Handlers */
+/* Add here the Interrupt Handlers for the used peripherals. */
+/* For the available peripheral interrupt handler names, */
+/* please refer to the startup file (startup_stm32wbxx.s). */
+/******************************************************************************/
+
+/* USER CODE BEGIN 1 */
+
+void IPCC_C1_TX_IRQHandler(void)
+{
+ HW_IPCC_Tx_Handler();
+ return;
+}
+
+void IPCC_C1_RX_IRQHandler(void)
+{
+ HW_IPCC_Rx_Handler();
+ return;
+}
+
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/system_stm32wbxx.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/system_stm32wbxx.c
index d4653a0ce..d4653a0ce 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/system_stm32wbxx.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/Src/system_stm32wbxx.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/readme.txt
new file mode 100644
index 000000000..f8cdd08bd
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Peripheral_Lite/readme.txt
@@ -0,0 +1,111 @@
+/**
+ @page BLE_Peripheral_Lite Application
+
+ @verbatim
+ ******************************************************************************
+ * @file BLE/BLE_Peripheral_Lite/readme.txt
+ * @author MCD Application Team
+ * @brief Description of the BLE_Peripheral_Lite application
+ ******************************************************************************
+ *
+ * Copyright (c) 2019 STMicroelectronics. All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ @endverbatim
+
+@par Application Description
+
+How to communicate with simple BLE peripheral with minimum activated features.
+
+This example is to demonstrate simple BLE peripheral operation with bidirectional communication with minimalistic CPU2 configuration flow
+and Lite service support with minimum needed features activation (not including e.g. Tasks Sequencer, Timer Server, Low-Power Manager).
+
+One STM32WB55xx board is used acting as GAP Peripheral and GATT Server.
+Android/iOS BLE compatible device with recommended ST BLE Profile application (such as ST BLE Sensor application)
+installed to be used as GAP Central and GATT Client.
+
+@note Care must be taken when using HAL_Delay(), this function provides accurate delay (in milliseconds)
+ based on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from
+ a peripheral ISR process, then the SysTick interrupt must have higher priority (numerically lower)
+ than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
+ To change the SysTick interrupt priority you have to use HAL_NVIC_SetPriority() function.
+
+@note The application needs to ensure that the SysTick time base is always set to 1 millisecond
+ to have correct HAL operation.
+
+@par Directory contents
+
+ - BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_hal_conf.h HAL configuration file
+ - BLE/BLE_Peripheral_Lite/Inc/stm32wbxx_it.h Interrupt handlers header file
+ - BLE/BLE_Peripheral_Lite/Inc/main.h Header for main.c module
+ - BLE/BLE_Peripheral_Lite/Inc/gatt_service.h Header for gatt_service.c module
+ - BLE/BLE_Peripheral_Lite/Inc/app_common.h Header for all modules with common definition
+ - BLE/BLE_Peripheral_Lite/Inc/app_conf.h Parameters configuration file of the application
+ - BLE/BLE_Peripheral_Lite/Inc/hw_conf.h Configuration file of the HW
+ - BLE/BLE_Peripheral_Lite/Inc/utilities_conf.h Configuration file of the utilities
+ - BLE/BLE_Peripheral_Lite/Src/stm32wbxx_it.c Interrupt handlers
+ - BLE/BLE_Peripheral_Lite/Src/main.c Main program and BLE Profile implementation
+ - BLE/BLE_Peripheral_Lite/Src/system_stm32wbxx.c stm32wbxx system source file
+ - BLE/BLE_Peripheral_Lite/Src/gatt_service.c custom STM my very own service implementation
+ - BLE/BLE_Peripheral_Lite/Src/hw_ipcc.c IPCC Driver
+ - BLE/BLE_Peripheral_Lite/Src/app_debug.c CPU2 debug and trace support
+
+@par Hardware and Software environment
+
+ - This application runs on STM32WB55xx devices & Nucleo board (MB1355C)
+
+@par How to use it ?
+
+This application requests having the stm32wb5x_BLE_Stack_fw.bin binary flashed on the Wireless Coprocessor.
+If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
+All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory.
+Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
+Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the detailed procedure to change the
+Wireless Coprocessor binary.
+
+In order to make the program work, you must do the following :
+ - Open your preferred toolchain
+ - Rebuild all files and load the image into Target memory
+ - OR use the BLE_Peripheral_Lite_reference.hex from Binary directory
+ - This must be done for BLE_Peripheral_Lite (MB1355C)
+
+First demonstration
+On the android/ios device, enable the Bluetooth communications, and if not done before,
+ - Install the ST BLE Profile application on the android device
+ https://play.google.com/store/apps/details?id=com.stm.bluetoothlevalidation&hl=en
+ https://itunes.apple.com/fr/App/st-ble-profile/id1081331769?mt=8
+
+ - Install the ST BLE Sensor application on the ios/android device
+ https://play.google.com/store/apps/details?id=com.st.bluems
+ https://itunes.apple.com/us/App/st-bluems/id993670214?mt=8
+
+ - Power on the Nucleo board with the BLE_Peripheral_Lite application
+ - Then, click on the App icon, ST BLE Sensor (android device)
+ - connect to the device
+ - select the "HELLO!" device(containing My Very Own service as P2PServer profile) in the list and play with the button to switch on/off blue LED on nucleo board.
+
+Demonstration scheduling
+
+ - Once the code (BLE_Peripheral_Lite) is downloaded into the STM32WB55xx board and executed, the module is initialized.
+ - The red LED switch On to indicate that the CPU2 is initializing and switch Off when CPU2 is initialized.
+ - The green LED switch On to indicate that the wireless stack FW is running.
+ - The blue LED switch On to indicate that the wireless stack FW has been initialized.
+ and blue LED switch OFF when custom STM GATT service called "My very own service" has been initialized.
+ - The Peripheral device (BLE_Peripheral_Lite) starts advertising with data using local name "HELLO!".
+ - The green led blinks for each advertising event slowly each ~0.5sec.
+ - The Central device (ST BLE Sensor smart phone application) starts scanning and when the peripheral is found and selected in advices list,
+ it connects to the Server device Nucleo board (MB1355C).
+ - The button event on ST BLE Sensor application interface enables to switch On/Off blue led on Nucleo board.
+ - Notification is sent from the server (Peripheral device - Nucleo board (MB1355C)) to the client (Central device - Smart phone) every ~1sec.
+ - When the Peripheral device (Nucleo board (MB1355C)) is disconnected, advertising is restarted and it is possible to connect to it again.
+
+ For more details refer to the Application Note:
+ AN5289 - Building a Wireless application
+
+ * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
+ */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/Core/Src/app_entry.c
index a4281a8eb..6ad579132 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
/**< Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewd
index 5689e7748..32175e8b3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_Proximity</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewp
index 466ad4f0d..8c5c5ec21 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/EWARM/BLE_Proximity.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_Proximity</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_Proximity\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_Proximity\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_Proximity\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -654,7 +654,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -662,7 +662,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>stm32wb55rg_nucleo_BLE_Proximity.bin</state>
+ <state>BLE_Proximity.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1049,9 +1049,6 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
@@ -1061,6 +1058,9 @@
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
</file>
</group>
@@ -1075,16 +1075,16 @@
<group>
<name>app</name>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\app_ble.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\app_ble.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\ias_app.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\ias_app.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\lls_app.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\lls_app.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\tps_app.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\tps_app.c</name>
</file>
</group>
<group>
@@ -1139,12 +1139,6 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr_ex.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi.c</name>
- </file>
- <file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi_ex.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc.c</name>
</file>
<file>
@@ -1157,6 +1151,12 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc_ex.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_spi_ex.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart.c</name>
</file>
<file>
@@ -1228,10 +1228,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvoptx
index aadda47d9..c6be51204 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvoptx
@@ -1,7 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_Proximity</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -51,11 +73,11 @@
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
- <CpuCode>0</CpuCode>
+ <CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,756 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>Application/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/ias_app.c</PathWithFileName>
+ <FilenameWithoutPath>ias_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/lls_app.c</PathWithFileName>
+ <FilenameWithoutPath>lls_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/tps_app.c</PathWithFileName>
+ <FilenameWithoutPath>tps_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_spi.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_spi_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/blesvc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/ias.c</PathWithFileName>
+ <FilenameWithoutPath>ias.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/lls.c</PathWithFileName>
+ <FilenameWithoutPath>lls.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/tps.c</PathWithFileName>
+ <FilenameWithoutPath>tps.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvprojx
index d19fed360..ec4bd6ee2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/MDK-ARM/BLE_Proximity.uvprojx
@@ -1,41 +1,46 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
- <TargetName>Production</TargetName>
+ <Target>
+ <TargetName>BLE_Proximity</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -43,45 +48,49 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_Proximity\Exe\</OutputDirectory>
<OutputName>BLE_Proximity</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>0</CreateHexFile>
+ <CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +104,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +126,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +138,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +175,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +190,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +243,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +273,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +298,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +307,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +324,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls/>
+ <MiscControls></MiscControls>
<Define>USE_STM32WBXX_NUCLEO,STM32WB55xx,USE_HAL_DRIVER,CORE_CM4</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/maptab;../../../../../../Middlewares/ST/STM32_WPAN/ble/menu;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/ble;../Core/Inc;../STM32_WPAN/app</IncludePath>
</VariousControls>
</Cads>
@@ -371,11 +348,14 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
- <IncludePath/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
@@ -387,22 +367,18 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
- <Group>
+ <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -439,7 +415,7 @@
</Group>
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -727,20 +703,24 @@
</File>
</Files>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ </Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_Proximity"/>
</targetInfos>
</component>
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/.cproject
index b80b45cf8..ddd2a5182 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1636059181" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.241696541" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.980254527" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1497373287" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_Proximity}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1497373287" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -140,7 +140,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.314106071" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_Proximity.fr.ac6.managedbuild.target.gnu.cross.exe.314106071" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -151,7 +151,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_Proximity"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/.project
index afa476d0a..40cca01f2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_Proximity</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Proximity/SW4STM32/BLE_Proximity/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/BLE_TransparentMode.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/BLE_TransparentMode.ioc
index c0f80ac60..7d3e78d9f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/BLE_TransparentMode.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/BLE_TransparentMode.ioc
@@ -1,24 +1,6 @@
#MicroXplorer Configuration settings - do not modify
-Dma.LPUART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH
-Dma.LPUART1_TX.1.EventEnable=DISABLE
-Dma.LPUART1_TX.1.Instance=DMA1_Channel4
-Dma.LPUART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.LPUART1_TX.1.MemInc=DMA_MINC_ENABLE
-Dma.LPUART1_TX.1.Mode=DMA_NORMAL
-Dma.LPUART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.LPUART1_TX.1.PeriphInc=DMA_PINC_DISABLE
-Dma.LPUART1_TX.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING
-Dma.LPUART1_TX.1.Priority=DMA_PRIORITY_LOW
-Dma.LPUART1_TX.1.RequestNumber=1
-Dma.LPUART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
-Dma.LPUART1_TX.1.SignalID=HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT
-Dma.LPUART1_TX.1.SyncEnable=DISABLE
-Dma.LPUART1_TX.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
-Dma.LPUART1_TX.1.SyncRequestNumber=1
-Dma.LPUART1_TX.1.SyncSignalID=HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT
Dma.Request0=USART1_TX
-Dma.Request1=LPUART1_TX
-Dma.RequestsNb=2
+Dma.RequestsNb=1
Dma.USART1_TX.0.Direction=DMA_MEMORY_TO_PERIPH
Dma.USART1_TX.0.EventEnable=DISABLE
Dma.USART1_TX.0.Instance=DMA2_Channel4
@@ -38,70 +20,45 @@ Dma.USART1_TX.0.SyncRequestNumber=1
Dma.USART1_TX.0.SyncSignalID=NONE
File.Version=6
KeepUserPlacement=true
-LPUART1.BaudRate=115200
-LPUART1.DMADisableonRxErrorParam=UART_ADVFEATURE_DMA_ENABLEONRXERROR
-LPUART1.DataInvertParam=UART_ADVFEATURE_DATAINV_DISABLE
-LPUART1.FIFOMode=UART_FIFOMODE_DISABLE
-LPUART1.IPParameters=BaudRate,WordLength,Parity,StopBits,Mode,OneBitSampling,Prescaler,FIFOMode,TXFIFOThreshold,RXFIFOThreshold,TxPinLevelInvertParam,RxPinLevelInvertParam,DataInvertParam,SwapParam,OverrunDisableParam,DMADisableonRxErrorParam,MSBFirstParam
-LPUART1.IPParametersWithoutCheck=BaudRate
-LPUART1.MSBFirstParam=UART_ADVFEATURE_MSBFIRST_DISABLE
-LPUART1.Mode=UART_MODE_TX_RX
-LPUART1.OneBitSampling=UART_ONE_BIT_SAMPLE_DISABLE
-LPUART1.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_ENABLE
-LPUART1.Parity=UART_PARITY_NONE
-LPUART1.Prescaler=UART_PRESCALER_DIV1
-LPUART1.RXFIFOThreshold=UART_RXFIFO_THRESHOLD_1_8
-LPUART1.RxPinLevelInvertParam=UART_ADVFEATURE_RXINV_DISABLE
-LPUART1.StopBits=UART_STOPBITS_1
-LPUART1.SwapParam=UART_ADVFEATURE_SWAP_DISABLE
-LPUART1.TXFIFOThreshold=UART_TXFIFO_THRESHOLD_1_8
-LPUART1.TxPinLevelInvertParam=UART_ADVFEATURE_TXINV_DISABLE
-LPUART1.WordLength=UART_WORDLENGTH_8B
Mcu.Family=STM32WB
Mcu.IP0=DMA
Mcu.IP1=HSEM
-Mcu.IP10=TINY_LPM
-Mcu.IP11=USART1
-Mcu.IP2=LPUART1
-Mcu.IP3=NVIC
-Mcu.IP4=RCC
-Mcu.IP5=RF
-Mcu.IP6=RTC
-Mcu.IP7=SEQUENCER
-Mcu.IP8=STM32_WPAN
-Mcu.IP9=SYS
-Mcu.IPNb=12
+Mcu.IP10=USART1
+Mcu.IP2=NVIC
+Mcu.IP3=RCC
+Mcu.IP4=RF
+Mcu.IP5=RTC
+Mcu.IP6=SEQUENCER
+Mcu.IP7=STM32_WPAN
+Mcu.IP8=SYS
+Mcu.IP9=TINY_LPM
+Mcu.IPNb=11
Mcu.Name=STM32WB55RGVx
Mcu.Package=VFQFPN68
Mcu.Pin0=PC14-OSC32_IN
Mcu.Pin1=PC15-OSC32_OUT
-Mcu.Pin10=PB7
-Mcu.Pin11=VP_HSEM_VS_HSEM
-Mcu.Pin12=VP_RTC_VS_RTC_Activate
-Mcu.Pin13=VP_SEQUENCER_VS_SEQUENCER
-Mcu.Pin14=VP_STM32_WPAN_VS_BLE_HOST
-Mcu.Pin15=VP_SYS_VS_Systick
-Mcu.Pin16=VP_TINY_LPM_VS_TINY_LPM
-Mcu.Pin2=PA2
-Mcu.Pin3=PA3
-Mcu.Pin4=PA6
-Mcu.Pin5=RF1
-Mcu.Pin6=OSC_OUT
-Mcu.Pin7=OSC_IN
-Mcu.Pin8=PA11
-Mcu.Pin9=PB6
-Mcu.PinsNb=17
+Mcu.Pin10=VP_STM32_WPAN_VS_BLE_HOST
+Mcu.Pin11=VP_SYS_VS_Systick
+Mcu.Pin12=VP_TINY_LPM_VS_TINY_LPM
+Mcu.Pin2=RF1
+Mcu.Pin3=OSC_OUT
+Mcu.Pin4=OSC_IN
+Mcu.Pin5=PB6
+Mcu.Pin6=PB7
+Mcu.Pin7=VP_HSEM_VS_HSEM
+Mcu.Pin8=VP_RTC_VS_RTC_Activate
+Mcu.Pin9=VP_SEQUENCER_VS_SEQUENCER
+Mcu.PinsNb=13
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -114,24 +71,6 @@ OSC_IN.Mode=HSE-External-Oscillator
OSC_IN.Signal=RCC_OSC_IN
OSC_OUT.Mode=HSE-External-Oscillator
OSC_OUT.Signal=RCC_OSC_OUT
-PA11.Locked=true
-PA11.Signal=USART1_CTS
-PA2.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Mode
-PA2.GPIO_Mode=GPIO_MODE_AF_PP
-PA2.GPIO_PuPd=GPIO_NOPULL
-PA2.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
-PA2.Locked=true
-PA2.Mode=Asynchronous
-PA2.Signal=LPUART1_TX
-PA3.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Mode
-PA3.GPIO_Mode=GPIO_MODE_AF_PP
-PA3.GPIO_PuPd=GPIO_NOPULL
-PA3.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
-PA3.Locked=true
-PA3.Mode=Asynchronous
-PA3.Signal=LPUART1_RX
-PA6.Locked=true
-PA6.Signal=LPUART1_CTS
PB6.GPIOParameters=GPIO_Speed,GPIO_FM6,GPIO_PuPd,GPIO_Mode
PB6.GPIO_FM6=__NULL
PB6.GPIO_Mode=GPIO_MODE_AF_PP
@@ -210,7 +149,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -232,7 +171,9 @@ RCC.RNGFreq_Value=32000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Binary/BLE_TransparentMode_reference.hex b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Binary/BLE_TransparentMode_reference.hex
index 731bb6481..8b812a93b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Binary/BLE_TransparentMode_reference.hex
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Binary/BLE_TransparentMode_reference.hex
@@ -1,1152 +1,1160 @@
:020000040800F2
-:10000000E0140020A1460008A9440008AB44000801
-:10001000AD440008AF440008B144000800000000EF
-:10002000000000000000000000000000B3440008D1
-:10003000B544000800000000B7440008B9440008B7
-:10004000BD460008C1460008C5460008EB4400084C
-:10005000C9460008CD460008D1460008D54600082C
-:10006000D9460008DD460008E5440008E1460008DE
-:10007000E5460008E9460008BD440008ED460008D2
-:10008000F1460008F5460008F9460008FD4600085C
-:100090000147000805470008094700080D47000808
-:1000A0001147000815470008194700081D470008B8
-:1000B0002147000825470008294700082D47000868
-:1000C0003147000835470008394700083D47000818
-:1000D000C3440008C94400084147000845470008D8
-:1000E000494700084D470008514700085547000898
-:1000F000F3440008EF440008594700085D47000832
-:100100006147000865470008694700086D47000817
-:100110007147000875470008794700087D470008C7
-:100120008147000885470008CF4400088947000838
-:100130008D470008914700089547000838B504002E
-:1001400009D004F17C05696809B900F01EF800F0D7
+:10000000F01300201D4700086D4500086F450008EB
+:1000100071450008734500087545000800000000A0
+:10002000000000000000000000000000774500080C
+:1000300079450008000000007B4500087D45000868
+:10004000394700083D470008414700089B45000824
+:1000500045470008494700084D4700085147000838
+:100060005547000859470008954500085D470008B6
+:100070006147000865470008694700086D470008A8
+:100080007147000875470008794700087D47000858
+:100090008147000885470008894700088D47000808
+:1000A0009147000895470008994700089D470008B8
+:1000B000A1470008A5470008A9470008AD47000868
+:1000C000B1470008B5470008B9470008BD47000818
+:1000D00081450008C1470008C5470008C947000816
+:1000E000CD470008D1470008D5470008D947000888
+:1000F000A34500089F450008DD470008E1470008C8
+:10010000E5470008E9470008ED470008F147000807
+:10011000F5470008F9470008FD47000801480008B6
+:100120000548000809480008874500080D480008F0
+:1001300011480008154800081948000838B504009F
+:1001400009D004F17C05686808B900F01EF800F0D9
:1001500021F8012801D1012032BDA06A08B100F0C8
:100160002AF800F00AF821F02A01FFE7816000F088
-:100170001BF8BDE8324000F0ACBE2068416821F4B5
-:1001800090414160206881687047002028702046B7
-:1001900001F0CFB82421696020680268520852003B
-:1001A0000260204600F0BEB92068016841F00101FC
-:1001B000016020467047204600F028BE30B500F1AF
+:100170001BF8BDE8324000F0AABE2068416821F4B7
+:1001800090414160206881687047002129702046B5
+:1001900001F0DEB824206860206801684908490041
+:1001A0000160204600F0BCB92068016841F00101FF
+:1001B000016020467047204600F026BE30B500F1B1
:1001C0007C035C68202C41D109B1140001D10120CD
:1001D00030BD1C78012C39D001251D7000F154046C
:1001E0000165228062800021E161D960212159608E
-:1001F00022698168B2F1005F13D1B1F5805F04BF5D
-:100200000169002907BFDFF8F422E261DFF8F0128C
-:10021000E16100221A700068816841F40001816088
-:1002200012E0B1F5805F04BF0169002907BFDFF864
-:10023000D422E261DFF8D012E16100221A70006876
+:1001F00021698268B1F1005F13D1B2F5805F04BF5D
+:100200000169002907BFDFF8F022E261DFF8EC1294
+:10021000E161002119700068816841F4000181608A
+:1002200012E0B2F5805F04BF0169002907BFDFF863
+:10023000D022E261DFF8CC12E16100211970006880
:10024000016841F080010160002030BD022030BD16
-:1002500030B500F17C039C68202C6BD109B11400EF
-:1002600001D1012030BD1C78012C63D001251D7007
+:1002500030B500F17C039C68202C6AD109B11400F0
+:1002600001D1012030BD1C78012C62D001251D7008
:1002700000F15C0481652280628000212161FF25FC
-:100280008168B1F5805F04D1016991B940F2FF1531
-:100290000FE019B9016961B17F2107E0B1F1805F19
-:1002A00006D1016909B97F2503E03F21A18001E062
-:1002B0000025A5800021D96022259D6001688D68F8
-:1002C00045F001058D60A168B1F1005F1CD1A189E5
-:1002D0008A4219D38268B2F5805F04BF01690029A0
-:1002E00007BFDFF828222261DFF8241221610022F3
-:1002F0001A7001680B6843F480730B6000688168B2
-:1003000041F08051816013E08168B1F5805F04BFE6
-:100310000169002907BFDFF8FC212261DFF8F8112D
-:10032000216100221A700068016841F49071016037
-:10033000002030BD022030BD206881684A06704729
-:10034000F8B5044640F60F002568E9692A68AB68ED
-:1003500008400DD1880602D5960602D4D80040F197
-:100360008980E16E00294FD02046BDE8F44008475F
-:100370006A48034204BF6A4E32427BD0CE0709D599
-:10038000D70507D501262E62D4F8885045F001051F
-:10039000C4F888508D070AD5DE0708D527680225DE
-:1003A0003D62D4F8885045F00405C4F888504D07E4
-:1003B0000AD5DE0708D5276804253D62D4F88850A1
-:1003C00045F00205C4F888500D070CD5960601D4F7
-:1003D000034208D0256808202862D4F8880040F03D
-:1003E0000800C4F8880008050BD5550109D5266812
-:1003F0004FF400603062D4F8880040F02000C4F868
-:100400008800D4F88800002870D0880607D59106A7
-:1004100001D4D80003D5E16E09B120468847D4F84D
-:10042000880021688A68510602D410F0280F1AD07B
-:10043000204600F0C2FDFFF77FFF0FD500F057F810
-:1004400060B1DFF8A8198163A06F01F092F800286D
-:100450004CD0A06F816BBDE8F44008472046BDE852
-:10046000F24001F05DB9204601F05AF90020C4F8CD
-:100470008800F1BDC80209D55E0207D54FF480108F
-:1004800028622046BDE8F24001F0F0B9080609D51F
-:10049000160601D4180205D5216F39B32046BDE8F0
-:1004A000F440084748060FD553060DD5286820F0BC
-:1004B000400028602021C4F88010002020672046DA
-:1004C000BDE8F24001F0F9B9080206D5530004D5A1
-:1004D0002046BDE8F24001F003BAC80148BF002A37
-:1004E00004D52046BDE8F24001F0FBB9F1BD8168BA
-:1004F00021F040018160A06F70470000C910000822
-:10050000891000085B10000831100008071200086D
-:10051000B311000845110008211100080100001066
-:10052000200100042DE9F84F0446DFF8C8182768B9
-:10053000DFF8C4B83A68A068DFF8C0A80A402169AB
-:10054000024360690A43E1690243606E0A43024361
-:100550003A6000267968E068DFF8942821F4405179
-:10056000014379609742A1691CBF206A0143BA68C0
-:10057000DFF8680A02401143B960B046F96A606A60
+:100280008168B1F5805F04D1016961B940F2FF1561
+:1002900009E011B9016929B905E0B1F1805F06D122
+:1002A000016911B97F25A58003E03F2100E000210D
+:1002B000A1800021D9602221996001688D6845F0F4
+:1002C00001058D60A168B1F1005F1CD1A589AA422A
+:1002D00019D38268B2F5805F04BF0169002907BFA6
+:1002E000DFF824222261DFF8241221610021197035
+:1002F00001680A6842F480720A600068816841F00F
+:100300008051816013E08268B2F5805F04BF0169AB
+:10031000002907BFDFF8F8212261DFF8F811216119
+:10032000002119700068016841F49071016000209B
+:1003300030BD022030BD206881684A067047F8B59C
+:10034000044640F60F002568E9692A68AB68084052
+:100350000DD1880602D5900602D4D80040F18980DC
+:10036000E16E00294FD02046BDE8F44008476A48B6
+:10037000034204BF694E32427BD0CF0709D5D60570
+:1003800007D501262E62D4F8885045F00105C4F83F
+:1003900088508D070AD5DD0708D526680225356205
+:1003A000D4F8885045F00405C4F888504D070AD5A4
+:1003B000DD0708D5266804253562D4F8885045F055
+:1003C0000205C4F888500D070CD5950601D40342E8
+:1003D00008D0256808202862D4F8880040F008007A
+:1003E000C4F8880008050BD5500109D525684FF4DD
+:1003F00000602862D4F8880040F02000C4F888002B
+:10040000D4F88800002870D0890607D5900601D45A
+:10041000D80003D5E16E09B120468847D4F888009A
+:1004200021688A68510602D410F0280F1AD020469D
+:1004300000F0BAFDFFF77FFF0FD500F057F860B16D
+:10044000DFF8A4198163A06F01F047F800284CD0B1
+:10045000A06F816BBDE8F44008472046BDE8F2403C
+:1004600001F010B9204601F00DF90020C4F8880011
+:10047000F1BDC80209D5580207D54FF48010286293
+:100480002046BDE8F24001F085B9080609D51006FE
+:1004900001D4180205D5216F39B32046BDE8F440D8
+:1004A000084748060FD550060DD5286820F04000B3
+:1004B00028602021C4F88010002020672046BDE875
+:1004C000F24001F085B9080206D5500004D5204657
+:1004D000BDE8F24001F08EB9C80148BF002A04D53A
+:1004E0002046BDE8F24001F086B9F1BD816821F0F7
+:1004F00040018160A06F7047B910000879100008B2
+:100500004B10000821100008FB110008A31100087F
+:10051000351100081111000801000010200100042D
+:100520002DE9F84F0446DFF8C8082768DFF8C4B89B
+:100530003968DFF8C4A80140A0680143206901437D
+:1005400060690143E0690143606E01433960002640
+:100550007968E06821F4405101437960B046A169AF
+:10056000DFF8880887421CBF206A0143BA68DFF8B9
+:100570005C0A02401143B9604FF48075F96A606A01
:10058000090940EA0111F9625F454FF400404FF458
-:1005900080754FF400714FF480624FF400634FF4A4
-:1005A000805C4FF4005E4FF4804929D1DAF800B046
-:1005B0000BF0030BBBF1030F3ED8DFE80BF0023763
-:1005C000343A4FF0010AD4F81CB05746BBF5004F3F
-:1005D0004FF6F07A40F01283012F09D0022F00F07D
-:1005E0005582042F00F08E82082F00F0C382F6E2BD
-:1005F00001F045FD0146606A002840F01C8243E29C
-:10060000DFF8ECB75F4517D1DAF800A01AF4406ABA
-:1006100027D0BAF5806F09D0BAF5006F03D0BAF5CC
-:10062000406F06D008E04FF0020A07E04FF0040ADE
-:1006300004E04FF0080A01E04FF0100ADFF8B0B70D
-:100640005F45C0D1BAF1000F0BD0BAF1020F49D00B
-:10065000BAF1040F00F08280BAF1080F00F0B18007
-:10066000B7E301F004FD0146606A58B3012808BFF2
-:10067000022028D0022808BF042024D0032808BF65
-:10068000062020D0042808BF08201CD0052808BF59
-:100690000A2018D0062808BF0C2014D0072808BF4D
-:1006A000102010D0082808BF20200CD0092808BF2F
-:1006B000402008D00A2808BF802004D00B2808BF9B
-:1006C000284600D00120B1FBF0F0002800F0838321
-:1006D000626802EB4201884203D31303834280F035
-:1006E000A28076E3606AB0B3012808BFDFF8F008A3
-:1006F000EED0022808BFDFF8EC08E9D0032808BFD5
-:10070000DFF8E408E4D0042808BFDFF8E008DFD011
-:10071000052808BFDFF8D808DAD0062808BFDFF8B8
-:10072000D408D5D0072808BFDFF8CC08D0D00828D7
-:1007300008BFDFF8C808CBD0092808BFDFF8C00819
-:10074000C6D00A2808BFDFF8BC08C1D00B2808BFF4
-:100750004FF22440BCD0DFF8B008B9E701F03DFC0F
-:100760000146606A0028ADD0012808BF0220AAD047
-:10077000022808BF0420A6D0032808BF0620A2D064
-:10078000042808BF08209ED0052808BF0A209AD058
-:10079000062808BF0C2096D0072808BF102092D04A
-:1007A000082808BF20208ED0092808BF40208AD002
-:1007B0000A2808BF802086D00B2808BF2846FAD018
-:1007C00080E7676A002FC8D0012F08BF484629D0AC
-:1007D000022F08BF704625D0032F08BF41F25550A5
-:1007E00020D0042F08BF60461CD0052F08BF40F65C
-:1007F000CC4017D0062F08BF40F6AA2012D0072FF2
-:1008000008BF18460ED0082F08BF10460AD0092F7F
-:1008100008BF084606D00A2F08BF284602D00B2F73
-:1008200000D1802054E7BAF1000F0BD0BAF1020FCB
-:1008300038D0BAF1040F00F07280BAF1080F00F05E
-:10084000A780ECE001F013FC0146606A40B3012888
-:1008500008BF02251ED0022808BF04251AD003288D
-:1008600008BF062516D0042808BF082512D0052881
-:1008700008BF0A250ED0062808BF0C250AD0072875
-:1008800008BF102506D0082808BF202502D0092857
-:1008900008BF402572D00A280CBF80250B286DD0D8
-:1008A00001256BE0606A002836D0012808BFDFF818
-:1008B000A0692BD0022808BFDFF8986926D003284A
-:1008C00008BFDFF8946921D0042808BFDFF88C69DD
-:1008D0001CD0052808BFDFF8886917D0062808BF94
-:1008E000DFF8E86912D0072808BFDFF8E4690DD007
-:1008F000082808BFDFF8DC6908D0092808BFDFF83E
-:10090000D86903D00A2808BFDFF8D0697CD00B284B
-:1009100008BFDFF8F46677D0DFF8C46974E001F04F
-:100920005CFB0146606A40B3012808BF022525D060
-:10093000022808BF042521D0032808BF06251DD0A2
-:10094000042808BF082519D0052808BF0A2515D096
-:10095000062808BF0C2511D0072808BF10250DD088
-:10096000082808BF202509D0092808BF402505D040
-:100970000A280CBF80250B2800D001256268B1FB36
-:10098000F5F65008002110EB062051EB166141E00E
-:10099000606A002836D0012808BF4FF4800633D0A3
-:1009A000022808BF4FF400162ED0032808BFDFF836
-:1009B000346929D0042808BF4FF4801624D00528B4
-:1009C00008BFDFF824691FD0062808BFDFF81C69BC
-:1009D0001AD0072808BF4FF4002615D0082808BFF2
-:1009E0004FF4802610D0092808BF4FF400360BD0F2
-:1009F0000A2808BF4FF4803606D00B2808BF4FF4F2
-:100A0000004601D04FF40006C246002116EB52000A
-:100A10004AEB0101002301F0BFFB064601E04FF065
-:100A20000108A6F54070DFF8C818884280F0D1812F
-:100A30002268D660CFE1012808BF02251AD002281B
-:100A400008BF042516D0032808BF062512D00428A5
-:100A500008BF08250ED0052808BF0A250AD0062899
-:100A600008BF0C2506D0072808BF102502D008288B
-:100A700008BF202575D0092808BF402571D00A2855
-:100A80000CBF80250B286CD001256AE0606AB0B3EA
-:100A9000012808BFDFF8700521D0022808BFDFF861
-:100AA00040051CD0032808BFDFF8480817D00428E9
-:100AB00008BFDFF8300512D0052808BFDFF8380876
-:100AC0000DD0062808BFDFF8200508D0072808BF8A
-:100AD000DFF8180503D0082808BFDFF81C057AD016
-:100AE000092808BFDFF8140575D00A2808BFDFF809
-:100AF000100570D00B2808BFDFF808056BD0DFF8B1
-:100B0000DC0768E001F069FA0146606A40B3012839
-:100B100008BF022525D0022808BF042521D00328BC
-:100B200008BF06251DD0042808BF082519D00528B0
-:100B300008BF0A2515D0062808BF0C2511D00728A4
-:100B400008BF10250DD0082808BF202509D0092886
-:100B500008BF402505D00A280CBF80250B2800D0EF
-:100B600001256068B1FBF5F1420802EB4102B2FBDE
-:100B7000F0F632E0666A66B3012E2CD0022E08BF72
-:100B8000484628D0032E08BF42F6AA2023D0042EC0
-:100B900008BF70461FD0052E08BF41F698101AD026
-:100BA000062E08BF41F2545015D0072E08BF6046EC
-:100BB00011D0082E08BF18460DD0092E08BF1046C8
-:100BC00009D00A2E08BF084605D00B2E08BF2846BC
-:100BD00001D04FF4803000F013F9B6B201E04FF0CD
-:100BE0000108A6F11000504580F0F3800AEA0601E2
-:100BF000C6F3420001432068C160ECE0012F07D03A
-:100C0000022F35D0042F70D0082F00F0A580D7E038
-:100C100001F035FA0146606A40B3012808BF022599
-:100C200016D0022808BF042512D0032808BF0625C5
-:100C30000ED0042808BF08250AD0052808BF0A25B9
-:100C400006D0062808BF0C2502D0072808BF1025AB
-:100C50007AD0082808BF202576D0092808BF40256B
-:100C600072D00A280CBF80250B286DD001256BE0BF
-:100C7000606AB0B3012808BFDFF8641333D00228DC
-:100C800008BFDFF860132ED0032808BFDFF8581321
-:100C900029D0042808BFDFF8541324D0052808BF42
-:100CA000DFF84C131FD0062808BFDFF848131AD00E
-:100CB000072808BFDFF8401315D0082808BFDFF861
-:100CC0003C1310D0092808BFDFF834130BD00A28D2
-:100CD00008BFDFF8301306D00B2808BF4FF22441BD
-:100CE00001D0DFF82413606831E001F076F90146A5
-:100CF000606A40B3012808BF022525D0022808BF3A
-:100D0000042521D0032808BF06251DD0042808BFCC
-:100D1000082519D0052808BF0A2515D0062808BFC0
-:100D20000C2511D0072808BF10250DD0082808BFB2
-:100D3000202509D0092808BF402505D00A280CBF66
-:100D400080250B2800D001256068B1FBF5F101EB8F
-:100D50005001B1FBF0F631E0666A6EB3012E08BFB8
-:100D6000484629D0022E08BF704625D0032E08BF62
-:100D700041F2555020D0042E08BF60461CD0052EED
-:100D800008BF40F6CC4017D0062E08BF40F6AA2078
-:100D900012D0072E08BF18460ED0082E08BF1046E6
-:100DA0000AD0092E08BF084606D00A2E08BF2846DA
-:100DB00002D00B2E08BF802000F022F8B6B201E06E
-:100DC0004FF00108A6F11000504502D22168CE6014
-:100DD00001E04FF0010804F1680001210023418087
-:100DE0000180436083604046BDE8F28F2110000817
-:100DF00000800040F369FFCF0038014088000058B0
-:100E0000616800EB5100B0FBF1F6704790F82810D4
-:100E1000CA0706D502685368C16A23F400330B433E
-:100E2000536090F828108A0706D502685368016B52
-:100E300023F480330B43536090F828104A0706D5FB
-:100E400002685368416B23F480230B43536090F88E
-:100E500028100A0706D502685368816B23F4004303
-:100E60000B43536090F82810CA0606D502689368B1
-:100E7000C16B23F480530B43936090F828108A06CB
-:100E800006D502689368016C23F400530B4393600A
-:100E900090F828104A0610D502685368416C23F474
-:100EA00080130B435360436CB3F5801F05D1536827
-:100EB000816C23F4C0030B43536090F828100A069A
-:100EC00006D501684A68C06C22F4002202434A60D9
-:100ED0007047F8B5044604F17C050020E8606FF027
-:100EE0007E4701F0DDF90646206801680A0708D54B
-:100EF0000097334600224FF40011204600F016F808
-:100F000060B9206801684A070AD500973346002275
-:100F10004FF48001204600F009F808B10320F2BD2B
-:100F200020206860A86000202870F2BD2DE9F04103
-:100F3000069C05460E4690461F462868C16931400A
-:100F4000B1420CBF01200020404528D114F1010F0F
-:100F5000F3D001F0A5F9C01B844200D34CB9286836
-:100F6000016821F4D071016000F01CF800210170CB
-:100F700013E0286801684A07DFD5C1690A05DCD596
-:100F80004FF4006101622868026822F4D0720260A6
-:100F9000002200F007F8C1600270032000E000208A
-:100FA000BDE8F0812868816849084900816005F141
-:100FB0007C00202141608160704701680A6822F44A
-:100FC00090720A60DFF83413026893680B409360F4
-:100FD0002022C0F884200021C1667047FFF4FF1171
-:100FE00000127A0000093D00AAB0280080841E008B
-:100FF000006A18005558140040420F0020A1070055
-:1010000090D0030048E801000024F400136823F0A6
-:10101000800313600068016841F04001016070477F
-:10102000806A00F1560100220A810A8000F078BB34
-:10103000D0F8801021290FD10268B0F8561001B9FC
-:10104000E4E7016D0B789362016D4A1C0265B0F80C
-:1010500056104A1EA0F856207047D0F8801021295B
-:1010600011D10268B0F8561001B9CFE7016D0B88B5
-:10107000C3F308039362016D8A1C0265B0F8561031
-:101080004A1EA0F856207047D0F88010212900D0C1
-:10109000704730B500F15602938A0CE0E1690D0605
-:1010A00008D5016D0D78A562016D4C1C046515888D
-:1010B000691E11805B1E99B229B10468118800294C
-:1010C000ECD100F023F830BDD0F88010212900D0F9
-:1010D000704730B500F15602938A0EE0E1690D06C3
-:1010E0000AD5016D0D88C5F30805A562016D8C1C3C
-:1010F00004651588691E11805B1E99B229B10468C8
-:1011000011880029EAD100F001F830BDA16821F46E
-:101110000001A1600068016841F040010160704772
-:1011200070B500F027F808D100F02AF82B70816D17
-:101130004B1C00F019F821B929E0886940F008003B
-:10114000886170BD70B500F015F808D100F018F88E
-:101150002B80816D8B1C00F007F821B917E088699E
-:1011600040F00800886170BD836525886E1E26806A
-:101170002188704700F16C0201689369222B704747
-:101180004B6A856D00F15E0461880B407047016811
-:101190000B6823F490730B6001688B685B085B003D
-:1011A0008B602021916100231360BDE8704000F046
-:1011B0007ABB2DE9F04100F05BF81AD167890AE0AB
-:1011C00000F06DF80870B06D421C00F04BF808B9E3
-:1011D00000F06BF87F1EB8B20028F1D1208850B122
-:1011E0006189884207DA00F054F8454800F04AF86F
-:1011F00001E000F002F8BDE8F0813068816941F05B
-:101200000801816170472DE9F04100F031F81AD1F1
-:1012100067890AE000F043F80880B06D821C00F096
-:1012200021F808B900F041F87F1EB8B20028F1D1CA
-:10123000208850B16189884207DA00F02AF83148E5
-:1012400000F020F801E0FFF7D8FFBDE8F0810000D2
-:101250000000127A0000093D00AAB0280080841E18
-:1012600000006A18B26521884B1E238020887047D1
-:10127000064606F15E0406F16C05B4F80280A86922
-:101280002228704728603068016841F02001016021
-:1012900070473068816821F0805181607047306804
-:1012A000406AB16D08EA000070473068134A01686F
-:1012B00021F48071016020233068816811408160D1
-:1012C000AB6100202860304600F0EDBA005558149C
-:1012D0000040420F0020A1070090D0030048E80121
-:1012E000000024F40055150000CC0C0000AA0A00F0
-:1012F00000FD0F005461510000D43000FEFFFFEFED
-:1013000021110008451100085B4981B00A680243B9
-:101310000A600968084008E0584881B0016841F453
-:1013200000210160006800F400200090009801B0E6
-:10133000704738B586B004466846142100F0B6FF01
-:1013400020684F4D4F49A84230D108684E4D40F0BB
-:1013500001000860096801F001010591059801206C
-:10136000FFF7D2FF02210191002202920C200321FB
-:101370000090039100F04FF8002202920392402067
-:1013800002210090019100F046F8404828601121A8
-:1013900000F048F808B101F0DBF86567AC620022A4
-:1013A0000021252001F0F0F8252030E0384A904255
-:1013B0002FD14868374D40F480404860486800F4B9
-:1013C0008040059005980120FFF79EFF0220FFF75F
-:1013D0009BFF0221019101220292C0200321009073
-:1013E00003910722049269462B4801F041F92B48EA
-:1013F00028600F2100F016F808B101F0A9F8656720
-:10140000AC6200220021242001F0BEF8242001F06B
-:10141000D8F807B030BD0822049269464FF09040DA
-:1014200001F026B9696000201022E860802168611F
-:10143000A861E8612862AA602961284600F034B8F2
-:1014400010B5044616492068884213D101F0DEF930
-:1014500001F0DCF91348016821F4407141F4807116
-:101460000160026842F4004202602046BDE810407C
-:1014700001F0DFB910BD00004C00005850000058CA
-:10148000008000405C0000589003002044000240AF
-:1014900000380140F00300200004004844040240EA
-:1014A000002800409000005870B5040001D10120D0
-:1014B00070BD2268DFF840329A4204F124050BD255
-:1014C000DFF8380281181426B1FBF6F18900DFF845
-:1014D00030322962EB610AE0DFF828028118142318
-:1014E000B1FBF3F18900DFF820022962E8610221F3
-:1014F00069701368A068E1686FF30E1303432069F5
-:101500000B4361690343A0690B43E1690343206A0C
-:101510000B4303431360204600F0C2F8A068B0F507
-:10152000804F04BF00216160696A207900F01BF8D8
-:1015300038B1052805D2204600F0CFF800F00CF8AD
-:1015400003E0002028636863A8630021A9610120EB
-:1015500068702970002070BD296B00200860696BDD
-:10156000A86B486070470860A96AE86A48606068CC
-:10157000704738B500F1240200245178022903D0C5
-:1015800004209061012428E001680B6823F00E0319
-:101590000B6001680D686D086D000D60516A0B6885
-:1015A00023F480730B60012192F82030D56903F099
-:1015B0001C0399406960936AD16A5960116B31B11B
-:1015C0000B6823F480730B60536B916B596001219E
-:1015D00051701470516901B18847204632BDF8B589
-:1015E00000F124010423CA6914680268156891F89F
-:1015F000206006F01C0603FA06F73C4210D06F0785
-:101600000ED51468A50603D4146824F004041460ED
-:1016100000F03DF8C968002938D0BDE8F44008471B
-:10162000022303FA06F73C4213D0AF0711D5146822
-:10163000A50605D4146824F00A04146001224A7037
-:1016400000F025F800220A708968F9B1BDE8F4407D
-:101650000847082303FA06F6344217D02B0715D59E
-:10166000146824F00E041460012291F82030CC6933
-:1016700003F01C039A40626001228A614A700022D2
-:101680000A70096911B1BDE8F4400847F1BD91F84D
-:101690002020CC6902F01C02934063607047000078
-:1016A00010B5416C0268144B89089A4239BF174C37
-:1016B00004EB8101164B03EB8101816402F0FF0210
-:1016C000083A1421B2FBF1F1012301F01C01114A87
-:1016D000C26403FA01F1016510BD01790E4A0F4B96
-:1016E000836502EB81024265491E012201F003017C
-:1016F0008A40C2657047000008040240F8FFFDBF41
-:1017000000000240F8FBFDBF000402400008024058
-:101710001C08024080080240FC08024040090240C8
-:10172000704730B4002513E050F8042BD30744BFB2
-:10173000A9F101039A18091F042942F8045BFAD29F
-:1017400013468C0744BF15809B1CC90748BF1D70FA
-:1017500050F8041B0029E7D130BC704710B500F1E8
-:101760007C010A78012A01D1022010BD01220A70F1
-:1017700024234B60026813681468640864001460D2
-:101780000022426623F000530068036020224A6072
-:1017900000230B70002010BD70B500F01FF801D1C0
-:1017A000022070BD00F020F822F0604209E070B520
-:1017B00000F014F801D1022070BD00F015F822F0FD
-:1017C000606211438160204600F01CF820680660CA
-:1017D0002021696000222A70002070BD044604F1B7
-:1017E0007C052878012870470120287024226A602F
-:1017F0002068066802685208520002602068826809
-:1018000070470000FFB500BF14A200BF15A6D2E9C3
-:10181000003402A9C1E90034D6E90071CDE90071B4
-:10182000416E11B90121012213E001688A688968BB
-:10183000520E02F00702490F02AC655CA45C1DF871
-:1018400001101DF80220ED00E40095FBF1F194FB7E
-:10185000F2F2683041800280FFBD00000101010307
-:10186000070100000804020408010101704700009C
-:10187000002800D0704710B5154C00F00FF8BDE8F7
-:101880001040FEF7E5BC002800D0704710B5114CA1
-:1018900000F004F8BDE81040FEF790BC0E4823604D
-:1018A0000E4B0360704700680C49884204D1084A17
-:1018B0001068002818BF0047704700680749884231
-:1018C00004D1044A1068002818BF00477047000080
-:1018D000D4040020D80400208402002000380140F5
-:1018E000704770474FF0B040006800F0F000B0283B
-:1018F00088BFB02070472DE9F041040062D0207805
-:1019000081064FF0B04533D5A868E96810F00C00A7
-:1019100001F0030104D00C2808BF012940F07E80AB
-:101920002868810702D5E06900284BD0FFF7DAFF6D
-:10193000616A884207D2084600F0B2FB002815D140
-:1019400000F052FA0AE0286820F0F000014300F0AD
-:1019500050FA606A00F0A4FB002807D100F0AAFF4B
-:10196000DFF8D407006800F0F5FF002840F08E8112
-:101970002078C10711D5A868E96800F00C00082894
-:1019800001F0030103D00C2808BF032969D128689E
-:10199000810302D56068002814D0217888071AD501
-:1019A000A868E96800F00C00042801F0030104D0E5
-:1019B0000C2808BF022940F08D802868410503D516
-:1019C000E068002800F062816868216920F0FE402C
-:1019D00040EA016068602168DFF8606711F0180F65
-:1019E00000F076816069002800F0AF80C80670685A
-:1019F00040F19C80800708D4716841F0010171605A
-:101A000000F04EFC07467068800700F1418100F04D
-:101A100047FCC01B0328F6D30320DEE1E06978B160
-:101A2000296841F0010100F0CEFA064628688007D7
-:101A300000F13D8100F034FC801B0328F6D3EBE776
-:101A4000286840084000286000F02AFC0646286804
-:101A500000F0C6F98CD000F023FC801B0328F6D3DD
-:101A6000DAE76068B0F5803F04D1286840F4803040
-:101A7000286011E0B0F5A02F286806D140F480203E
-:101A80002860296841F4803105E020F48030286026
-:101A9000296821F480212960606860B100F000FCB1
-:101AA0000646286880033FF578AF00F0F9FB801BFD
-:101AB0006528F6D3B0E700F0F3FB06462868400C33
-:101AC00010F001003FF469AF00F0EAFB801B6528CD
-:101AD000F4D3A1E7E06878B1296841F4807100F09F
-:101AE00072FA0646286840053FF56EAF00F0D8FB55
-:101AF000801B0328F6D38FE7286820F480702860C5
-:101B000000F0CEFB06462868800A10F001003FF482
-:101B100062AF00F0C5FB801B0328F4D37CE700F024
-:101B2000BFFBC01B0328C0F0CF8075E740F0010069
-:101B300000F070F907467068800700F1E08000F05F
-:101B4000AFFBC01B0328F6D366E7706820F00400E3
-:101B500000F060F907467068C00810F0010000F05E
-:101B6000DD8000F09DFBC01B0428F4D354E705285A
-:101B7000306806D140F004003060316841F0010166
-:101B800005E0400840003060316821F00401316018
-:101B9000A06841F2893768B100F082FB8046306866
-:101BA000800700F1D08000F07BFBA0EB0800B8427A
-:101BB000F5D331E700F074FB8046306800F010F98F
-:101BC00000F0C18000F06CFBA0EB0800B842F4D339
-:101BD00022E700F065FBC01B0328C0F0C2801BE7B2
-:101BE00040084000B06000F05BFB0746B06800F0C2
-:101BF000F7F800F0BA8000F053FBC01B0328F5D3C0
-:101C00000AE700F04DFB801B0328C0F0C08003E70B
-:101C100000F046FB001B0328C0F0DA80FCE6E96810
-:101C2000DFF81C0589088900E960E9680140E9607E
-:101C300000F036FB044600F0E5F825D000F030FB5C
-:101C4000001B0328F7D3E7E601281FD0E868226BC2
-:101C500000F00301914202BF00F07001626B9142FB
-:101C600014D1A26BC0F30621914202BF00F4781197
-:101C7000E26B91420AD1226C00F06061914202BF96
-:101C800000F06040616C884200F0A6800120A4E072
-:101C9000706840F0040000F0BDF807467068000767
-:101CA00008D400F0FDFAC01B0428F7D3B4E600F016
-:101CB0009BF85DE67068A16920F4706040EA01203D
-:101CC000706000F0A4F8074600F089F87FF427AFB1
-:101CD0002078410737D5DFF86C743868C10529D4FE
-:101CE00000F094FD00F0DCFA80463868C10521D48C
-:101CF00000F0D6FAA0EB08000328F6D38CE6706853
-:101D000020F0040070607068C00810F00100DFD09F
-:101D100000F0C6FAC01B0428F5D37DE600F077F882
-:101D2000074600F05CF8D3D000F0BAFAC01B0328D5
-:101D3000F7D371E6A06801287FF419AF306840F04E
-:101D40000100306024E721784A060ED5A06A0028F9
-:101D5000B0683FF445AF40F00100B06000F0A0FA79
-:101D60000746B06880077FF534AFE06AA0B3A96882
-:101D700001F00C010C293FF467AF0228286820F01D
-:101D8000807028607FF44BAF00F08AFA064600F0BE
-:101D900039F87FF436AFEA68DFF8AC03216BA36B48
-:101DA0000240606B0A430243E16B206C42EA03226B
-:101DB0000A43616C02430A43EA60286840F080707D
-:101DC0002860E96841F08051E96000F069FA044652
-:101DD000286880017FF51CAF0020BDE8F0817068A5
-:101DE000400810F0010070472968606A21F0F00196
-:101DF000014329606968206A21F47F4141EA00219A
-:101E0000696070472868400E10F0010070477068E4
-:101E100040084000706000F043BA2DE9F843040028
-:101E2000884646D0DFF8246300F0C8F849D200F0B5
-:101E3000CDF8074600F0C2F843D000F031FAC01BDD
-:101E40000228F7D90320B7E000F02AFA401B022845
-:101E500045D9F7E700F024FAA0EB090002284ED993
-:101E6000F0E700F01DFAA0EB0900022856D9E9E7D7
-:101E700000F016FA401B02285FD9E3E700F010FAE1
-:101E8000401B022869D9DDE700F00AFA401B41F245
-:101E90008931884275D3D5E7032802D13968890191
-:101EA00003E00028396802D1890762D401E04905BE
-:101EB0005FD4012080E000F0F3F9C01B022870D944
-:101EC000C0E7207881074FF0B0470BD5BA68A0680B
-:101ED00022F0F0020243BA6000F0E2F90546B86869
-:101EE000C003B1D52178DFF84C5288060AD529689D
-:101EF000606921F0F001014300F065F8814628682F
-:101F00008003A7D5217848060BD52968A06909095F
-:101F1000090141EA101100F056F881462868C00313
-:101F20009FD5217848070BD5B968E06821F4E061B6
-:101F30000143B96000F0B4F90546B868800397D54D
-:101F4000217808070CD5B968206921F4605141EA6D
-:101F5000C001B96000F0A4F90546B86840038DD50A
-:101F60002178C80715D56068022895D1396889039A
-:101F70009FD5BA68920840EA8200B86000F090F9F4
-:101F80000546B868616800F00C00B0EB810F7FF483
-:101F90007BAF306800F00700804505D200F016F8EE
-:101FA000074600F00BF886D100F084FC00F008FD35
-:101FB000BDE8F24300F0CEBCBDE8F283306800F02B
-:101FC000070040457047296000F06AB93168C908C8
-:101FD00048EAC101316000F063B938B54FF0B04450
-:101FE0005C4DA16811F00C0106D1FFF77BFCC0F33A
-:101FF000031055F8200032BD0429574A05D008299E
-:10200000564804D12168C90222D5104632BDE16884
-:1020100001F00301022904D0032904D12168C90277
-:1020200007D5104605E0FFF75DFCC0F3031055F837
-:102030002000E168E268E368C1F306214843C2F387
-:102040000211491C5B0FB0FBF1F05B1CB0FBF3F01D
-:1020500032BD80B5FFF7C1FF3D49FFE7404A09683F
-:10206000C1F3031152F82110B0FBF1F002BD80B5AD
-:10207000FFF7EFFF00F010F8C1F3022106E080B592
-:10208000FFF7E7FF00F008F8C1F3C22112F82110B2
-:1020900001F01F01C84002BD2D49324A096870474E
-:1020A00070B52C49B1282EBFCC6AC0F3031051F88B
-:1020B00020402048056800F0A3FC294905F00F05E1
-:1020C00051F825202849B4FBF2F20024B2FBF1F1CB
-:1020D000B0F5007F2CA2204609D100BF23A353F8FE
-:1020E00020508D4214D2401C0328F8D912E000BFC2
-:1020F00022A353F820508D420AD2401C0328F8D363
-:1021000008E000F0CDF8801B03280CD3032070BD3D
-:1021100052F820400D4D2868C00844EAC0002860ED
-:1021200000F0BEF80646286800F00700A042E8D19B
-:10213000002070BD080100583000002090000058B9
-:10214000FFFFFEEE000400588C80C11100400058D3
-:1021500008000058684400080024F4000048E80122
-:10216000284400082046000840420F0012000000EA
-:1021700024000000360000004000000006000000BF
-:102180000C00000010000000000000000100000032
-:102190000200000004000000D3BBD9B1B2F5803FBB
-:1021A0005BD2022A1ED98C46B1FBF2F102FB11C3AD
-:1021B0001B0443EA1043B3FBF2FC02FB1C3380B266
-:1021C00040EA0343B3FBF2F002FB103240EA0C405A
-:1021D00000237047022A05D98446B0FBF2F002FBC7
-:1021E00010C270474AB105D100F0010249085FEA08
-:1021F0003000704700220023704700F009BC0B003C
-:102200000200002100207047F7D30022002370470E
-:10221000904271EB030CF2D370B5B1FA81F4B3FACA
-:1022200083F52C1BA340C4F1200532FA05F6334395
-:10223000A2405FF00046E64002E05B085FEA32023F
-:10224000841A71EB030524BF204629467641F4D356
-:1022500002000B003000002170BD70B5B1FA81F4AE
-:10226000B2FA82F5C4F120046419B4F12006DAD37D
-:10227000B2405FF00044F440002502E052085FEAFB
-:102280003303C61A71EB020E24BF30467146644117
-:102290006D41F3D302000B002000290070BD000047
-:1022A00001480068704700BF2C000020002200F0A9
-:1022B000B1BB0000984900E0984981B00A68024328
-:1022C0000A60096808400090009801B0704710B596
-:1022D00000F062FB924C606840010ED56068C0005F
-:1022E0000BD400F093FA00F091FA206840F48030AB
-:1022F0002060216821F48031216000F0D3F80020B3
-:1023000000F0A2FB40B180798649E160E26822F4E6
-:102310007C5242EA0022E26000F048F88248834C96
-:10232000016800220260036903F050030361012089
-:10233000FFF7C2FF0220FFF7BFFF0420FFF7BAFF3D
-:102340000220FFF7B7FF0120FFF7B4FF00220F21A3
-:102350000E2000F019F90E2000F033F900220F21B1
-:102360003A2000F011F93A2000F02BF900210F2259
-:102370006F484160826047F6FF710022C1600261D0
-:102380008261C261046000F073FBCA206062532165
-:102390006162FF21A068C008C000A060616200F017
-:1023A00018FC4FF0FF3000F0BFFCFAE710B5AEB0FC
-:1023B000604C1CA82146482200F078FD01A81C2191
-:1023C000FFF774FF08A804F14801502200F06EFDE9
-:1023D0005348016821F0180101604FF480335648DA
-:1023E000026822F4C06242F40072026007220068B0
-:1023F00000F4C06000904FF4807400991C92012199
-:102400001E91002240211D93209127921F941CA809
-:10241000FFF771FA6F2002210190029100220392CE
-:102420000492059206920792012101A8FFF7F5FC9C
-:1024300043F60301002208910E9200214FF48042DE
-:1024400002230F9119921A931B91189408A800F077
-:102450004FFD2EB010BD10B5384C394820604FF4F8
-:10246000E1310C20606100224FF40040E06100F097
-:1024700010F82046FDF762FE00212046FFF78CF998
-:1024800000212046FFF793F92046BDE81040FFF7F2
-:1024900065B96160A260E2602261A261226262624B
-:1024A000A2627047274881B0016841F48011016041
-:1024B0003F21006800F4801000900098224841609D
-:1024C0004161016841F47C110160026942F47C12AF
-:1024D0000261016841F03F010160026942F03F0280
-:1024E000026101B0704738B50446FFF7D9FE14F118
-:1024F000010F054609D000F066FA041905E01348FB
-:10250000016821F00401016030BFFFF7C9FE401BE4
-:10251000A042F4D331BD0000480000584C000058E0
-:1025200090000058FECAFECA8008005800280040EB
-:10253000500400209043000800040058840200204A
-:102540000038014050000058040C005810ED00E025
-:10255000704700000901020002D43C4881547047D2
-:102560003B4B02F00F021A4402F8041C7047394B2F
-:1025700019684FF6FF020002114000F4E0600843C2
-:10258000354908431860704738B5324B1C68C4F3AE
-:102590000223C3F10704052C28BF04241D1D072DA9
-:1025A00034BF0023DB1E012505FA04F4641E21401C
-:1025B000994005FA03F35B1E1A401143BDE834400D
-:1025C000C8E7010007D4012200F01F01234B8A4015
-:1025D000400943F82020704701000BD4012200F08D
-:1025E0001F011F4B8A40400943F82020BFF34F8F43
-:1025F000BFF36F8F704710B5401EB0F1807F01D3DD
-:10260000012010BD174C60600F214FF0FF30FFF725
-:10261000A1FF0021A16007202060002010BD010063
-:1026200007D4012200F01F010F4B8A40400943F8F4
-:1026300020207047010007D4012200F01F010B4B3E
-:102640008A40400943F820207047000000E400E081
-:1026500018ED00E00CED00E00000FA0500E100E0FC
-:1026600080E100E010E000E000E200E080E200E055
-:102670002DE9F04106460A464FF0000C4FF00F08D6
-:102680002CE05A4FBE4214BF4FF0070E4FF0040E1D
-:102690000EFA01F1294344F82310C143544C236836
-:1026A00055680B40ED0348BF0343236063685568DA
-:1026B0000B40AD0348BF034363604E4C236855682D
-:1026C0000B40ED0248BF0343236063680B40516831
-:1026D0008D0248BF034363600CF1010C106830FAAF
-:1026E0000CF172D0012303FA0CF31840F4D05468B3
-:1026F000022C18BF122C4FEA8C010ED14FEADC04D9
-:1027000006EB840401F01C0E256A08FA0EF7BD439F
-:10271000176907FA0EF73D4325624FEA4C0403257B
-:102720003768A540ED4305EA070E177907F0030760
-:10273000A74047EA0E0737605768012F18BF022FDE
-:1027400003D0112F18BF122F11D1B76805EA070E59
-:10275000D768A74047EA0E07B760776827EA030300
-:102760005768C7F3001707FA0CF73B437360F36829
-:102770001D40936803FA04F42C43F4605468E300AA
-:10278000AAD51D4C4FEA9C0354F8237001F00C01AC
-:1027900008FA01F5B6F1904F27EA050508BF4FF09A
-:1027A000000E11D0154FBE4208BF4FF0010E0BD0E6
-:1027B000134FBE4208BF4FF0020E05D0114FBE426C
-:1027C0007FF45FAF4FF0030E62E7BDE8F0810AB11E
-:1027D00081617047816270470B4A136803421CBFD6
-:1027E000106000F09BBA7047000000000010004825
-:1027F0008008005800080058080001400004004804
-:1028000000080048000C00480C0800580248016805
-:1028100041F4807101607047000400588A60FF2114
-:102820000268516280F82130002180F820100020D9
-:10283000704790F82010012901D102207047012132
-:1028400080F82010022280F82120CA2103685962F2
-:10285000532201684A62012301688A6842F020021B
-:10286000FFF7DCBF3249002008604FF0B04131482B
-:10287000026842F4700202604FF4E022086840F0FF
-:10288000010008608A600B682B4803402B480B60EE
-:10289000026822F005020260002243685B085B00C8
-:1028A00043602748C8600861086820F480200860F9
-:1028B0008A61704710B54FF0B04222491068C0F3EA
-:1028C000031001EB8003186C936803F00C03042BD6
-:1028D00004D0082B04D00C2B04D01CE01A481AE0BA
-:1028E0001A4818E0D368D468C4F3021403F0030351
-:1028F000641C022B08BF144802D0032B08BF1348E6
-:10290000B0FBF4F3D068D468C0F30620640F4343EF
-:10291000641CB3FBF4F00E4B186090681A68C0F3A7
-:10292000031051F82000B2FBF0F0186010BD000059
-:1029300008ED00E088ED00E0FBFEF6FA9400005898
-:1029400000100422284400080024F4000048E80194
-:102950005000002070B50F4E0446B0680025A8B1A5
-:10296000FFF777FBB2684FF47A71B1FBF2F2B0FB7C
-:10297000F2F0FFF740FE48B9102C07D200222146A2
-:102980004FF0FF30FFF700FE746000E0012528469D
-:1029900070BD00BF2C000020164810B5016841F43E
-:1029A000807101600320FFF7E2FD0020FFF7D2FFF6
-:1029B0000024002814BF0124FEF7AEFC204610BD01
-:1029C0000D48406870470C48806870470B480BE022
-:1029D0000A48016821F00201016070470748016858
-:1029E00021F0040101607047016849084900016055
-:1029F00070470000004000582C000020042004E034
-:102A0000DFF80800006800F4C06070470004005858
-:102A10007047000000B500BF130096469446103979
-:102A200028BFA0E80C50FAD85FEA417C28BF0CC050
-:102A300048BF40F8042BC90728BF20F8022B48BF25
-:102A400000F8012B00BD000020B501460648074DE7
-:102A5000C2798A4218BFA84218BF0838F8D18A4202
-:102A600018BF002020BD00BFF873FF1F0070FF1FBC
-:102A700070B5040049D094F8210028B9002184F8E9
-:102A800020102046FEF7DCFC00F04EF853202168B1
-:102A9000486200F052F8FF2510B100F03FF834E032
-:102AA0002168DFF8AC008A6802408A602268936877
-:102AB00066682169A0690E4306433343936020682A
-:102AC000E168016120680169A26841EA024101618F
-:102AD0002068C16821F08001C1602068C16C89084C
-:102AE0008900C1642168CA6CE369606903431A43C1
-:102AF000CA6421688868810609D400F01CF830B1E6
-:102B000020684562042100F01DF8012070BD206896
-:102B10004562012184F82110002070BD20684562C3
-:102B2000042184F821107047022084F82100CA2172
-:102B300022685162704720460CE0204623E020685E
-:102B4000C0F8248084F82110002084F82000704709
-:102B5000BFFF8FFF38B504462068C16821F0A0018F
-:102B6000C160FFF79DFB05462068C168880608D450
-:102B7000FFF796FB401B40F2E9318842F4D3032073
-:102B800032BD002032BD38B504462068C1684A060F
-:102B900012D44FF0FF31C160FFF782FB0546206879
-:102BA000C168480608D4FFF77BFB401B40F2E931BF
-:102BB0008842F4D3032032BD002032BD4D4981B09C
-:102BC0000A6802430A60096808400090009801B052
-:102BD000704718B5484C89B0206840F40040206028
-:102BE00000F00AFB4549002000F0CDFC68461421A6
-:102BF000FFF75CFB0020029003214FF4604201913B
-:102C000000920120FFF7DAFF69464FF09040FFF78E
-:102C10002FFD606C40084000606418210091022084
-:102C2000FFF7CCFF69463648FFF722FD606C20F0C5
-:102C300002006064FFF7CAFEFFF7CAFEFFF7CEFE90
-:102C40000121012000F0EAFA002000F0BBFD012084
-:102C500000F0B8FD022000F0B5FD012000F0D6FD27
-:102C60000121002000F0ECFD00F042FE2548264C3A
-:102C700000F035FF0FF259020021202000F0B4F8D7
-:102C800004F23C50029021490FF22D020091019272
-:102C9000684600F088FE04F25471039104F5C9629D
-:102CA00040F23C5104920691059403A800F0B0FE56
-:102CB00000F01CFE0AB010BD80B50146114800F0BE
-:102CC0001AFFBDE804400021202000F09AB800005F
-:102CD00080B500F0D4FE0021012000F09FFA694683
-:102CE000084800F01EFF009800F0ABFE00F02AFF3D
-:102CF00001BD00004C00005808000058500400209E
-:102D000000040048A004002024000320113C000817
-:102D100000F098BA4FF0FF3000F006B8102808BF56
-:102D200000F085BF704700002DE9F0414D4CDFF801
-:102D30003881A5692840A06131E0491C54F8310070
-:102D40000742FAD004EBC1071840796810400142ED
-:102D500004BF4FF0FF327A607E68304000F086F8A2
-:102D60006062012101FA00F086437E60EFF3108279
-:102D700072B6606A23698140C9430B402361022017
-:102D800004EBC00353F8087C0F40401E43F8087C56
-:102D9000F6D182F31088606A58F82010884763697A
-:102DA0002069A2691840104207D0E069216A0842F0
-:102DB00003D1002103EA0207C0E701F089F8EFF32D
-:102DC000108872B621696069A2690140114201BF91
-:102DD000E069216A0842FFF79BFF88F3108801F041
-:102DE00078F8A561BDE8F08138B51446EFF3108599
-:102DF00072B600F03BF81C4941F8204085F310887A
-:102E000031BD30B5EFF3108272B6164B1C69044326
-:102E10001C6153F83150284343F8310082F3108885
-:102E200030BD506181F310887047EFF3108172B6A6
-:102E30000C4AD3691843D061F4E770B5094C656A50
-:102E4000266A2062012101FA05F502E02846FFF713
-:102E500061FF216AE0690842F8D088432662E06198
-:102E600070BD000004000020100300200246002076
-:102E7000110C090404BF1020120412F07F4F04BF8C
-:102E80000830120205A312F0704F04BF001D12019A
-:102E9000120FC0F11F00995C401A70470403020230
-:102EA0000101010100000000000000004AB1000023
-:102EB00011F8013B521E00F8013B1CBF11F8013B09
-:102EC000F8E77047DFF82C130A68030903F47F233F
-:102ED00000019A4300F47F2000F088B9DFF8142342
-:102EE0001368010C23EA014343EA0043136070476F
-:102EF0002DE9F843054600242878DFF8F8624106FA
-:102F0000A0464FF0B0472DD5286B70B1B0F5800FBB
-:102F100006D0B0F5000F18BFB0F5400F17D01FE076
-:102F2000F96841F48031F960F3E0386820F080609E
-:102F30003860FFF7B5F981463868000140F1D68066
-:102F4000FFF7AEF9A0EB09000228F5D90324DDE074
-:102F5000FFF7A6F9A0EB0900022840F2CF80F5E7C1
-:102F60000124A0462868010531D5B06800F44078F6
-:102F7000286C80452AD0FFF749FCB8F1000FB168F2
-:102F800005D1286C21F440710143B1601EE0B068A6
-:102F900040F48030B06021F44071B06820F480309B
-:102FA000B060286C0143B160B068C0070ED5FFF770
-:102FB00077F98046B068800708D4FFF771F9A0EB75
-:102FC000080041F289318842F4D30324A0462878CE
-:102FD000C10705D53268A869920840EA82023260CA
-:102FE0002978880705D53168E86921F440610143F3
-:102FF00031602978C80644BFA86AFFF76FFF2878B8
-:10300000810644BFE86AFFF769FF2878410744BF9B
-:10301000286AFFF757FF2878010744BF686AFFF75F
-:1030200051FF2868C1051ED53268686B22F04062E6
-:1030300002433260696BB1F1006F00F0C9F8686B50
-:10304000B0F1806F0FD1396821F0806100F0CBF8CA
-:1030500004463868000163D5FFF722F9001B0228F7
-:10306000F7D94FF0030870E0FFF71AF9001B0228A8
-:1030700064D9F6E7316821F04041316020F080509A
-:10308000326822F0406210433060A86BB0F1C05F3C
-:1030900000F09EF82868410576D53268E86B22F08A
-:1030A000405202433260E96BB1F1005F03D1F8682E
-:1030B00040F48030F860E86BB0F1805F64D139682B
-:1030C00021F0806100F08FF80446386800014CD58B
-:1030D000FFF7E6F8001B0228F7D94FF0030853E08A
-:1030E000FFF7DEF8001B022847D9F6E700F067F883
-:1030F000A86821F4781100F071F881463868000161
-:103100007FF526AF3969686901433961002C7FF486
-:1031100028AF3168286B21F440010143316021E779
-:103120003969686821F4FE4141EA00213961396951
-:10313000E86821F0606100F051F804463868000149
-:1031400092D5396968690143396129688805A1D533
-:10315000A86BB0F1804F1CBFB0F1004F002889D19F
-:10316000316821F0404108438EE700F028F82869D3
-:1031700021F0604100F032F8044638680001AFD514
-:1031800039696869014339612968C80405D5F1685E
-:10319000686C21F440410143F160296888040BD533
-:1031A000796AE86C21F0300101437962796AA86C90
-:1031B000890840EA810179624046BDE8F2833869B6
-:1031C000696820F4FE4040EA01203861396970479F
-:1031D00003D1F86840F08070F860704701433961AE
-:1031E000396841F080613960FFF75AB810430860D0
-:1031F00070470000880000582048002101604160AD
-:10320000704710B500F019F81C6819B1012904D1F4
-:10321000204301E024EA000018600BE010B500F044
-:103220000CF85C6819B1012904D1204301E024EABB
-:103230000000586082F3108810BDEFF3108272B660
-:103240000E4B704738B5EFF3108472B60B490C4D36
-:10325000086820B1296888476A6890470AE048688A
-:1032600020B1A8688047E968884703E0286980475B
-:103270006969884784F3108831BD0000A8040020E4
-:1032800088460008DFF8FC140A6892B200E00246A3
-:10329000086880B28242FAD170472DE9F041DFF828
-:1032A000E864DFF8E8843178044618256843062985
-:1032B00008EB000708D130787070347079754FF0E2
-:1032C000FF30706000203DE000F07BF8B96809181D
-:1032D000B96008F10803B96832786A439A58914294
-:1032E000327813D308F1150315FB02FC13F80C30E8
-:1032F000062B29D008F108066B43F358994222BFE8
-:1033000008F115036A439A5CECD21DE0114633784C
-:1033100069439A420FD008F1140C08F1150E1CF8FD
-:10332000013015FB03F50EF805407A753B7508F181
-:103330001402545403E008F114037A755C54317894
-:1033400071703470BDE8F0811146694308F11503CE
-:103350005B5C062B04D008F1140615FB03F57455CD
-:103360007B753A7508F115025454EBE7F0B5DFF8B8
-:103370001834DFF818541E78182402466243B0420D
-:103380002A4404D118785870547D1C700FE0167DC3
-:10339000507D92F815C005F115076643062807F819
-:1033A00006C004D0167D143514FB00F42E55012000
-:1033B00010731A78062A02BF00294FF0FF305860B8
-:1033C000F0BD10B5DFF8C043606810F1010F10D0F8
-:1033D000FFF758FF6168DFF8B82381422FBF6368A9
-:1033E00061685388CB1851781278181A4843D04036
-:1033F00000E0002080B210BD2DE9F84FDFF89053B7
-:10340000DFF890B3D5F80880D8F80000DBF800109A
-:103410004A0500F07AF9DFF87063DFF870A321F451
-:10342000806181604FF0180934780AF1080019FBB7
-:1034300004F14758FFF7C5FF874211D20027012149
-:10344000B170062C3FD019FB04F40AF108010A59A7
-:10345000824210D200230B510AEB04014C7DF0E7AD
-:10346000A9884118B94202D2AF880021E8E70122B9
-:103470003F1AB270E5E70A590AF10803121A1A5105
-:10348000EAE7022802DA2878012800D07F1ED8F85F
-:103490000000C1684A07FAD500F02AF9DBF80C00F1
-:1034A000000CBFB247EA0047CBF80C70FFF7EAFE0A
-:1034B0007060A8680068816841F480618160AFF342
-:1034C0000080BDE8F18FB8B20028DAD1FFF7DAFE4C
-:1034D00070600320BDE8F24FFFF7A1B82DE9F84373
-:1034E000EFF3108872B6AA4DA84BA8680168CA22EB
-:1034F0004A625320486218208A6822F480628A60F7
-:10350000A14A1678374647431F44387B022823D107
-:103510003C68D7F810909078D8B17A7B012A0AD10C
-:1035200001213046FFF722FF88F310887968304682
-:1035300000F0F1F804E088F31088304600F09EF8BF
-:10354000A86800F01AF831462246484600F02CF9E7
-:103550000DE0FFF751FF08E0C8684207FCD500F016
-:1035600086F84FF400208C49086088F31088FF2209
-:10357000A86801684A62BDE8F1830068CA21416217
-:10358000532242627047F8B5814CA160CA22096893
-:103590004A6253237F4A4B62156845F02005156047
-:1035A000136803F00703C3F10403237095682D0C1F
-:1035B00005F07F056D1C6570EDB29268C2F30E02D6
-:1035C000521C628092B2521E6A43A2F5A072DA4087
-:1035D0004FF6FF739A422CBFA380A2806F4A1368F4
-:1035E00043F4002313606E4B1D6845F400251D60F5
-:1035F00048BB6548012383704FF0FF3545600023C9
-:10360000624D00260C355FFA83FC182717FB0CFC73
-:103610005B1CDFB205F80C60062FF4DB0623037099
-:10362000886820F48060886000F021F84FF4002161
-:10363000D1600320FEF7FEFFA0680068816841F4B6
-:103640008041816005E0C868410544BF0320FEF762
-:10365000E6FFA1680A68FF205062002203210320D0
-:10366000FEF792FFBDE8F2400320FEF7AABFC8684C
-:1036700000F0800060F49060C8607047F8B50746BD
-:10368000EFF3108472B60320FEF7A6FF404DAE683C
-:103690003068FFF773FF3B46182042494343CA5C3A
-:1036A000022A1BD100213846FFF760FE3648017818
-:1036B00006290ED1306837490A68530500F025F80D
-:1036C00021F480618160C1684A07FCD500F010F8E0
-:1036D00004E04078884218BFFFF78EFEA9680A68A8
-:1036E000FF2050620320FEF76CFF84F31088F1BDC9
-:1036F000C16801F0800161F49061C1604FF4002065
-:10370000254908600320FEF795BF02D5C1684A0726
-:10371000FCD4816870472DE9F04180460F4642464F
-:1037200018201A4942438C18237B022B04BF4046C1
-:10373000FFF7A4FFEFF3108572B60320FEF74CFFEE
-:10374000134EB068FFF719FF02202073A76067606F
-:103750004046FFF7A2FD0C490A784978914202D011
-:10376000FFF74AFE02E0A168081AA060FF20B168D6
-:103770000A6850620320FEF724FF85F31088BDE835
-:10378000F081000028280040C804002068010020C3
-:1037900094040020082800400C0800580008005835
-:1037A000800800587401002010470000464981B08D
-:1037B0000A6802430A60096808400090009801B056
-:1037C0007047000078B585B0044668461421FEF7BE
-:1037D0006DFD0220FFF7EAFF3FA13C4E31F8145087
-:1037E0000095012101910022022102920391694674
-:1037F00056F82400FEF73CFF00F002F806B070BD5A
-:1038000056F8240000222946FEF7E1BF10B500F06B
-:103810000FF8BDE810400122FEF7D9BF10B500F047
-:1038200007F8BDE810400022FEF7D1BF00000000FD
-:1038300029A3264C33F8101054F8200070470000DC
-:1038400030B585B004460D4668461421FEF72EFDBE
-:10385000210008BF042004D0012C18BF022C02D183
-:103860000820FFF7A3FF2900DFF864201CA00ED179
-:1038700030F81410009100230193012102230291DA
-:10388000039300F01BF80120FEF72DFE14E0012D3C
-:1038900012D130F814000F4B00900295019300F004
-:1038A0000DF800BF10A0045D00220F2160B2FEF7EA
-:1038B0006BFE60B2FEF785FE05B030BD694652F87A
-:1038C0002400FEF7D5BE00004C0000583800002050
-:1038D0004400002000002110200001000200000030
-:1038E00010000100020000000A06070000F066BB9D
-:1038F00071487249016001F12002426001F1300318
-:10390000836001F13C02026201F14403C36001F1F2
-:103910004C02026101F16803436101F16C028261B2
-:103920007831C16100F052BB38B50446644D05F1F1
-:10393000100000F0D4F860494868A168016005F102
-:103940001001E268C2608160456000F05BFB5D4889
-:1039500037E080B558494A6813680120187200F0B2
-:1039600057FB002002BD38B5564C554D07E069465F
-:1039700005F1100000F0D5F800982168884705F19E
-:10398000100000F0AFF80028F1D031BD80B54A49F1
-:103990004A68D1680220087200F03FFB002002BD97
-:1039A00048484168084738B50446474D284600F066
-:1039B00096F84149C868A1680160456000F036FB8F
-:1039C00042482168016062684260002032BD80B5D3
-:1039D0003949CA6813681020187200F02DFB0020C6
-:1039E00002BD3549CA68394910680B68184738B5AF
-:1039F000364C354D06E06946284600F092F80098AE
-:103A000061688847284600F06DF80028F3D031BD82
-:103A100038B504462E4D284600F061F82D4800F0D8
-:103A20005EF825480069A1688160E268C2600561AE
-:103A30002168016062684260216941616269826156
-:103A400031BD80B50146234800F055F8BDE802407D
-:103A50000FF2050000F000BB38B5174C1D4D08E013
-:103A60006946284600F05DF800992069006900F079
-:103A700042F8284600F036F80028F1D031BD10B5E4
-:103A8000154C204600F02BF80B4948690460BDE84E
-:103A9000104000F0F5BA1CB50F4C06E06946204610
-:103AA00000F03FF8009800F019F8204600F01AF8EE
-:103AB0000028F3D013BD000000000320B80A032043
-:103AC000980A0320B8040020B00A0320C004002094
-:103AD0003C0B0320B0040020440B0320704700601F
-:103AE00040607047EFF3108172B6026882420CBFEB
-:103AF0000120002012E0EFF3108272B608604368E4
-:103B00004B6041604868016019E0EFF3108172B6C4
-:103B1000436802681A6042680068426081F3108856
-:103B2000704710B5EFF3108472B602680A6000683F
-:103B3000FFE7FFF7EAFF84F3108810BD086082F307
-:103B40001088704710B590B004A8DFF85813DFF85C
-:103B500058433022FFF7AAF92068DFF850430FF2EC
-:103B6000D92200924FF6FC7101EA8001DFF8400390
-:103B70004118E1606846DFF83C13029101F5867157
-:103B800003910FF2CD210191FFF7CEFE012102201A
-:103B9000FFF744FB01210220FFF733FB0020E07018
-:103BA000A07004A800F084FA0FF20512002108208A
-:103BB000FFF71AF9C04A00210120FFF715F90FF2AB
-:103BC0009D0200211020FFF70FF9BC4A00210220BE
-:103BD000FFF70AF9BA4A00210420FFF705F901208E
-:103BE00060700021A16004F11800FFF778FFFEF774
-:103BF00032FC04F1100000216060217001220FF2FC
-:103C0000051304F110010020FDF732FE10B010BDC5
-:103C100080B5A64A917831B1002393700120BDE8A8
-:103C20000240FFF702B9014602F1180008E110B5A1
-:103C30009E4CE07830B90120FFF7F0FD0121E170E2
-:103C4000002105E00120FFF7E1FD0020E0700121E7
-:103C5000BDE810400220FFF7D4BA000038B5EFF3FA
-:103C60001084924D6878012821D100226A7005F1F4
-:103C7000080105F11800FFF754FFE878A0B9A8681B
-:103C80000FF28113017A022972B607BFB0F80B2038
-:103C9000521D827AD21C00F1080192B20020FDF779
-:103CA000F2FD84F3108831BDBDE83140AAE031BD9A
-:103CB00010B5844CB4F809004FF66052811A04D054
-:103CC000491E06D0491E08D00BE0204600F0F8F946
-:103CD00011E0204600F02FFA0DE0204600F050FAE7
-:103CE00009E0A0810E210120A073E0726172212001
-:103CF00020720420A07221467348FFF7FCFEBDE845
-:103D00001040A1E0F8B5694D69682A7800240020C8
-:103D10001AB1022A64D013D358E00978012905D0DA
-:103D2000022907D0102918BF202907D101202870A7
-:103D300003244BE001202870042447E0012445E0DF
-:103D40000E78E868022E11D0102E02D0202E03D05B
-:103D50001CE0CC78C0681BE0CC785A4805F1100113
-:103D600000F108070A6840F8082F18E04068CA7890
-:103D70000979C36802EB012403F10807052205F164
-:103D800010013846FFF792F8052009E0CC7840682A
-:103D9000016805F1100001F108070168396004208D
-:103DA0006F60A1B211B102222A700FE0022E25D05D
-:103DB000102E1DD0202E1ED000210120FFF721F84B
-:103DC000002005F11001287001246960A2B201B041
-:103DD00069683E4BBDE8F04001440020FDF748BD56
-:103DE000087802280AD0102802D0202803D0E3E760
-:103DF00000210220E2E700210820DFE70021042063
-:103E0000DCE7000010B5294CE16801206070096909
-:103E1000A0688A68904205D3C9681144884238BFB7
-:103E2000FFF70FFE04F11800FFF75CFE10B9BDE8C4
-:103E3000104009E010BD000080B50146224800BFD7
-:103E4000FFF759FEBDE8044000211020FEF7D9BF5E
-:103E5000704770B51446144A144E12681D4601236B
-:103E6000B3704FF6FC7303EA8203114AD3180A4673
-:103E7000DE683668A6F80900F17206F10C002146EA
-:103E8000FFF714F800210020FFF7A1FD0120FEF745
-:103E9000D4FF314605F10800B278BDE87040D21C6D
-:103EA000FFF704B8404500083C4000587404002067
-:103EB000000003208408032053390008CF3900088C
-:103EC0008D3900085C0000208C040020053D0008AE
-:103ED00070477047C0680840884201D10120704790
-:103EE00000207047C0690840884201D10120704716
-:103EF0000020704710B5654C02212046FFF7F2FF05
-:103F000038B16068C043810703D5FFF770FD022018
-:103F100018E001212046FFF7E5FF38B16068C04393
-:103F2000C10703D5FFF71FFD01200BE00821204644
-:103F3000FFF7D8FF38B16068C043010703D5FFF72A
-:103F4000AAFD0820A06010BD10B5504C00F033F859
-:103F500018B96068C043810306D400F02CF830B96A
-:103F60006068C043810302D5BDE810406DE00821C0
-:103F700000F022F870B96068C04301030AD5606898
-:103F8000434940F400206060086880474FF40022F5
-:103F9000A26010BD202100F00FF858B96068C0433E
-:103FA000810207D5606840F400106060BDE81040F1
-:103FB000FFF7F6BC10BD022120468BE740BF20BFB3
-:103FC0003448016841F400410160704780B53248CF
-:103FD000016841F480110160006800F480100090D5
-:103FE00000982A48016841F001010160026842F42A
-:103FF000803202602C20FEF7E4FABDE802402D205A
-:10400000FEF7DFBA2548016849084900016070479A
-:1040100023494FF480300860704720484FF4001166
-:104020004160026822F40012026070471B48016878
-:1040300021F002010160704718484FF400314160DF
-:10404000026822F40032026070471448016841F4AB
-:1040500000310160FFF7C5BC38B504460B4D08219F
-:104060002846FFF737FF30B109480460696821F43A
-:104070000021696031BDA0474FF40020A86031BD28
-:104080000648016821F0080101607047000C0058E3
-:10409000D00400200C04005850000058040C0058B4
-:1040A000080C0058FFF7D5FE9DF80E0005B000BDC6
-:1040B000F8B500F10C026B4621214FF66640F1E79E
-:1040C00070B5EFF31081027B012A02D0022A07D0DB
-:1040D0000DE000F028F8137800F01FF814700CE0E1
-:1040E00000F021F8138800F018F8148005E000F0C3
-:1040F0001AF8136800F011F8146081F31088212178
-:104100000E220172427204214FF660528172828146
-:10411000002101228173C27270BD264623EA040485
-:1041200035402C43704772B6D0F81120D0F80D40BE
-:10413000D0F81550704781B0017B012902D00229C7
-:1041400004D007E0D0F80D10097806E0D0F80D1083
-:10415000098802E0D0F80D100968009121220E2193
-:10416000417202724FF661510822818182720021F0
-:1041700001228173C272009940F80F1F01B070478D
-:1041800038B50446212020720E2161724220A072AF
-:104190004FF66251A1810120E0720021A1731D48F8
-:1041A0001D4D0168090CA4F80F100068C0F30B0046
-:1041B000A4F8110019480178194801F01F01E174B1
-:1041C000416821754168090AC4F815100168C4F8EE
-:1041D00019100169C4F81D104169C4F8211004F1D7
-:1041E00029018069C4F82500286802680A600C2249
-:1041F0002B68191D04F12D00FEF758FE29681022C6
-:10420000103104F13900FEF751FE06480168C4F888
-:10421000491031BD002004E0000003200075FF1F9D
-:104220008075FF1F9847000800EB81003D4AD0F8D9
-:104230008010914201D0012070470020704742F465
-:10424000806240F82120704737481F218161026851
-:10425000D208D20042F0030202603448016841F003
-:104260000401016030BF7047704710B5304C00F05A
-:1042700048F80028FBD1042100F044F828B92D4863
-:104280000068010403D500F03FF800F057F8002261
-:1042900003212046FFF7D3FF23480168C908C9005E
-:1042A00041F0020101602148016841F00401016010
-:1042B00030BF10BD10B51E4C00F026F800F021F8FC
-:1042C0000028FBD14FF0B040816801F00C010429B7
-:1042D00011D1016841F48031016001688903FCD586
-:1042E00082689208920042F002028260816801F0C6
-:1042F0000C010829FAD12046BDE810400022032114
-:104300009DE7032120468FE700220421204696E7FF
-:1043100080B500F02DF80548016821F00401016026
-:1043200030BF01BD000400800004005810ED00E023
-:10433000001400588804005800F022B84FF0B04034
-:10434000016841F48071016001684905FCD582680B
-:104350009208920042F001028260416A8908890055
-:104360004162816801F00C010429FAD17047000014
-:104370000248016821F002010160704710E000E08E
-:104380000248016841F002010160704710E000E05E
-:10439000000000000000000000000000000000001D
-:1043A000000000000000000000000000000000000D
-:1043B00000000000000000000000000000000000FD
-:1043C00000000000000000000000000000000000ED
-:1043D00000000000000000000000000000000000DD
-:1043E00000000000000000000000000000000000CD
-:1043F00000000000000000000000000000000000BD
-:1044000000000000000000000000000000000000AC
-:10441000000000000000000000000000000000009C
-:104420000000000000000000010000000300000088
-:10443000050000000100000001000000060000006F
-:104440000A0000002000000002000000040000003C
-:104450000800000010000000400000008000000084
-:104460000001000000020000A0860100400D0300D2
-:10447000801A060000350C0040420F0080841E00A8
-:1044800000093D0000127A000024F40000366E019D
-:104490000048E801006CDC020000000000000000A1
-:1044A00000000000000000007047FEE7FEE7FEE7A6
-:1044B000FEE770477047704700F01EB80548FDF7EB
-:1044C0008EB80548FBF73CBF0448FBF739BF0448EA
-:1044D000FDF785B89003002084020020F801002039
-:1044E000F00300201020FEF777B9FEF7F7BFFFF7C3
-:1044F0002BBDFFF7FFBC000002490A6888688218DC
-:104500000A6070472C00002030B5016884684218AA
-:10451000416802EB5103C9070BD54C4409E012F97D
-:10452000011B12F8015B002904F8015B05D5491C49
-:10453000F9D19A42F3D10C3030BD491EF1D5F8E7DC
-:10454000000000000000000000000000000000006B
-:104550000000000044000800400508013A799C0072
-:10456000F4010000FFFFFFFF480101000000000010
-:1045700080B500F015F802000023DB431068984274
-:1045800004D011000220ABBE002010605068984299
-:1045900004D0111D0220ABBE0020506001BD000000
-:1045A00001487047000000005400002010B5074982
-:1045B00079441831064C7C44163404E00A68081D1E
-:1045C000114488470146A142F8D110BD2C000000DB
-:1045D000500000004EF68851CEF20001086840F409
-:1045E00070000860BFF34F8FBFF36F8F4FF0007004
-:1045F000E1EE100A704700002BD1FFFF800400009D
-:104600005C000020940A0000240003200000000049
-:10461000F9FEFFFF880100005800000004000020A0
-:10462000000000000000000000000000000000008A
-:104630000100000002000000030000000400000070
-:1046400000F00DF8002801D0FFF7B0FFAFF30080B5
-:104650000020AFF30080FDF73AFE00F002F80120E1
-:10466000704700F001B800000746384600F002F835
-:10467000FBE7000080B5FFF77BFF024A110018201E
-:10468000ABBEFBE7260002001143000839430008D7
-:104690006B420008B5420008494200086942000820
-:1046A000014880470148004765280008B1460008D6
-:1046B000AFF30080FFF78EFFFFF7C2FFFFF7FEBFEB
-:1046C000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF1E
-:1046D000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF0E
-:1046E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFFE
-:1046F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFEE
-:10470000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFDD
-:10471000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFCD
-:10472000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFBD
-:10473000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFAD
+:1005900000714FF480624FF400634FF4805C4FF4BD
+:1005A000005E4FF4804929D1DAF800B00BF0030B5C
+:1005B000BBF1030F3ED8DFE80BF00237343A4FF0BF
+:1005C000010AD4F81CB05746BBF5004F4FF6F07A3D
+:1005D00040F01183012F09D0022F00F05482042F24
+:1005E00000F08D82082F00F0C282F5E201F0DCFC01
+:1005F0000146606A002840F01B8242E2DFF8ECB757
+:100600005F4517D1DAF800A01AF4406A27D0BAF58E
+:10061000806F09D0BAF5006F03D0BAF5406F06D0ED
+:1006200008E04FF0020A07E04FF0040A04E04FF040
+:10063000080A01E04FF0100ADFF8B0B75F45C0D1FB
+:10064000BAF1000F0BD0BAF1020F49D0BAF1040F82
+:1006500000F08280BAF1080F00F0B080B6E301F03C
+:100660009BFC0146606A58B3012808BF022028D0CD
+:10067000022808BF042024D0032808BF062020D069
+:10068000042808BF08201CD0052808BF0A2018D05D
+:10069000062808BF0C2014D0072808BF102010D04F
+:1006A000082808BF20200CD0092808BF402008D007
+:1006B0000A2808BF802004D00B2808BF284600D095
+:1006C0000120B1FBF0F0002800F08283626802EBA9
+:1006D0004201884203D31103814280F0A18075E377
+:1006E000606AB0B3012808BFDFF8E408EED0022842
+:1006F00008BFDFF8E008E9D0032808BFDFF8D80812
+:10070000E4D0042808BFDFF8D408DFD0052808BFEC
+:10071000DFF8CC08DAD0062808BFDFF8C808D5D043
+:10072000072808BFDFF8C008D0D0082808BFDFF8C6
+:10073000BC08CBD0092808BFDFF8B408C6D00A2807
+:1007400008BFDFF8B008C1D00B2808BF4FF2244023
+:10075000BCD0DFF8A408B9E701F0D4FB0146606A19
+:1007600058B3012808BF0220ABD0022808BF0420DC
+:10077000A7D0032808BF0620A3D0042808BF08205C
+:100780009FD0052808BF0A209BD0062808BF0C2050
+:1007900097D0072808BF102093D0082808BF202032
+:1007A0008FD0092808BF40208BD00A2808BF80209E
+:1007B00087D00B2808BF284683D081E7676A002FBF
+:1007C00084D0012F08BF4846FAD0022F08BF7046D8
+:1007D000F6D0032F08BF41F25550F1D0042F08BFC7
+:1007E0006046EDD0052F08BF40F6CC40E8D0062F7C
+:1007F00008BF40F6AA2012D0072F08BF18460ED017
+:10080000082F08BF10460AD0092F08BF084606D097
+:100810000A2F08BF284602D00B2F00D1802055E7B1
+:10082000BAF1000F0BD0BAF1020F38D0BAF1040FB1
+:1008300000F07280BAF1080F00F0A780ECE001F040
+:10084000ABFB0146606A40B3012808BF02251ED0F9
+:10085000022808BF04251AD0032808BF062516D091
+:10086000042808BF082512D0052808BF0A250ED085
+:10087000062808BF0C250AD0072808BF102506D077
+:10088000082808BF202502D0092808BF402572D0BB
+:100890000A280CBF80250B286DD001256BE0606A0B
+:1008A000002836D0012808BFDFF89C692BD0022829
+:1008B00008BFDFF8986926D0032808BFDFF89069E1
+:1008C00021D0042808BFDFF88C691CD0052808BF98
+:1008D000DFF8846917D0062808BFDFF8806912D0D6
+:1008E000072808BFDFF878690DD0082808BFDFF8AF
+:1008F000746908D0092808BFDFF86C6903D00A289A
+:1009000008BFDFF868697CD00B2808BFDFF8E8660D
+:1009100077D0DFF85C6974E001F0F4FA0146606AB0
+:1009200040B3012808BF022525D0022808BF0425AE
+:1009300021D0032808BF06251DD0042808BF08259C
+:1009400019D0052808BF0A2515D0062808BF0C2590
+:1009500011D0072808BF10250DD0082808BF202572
+:1009600009D0092808BF402505D00A280CBF8025DA
+:100970000B2800D001256268B1FBF5F65008002174
+:1009800010EB062051EB166141E0606A002836D07A
+:10099000012808BF4FF4800633D0022808BF4FF467
+:1009A00000162ED0032808BFDFF8C86829D0042815
+:1009B00008BF4FF4801624D0052808BFDFF8B868B8
+:1009C0001FD0062808BFDFF8B4681AD0072808BF70
+:1009D0004FF4002615D0082808BF4FF4802610D009
+:1009E000092808BF4FF400360BD00A2808BF4FF47F
+:1009F000803606D00B2808BF4FF4004601D04FF4D4
+:100A00000006C246002116EB52004AEB010100230A
+:100A100001F058FB064601E04FF00108A6F54070D2
+:100A2000DFF85C18884280F0D1812168CE60CFE188
+:100A3000012808BF02251AD0022808BF042516D0B5
+:100A4000032808BF062512D0042808BF08250ED0A9
+:100A5000052808BF0A250AD0062808BF0C2506D09D
+:100A6000072808BF102502D0082808BF202575D008
+:100A7000092808BF402571D00A280CBF80250B2803
+:100A80006CD001256AE0606AB0B3012808BFDFF8C6
+:100A9000680521D0022808BFDFF834051CD00328E0
+:100AA00008BFDFF8E00717D0042808BFDFF82405E7
+:100AB00012D0052808BFDFF8D0070DD0062808BFE0
+:100AC000DFF8140508D0072808BFDFF8100503D0A9
+:100AD000082808BFDFF810057AD0092808BFDFF81A
+:100AE0000C0575D00A2808BFDFF8040570D00B2864
+:100AF00008BFDFF800056BD0DFF8700768E001F091
+:100B000001FA0146606A40B3012808BF022525D0DA
+:100B1000022808BF042521D0032808BF06251DD0C0
+:100B2000042808BF082519D0052808BF0A2515D0B4
+:100B3000062808BF0C2511D0072808BF10250DD0A6
+:100B4000082808BF202509D0092808BF402505D05E
+:100B50000A280CBF80250B2800D001256068B1FB56
+:100B6000F5F1420802EB4102B2FBF0F632E0666AB0
+:100B700066B3012E2CD0022E08BF484628D0032E83
+:100B800008BF42F6AA2023D0042E08BF70461FD00B
+:100B9000052E08BF41F698101AD0062E08BF41F264
+:100BA000545015D0072E08BF604611D0082E08BF3C
+:100BB00018460DD0092E08BF104609D00A2E08BFCE
+:100BC000084605D00B2E08BF284601D04FF48030D0
+:100BD00000F014F9B6B201E04FF00108A6F11000E0
+:100BE000504580F0F3800AEA0601C6F34200014353
+:100BF0002068C160ECE0012F07D0022F35D0042F10
+:100C000070D0082F00F0A580D7E001F0CDF90146A3
+:100C1000606A40B3012808BF022516D0022808BF29
+:100C2000042512D0032808BF06250ED0042808BFCB
+:100C300008250AD0052808BF0A2506D0062808BFBF
+:100C40000C2502D0072808BF10257AD0082808BF35
+:100C5000202576D0092808BF402572D00A280CBF6D
+:100C600080250B286DD001256BE0606AB0B30128A8
+:100C700008BFDFF85C1333D0022808BFDFF8541335
+:100C80002ED0032808BFDFF8501329D0042808BF4E
+:100C9000DFF8481324D0052808BFDFF844131FD01D
+:100CA000062808BFDFF83C131AD0072808BFDFF872
+:100CB000381315D0082808BFDFF8301310D00928E2
+:100CC00008BFDFF82C130BD00A2808BFDFF8241365
+:100CD00006D00B2808BF4FF2244101D0DFF81813CB
+:100CE000606831E001F00EF90146606A40B3012806
+:100CF00008BF022525D0022808BF042521D00328DB
+:100D000008BF06251DD0042808BF082519D00528CE
+:100D100008BF0A2515D0062808BF0C2511D00728C2
+:100D200008BF10250DD0082808BF202509D00928A4
+:100D300008BF402505D00A280CBF80250B2800D00D
+:100D400001256068B1FBF5F101EB5001B1FBF0F654
+:100D500031E0666A6EB3012E08BF484629D0022EE4
+:100D600008BF704625D0032E08BF41F2555020D051
+:100D7000042E08BF60461CD0052E08BF40F6CC40AC
+:100D800017D0062E08BF40F6AA2012D0072E08BFA3
+:100D900018460ED0082E08BF10460AD0092E08BFEC
+:100DA000084606D00A2E08BF284602D00B2E08BFE0
+:100DB000802000F023F8B6B201E04FF00108A6F160
+:100DC0001000504502D22068C66001E04FF00108D3
+:100DD00004F16800012141800180002141608160AF
+:100DE0004046BDE8F28F000011100008008000406E
+:100DF000F369FFCF0038014088000058616800EBBC
+:100E00005100B0FBF1F6704790F82810CA0706D5DC
+:100E100002685368C16A23F400330B43536090F8AF
+:100E200028108A0706D502685368016B23F48033C3
+:100E30000B43536090F828104A0706D502685368A0
+:100E4000416B23F480230B43536090F828100A076A
+:100E500006D502685368816B23F400430B4353604B
+:100E600090F82810CA0606D502689368C16B23F46F
+:100E700080530B43936090F828108A0606D50268C9
+:100E80009368016C23F400530B43936090F828108F
+:100E90004A0610D502685368416C23F480130B4353
+:100EA0005360416CB1F5801F05D15368816C23F408
+:100EB000C0030B43536090F828100A0606D501685A
+:100EC0004A68C06C22F4002202434A607047F8B5B9
+:100ED000044604F17C050020E8606FF07E4701F0D5
+:100EE00009FA0646206801680A0708D500973346C4
+:100EF00000224FF40011204600F016F860B9206877
+:100F000001684A070AD50097334600224FF4800152
+:100F1000204600F009F808B10320F2BD20206860E7
+:100F2000A86000202870F2BD2DE9F041069C05461E
+:100F30000E4690461F462868C1693140B1420CBF39
+:100F40000120002040451CD114F1010FF3D001F025
+:100F5000D1F9C01B844200D314B900F015F80CE09D
+:100F6000286801684A07E6D5C1690A05E3D54FF448
+:100F70000062026200F008F8C160002101700320E5
+:100F800000E00020BDE8F0812868016821F4D071FC
+:100F900001602868816849084900816005F17C008A
+:100FA000202141608160704701680A6822F49072D4
+:100FB0000A60DFF8D812026893680B409360202122
+:100FC000C0F884100021C16670470000FFF4FF11D3
+:100FD00000127A0000093D00AAB0280080841E009B
+:100FE000006A18005558140040420F0020A1070065
+:100FF00090D0030048E801000024F400136823F0B7
+:10100000800313600068016841F04001016070478F
+:10101000806A00F1560100220A810A8000F032BB8A
+:10102000D0F8801021290FD10268B0F8561001B90C
+:10103000E4E7036D19789162016D4A1C0265B0F80E
+:1010400056104A1EA0F856207047D0F8801021296B
+:1010500011D10268B0F8561001B9CFE7036D1988B5
+:10106000C1F308019162016D8A1C0265B0F8561047
+:101070004A1EA0F856207047D0F88010212900D0D1
+:10108000704730B500F15602938A0CE0E1690D0615
+:1010900008D5016D0D78A562016D4C1C046514889E
+:1010A000611E11805B1E99B229B104681188002964
+:1010B000ECD100F023F830BDD0F88010212900D009
+:1010C000704730B500F15602938A0EE0E1690D06D3
+:1010D0000AD5016D0D88C5F30805A562016D8C1C4C
+:1010E00004651488611E11805B1E99B229B10468E1
+:1010F00011880029EAD100F001F830BDA26822F47D
+:101100000002A2600068016841F040010160704780
+:1011100010B500F027F808D100F02AF80B70816DA7
+:101120004B1C00F019F821B929E0886940F008004B
+:10113000886110BD10B500F015F808D100F018F85E
+:101140000B80816D8B1C00F007F821B917E08869CE
+:1011500040F00800886110BD83652388591E2180F6
+:101160002188704700F16C0201689369222B704757
+:101170004B6A00F15E0461880B40816D7047016825
+:101180000B6823F490730B6001688B685B085B004D
+:101190008B602021916100211160BDE8104000F0BA
+:1011A0000DBB2DE9F84300F07DF81CD16789DFF80D
+:1011B000DC900AE000F08DF80870B06D411C00F082
+:1011C0006BF808B900F08BF87F1EB8B20028F1D197
+:1011D000208850B16189884207DA00F074F82C4801
+:1011E00000F06AF801E000F002F8BDE8F183306831
+:1011F000816941F00801816170472DE9F84300F0F1
+:1012000051F81CD16789DFF884900AE000F061F89A
+:101210000880B06D811C00F03FF808B900F05FF85D
+:101220007F1EB8B20028F1D1208850B16189884270
+:1012300007DA00F048F8174800F03EF801E0FFF741
+:10124000D6FFBDE8F18300000000127A0000093DDE
+:1012500000AAB0280080841E00006A1800555814A7
+:101260000040420F0020A1070090D0030048E80191
+:10127000000024F40055150000CC0C0000AA0A0060
+:1012800000FD0F005461510000D43000FEFFFFEF5D
+:101290001111000835110008B1652188481E208011
+:1012A00020887047064606F15E0406F16C05B4F826
+:1012B0000280A8692228704728603068016841F0E0
+:1012C0002001016070473068816821F080518160A1
+:1012D00070473068406AB16D08EA000070473068B6
+:1012E000016821F4807101603068816809EA0101B8
+:1012F00081602020A86100202860304600F05EBA9E
+:101300003A4881B0016841F400210160006800F4AE
+:1013100000200090009801B0704710B50446344991
+:101320002068884213D100F0EBFF00F0E9FF31485C
+:10133000016821F4407141F480710160026842F457
+:10134000004202602046BDE8104000F0EDBF10BD35
+:1013500038B586B0044601A8142100F0FDFF2168CD
+:10136000254A914240D12548254D416941F48041AB
+:1013700041610222416901F48041009100990168B4
+:1013800041F002010160C021006800F002000090FD
+:1013900000980191012003900321072004910590FA
+:1013A000029201A9174800F0DBFF174828600F20C0
+:1013B00068601020A8600020E8608020286100207C
+:1013C0006861A861E8612862284600F01FF808B14A
+:1013D00001F0E2F96567AC6200220021242001F0EF
+:1013E000F9F9242001F013FA07B030BD500000587D
+:1013F0000028004090000058003801404C00005880
+:1014000004030020000400484404024038B50400EE
+:1014100001D1012032BD2168DFF84002814204F190
+:10142000240500F042F8022068700A68A0686FF393
+:101430000E120243E06802432069024360690243DE
+:10144000A0690243E0690243206A02430A60204621
+:1014500000F0DAF8A068B0F5804F04BF00216160A9
+:10146000696A207900F014F838B1052805D22046C1
+:1014700000F0E4F800F012F803E00020286368634D
+:10148000A8630020A861012068700020287032BD88
+:101490000860A96AE86A486060687047296B0020A4
+:1014A0000860696BA86B486070470AD2DFF8B0012A
+:1014B00042181423B2FBF3F292002A62DFF8A4016F
+:1014C00009E0DFF8A40142181423B2FBF3F2920002
+:1014D0002A62DFF89801E861704738B500F124020C
+:1014E00000245178022903D004209061012428E0CF
+:1014F00001680B6823F00E030B6001680D686D082E
+:101500006D000D60516A0B6823F480730B6001213C
+:1015100092F82030D56903F01C0399406960936A02
+:10152000D16A5960116B31B10B6823F480730B6081
+:10153000536B916B5960012151701470516901B165
+:101540008847204632BDF8B500F124010423CA695A
+:1015500014680268156891F8206006F01C0603FA0A
+:1015600006F73C4210D06F070ED51468A50603D4C9
+:10157000156825F00405156000F03DF8C9680029DC
+:1015800038D0BDE8F4400847022303FA06F73C428E
+:1015900013D0AF0711D51468A50605D4156825F03A
+:1015A0000A05156001224A7000F025F800220A7031
+:1015B0008968F9B1BDE8F4400847082303FA06F644
+:1015C000344217D02B0715D5136823F00E03136090
+:1015D000012291F82030CC6903F01C039A4062602C
+:1015E00001228A614A7000220A70096911B1BDE8BE
+:1015F000F4400847F1BD91F82020CC6902F01C02AC
+:101600009340636070470000416C0268134B890887
+:101610009A4234BF164B174B03EB8101816402F0F1
+:10162000FF02083A1421B2FBF1F1134AC26401F03F
+:101630001C01012202FA01F10165704701790F4A8C
+:1016400002EB81024265491E0D4A826501F00301E9
+:1016500001228A40C2657047000000000804024071
+:10166000F8FFFDBF00000240F8FBFDBF0004024090
+:10167000000802401C08024080080240FC080240AA
+:10168000400902407047000010B500F17C010A7863
+:10169000012A01D1022010BD01230B7024224A60CF
+:1016A00002681368146864086400146000224266CB
+:1016B00023F0005300680360202048600020087079
+:1016C00010BD70B500F01EF801D1022070BD00F011
+:1016D0001FF822F0604209E070B500F013F801D164
+:1016E000022070BD00F014F822F0606211438160A6
+:1016F000204600F01AF8206806602020686000206C
+:10170000287070BD044604F17C05287801287047D4
+:1017100001222A7024206860206806680268520846
+:1017200052000260206882687047FFB50FF25402D1
+:101730000FF25806D2E9003402A9C1E90034D6E913
+:101740000071CDE90071416E11B90121012213E050
+:1017500001688A688968520E02F00702490F02ACDC
+:10176000655CA45C1DF801101DF80220ED00E4008A
+:1017700095FBF1F194FBF2F2683041800280FFBDED
+:101780000000000001010103070100000804020439
+:10179000080101017047000030B912480360124887
+:1017A000124B0360FEF754BD704730B91048036018
+:1017B0000D480E4B0360FEF701BD704700680B49F2
+:1017C000884204D107490868002818BF00477047BD
+:1017D00000680649884204D105490868002818BFF6
+:1017E00000477047E8030020F8010020003801405E
+:1017F000EC030020704770474FF0B040006800F0E5
+:10180000F000B02888BFB02070472DE9F0410400F7
+:1018100068D0207881064FF0B04539D5A868E968CE
+:1018200010F00C0001F0030104D00C2808BF0129BE
+:1018300040F083802868800702D5E069002851D0F5
+:10184000FFF7DAFF616A884207D2084600F0BDFB65
+:1018500000281BD100F05AFA10E0286820F0F000B0
+:10186000014329606968206A21F47F4141EA00212F
+:101870006960606A00F0A9FB002807D101F046F812
+:10188000DFF8E007006801F0CFF8002840F0888119
+:101890002078C10711D5A868E96800F00C00082875
+:1018A00001F0030103D00C2808BF032967D1286881
+:1018B000800302D56068002814D0217888071AD5E3
+:1018C000A868E96800F00C00042801F0030104D0C6
+:1018D0000C2808BF022940F087802868400503D5FE
+:1018E000E068002800F05C816968206921F0FE4111
+:1018F00041EA006169602168DFF86C6711F0180F38
+:1019000000F078816069002800F0A880C90670683E
+:1019100040F19580800707D4706840F0010000F026
+:101920000EFA07467068800700F13C8100F0E2FC87
+:10193000C01B0328F6D30320E1E1E06978B12968F0
+:1019400041F0010100F0D4FA06462868800700F152
+:10195000388100F0CFFC801B0328F6D3EBE7286822
+:101960004008400000F0E5F90646286800F0CAF992
+:101970008ED000F0BFFC801B0328F6D3DBE7606845
+:10198000B0F5803F06D0B0F5A02F296807D141F40B
+:1019900080212960286840F48030286006E021F426
+:1019A000803129602A6822F480222A60606860B150
+:1019B00000F0A0FC0646286880033FF57EAF00F0EB
+:1019C00099FC801B6528F6D3B5E700F093FC06462A
+:1019D0002868400C10F001003FF46FAF00F08AFC63
+:1019E000801B6528F4D3A6E7E06878B1296841F444
+:1019F000807100F07DFA06462868400500F1E48019
+:101A000000F078FC801B0328F6D394E7286820F4C4
+:101A1000807000F08EF906462868800A10F00100F8
+:101A20003FF469AF00F066FC801B0328F4D382E723
+:101A300000F060FCC01B0328C0F0D8807BE740F0BA
+:101A4000010000F07CF907467068800700F1E9802A
+:101A500000F050FCC01B0328F6D36CE7706820F040
+:101A6000040000F06CF907467068C00810F001002F
+:101A700000F0E68000F03EFCC01B0428F4D35AE7D7
+:101A80000528306806D140F004003060316841F02C
+:101A9000010105E0400840003060316821F0040198
+:101AA0003160A06841F2893768B100F023FC8046BC
+:101AB0003068800700F1D98000F01CFCA0EB080022
+:101AC000B842F5D337E700F015FC8046306800F0E7
+:101AD00019F900F0CA8000F00DFCA0EB0800B84234
+:101AE000F4D328E700F006FCC01B0328C0F0CB802D
+:101AF00021E7B06840084000B06000F0FBFB0746FB
+:101B0000B06800F0FFF800F0C28000F0F3FBC01BEB
+:101B10000328F5D30FE700F0EDFB801B0328C0F08E
+:101B2000C88008E700F0E6FB001B0328C0F0E28055
+:101B300001E7E968DFF8340589088900E960E968A8
+:101B40000140E96000F0D6FB044600F0EDF825D036
+:101B500000F0D0FB001B0328F7D3ECE601281FD0D0
+:101B6000E868226B00F00301914202BF00F07001AF
+:101B7000626B914214D1A26BC0F30621914202BF65
+:101B800000F47811E26B91420AD1226C00F060619E
+:101B9000914202BF00F06040616C884200F0AE806C
+:101BA0000120ACE0706840F0040000F0C8F807467F
+:101BB0007068000710D400F09DFBC01B0428F7D309
+:101BC000B9E600F0A3F863E66868216920F0FE40FA
+:101BD00040EA016068608EE67068A16920F4706078
+:101BE00040EA0120706000F0A7F8074600F089F88D
+:101BF0007FF41EAF2078410737D5DFF8747438685A
+:101C0000C10529D400F07CFB00F074FB80463868E5
+:101C1000C10521D400F06EFBA0EB08000328F6D329
+:101C200089E6706820F0040070607068C00810F0E9
+:101C30000100DFD000F05EFBC01B0428F5D37AE67C
+:101C400000F07AF8074600F05CF8D3D000F052FBC1
+:101C5000C01B0328F7D36EE6A06801287FF410AFFD
+:101C6000306840F0010030601BE7217848060ED54F
+:101C7000A06A00283FF43DAFB16841F00101B160B6
+:101C800000F038FB0746B06880077FF52BAFE06AAD
+:101C9000A0B3A96801F00C010C293FF45FAF022842
+:101CA000286820F0807028607FF443AF00F022FBAA
+:101CB000064600F039F87FF42EAFE968DFF8B40388
+:101CC000A26B0140206B0143606B0143E06B41EA72
+:101CD00002210143206C0143606C0143E9602868E4
+:101CE00040F080702860E96841F08051E96000F0C0
+:101CF00001FB0446286880017FF514AF0020BDE891
+:101D0000F0817068400810F0010070472968606A2F
+:101D100021F0F001014329606868216A20F47F40C6
+:101D200040EA0120686070472868400E10F001000A
+:101D30007047286000F0DEBA7068400840007060AC
+:101D400000F0D8BA2DE9F8430400884644D0DFF803
+:101D5000286300F0C8F847D200F0CDF8074600F03D
+:101D6000C2F841D000F0C6FAC01B0228F7D9032000
+:101D7000B7E000F0BFFA401B022843D9F7E700F0B4
+:101D8000B9FAA0EB090002284CD9F0E700F0B2FA4A
+:101D9000A0EB0900022854D9E9E700F0ABFA401B98
+:101DA00002285DD9E3E700F0A5FA401B022867D9B5
+:101DB000DDE700F09FFA401B484577D3D7E70328BB
+:101DC00002D13968890103E00028396802D1890706
+:101DD00062D401E049055FD4012082E000F08AFA74
+:101DE000C01B022872D9C2E7207881074FF0B047A4
+:101DF0000BD5B968A06821F0F0010143B96000F08B
+:101E000079FA0546B868C003B3D52078DFF8505298
+:101E100081060AD52968606921F0F001014300F0CC
+:101E200067F8814628688003A9D5207841060BD53C
+:101E30002968A0690909090141EA101100F058F860
+:101E400081462868C003A1D5207841070BD5B96821
+:101E5000E06821F4E0610143B96000F04BFA054607
+:101E6000B868800399D5207801070CD5B868216936
+:101E700020F4605040EAC100B86000F03BFA05462B
+:101E8000B86840038FD52078C10717D5606802284D
+:101E900095D1396889039FD5B968890840EA8100DE
+:101EA000B86041F2893900F025FA0546B8686168E2
+:101EB00000F00C00B0EB810F7FF47BAF306800F0D6
+:101EC0000700804505D200F016F8074600F00BF831
+:101ED00084D100F01BFD00F0DDFDBDE8F24300F011
+:101EE000A3BDBDE8F283306800F0070040457047AD
+:101EF000296000F0FFB93168C90848EAC1013160C2
+:101F000000F0F8B938B54FF0B0445D4DA16811F05C
+:101F10000C0106D1FFF770FCC0F3031055F8200048
+:101F200032BD0429574A05D00829574804D12168F1
+:101F3000C90222D5104632BDE16801F00301022931
+:101F400004D0032904D12168C90207D5104605E051
+:101F5000FFF752FCC0F3031055F82000E168E26877
+:101F6000E368C1F306214843C2F30211491C5B0F29
+:101F7000B0FBF1F05B1CB0FBF3F032BD80B5FFF7B6
+:101F8000C1FF3E49FFE7414A0968C1F3031152F816
+:101F90002110B0FBF1F002BD80B5FFF7EFFF00F0BC
+:101FA00010F8C1F3022106E080B5FFF7E7FF00F06B
+:101FB00008F8C1F3C22112F8211001F01F01C84036
+:101FC00002BD2E49324A0968704770B52C49B128C4
+:101FD0002EBFCC6AC0F3031051F82040204805689A
+:101FE00000F078FD29492B4A05F00F0551F825101E
+:101FF000B4FBF1F10024B1FBF2F1B0F5007F0FF278
+:10200000B402204609D10FF2900353F820508D42BC
+:1020100014D2401C0328F8D912E00FF28C0353F8B5
+:1020200020508D420AD2401C0328F8D308E000F06B
+:1020300061F9801B03280BD3032070BD52F82040A8
+:102040000D4D2868C00844EAC000FFF772FE06463E
+:10205000296801F00701A142E9D1002070BD00000C
+:10206000080100583000002090000058FFFFFEEEED
+:10207000000400588C80C11100400058080000582E
+:10208000E82900080024F4000048E801A829000815
+:102090009C46000840420F0012000000240000008F
+:1020A0003600000040000000060000000C000000A8
+:1020B000100000000000000001000000020000000D
+:1020C00003000000B3BBD9B1B2F5803F7DD2022A34
+:1020D0001ED98C46B1FBF2F102FB11C31B0443EA8B
+:1020E0001043B3FBF2FC02FB1C3380B240EA034313
+:1020F000B3FBF2F002FB103240EA0C4000237047C1
+:10210000022A05D98446B0FBF2F002FB10C27047E8
+:102110004AB105D100F0010249085FEA300070477A
+:1021200000220023704700F0DDBC0B0002000021FC
+:1021300000207047904271EB030CF6D3B3F5803F5B
+:102140002FD2F0B5B3FA83F7B1FA81F4A7F10F0EED
+:102150003D1B5340CEF1200602FA0EF2F3415340EC
+:10216000B5F10F0746D80F3C2C444140C4F120067E
+:10217000A040F1414140B1FBF3F603FB1611A2FB75
+:102180000645001BA94102D2761E8018594180EAFB
+:10219000010221FA0EF362FA0EF200215A40304693
+:1021A000F0BD30B4B1FBF3FC03FB1C11A2FB0C45EA
+:1021B000001BA94103D2ACF1010C8018594130BC7D
+:1021C00002460B46604600217047B2F1807F65D31E
+:1021D000F0B5B2FA82F7B1FA81F4C7F10F063D1BF0
+:1021E00022FA06F307F1110EF24120355A40B5F1FB
+:1021F0000F07B8D94140C4F12006A040F141414049
+:10220000B1FBF3FC03FB1C11A2FB0C45001BA94115
+:1022100003D2BCF1010C801859410F2F12D30F3F8C
+:10222000C90341EA5041B1FBF3F603FB1611A2FBCF
+:102230000645D4EBC030A94102D2761E8018594120
+:1022400046EACC3C07B34140C7F12006B840F14113
+:102250004140B1FBF3F603FB1611A2FB0645001B40
+:10226000A94102D2761E8018594180EA010221FA62
+:102270000EF3C7F1200462FA0EF20CFA07F05A408E
+:102280002CFA04F13043F0BD80EA010221FA0EF38A
+:10229000002162FA0EF260465A40F0BD8C46B1FB56
+:1022A000F2F102FB11C31B0243EA1063B3FBF2FC21
+:1022B00002FB1C331B024CEA002043EA1063B3FB11
+:1022C000F2FC02FB1C331B024CEA002043EA1063C1
+:1022D000B3FBF2FC02FB1C331B024CEA002043EA76
+:1022E0001063B3FBF2FC02FB1C324CEA002000231B
+:1022F0007047000001480068704700BF2C000020B4
+:102300000248016841F48071016070470004005880
+:102310008A60FF2102685162012180F821100021AA
+:1023200080F820100020704790F82010012901D17A
+:1023300002207047012280F82020022180F821101D
+:10234000CA210268516253210368596201688A6890
+:1023500042F02002FFF7DCBF002200F0C5BB000006
+:102360002DE9F84F4FF0000C674A684BDFF8A08169
+:102370004FF00F0982460F4633E0664DAA4514BF61
+:10238000072504258D40254348F82E50C1431C687D
+:1023900001EA040E7C68E50348BF40EA0E0EC3F86C
+:1023A00000E05C6801EA040E7C68A50348BF40EACF
+:1023B0000E0EC3F804E0146801EA040E7C68E5021E
+:1023C00048BF40EA0E0EC2F800E0546801EA040E6D
+:1023D00079688C0248BF40EA0E0EC2F804E00CF1A6
+:1023E000010C396831FA0CF000F07C80012000FA11
+:1023F0000CFE1EEA0100F2D07C68022C18BF122CE1
+:102400004FEA8C0110D14FEADC040AEB840401F09E
+:102410001C05266A09FA05FB26EA0B06D7F810B058
+:102420000BFA05F5354325624FEA4C040325DAF82B
+:10243000006097F804B0A540ED430BF0030B2E406D
+:102440000BFA04FB4BEA0606CAF800607E68012E10
+:1024500018BF022E03D0112E18BF122E17D1DAF892
+:102460000860D7F80CB02E400BFA04FB4BEA0606C6
+:10247000CAF80860DAF8046026EA0E0E7E68C6F331
+:10248000001606FA0CF646EA0E06CAF80460DAF8F8
+:102490000C603540BE6806FA04F42C43CAF80C40C0
+:1024A0007C68E4009BD54FEA9C0E58F82E5001F052
+:1024B0000C0109FA01F425EA0404BAF1904F08BFAF
+:1024C00000250ED0144DAA4508BF012509D0134D93
+:1024D000AA4508BF022504D0114DAA457FF44DAF8F
+:1024E00003254FE7BDE8F18F81B0002A14BF816159
+:1024F000816201B070470B4A136803421CBF106031
+:1025000000F0BCBB7047000000080058800800586D
+:10251000080001400010004800040048000800487E
+:10252000000C00480C0800588E4900E08E4981B02C
+:102530000A6802430A60096808400090009801B0E8
+:10254000704710B500F092FA884C606840010ED5D3
+:102550006068C0000BD4FFF7D3FEFFF7D1FE206800
+:1025600040F480302060216821F48031216000F047
+:10257000BEF8002000F088FB40B180797C49E16022
+:10258000E16821F47C5141EA0021E16000F039F872
+:102590007848794C016800220260026902F050021A
+:1025A00002610420FFF7C2FF0220FFF7BFFF0420F3
+:1025B000FFF7BAFF0220FFF7B7FF00220F213A20F2
+:1025C00000F008F93A2000F022F900216B48416040
+:1025D0000F218160046047F6FF71C16000F066FB67
+:1025E000CA206062FF2153206062A068C008C0005A
+:1025F000A060616200F09DFA4FF0FF3000F0FAFB3E
+:10260000FAE710B5AEB01CA84821FFF7A5FE01A857
+:102610001C21FFF7A1FE08A85021FFF79DFE53489B
+:10262000016821F01801016007215548026822F471
+:10263000C06242F4007202604FF48032006800F41D
+:10264000C06000904FF4807400981C9101201E908F
+:102650000021402020901D9227911F941CA8FFF775
+:10266000D4F86F2001900221002002910390049081
+:10267000059006900790012101A8FFF763FB43F640
+:102680000100089000214FF4804019900E91102015
+:1026900002211B901A91189408A800F08FFC2EB00C
+:1026A00010BD10B5374C384820604FF4E130606001
+:1026B0000020A060E06020610C2060610020A0612B
+:1026C0004FF40040E061002020626062A06220467A
+:1026D000FDF734FD00212046FEF7F3FF00212046E0
+:1026E000FEF7FAFF2046BDE81040FEF7CDBF2748B1
+:1026F00081B0016841F4801101603F21006800F45D
+:10270000801000900098224841604161016841F4C6
+:102710007C110160026942F47C120261016841F09F
+:102720003F010160026942F03F02026101B070475F
+:1027300038B50446FFF7DEFD14F1010F054609D058
+:1027400000F0ABF9041905E01248016821F004011A
+:10275000016030BFFFF7CEFD401BA042F4D331BD76
+:1027600000000000480000584C000058900000583D
+:10277000FECAFECA800800580028004064030020FA
+:1027800000040058F80100200038014050000058B3
+:10279000040C005810ED00E0704700000901020031
+:1027A00081B002D43C48815405E03C4802F00F025D
+:1027B000104400F8041C01B07047394A13684FF602
+:1027C000FF0100020B4000F4E06018433549084364
+:1027D0001060704738B5324B1C68C4F30223C3F154
+:1027E0000704052C28BF04241D1D072D34BF00231A
+:1027F000DB1E012505FA04F4641E2140994005FA08
+:1028000003F35B1E1A401143BDE83440C6E70100E4
+:1028100007D4012200F01F01234B8A40400943F8EE
+:102820002020704701000BD4012200F01F011F4B34
+:102830008A40400943F82020BFF34F8FBFF36F8FCA
+:10284000704710B5401EB0F1807F01D3012010BD4C
+:10285000174C60600F214FF0FF30FFF79FFF002201
+:10286000A26007202060002010BD010007D40122D3
+:1028700000F01F010F4B8A40400943F820207047A9
+:10288000010007D4012200F01F010B4B8A404009D0
+:1028900043F820207047000000E400E018ED00E05D
+:1028A0000CED00E00000FA0500E100E080E100E04E
+:1028B00010E000E000E200E080E200E032490020A9
+:1028C00008604FF4E0223148016841F47001016072
+:1028D0004FF0B041086840F0010008608A602C4861
+:1028E0000A6802402B480A60036823F0050303606E
+:1028F000426852085200426000222748C8600861BE
+:10290000086820F4802008608A6170474FF0B04169
+:102910000FF2D4000A68C2F3031250F822008A684A
+:1029200002F00C02042A04D0082A04D00C2A04D095
+:102930001CE01A481AE01A4818E0CA68CB68C3F3CA
+:10294000021302F003025B1C022A08BF134802D0E4
+:10295000032A08BF1248B0FBF3F2C868CB68C0F383
+:1029600006205B0F42435B1CB2FBF3F00D4A0FF2F3
+:102970003803106088681168C0F3031053F8200012
+:10298000B1FBF0F01060704708ED00E088ED00E06A
+:10299000FBFEF6FA94000058001004220024F40014
+:1029A0000048E80150000020010000000300000082
+:1029B000050000000100000001000000060000000A
+:1029C0000A000000200000000200000004000000D7
+:1029D000080000001000000040000000800000001F
+:1029E0000001000000020000A0860100400D03006D
+:1029F000801A060000350C0040420F0080841E0043
+:102A000000093D0000127A000024F40000366E0137
+:102A10000048E801006CDC0200000000000000003B
+:102A2000000000000000000070B50F4E0446B068C2
+:102A30000025A8B1FFF7A2FAB2684FF47A71B1FB92
+:102A4000F2F1B0FBF1F0FFF7FCFE48B9102C07D211
+:102A5000002221464FF0FF30FFF7BCFE746000E01B
+:102A60000125284670BD00BF2C000020164810B577
+:102A7000016841F4807101600320FFF79EFE002091
+:102A8000FFF7D2FF0024002814BF0124FEF738FC12
+:102A9000204610BD0D48406870470C48806870475C
+:102AA0000B480BE00A48016821F002010160704701
+:102AB0000748016821F00401016070470168490876
+:102AC0004900016070470000004000582C000020C1
+:102AD000042004E0DFF80800006800F4C0607047DC
+:102AE000000400587047000000B500BF1300964670
+:102AF0009446103928BFA0E80C50FAD85FEA417C10
+:102B000028BF0CC048BF40F8042BC90728BF20F8D5
+:102B1000022B48BF00F8012B00BD00004D4981B0D9
+:102B20000A6802430A60096808400090009801B0F2
+:102B3000704718B5484C89B0206840F400402060C8
+:102B400000F0BAFB4549002000F071FD68461421F1
+:102B5000FFF702FC0020029003214FF46040009038
+:102B600001910120FFF7DAFF69464FF09040FFF72F
+:102B7000F7FB606C4008400060641821009102205F
+:102B8000FFF7CCFF69463648FFF7EAFB606C20F0A0
+:102B900002006064FFF784FFFFF784FFFFF788FF00
+:102BA0000121012000F09AFB002000F064FE0120CA
+:102BB00000F061FE022000F05EFE012000F083FEC6
+:102BC0000121002000F093FE00F0E8FE2548264C8D
+:102BD00000F0DBFF0FF259020021202000F06DF918
+:102BE00004F23C50029021490FF22D000190009117
+:102BF000684600F02EFF04F25470039004F5C9619A
+:102C000040F23C5006900491059403A800F056FF52
+:102C100000F0C2FE0AB010BD80B50146114800F0B8
+:102C2000C0FFBDE804400021202000F053B900009F
+:102C300080B500F07AFF0021012000F04FFB6946CB
+:102C4000084800F0C4FF009800F051FF00F0D0FFEA
+:102C500001BD00004C00005808000058640300202B
+:102C600000040048B403002024000320BB3C0008FB
+:102C700000F048BB4FF0FF3000F0BCB8102808BF90
+:102C800001F02AB87047000001460648064AC37999
+:102C90008B4218BF904218BF0838F8D18B4218BF3A
+:102CA00000207047F873FF1F0070FF1F38B5040045
+:102CB00044D094F8210028B9002184F8201020463F
+:102CC000FEF72BFB00F049F8FF2510B100F03FF8AC
+:102CD00034E02168DFF8B0008A6802408A60216829
+:102CE0008A68636820690343A06903431A438A60C2
+:102CF0002168E068086120680169A26841EA024130
+:102D000001612068C16821F08001C1602068C16C48
+:102D100089088900C1642168CA6CE369606903435A
+:102D20001A43CA6420688168880609D400F020F834
+:102D300030B120684562042100F01FF8012032BD47
+:102D400020684562012184F82110002032BD2068EE
+:102D50004562042184F821107047022084F8210084
+:102D6000CA2021684862532022685062204626E02B
+:102D700020460BE02068C0F8248084F82110002051
+:102D800084F8200070470000BFFF8FFF70B5044635
+:102D900040F2E9362068C16821F0A001C160FFF768
+:102DA000A9FA05462068C168880606D4FFF7A2FA8A
+:102DB000401BB042F6D3032070BD002070BD70B53B
+:102DC00004462068C1684A0612D44FF0FF32C26040
+:102DD00040F2E936FFF78EFA05462068C1684806DA
+:102DE00006D4FFF787FA401BB042F6D3032070BD2C
+:102DF000002070BD2DE9FC47524CDFF84C91A569CD
+:102E00002840A0614FF0010A4FF0FF3830E0491C24
+:102E100054F831000642FAD004EBC1071840796833
+:102E20001040014208BFC7F804807E68304000F0BF
+:102E30008DF860620AFA00F086437E60EFF310813D
+:102E400072B6626A20690AFA02F2D2431040206127
+:102E5000022004EBC00353F8086C1640401E43F8F0
+:102E6000086CF6D181F31088606A59F82010884701
+:102E700063692069A2691840104207D0E069216A9D
+:102E8000084203D1002103EA0206C1E701F08AF8F3
+:102E9000EFF3108972B6216960690140A0690142AF
+:102EA00001BFE169206A0142FFF7E2FE89F3108861
+:102EB00001F079F8A561BDE8F38738B51446EFF362
+:102EC000108572B600F042F81F4941F8204085F3A2
+:102ED000108831BD10B5EFF3108272B6194B1C6922
+:102EE00004431C6153F83140204343F8310082F31E
+:102EF000108810BD506181F310887047EFF3108186
+:102F000072B6104AD3691843D061F4E72DE9F04155
+:102F10000C4C626A266A2062012101FA02F803E081
+:102F200039464046FFF7A6FE276AE5693D42F7D0DD
+:102F3000404600F00BF825EA0707E7612662606269
+:102F4000BDE8F08104000020840200200246002039
+:102F5000110C090404BF1020120412F07F4F04BFAB
+:102F6000083012020FF2180112F0704F04BF001D5A
+:102F70001201120FC0F11F00895C401A7047000057
+:102F80000403020201010101000000000000000032
+:102F9000DFF820130A68030903F47F2300019A4332
+:102FA00000F47F2000F082B9DFF808231368010CD9
+:102FB00023EA014343EA0043136070472DE9F843D5
+:102FC000054600242878DFF8EC624106A0464FF061
+:102FD000B0472DD5286B70B1B0F5800F06D0B0F595
+:102FE000000F18BFB0F5400F17D01FE0F86840F48D
+:102FF0008030F860EDE0386820F080603860FFF7DE
+:1030000079F981463868000140F1D080FFF772F904
+:10301000A0EB09000228F5D90324D7E0FFF76AF9ED
+:10302000A0EB0900022840F2C980F5E70124A04680
+:103030002868010531D5B06800F44078286C8045D7
+:103040002AD0FFF75DF9B8F1000FB16805D1286CFF
+:1030500021F440710143B1601EE0B06840F480305B
+:10306000B06021F44071B06820F48030B060286C0A
+:103070000143B160B068C0070ED5FFF73BF9804649
+:1030800041F28939B068800706D4FFF733F9A0EB25
+:1030900008004845F6D30324A0462878C10705D583
+:1030A0003168A869890840EA810131602878810780
+:1030B00005D53168E86921F4406101433160287821
+:1030C000C10644BFA86AFFF76FFF2878810644BF96
+:1030D000E86AFFF769FF2878410744BF286AFFF7CD
+:1030E00057FF2878010744BF686AFFF751FF286837
+:1030F000C1051BD53168686B21F040610143316027
+:10310000686BB0F1006F00F0BDF8686BB0F1806FD4
+:1031100075D100F0BDF804463868000160D5FFF7AE
+:10312000E9F8001B0228F7D94FF0030867E0FFF722
+:10313000E1F8001B02285BD9F6E7316821F0404135
+:10314000316020F08050326822F0406210433060DD
+:10315000A86BB0F1C05F00F095F8286841056DD507
+:103160003168E86B21F0405101433160E86BB0F108
+:10317000005F03D1F96841F48031F960E86BB0F188
+:10318000805F5BD100F084F804463868000146D5C2
+:10319000FFF7B0F8001B0228F7D94FF003084DE005
+:1031A000FFF7A8F8001B022841D9F6E700F061F804
+:1031B000A86821F4781100F071F8814638680001A0
+:1031C0007FF52CAF3969686901433961002C7FF4C0
+:1031D0002EAF3168286B21F440010143316027E7AD
+:1031E00000F047F8E86821F0606100F057F8044605
+:1031F000386800019BD539696869014339612868DD
+:103200008105AAD5A86BB0F1804F1CBFB0F1004F6B
+:10321000002892D1316821F04041084397E700F03F
+:1032200028F8286921F0604100F038F80446386831
+:103230000001B5D539696869014339612868C1045D
+:1032400005D5F168686C21F440410143F1602868BC
+:1032500081040BD5796AE86C21F030010143796271
+:10326000796AA86C890840EA810179624046BDE824
+:10327000F2833869696820F4FE4040EA0120386131
+:103280003969704703D1F96841F08071F96070477E
+:10329000396821F080613960FFF72CB8014339614A
+:1032A000386840F080603860FFF724B81043086049
+:1032B00070470000880000582048002101604160EC
+:1032C000704710B500F019F81C6819B1012904D134
+:1032D000204301E024EA000018600BE010B500F084
+:1032E0000CF85C6819B1012904D1204301E024EAFB
+:1032F0000000586082F3108810BDEFF3108272B6A0
+:103300000E4B704738B5EFF3108472B60B490C4D75
+:10331000086820B129688847686880470AE04868DB
+:1033200020B1A9688847E868804703E0286980479A
+:103330006869804784F3108831BD0000BC03002019
+:1033400004470008DFF8F0140A6892B200E0024671
+:10335000086880B28242FAD170472DE9FC410446E8
+:103360001825DFF8D884DFF8D864684308EB000735
+:103370003078062808D131787170347078754FF044
+:10338000FF307060002039E000F077F8B968091864
+:10339000B96008F10803B96832786A439A589142D3
+:1033A000327813D308F1150315FB02FC13F80C3027
+:1033B000062B25D008F108066B43F358994222BF2B
+:1033C00008F115036A439A5CEED219E0114633788E
+:1033D00069439A420BD008F1140308F1150C5B5CA9
+:1033E00015FB03F50CF805407A753B7500E07A751E
+:1033F00008F114025454317871703470BDE8F681CC
+:103400001146694308F115035B5C062B04D008F1F3
+:10341000140615FB03F574557B753A7508F1150212
+:103420005454EBE7F8B5DFF81834DFF810541E7881
+:10343000182402466243B0422A4404D118785870D6
+:10344000507D18700FE0167D507D92F815C005F183
+:1034500015076643062807F806C004D0167D143504
+:1034600014FB00F42E55012010731878062802BFB3
+:1034700000294FF0FF315960F1BD10B5DFF8C043AE
+:10348000606810F1010F0FD0FFF75CFF6168DFF893
+:10349000B423814261683CBF5388C918081A517827
+:1034A00048431178C84000E0002080B210BD2DE9EB
+:1034B000F84FDFF89053DFF890B3D5F80880D8F8CC
+:1034C0000000DBF800104A0500F06AF9DFF87063CD
+:1034D000DFF868A321F4806181604FF01809347827
+:1034E0000AF1080019FB04F14758FFF7C6FF8742AD
+:1034F00017D200270121B170062C3DD019FB04F42E
+:103500000AF108010AF108020959814223BF0AF1B0
+:1035100008010959091A002111510AEB04014C7DD7
+:10352000EAE7A9884118B94202D2AF880021E2E750
+:103530003F1ADFE7022802DA2878012800D07F1E30
+:10354000D8F80000C1684A07FAD500F02FF9DBF877
+:103550000C00000CBFB247EA0047CBF80C70FFF735
+:10356000F1FE7060A8680068816841F48061816044
+:10357000AFF30080BDE8F18FB8B20028DAD1FFF7D1
+:10358000E1FE70600320BDE8F24FFFF76EB92DE950
+:10359000F843EFF3108872B6AA4DA84BA8680168EB
+:1035A000CA224A6253204862A54A886820F4806093
+:1035B000886018201678374647431F44387B022816
+:1035C00026D13C68D7F810909078F0B17A7B012A28
+:1035D0000AD101213046FFF725FF88F3108879686A
+:1035E000304600F0F0F804E088F31088304600F030
+:1035F0009BF8A8680068CA214162224653214162B3
+:103600004846314600F02AF90BE0FFF750FF06E08C
+:10361000C8684207FCD500F07EF88C49086088F342
+:103620001088FF21A86802685162BDE8F183F8B5EF
+:10363000844CA160CA2209684A6253224A62824AC3
+:10364000136843F020031360136803F00703C3F10A
+:103650000403237095682D0C05F07F056D1C6570C3
+:10366000EDB29268C2F30E02521C628092B2521EF8
+:103670006A43A2F5A072DA404FF6FF739A422CBF5C
+:10368000A380A280724A136843F400231360714B35
+:103690001D6845F400251D6048BB6948674E01233D
+:1036A000837018254FF0FF33436000235FFA83FCDB
+:1036B00006F10C0715FB0CFC4FF0000E07F80CE0B0
+:1036C0005B1CDFB2062FF1DB06230370886820F451
+:1036D0008060886000F01FF8D0600320FFF7D0F80A
+:1036E000A1680868826842F48042826005E0C86888
+:1036F000410544BF0320FFF7B8F8A1680A68FF201E
+:103700005062002203210320FFF764F8BDE8F24075
+:103710000320FFF77CB8C86800F0800060F4906078
+:10372000C8604FF400207047F8B50746EFF31084E7
+:1037300072B60320FFF776F8424DAE683068CA21B2
+:1037400041623A4653214162182043494243895C11
+:1037500002291BD100213846FFF764FE3848017862
+:1037600006290ED1306838490A68530500F018F868
+:1037700021F480618160C1684A07FCD500F016F829
+:1037800004E04078884218BFFFF791FEA9680A68F4
+:10379000FF2050620320FFF73AF884F31088F1BD50
+:1037A00002D5C1684A07FCD481687047C16801F03E
+:1037B000800161F49061C1604FF4002023490860EA
+:1037C0000320FFF75DB82DE9F04180460F464246E1
+:1037D00018201A4942438C18207B022804BF404617
+:1037E000FFF7A2FFEFF3108572B60320FFF71AF878
+:1037F000144EB0680068CA21416253214162022020
+:103800002073A76067604046FFF7A7FD0C490A7860
+:103810004978914202D0FFF74AFE02E0A168081AF7
+:10382000A060FF20B1680A6850620320FEF7EFFF36
+:1038300085F31088BDE8F081282800406801002049
+:10384000DC030020A8030020082800400C080058D2
+:10385000000800588008005874010020104700003C
+:10386000444981B00A6802430A6009680840009030
+:10387000009801B0704778B585B0044668461421B9
+:10388000FEF76AFD0220FFF7EBFF00F010F800954D
+:10389000012001900021022003900291694656F810
+:1038A0002400FEF75DFD00F008F806B070BD0FF2D1
+:1038B000D400314E30F81450704756F824000022DE
+:1038C0002946FEF711BE0FF2BC012B4B31F8101048
+:1038D00053F820000122FEF707BE0FF2A801264B85
+:1038E00031F8101053F820000022FEF7FDBDF0B5AE
+:1038F00085B005460C4668461421FEF72DFD0DB92E
+:10390000042004E0012D18BF022D02D10820FFF78A
+:10391000A7FF2000194E0FF274070DD137F81500DC
+:10392000009000210191012002900221039100F0FA
+:103930001BF80120FEF7FCFE012C13D137F815000F
+:10394000009001210E480190029100F00DF80FF255
+:103950004400445D00220F2160B2FEF73BFF60B2DD
+:10396000FEF755FF05B0F0BD694656F82500FEF795
+:10397000F7BC00004C000058380000204400002034
+:1039800000002110200001000200000010000100D2
+:10399000020000000A06070000F07ABB7148724975
+:1039A000016001F12002426001F13002826001F108
+:1039B0003C02026201F14402C26001F14C02026168
+:1039C00001F16802426101F16C0282617831C161EA
+:1039D00000F070BB38B50446644D05F1100000F0EE
+:1039E000D4F860494868A1680160E168C160456039
+:1039F00005F11001816000F079FB5D4837E080B58A
+:103A000058494A6813680120187200F075FB0020BD
+:103A100002BD38B5564C554D07E0694605F110001A
+:103A200000F0D5F800982168884705F1100000F0F3
+:103A3000AFF80028F1D031BD80B54A494A68D16855
+:103A40000220087200F05DFB002002BD484841687A
+:103A5000084738B50446474D284600F096F84148D7
+:103A6000C068A1680160456000F054FB42482168CD
+:103A7000016061684160002032BD80B53949CA6883
+:103A800013681020187200F04BFB002002BD35496E
+:103A9000CA68394910680B68184738B5364C354D37
+:103AA00006E06946284600F092F800986168884769
+:103AB000284600F06DF80028F3D031BD38B5044633
+:103AC0002E4D284600F061F82D4800F05EF825489C
+:103AD0000069A1688160E168C160056121680160D9
+:103AE00061684160216941616169816131BD80B571
+:103AF0000146234800F055F8BDE802400FF20500EA
+:103B000000F01EBB38B5174C1D4D08E0694628462D
+:103B100000F05DF800992069006900F042F828463D
+:103B200000F036F80028F1D031BD10B5154C204614
+:103B300000F02BF80B4841690C60BDE8104000F024
+:103B400013BB1CB50F4C06E06946204600F03FF859
+:103B5000009800F019F8204600F01AF80028F3D079
+:103B600013BD000000000320B80A0320980A0320B8
+:103B7000CC030020B00A0320D40300203C0B032018
+:103B8000C4030020440B032070470060406070476E
+:103B9000EFF3108172B6026882420CBF0120002050
+:103BA00012E0EFF3108272B6086043684B60416028
+:103BB0004868016019E0EFF3108172B6436802684B
+:103BC0001A6042680068426081F31088704710B53F
+:103BD000EFF3108472B602680A600068FFE7FFF72F
+:103BE000EAFF84F3108810BD086082F310887047E4
+:103BF00010B590B004A80FF27C31DFF850433022AA
+:103C000000F0D8FA2068DFF848434FF6FC7101EA6B
+:103C10008001DFF840034118DFF83C030290E160C7
+:103C200000F5867003900FF2B9210FF2CD200190BC
+:103C300000916846FFF7CEFE01210220FFF74EFB00
+:103C400001210220FFF73DFB0020E070A07004A8D6
+:103C500000F0FAFA0FF2011200210820FFF72DF907
+:103C6000BE4A00210120FFF728F90FF29902002136
+:103C70001020FFF722F9BA4A00210220FFF71DF9B0
+:103C8000B84A00210420FFF718F9012060700020D5
+:103C9000A06004F11800FFF778FFFEF702FD04F1C1
+:103CA000100060600020207001220FF2011304F167
+:103CB0001001FDF771FD10B010BD80B5A44A9178D8
+:103CC00031B1002090700120BDE80240FFF716B925
+:103CD000014602F1180007E110B59D4CE07830B9BB
+:103CE0000120FFF7FAFD0121E170002105E001202C
+:103CF000FFF7E9FD0020E0700121BDE8104002203F
+:103D0000FFF7DFBA38B5EFF31084914D68780128DA
+:103D100021D10021697005F1180005F10801FFF7B4
+:103D200056FFE878A0B9A8680FF28113017A02293A
+:103D300072B607BFB0F80B20521D827AD21C00F178
+:103D4000080192B20020FDF730FD84F3108831BDE8
+:103D5000BDE83140AAE031BD10B5834CB4F809008C
+:103D60004FF66052811A04D0491E06D0491E08D071
+:103D70000BE0204600F070FA11E0204600F0A7FAB0
+:103D80000DE0204600F0C9FA09E0A0810120A073EF
+:103D9000E072212020720E2060720420A072214661
+:103DA0007248FFF7FEFEBDE81040A1E0F8B5684D8F
+:103DB00069682A78002400201AB1022A64D013D33B
+:103DC00058E00978012905D0022907D0102918BF29
+:103DD000202907D10120287003244BE001202870FE
+:103DE000042447E0012445E00E78E868022E11D053
+:103DF000102E02D0202E03D01CE0CC78C0681BE02F
+:103E0000CC78594805F1100100F108070A6840F81C
+:103E1000082F18E04068CA780979C36802EB0124CA
+:103E200003F10807052205F11001384600F0B2F948
+:103E3000052009E0CC784068016805F1100001F127
+:103E400008070168396004206F60A1B211B1022136
+:103E500029700FE0022E25D0102E1DD0202E1ED04E
+:103E600000210120FFF736F8002005F1100128702D
+:103E700001246960A2B201B069683D4BBDE8F04021
+:103E800001440020FDF788BC087802280AD01028D9
+:103E900002D0202803D0E3E700210220E2E700213E
+:103EA0000820DFE700210420DCE700001CB5284CD7
+:103EB00001206070E0680169A0688A68904205D3BB
+:103EC000C9681144884238BFFFF711FE04F1180099
+:103ED000FFF75EFE10B9BDE81C4009E013BD00000D
+:103EE00080B50146DFF88400FFF75BFEBDE80440C3
+:103EF00000211020FEF7EEBF704770B51446134A3C
+:103F0000134E12681D460123B3704FF6FC7303EA8B
+:103F10008203104AD3180A46DE683668A6F80900FC
+:103F2000F17206F10C00214600F034F90021002066
+:103F3000FFF7A3FD0120FEF7E9FF314605F1080078
+:103F4000B278BDE87040D21C00F024B93C40005863
+:103F5000880300200000032084080320FF390008A4
+:103F60007B3A0008393A00085C000020A0030020DA
+:103F7000AD3D00080000000000000000000000004F
+:103F80000000000000000000440008004005080197
+:103F90003A799C00F4010000FFFFFFFF4801010097
+:103FA0000000000070477047C0680840884201D197
+:103FB0000120704700207047C0690840884201D145
+:103FC000012070470020704710B56A4C022120463E
+:103FD000FFF7F2FF38B16068C043810703D5FFF7F0
+:103FE0005CFD022018E001212046FFF7E5FF38B113
+:103FF0006068C043C10703D5FFF70BFD01200BE04C
+:1040000008212046FFF7D8FF38B16068C043010798
+:1040100003D5FFF796FD0820A06010BD10B5554CE4
+:1040200000F033F818B96068C043810306D400F08B
+:104030002CF830B96068C043810302D5BDE8104058
+:1040400077E0082100F022F870B96068C0430103EE
+:104050000AD56068484940F40020606008688047DD
+:104060004FF40020A06010BD202100F00FF858B9D7
+:104070006068C043810207D5606840F4001060604A
+:10408000BDE81040FFF7E2BC10BD022120468BE7DF
+:104090003A48016841F4007101603948026842F40D
+:1040A0000072026040BF20BF3648016841F4004101
+:1040B0000160704780B53448016841F480110160A7
+:1040C000006800F48010009000982A48016841F0D0
+:1040D00001010160026842F4803202602C20FEF788
+:1040E00096FBBDE802402D20FEF791BB27480168F2
+:1040F000490849000160704725494FF48030086045
+:10410000704722484FF400114160016821F400110A
+:10411000016070471D48016821F00201016070478D
+:104120001A484FF400314160016821F40031016008
+:1041300070471648016841F400310160FFF7A7BCE1
+:1041400038B504460B4D08212846FFF72DFF30B146
+:1041500009480460686820F40020686031BDA04709
+:104160004FF40021A96031BD0848016821F0080121
+:1041700001607047000C0058E4030020D408005888
+:10418000200800580C04005850000058040C005837
+:10419000080C005862B38B0708D0521E11F8013B7F
+:1041A00000F8013B00F024808B07F6D1830740F034
+:1041B000208000BF103A07D330B4B1E83810103A6D
+:1041C000A0E83810F9D230BC530724BFB1E808107A
+:1041D000A0E8081044BF51F8043B40F8043BD20764
+:1041E00024BF31F8022B20F8022B44BF0B78037058
+:1041F0007047121F17D35B0009D151F8043B20F818
+:10420000023B1B0C121F20F8023BF6D20BE051F8C8
+:10421000043B00F8013B1B0A20F8023B1B0C121F59
+:1042200000F8013BF3D238BF121D521E24BF11F813
+:10423000013B00F8013BF8D870470000FFF75DFE36
+:104240009DF80E0005B000BDF8B500F10C026B46FC
+:1042500021214FF66640F1E770B5EFF31081027B44
+:10426000012A02D0022A07D00DE000F028F81378C6
+:1042700000F01FF814700CE000F021F8138800F033
+:1042800018F8148005E000F01AF8136800F011F82F
+:10429000146081F31088212101720E2141720421E2
+:1042A00081724FF660518181002181730121C172B9
+:1042B00070BD264623EA040435402C43704772B68D
+:1042C000D0F81120D0F80D40D0F81550704781B0CB
+:1042D000017B012902D0022904D008E0D0F80D109A
+:1042E000097807E0D0F80D100A88009203E0D0F8B2
+:1042F0000D10096800910E2141722122082181725E
+:1043000002724FF6615181810121C17200218173D6
+:10431000009A40F80F2F01B0704738B504462120AD
+:1043200020720E2060724220A0724FF66250A0816F
+:104330000120E0720020A0731D4D1E480168090C89
+:10434000A4F80F100068C0F30B00A4F811001A487D
+:1043500001781A4801F01F01E17441682175416834
+:10436000090AC4F815100268C4F819200169C4F8D4
+:104370001D104169C4F8211004F129018069C4F8B5
+:104380002500286802680A600C222B68191D04F1B8
+:104390002D00FFF7FFFE286800F11001102204F144
+:1043A0003900FFF7F7FE06480168C4F8491031BD2F
+:1043B00000000320002004E00075FF1F8075FF1F30
+:1043C0001C48000800EB81003D4AD0F88010914263
+:1043D00001D0012070470020704742F4806240F80D
+:1043E0002120704737481F2181610168C908C90031
+:1043F00041F0030101603448016841F004010160AB
+:1044000030BF7047704710B5304C00F048F80028B6
+:10441000FBD1042100F044F828B92D4800680104BC
+:1044200003D500F03FF800F057F8002203212046A2
+:10443000FFF7D3FF23480168C908C90041F0020112
+:1044400001602148016841F00401016030BF10BDE6
+:1044500010B51E4C00F026F800F021F80028FBD122
+:104460004FF0B040816801F00C01042911D10168BE
+:1044700041F48031016001688903FCD581688908B5
+:10448000890041F002018160816801F00C01082976
+:10449000FAD12046BDE81040002203219DE7032108
+:1044A00020468FE700220421204696E780B500F0E1
+:1044B0002DF80548016821F00401016030BF01BDFD
+:1044C000000400800004005810ED00E000140058C3
+:1044D0008804005800F022B84FF0B040016841F461
+:1044E0008071016001684905FCD5816889088900EF
+:1044F00041F001018160416A890889004162816857
+:1045000001F00C010429FAD170470000024801684B
+:1045100021F002010160704710E000E002480168EC
+:1045200041F002010160704710E000E019E050F82E
+:10453000042BD30744BFA9F101039A18091F0023D4
+:10454000042942F8043BF9D25FEA817C134604D582
+:104550004FF0000CA2F800C09B1CC90744BF00210B
+:10456000197050F8041B0029E1D170477047FEE72D
+:10457000FEE7FEE7FEE770477047704700F014B8AB
+:104580000248FBF7DCBE0248FCF7DDBFF801002063
+:10459000040300201020FDF7AEBFFEF7F8BFFFF7C1
+:1045A0003DBDFFF711BD000002490A688868821806
+:1045B0000A6070472C00002030B5016884684218FA
+:1045C000416802EB5103C9070BD54C4409E012F9CD
+:1045D000011B12F8015B002904F8015B05D5491C99
+:1045E000F9D19A42F3D10C3030BD491EF1D5F8E72C
+:1045F00010B500F013F802000023DB43002410681C
+:10460000984203D011000220ABBE1460506898425B
+:1046100003D0111D0220ABBE546010BD014870478D
+:10462000000000005400002010B5074979441831FB
+:10463000064C7C44163404E00A68081D114488477F
+:104640000146A142F8D110BD2C000000500000002E
+:104650004EF68851CEF20001086840F47000086000
+:10466000BFF34F8FBFF36F8F4FF00070E1EE100A72
+:1046700070470000B9FEFFFF940300005C000020BB
+:10468000940A000024000320000000002DFFFFFF1B
+:10469000900100005800000004000020000000000D
+:1046A0000000000000000000000000000100000009
+:1046B00002000000030000000400000000F00DF8FC
+:1046C000002801D0FFF7B0FFAFF300800020AFF368
+:1046D0000080FDF736FF00F002F80120704700F07F
+:1046E00001B800000746384600F002F8FBE700007A
+:1046F00080B5FFF77DFF024A11001820ABBEFBE733
+:1047000026000200AD440008D54400080744000814
+:1047100051440008E543000805440008014880476B
+:1047200001480047BD2800082D470008AFF300806E
+:10473000FFF78EFFFFF7C2FFFFF7FEBFFFF7FEBFD9
:10474000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF9D
:10475000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF8D
:10476000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF7D
:10477000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF6D
:10478000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF5D
-:10479000FFF7FEBFFFF7FEBF00010000EC00F8FFCF
-:1047A000F0000010FD000001FC001A0400480004A5
-:1047B00000480004004800080048000C0048000CB5
-:0847C000004800093D00F8FF6C
-:04000005080046B1F8
+:10479000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF4D
+:1047A000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF3D
+:1047B000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF2D
+:1047C000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF1D
+:1047D000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF0D
+:1047E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFFD
+:1047F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFED
+:10480000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFDC
+:10481000FFF7FEBFFFF7FEBFFFF7FEBF000100007E
+:10482000EC00F8FFF0000010FD000001FC001A048D
+:104830000048000400480004004800080048000C3C
+:0C4840000048000C004800093D00F8FF93
+:040000050800472D7B
:00000001FF
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/app_conf.h
index ae8c26a96..cdc70a942 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/app_conf.h
@@ -50,6 +50,7 @@
/**< specific parameters */
/*****************************************************/
+
#define PUSH_BUTTON_SW1_EXTI_IRQHandler EXTI4_IRQHandler
/******************************************************************************
@@ -307,7 +308,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/hw_conf.h
index 6733a683f..6ea3b1986 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/hw_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/hw_conf.h
@@ -145,13 +145,13 @@
#define CFG_HW_USART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
#define CFG_HW_USART1_RX_ALTERNATE GPIO_AF7_USART1
-#define CFG_HW_USART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
-#define CFG_HW_USART1_CTS_PORT GPIOA
-#define CFG_HW_USART1_CTS_PIN GPIO_PIN_11
+#define CFG_HW_USART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOvalueNotSetted_CLK_ENABLE
+#define CFG_HW_USART1_CTS_PORT GPIOvalueNotSetted
+#define CFG_HW_USART1_CTS_PIN GPIO_PIN_valueNotSetted
#define CFG_HW_USART1_CTS_MODE GPIO_MODE_AF_PP
#define CFG_HW_USART1_CTS_PULL GPIO_PULLDOWN
#define CFG_HW_USART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
-#define CFG_HW_USART1_CTS_ALTERNATE GPIO_AF7_USART1
+#define CFG_HW_USART1_CTS_ALTERNATE GPIO_AFvalueNotSetted_USART1
#define CFG_HW_USART1_DMA_TX_PREEMPTPRIORITY 0x0F
#define CFG_HW_USART1_DMA_TX_SUBPRIORITY 0
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_hal_conf.h
index 31d63e37a..7f1537260 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_hal_conf.h
@@ -276,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_it.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_it.h
index cf6cc65e7..8fb55e77b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_it.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Inc/stm32wbxx_it.h
@@ -57,9 +57,7 @@ void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
-void DMA1_Channel4_IRQHandler(void);
void USART1_IRQHandler(void);
-void LPUART1_IRQHandler(void);
void DMA2_Channel4_IRQHandler(void);
/* USER CODE BEGIN EFP */
void RTC_WKUP_IRQHandler(void);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/main.c
index 72d282bcf..8afb0ef26 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/main.c
@@ -68,13 +68,12 @@
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
-UART_HandleTypeDef hlpuart1;
-UART_HandleTypeDef huart1;
-DMA_HandleTypeDef hdma_lpuart1_tx;
-DMA_HandleTypeDef hdma_usart1_tx;
RTC_HandleTypeDef hrtc;
+UART_HandleTypeDef huart1;
+DMA_HandleTypeDef hdma_usart1_tx;
+
/* USER CODE BEGIN PV */
/* USER CODE END PV */
@@ -83,7 +82,6 @@ RTC_HandleTypeDef hrtc;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
-void MX_LPUART1_UART_Init(void);
void MX_USART1_UART_Init(void);
static void MX_RF_Init(void);
static void MX_RTC_Init(void);
@@ -202,66 +200,77 @@ void SystemClock_Config(void)
/** Initializes the peripherals clocks
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RFWAKEUP
- |RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1
- |RCC_PERIPHCLK_LPUART1;
+ |RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1;
PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
- PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
- * @brief LPUART1 Initialization Function
+ * @brief RF Initialization Function
* @param None
* @retval None
*/
-void MX_LPUART1_UART_Init(void)
+static void MX_RF_Init(void)
{
- /* USER CODE BEGIN LPUART1_Init 0 */
-
- /* USER CODE END LPUART1_Init 0 */
-
- /* USER CODE BEGIN LPUART1_Init 1 */
-
- /* USER CODE END LPUART1_Init 1 */
- hlpuart1.Instance = LPUART1;
- hlpuart1.Init.BaudRate = 115200;
- hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
- hlpuart1.Init.StopBits = UART_STOPBITS_1;
- hlpuart1.Init.Parity = UART_PARITY_NONE;
- hlpuart1.Init.Mode = UART_MODE_TX_RX;
- hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
- hlpuart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
- hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
- if (HAL_UART_Init(&hlpuart1) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)
+ /* USER CODE BEGIN RF_Init 0 */
+
+ /* USER CODE END RF_Init 0 */
+
+ /* USER CODE BEGIN RF_Init 1 */
+
+ /* USER CODE END RF_Init 1 */
+ /* USER CODE BEGIN RF_Init 2 */
+
+ /* USER CODE END RF_Init 2 */
+
+}
+
+/**
+ * @brief RTC Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_RTC_Init(void)
+{
+
+ /* USER CODE BEGIN RTC_Init 0 */
+
+ /* USER CODE END RTC_Init 0 */
+
+ /* USER CODE BEGIN RTC_Init 1 */
+
+ /* USER CODE END RTC_Init 1 */
+ /** Initialize RTC Only
+ */
+ hrtc.Instance = RTC;
+ hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
+ hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
+ hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
+ if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
}
- /* USER CODE BEGIN LPUART1_Init 2 */
+ /* USER CODE BEGIN RTC_Init 2 */
+ /* Disable RTC registers write protection */
+ LL_RTC_DisableWriteProtection(RTC);
- /* USER CODE END LPUART1_Init 2 */
+ LL_RTC_WAKEUP_SetClock(RTC, CFG_RTC_WUCKSEL_DIVIDER);
+
+ /* Enable RTC registers write protection */
+ LL_RTC_EnableWriteProtection(RTC);
+ /* USER CODE END RTC_Init 2 */
}
@@ -313,67 +322,6 @@ void MX_USART1_UART_Init(void)
}
-/**
- * @brief RF Initialization Function
- * @param None
- * @retval None
- */
-static void MX_RF_Init(void)
-{
-
- /* USER CODE BEGIN RF_Init 0 */
-
- /* USER CODE END RF_Init 0 */
-
- /* USER CODE BEGIN RF_Init 1 */
-
- /* USER CODE END RF_Init 1 */
- /* USER CODE BEGIN RF_Init 2 */
-
- /* USER CODE END RF_Init 2 */
-
-}
-
-/**
- * @brief RTC Initialization Function
- * @param None
- * @retval None
- */
-static void MX_RTC_Init(void)
-{
-
- /* USER CODE BEGIN RTC_Init 0 */
-
- /* USER CODE END RTC_Init 0 */
-
- /* USER CODE BEGIN RTC_Init 1 */
-
- /* USER CODE END RTC_Init 1 */
- /** Initialize RTC Only
- */
- hrtc.Instance = RTC;
- hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
- hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
- hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
- if (HAL_RTC_Init(&hrtc) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN RTC_Init 2 */
- /* Disable RTC registers write protection */
- LL_RTC_DisableWriteProtection(RTC);
-
- LL_RTC_WAKEUP_SetClock(RTC, CFG_RTC_WUCKSEL_DIVIDER);
-
- /* Enable RTC registers write protection */
- LL_RTC_EnableWriteProtection(RTC);
- /* USER CODE END RTC_Init 2 */
-
-}
-
/**
* Enable DMA controller clock
*/
@@ -383,12 +331,8 @@ static void MX_DMA_Init(void)
/* DMA controller clock enable */
__HAL_RCC_DMAMUX1_CLK_ENABLE();
__HAL_RCC_DMA2_CLK_ENABLE();
- __HAL_RCC_DMA1_CLK_ENABLE();
/* DMA interrupt init */
- /* DMA1_Channel4_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 15, 0);
- HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
/* DMA2_Channel4_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Channel4_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(DMA2_Channel4_IRQn);
@@ -404,7 +348,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
- __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32_lpm_if.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32_lpm_if.c
index f705150a1..f024b61e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32_lpm_if.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32_lpm_if.c
@@ -61,6 +61,7 @@ static void Switch_On_HSI( void );
/* USER CODE END Private_Variables */
+/* Functions Definition ------------------------------------------------------*/
/**
* @brief Enters Low Power Off Mode
* @param none
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_hal_msp.c
index c901df1a4..12c69084e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_hal_msp.c
@@ -24,8 +24,6 @@
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
-extern DMA_HandleTypeDef hdma_lpuart1_tx;
-
extern DMA_HandleTypeDef hdma_usart1_tx;
/* Private typedef -----------------------------------------------------------*/
@@ -80,68 +78,67 @@ void HAL_MspInit(void)
}
/**
-* @brief UART MSP Initialization
+* @brief RTC MSP Initialization
* This function configures the hardware resources used in this example
-* @param huart: UART handle pointer
+* @param hrtc: RTC handle pointer
* @retval None
*/
-void HAL_UART_MspInit(UART_HandleTypeDef* huart)
+void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
{
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(huart->Instance==LPUART1)
+ if(hrtc->Instance==RTC)
{
- /* USER CODE BEGIN LPUART1_MspInit 0 */
+ /* USER CODE BEGIN RTC_MspInit 0 */
+ HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */
+
+ /**
+ * Write twice the value to flush the APB-AHB bridge
+ * This bit shall be written in the register before writing the next one
+ */
+ HAL_PWR_EnableBkUpAccess();
- /* USER CODE END LPUART1_MspInit 0 */
+ __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE); /**< Select LSI as RTC Input */
+ /* USER CODE END RTC_MspInit 0 */
/* Peripheral clock enable */
- __HAL_RCC_LPUART1_CLK_ENABLE();
-
- __HAL_RCC_GPIOA_CLK_ENABLE();
- /**LPUART1 GPIO Configuration
- PA2 ------> LPUART1_TX
- PA3 ------> LPUART1_RX
- PA6 ------> LPUART1_CTS
- */
- GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ __HAL_RCC_RTC_ENABLE();
+ /* USER CODE BEGIN RTC_MspInit 1 */
+ HAL_RTCEx_EnableBypassShadow(hrtc);
+ /* USER CODE END RTC_MspInit 1 */
+ }
- GPIO_InitStruct.Pin = GPIO_PIN_6;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
- /* LPUART1 DMA Init */
- /* LPUART1_TX Init */
- hdma_lpuart1_tx.Instance = DMA1_Channel4;
- hdma_lpuart1_tx.Init.Request = DMA_REQUEST_LPUART1_TX;
- hdma_lpuart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_lpuart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_lpuart1_tx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_lpuart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_lpuart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_lpuart1_tx.Init.Mode = DMA_NORMAL;
- hdma_lpuart1_tx.Init.Priority = DMA_PRIORITY_LOW;
- if (HAL_DMA_Init(&hdma_lpuart1_tx) != HAL_OK)
- {
- Error_Handler();
- }
+}
- __HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
+/**
+* @brief RTC MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hrtc: RTC handle pointer
+* @retval None
+*/
+void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
+{
+ if(hrtc->Instance==RTC)
+ {
+ /* USER CODE BEGIN RTC_MspDeInit 0 */
- /* LPUART1 interrupt Init */
- HAL_NVIC_SetPriority(LPUART1_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(LPUART1_IRQn);
- /* USER CODE BEGIN LPUART1_MspInit 1 */
+ /* USER CODE END RTC_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_RTC_DISABLE();
+ /* USER CODE BEGIN RTC_MspDeInit 1 */
- /* USER CODE END LPUART1_MspInit 1 */
+ /* USER CODE END RTC_MspDeInit 1 */
}
- else if(huart->Instance==USART1)
+
+}
+
+/**
+* @brief UART MSP Initialization
+* This function configures the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspInit(UART_HandleTypeDef* huart)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(huart->Instance==USART1)
{
/* USER CODE BEGIN USART1_MspInit 0 */
@@ -149,20 +146,11 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
/* Peripheral clock enable */
__HAL_RCC_USART1_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/**USART1 GPIO Configuration
- PA11 ------> USART1_CTS
PB6 ------> USART1_TX
PB7 ------> USART1_RX
*/
- /* GPIO_InitStruct.Pin = GPIO_PIN_11;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-*/
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
@@ -206,31 +194,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
*/
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
{
- if(huart->Instance==LPUART1)
- {
- /* USER CODE BEGIN LPUART1_MspDeInit 0 */
-
- /* USER CODE END LPUART1_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_LPUART1_CLK_DISABLE();
-
- /**LPUART1 GPIO Configuration
- PA2 ------> LPUART1_TX
- PA3 ------> LPUART1_RX
- PA6 ------> LPUART1_CTS
- */
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_6);
-
- /* LPUART1 DMA DeInit */
- HAL_DMA_DeInit(huart->hdmatx);
-
- /* LPUART1 interrupt DeInit */
- HAL_NVIC_DisableIRQ(LPUART1_IRQn);
- /* USER CODE BEGIN LPUART1_MspDeInit 1 */
-
- /* USER CODE END LPUART1_MspDeInit 1 */
- }
- else if(huart->Instance==USART1)
+ if(huart->Instance==USART1)
{
/* USER CODE BEGIN USART1_MspDeInit 0 */
@@ -239,12 +203,9 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
__HAL_RCC_USART1_CLK_DISABLE();
/**USART1 GPIO Configuration
- PA11 ------> USART1_CTS
PB6 ------> USART1_TX
PB7 ------> USART1_RX
*/
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11);
-
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
/* USART1 DMA DeInit */
@@ -259,58 +220,6 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
}
-/**
-* @brief RTC MSP Initialization
-* This function configures the hardware resources used in this example
-* @param hrtc: RTC handle pointer
-* @retval None
-*/
-void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
-{
- if(hrtc->Instance==RTC)
- {
- /* USER CODE BEGIN RTC_MspInit 0 */
- HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */
-
- /**
- * Write twice the value to flush the APB-AHB bridge
- * This bit shall be written in the register before writing the next one
- */
- HAL_PWR_EnableBkUpAccess();
-
- __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE); /**< Select LSI as RTC Input */
- /* USER CODE END RTC_MspInit 0 */
- /* Peripheral clock enable */
- __HAL_RCC_RTC_ENABLE();
- /* USER CODE BEGIN RTC_MspInit 1 */
- HAL_RTCEx_EnableBypassShadow(hrtc);
- /* USER CODE END RTC_MspInit 1 */
- }
-
-}
-
-/**
-* @brief RTC MSP De-Initialization
-* This function freeze the hardware resources used in this example
-* @param hrtc: RTC handle pointer
-* @retval None
-*/
-void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
-{
- if(hrtc->Instance==RTC)
- {
- /* USER CODE BEGIN RTC_MspDeInit 0 */
-
- /* USER CODE END RTC_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_RTC_DISABLE();
- /* USER CODE BEGIN RTC_MspDeInit 1 */
-
- /* USER CODE END RTC_MspDeInit 1 */
- }
-
-}
-
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_it.c
index f06353d51..b5cc21eb6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/Core/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-extern DMA_HandleTypeDef hdma_lpuart1_tx;
extern DMA_HandleTypeDef hdma_usart1_tx;
-extern UART_HandleTypeDef hlpuart1;
extern UART_HandleTypeDef huart1;
/* USER CODE BEGIN EV */
@@ -205,20 +203,6 @@ void SysTick_Handler(void)
/******************************************************************************/
/**
- * @brief This function handles DMA1 channel4 global interrupt.
- */
-void DMA1_Channel4_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */
-
- /* USER CODE END DMA1_Channel4_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_lpuart1_tx);
- /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */
-
- /* USER CODE END DMA1_Channel4_IRQn 1 */
-}
-
-/**
* @brief This function handles USART1 global interrupt.
*/
void USART1_IRQHandler(void)
@@ -233,20 +217,6 @@ void USART1_IRQHandler(void)
}
/**
- * @brief This function handles LPUART1 global interrupt.
- */
-void LPUART1_IRQHandler(void)
-{
- /* USER CODE BEGIN LPUART1_IRQn 0 */
-
- /* USER CODE END LPUART1_IRQn 0 */
- HAL_UART_IRQHandler(&hlpuart1);
- /* USER CODE BEGIN LPUART1_IRQn 1 */
-
- /* USER CODE END LPUART1_IRQn 1 */
-}
-
-/**
* @brief This function handles DMA2 channel4 global interrupt.
*/
void DMA2_Channel4_IRQHandler(void)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/App/tm.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/App/tm.c
index f16c24684..f066f8113 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/App/tm.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/App/tm.c
@@ -514,7 +514,6 @@ void shci_send( uint16_t cmd_code, uint8_t len_cmd_payload, uint8_t * p_cmd_payl
return;
}
-
/* USER CODE BEGIN FD_WRAP_FUNCTIONS*/
/* USER CODE END FD_WRAP_FUNCTIONS*/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/BLE_p2pClient.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/BLE_p2pClient.ioc
index 9163b7c63..796dde506 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/BLE_p2pClient.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/BLE_p2pClient.ioc
@@ -94,12 +94,13 @@ Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -210,7 +211,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -232,7 +233,9 @@ RCC.RNGFreq_Value=32000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
@@ -260,7 +263,7 @@ STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO=3
STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO=0
STM32_WPAN.CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION=1
STM32_WPAN.CFG_HW_USART1_ENABLED=1
-STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_ONLY
+STM32_WPAN.CFG_IO_CAPABILITY=\ CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
STM32_WPAN.CFG_LPM_SUPPORTED=1
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=0xFA0
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA=0xfa0
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex
index fdb577499..076ed4cba 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex
@@ -1,1990 +1,2025 @@
:020000040800F2
-:10000000D0270020597A0008357800083778000892
-:10001000397800083B7800083D78000800000000AF
-:100020000000000000000000000000003F78000811
-:100030004178000800000000437800084578000877
-:100040007B7A00087F7A0008837A000877780008B6
-:10005000877A00088B7A00088F7A0008937A000864
-:10006000977A00089B7A0008717800089F7A000848
-:10007000A37A0008A77A000849780008AB7A00083C
-:10008000AF7A0008B37A0008B77A0008BB7A000894
-:10009000BF7A0008C37A0008C77A0008CB7A000844
-:1000A000CF7A0008D37A0008D77A0008DB7A0008F4
-:1000B000DF7A0008E37A0008E77A0008EB7A0008A4
-:1000C000EF7A0008F37A0008F77A0008FB7A000854
-:1000D0004F78000855780008FF7A0008037B000875
-:1000E000077B00080B7B00080F7B0008137B0008D0
-:1000F0007F7800087B780008177B00081B7B0008CE
-:100100001F7B0008237B0008277B00082B7B00084F
-:100110002F7B0008337B0008377B00083B7B0008FF
-:100120003F7B0008437B00085B780008477B0008A2
-:100130004B7B00084F7B0008537B00082DE9F04FF4
-:100140000FF2A41CA1B0DCE90089CDE900892A9D49
-:10015000DFF8DC9B049100248DF843500D944FF0A0
-:10016000FF38824616461F460FE0B3462C461BF862
-:10017000011B0498D0470028049000F0A2800D983D
-:10018000401C641E0D90F2D176193078252808D1D4
-:10019000002100220791089209910A920B910C927A
-:1001A0000DE06A464146304600F0DAFF050001D115
-:1001B0000D98A1E0D9D50125E6E741F0010116F837
-:1001C000010F2028F9D023280CD02B2804D02D286B
-:1001D00005D0302809D076E041F00201EFE741F088
-:1001E0000401ECE741F00801E9E741F01001E6E71E
-:1001F0000F9209E00F98484505DA00EB800402EB06
-:100200004402303A0F92761C3278A2F130000A286C
-:10021000F0D330782E2818BFCDF8388022D116F8C8
-:10022000010F2A2807D138683860761C50F8042B53
-:1002300038600E9216E02D280CBF761C002000229C
-:100240000E920AE040B90E9A4A4505DA02EB8204A2
-:1002500003EB4403303B0E93761C3378A3F130025A
-:100260000A2AEFD3ADF8401021A0317800F082FFC8
-:1002700008B116F8010B8DF842009DF8420068287D
-:1002800004D1307868280AD1622105E06C2804BFC7
-:1002900030786C2803D171218DF84210761C12A899
-:1002A00006903A4616F8013B02A9504600F064F861
-:1002B00038B912AA02A9504600F0C8F900287FF503
-:1002C00064AF404618E02A2892D13A683A6052F862
-:1002D000040B3A6000280F9003D540420F9041F084
-:1002E0000401761C95E700000000000000000000FB
-:1002F000686A6C747A4C000021B0BDE8F08F622807
-:1003000020D0682811D06A2803D06C2827D0712803
-:1003100025D10868C01D20F007000860D0E900233F
-:1003200008300860194610467047002A0A680A60BB
-:10033000106803D0121D0A6000B217E0121D0A6097
-:1003400080B217E0002A0A680A60106803D0121D04
-:100350000A6040B20AE0121D0A60C0B20AE0002A38
-:100360000A680A60106803D0121D0A60C11770473E
-:10037000121D0A60002170477CB50D4611461C46CF
-:100380002E69B4F1250200F04F811C3A00F0848000
-:10039000121F022A40F280800E3A00F00981521F9B
-:1003A00059D0093A78D0921E16D0521E35D0521E1E
-:1003B000022A71D9121F30D0521F00F09880521EAD
-:1003C00049D0521E00F0E280D21E00F0FF80921E43
-:1003D00041D0D21E3FD02DE195F83A406C2C09D087
-:1003E0006869421C6A610A680A6052F8043B0A6044
-:1003F000335429E10A680A6052F8043B0A6000930A
-:10040000002201924FF0FF332B636A46294600F029
-:1004100098F9002840F1188103E195F83A0001228B
-:10042000FFF76DFFC5E90001002904D56869411C8B
-:1004300069612D220DE0288F810704D56869411C70
-:1004400069612B2205E0C00721D56869411C6961FB
-:10045000202232541BE095F83A000022FFF74FFFAC
-:10046000C5E9000195F83800010710D5D5E900234A
-:10047000002B08BF002A0AD044F02000782806D1BB
-:10048000686930213154401C421C6A613454214651
-:1004900068693044E86087E00868C01D20F0070004
-:1004A0000860D0E9002308300860C5E90023D5E9D9
-:1004B0000001C80F04D06869411C69612D220DE05C
-:1004C000288F810704D56869411C69612B2205E0EA
-:1004D000C00704D56869411C6961202232546869EB
-:1004E0003044E8602146284600F036FAACE005F1D9
-:1004F0003A02507820B14FF0FF340FF6043074E028
-:100500001078622808D0682824D06A2812D06C2875
-:100510002ED071280ED02BE00A680A6052F8040B26
-:100520000A6020B94FF0FF340FF6EC205DE0E96A75
-:10053000017089E00A680A6052F8040B0A6020B969
-:100540004FF0FF340FF6D0204FE0EA6AD317C0E92E
-:10055000002379E00A680A6052F8040B0A6020B9A7
-:100560004FF0FF340FF6B0203FE0E96A01806BE006
-:100570000A680A6052F8040B0A6020B94FF0FF3491
-:100580000FF6942031E0E96A01605DE00A680A60D4
-:1005900052F8040B0A60002120F0000221F0FF3322
-:1005A000C5E90023EE607821284600F02DF94BE0E4
-:1005B0006C2285F83A200B680B6053F8042B0B6013
-:1005C00052BB4FF0FF340FF684200EE095F83A202E
-:1005D0006C2AF0D00868086050F8044B0860EC60A2
-:1005E0003CB94FF0FF340FF6482000F0EBFD201A25
-:1005F00076BD2E6B002E04D5204600F003FE044687
-:1006000008E032460021204600F026FE002814BFF4
-:10061000041B3446AC6117E0294600F092F800282C
-:1006200012D54FF0FF3076BD6869411C6961252203
-:10063000325409E06969481C68612522725421001E
-:1006400002D0431C6B613454002076BD2DE9F0418B
-:100650000E4605469046726B7069316AB46A121A8A
-:10066000B069521A716A121AF069521A121A96F87F
-:100670003800141B41070DD4002C0BDD2746B06851
-:100680002021A8470028B06057D0F06A401C7F1E88
-:10069000F062F4D1736942463146284600F098FC76
-:1006A00000284AD1376A002F0ADDB0683021A847F8
-:1006B0000028B06041D0F06A401C7F1EF062F4D187
-:1006C000B369F2683146284600F082FCA8BB776A1D
-:1006D000002F09DDB0683021A847B06068B3F06A28
-:1006E000401C7F1EF062F5D1F068B169F3694218D1
-:1006F0003146284600F06CFCF8B9B76A002F09DDD6
-:10070000B0683021A847B060B8B1F06A401C7F1EC5
-:10071000F062F5D196F8380041070BD5002C09DDC1
-:10072000B0682021A847B06038B1F06A401C641E50
-:10073000F062F5D10020BDE8F0814FF0FF30BDE858
-:10074000F0812DE9F8470D46A3B02F6B002F064628
-:10075000904648BF6FF000470FF60C1400F0A8FD5C
-:10076000D4E90023696B4018CDE90123812828BF13
-:100770004FF0FF3042D20024002F33DDD8F80010B4
-:1007800001AA684600F0EEFC8146B9F1000F38D4AA
-:10079000D8F8000010B9B9F1010932D44F4521DB76
-:1007A0006869484481280AD30021696303AA29465D
-:1007B0003046FFF74BFF040014D40020686103AB00
-:1007C000D5F814A04A46694603EB0A0000F076FD0E
-:1007D000CA44C5F814A058F8040B002818BFA7EBAA
-:1007E0000907C9D14CB903AA29463046FFF72EFFA5
-:1007F000044614B9002068616863204624B0BDE84F
-:10080000F0874FF0FF34F8E72DE9FC4307466F29E6
-:100810003E6908BF082405D041F02000782814BFA5
-:100820000A2410243C25D7E90023642918BF69292C
-:100830009046994605D1002B03D5D8F1000869EB05
-:100840004909B9F1000F08BFB8F1000F1FD1386B8B
-:10085000E8B9082C4CD197F83800010748D530206A
-:100860003B2586F83B0043E000280ED597F838007A
-:1008700000F01400102808D17B6B7969386A5B1A84
-:100880001B1A9A1A002AC8BF3A62BDE8F3838DF892
-:100890000010404649462246E31700F01BFD303267
-:1008A000D0B26D1E3A28019504DB9DF80000A0F13E
-:1008B00051018A187255404649462246E31700F016
-:1008C00009FD80465FEA010908BFB8F1000F03D0B7
-:1008D000F86871198842DCD3082C09D197F83800E0
-:1008E000010705D5705D302802D06D1E302070558F
-:1008F000C5F13C02BA617119F960386B8242B3DA12
-:10090000821A3A624FF6EF70398F01403987BDE89D
-:10091000F3832DE9D04306460F4614464FF00008F6
-:10092000DFF8109412E0E00707D542464B46304608
-:10093000394600F053FD06460F46404649464246BA
-:100940004B4600F04BFD641080468946002CEAD1EE
-:1009500030463946BDE8D0832DE9F84F05468A4632
-:100960004AF020048EB0D5E90089612C02AE09D08E
-:10097000286B002848BF062003D408BF672C01D18C
-:1009800001202863D5E900014A005215521C0DD1FF
-:100990000B030BD0AAF1610103201A29A86102D22E
-:1009A0000FF2CC6110E00FF2CC610DE04A0052155D
-:1009B000521C0ED10B030CD1AAF1610103201A299C
-:1009C000A86116D30FF2B461E868032200F076FC48
-:1009D000C0E1CDE90C01DDE90C2323F00043B3F5C0
-:1009E000801F0DD20027002B08BF002A019703D1DA
-:1009F00011E00FF28461E7E701AA00F0C1FD0AE00F
-:100A0000CD48CE4900EB1350DDE90C2301900B409B
-:100A1000CB4910461943C5E90001612C0DD1E868A6
-:100A200030210170821CBAF1610FEA600CBF78219D
-:100A3000582141706869801C6861D5E90001CDE9E1
-:100A40000C01DDE90C2333F0004104BF0028002332
-:100A500000F04881612C40F0A080286B49460028B6
-:100A60004CBF4FF0210B00F1010B40460022002348
-:100A7000DDE90C8900F0BCFD01990BF1010738BFDD
-:100A800089F00049091F002F01918DF808200DF110
-:100A9000090040F33581A949009106464046494680
-:100AA0000022002300F0BCFD80F029814800400DA9
-:100AB00000F11C0211D0002A0FDD40F2FF739A42B0
-:100AC00005DBA04909F000400143002011E0009B34
-:100AD000194041EA025140460BE028F0000039F08D
-:100AE000004108BF00280FBF49461C22494600F0BC
-:100AF000AFFD8046894600F049FEFF1F002F0446E7
-:100B000009DD00F061FE02460B464046494600F012
-:100B10006DFE80468946F01D072104E004F00F02B7
-:100B200000F8012D2411002C01DD491EF6D5491EC7
-:100B30005CBF002200F8012DF9D5DCE00020194649
-:100B400002AA0A4400E05B1E12F80149491E8442D1
-:100B5000F9D00F2804D10DF10900425C521C425417
-:100B6000002904D50198001D02AE5B1C0190581E9F
-:100B70000CD43118AAF13A040A783032D7B23A2F9D
-:100B8000A8BFA218401E01F80129F5D5286B00283E
-:100B900040F1A780591E2963A3E001996A4A47F2F0
-:100BA0009750414391FBF2F2019229F00046D2F1B5
-:100BB000070204DD40463146FFF7ABFE0AE0524231
-:100BC00000206249FFF7A5FE02460B46404631462B
-:100BD00000F07EFE8046662C286B06BF019F0A3718
-:100BE00006273F18142FC8BF142730208DF808009F
-:100BF00089460DF1090000E03046002F34DD06463D
-:100C00004046494600F088FF01460A4606F10803BF
-:100C100004200A26B2FBF6F606EB860EA2EB4E0285
-:100C2000303203F8012C0A22B6FBF2F202EB820EFC
-:100C3000A6EB4E063036401E03F8026DE9D1083FA0
-:100C4000002F03F10806D7DD084600F079FF0246C1
-:100C50000B464046494600F0C9FD00223C4B00F0DF
-:100C6000BDFB80468946CBE70DF10901401A0DF125
-:100C7000090604E00199491E401E0191761C317855
-:100C80003029F7D0662C02D10199491C03E0652C6C
-:100C90000CBF012100212B6BCB189842B8BF431E1B
-:100CA000002B1ED4834204DAF05C3528A8BF39201B
-:100CB00000DA30201946721E02EB010800E05B1ECC
-:100CC00018F80199491E8145F9D0392802D1705C84
-:100CD000401C7054002904D50198401C16465B1C2A
-:100CE0000190019800B200901BB23246514628464E
-:100CF00000F034F82EE0C61D002F3FF7CFAE30468F
-:100D00000DF10901401A03465845C8BF5B46002B48
-:100D10000DF109063FF53AAF8342BFF60FAF0DF173
-:100D20000900C15C07297FF709AF0F2007E7000022
-:100D3000CBCCCC0C0000244002FCFFFFFFFF0F8057
-:100D40000000E03F0000F07FA08601000000F03FBF
-:100D500084D797410FB0BDE8F08F00002DE9F84728
-:100D600083B006468A461746984600F0FDF9B8F16A
-:100D7000000F406A356B90F8009002DC4FF00108DC
-:100D8000BFA74AF02000BDF93040662808BF641CA8
-:100D900015D0672840F0848014F1040FC0F28680DB
-:100DA000AC4280F2838096F83800641C010702D4BC
-:100DB000A845B8BF454620B22D1A48BF00250FFAF6
-:100DC00084FAF068B169BAF1000F25DC4A1C3023BF
-:100DD0004354002D03DC96F83800010703D5F06872
-:100DE00000F80290521C15EB0A0FB8BF6C4220B2FB
-:100DF000441941424445B8BFA046B26171620FFA3E
-:100E000088F5F561F068B3692A463946184400F060
-:100E100055FA641BB462C4E022B29045084417DA64
-:100E20004246394600F04AFAB0694044B061AAEB44
-:100E30000801002D716203DC96F838100A0705D509
-:100E4000F16801F80090F069401CF061B562A8E01B
-:100E5000394600F033FAB069002D5044A8EB04087D
-:100E600003DC96F838100A0703D5F16801F8009002
-:100E7000401CB0610FFA88F08542F368B069B8BFD2
-:100E8000A8460FFA88F207EB0A01184400F016FA98
-:100E9000B1690FFA88F00144B161281A706280E0EC
-:100EA000BAF1610F14D14FF0700A16E0A84504DAC8
-:100EB00096F838100A0758BF45466D1E48BF0025F2
-:100EC000BAF1670F14BF4FF0450A4FF0650A04E00E
-:100ED000BAF1410F08BF4FF0500AB169F368481CDE
-:100EE000B061002D17F8012B5A5403DC96F8381026
-:100EF0000A071BD5F168431CB36101F80090002D6F
-:100F000014DDA8F101080FFA88F039468542F76828
-:100F1000B8BFA8460FFA88F2F81800F0CFF9B06908
-:100F20000FFA88F108446D1AB0617562F068B16912
-:100F30000844002C80F800A003D42B224270811CAE
-:100F400003E02D2141706442811C00206A460AE0C2
-:100F500023460A2493FBF4F404EB8405A3EB450336
-:100F600002F8013B401C24B2002CF1DC012806DC15
-:100F70004AF02002652A04BF302201F8012B48B94B
-:100F8000302001F8010B07E0401E1DF8003030331F
-:100F900001F8013B0028F7DCF268B0691044091A37
-:100FA000F16196F8380000F0140010280DD1726934
-:100FB000B169706A8A18F1698218B06A8A18821851
-:100FC000706B8242BCBF821A326204B0BDE8F08707
-:100FD000F8B505460E4617461C46002074B117F8B2
-:100FE000011BB068A847B06030B1F06A401CF062E5
-:100FF0000020641EF3D1F2BD4FF0FF30F2BD0000BF
-:101000007072696E74665F733A20256E206469732E
-:10101000616C6C6F776564007072696E74663A20FB
-:1010200062616420256E20617267756D656E740063
-:101030007072696E74665F733A2062616420257312
-:1010400020617267756D656E740000007072696E64
-:1010500074665F733A2062616420256C732061724C
-:1010600067756D656E7400000000000000000000F0
-:101070006E616E004E414E00696E6600494E46003C
-:101080003000F0B40246106895681318506803EBFE
-:101090005004C0071DD54D441BE013F8017B05F833
-:1010A000017B491EF9D1A0B1B60813F8011B06F067
-:1010B0000306032E08BF13F8016B01EB062149421A
-:1010C000801C294405D011F8016B05F8016B401E06
-:1010D000F9D1A3420ED013F8016B16F0030104BF3F
-:1010E00013F8011BC91C30090F28DAD113F8010BC2
-:1010F0000F30D6E7F0BC02F10C0070471B48704778
-:1011000070B45368D418042B09DA41B1057804F897
-:10111000015B10F8016B16B15B1C491EF3E75360CD
-:1011200070BC704738B514461D4661B1FFF7E8FF43
-:1011300061686A6B204690476FF00102811A02D005
-:10114000491E01D001E003E005E00021616032BDED
-:101150006FF0010032BD4FF0FF3032BDDA6B104747
-:10116000024BDFE7014BF9E701487047B010002060
-:1011700078100020C9B202788A421AB11CBF10F858
-:10118000012FF9E718BF0020704730B4002513E0A5
-:1011900050F8042BD30744BFA9F101039A18091F83
-:1011A000042942F8045BFAD213468C0744BF158029
-:1011B0009B1CC90748BF1D7050F8041B0029E7D1CC
-:1011C00030BC704780B500B906A005490B681BB15B
-:1011D00022220021984701E000F0BFFC222002BD3E
-:1011E000C4170020636F6E73747261696E74206837
-:1011F000616E646C65723A20626164206D65737320
-:101200006167650000F10103810704D010F8011B3C
-:10121000820781B1FAD10268A2F10131914311F044
-:10122000803104BF50F8042FF6E709BAB1FA81F112
-:1012300000EBD100401CC01A7047B1F5807F02D38B
-:101240004FF0FF3070470170012070470078401E5A
-:101250008041C043C00F7047C9B2830706D0521EF9
-:1012600022D310F8013B9942F7D11FE0083A13D37B
-:1012700002F1040241EA012141EA014150F8043B34
-:10128000121F21BF4B40A3F1013C2CEA030C1CF0C0
-:10129000803FF3D0C9B2001F083210F8013B521E44
-:1012A00028BF91EA030FF8D818BF0120401E7047ED
-:1012B00080B5FFF723FF006C02BD00004AB10000BB
-:1012C00011F8013B521E00F8013B1CBF11F8013B15
-:1012D000F8E77047D3BBD9B1B2F5803F5BD2022AA1
-:1012E0001ED98C46B1FBF2F102FB11C31B0443EA89
-:1012F0001043B3FBF2FC02FB1C3380B240EA034311
-:10130000B3FBF2F002FB103240EA0C4000237047BE
-:10131000022A05D98446B0FBF2F002FB10C27047E6
-:101320004AB105D100F0010249085FEA3000704778
-:1013300000220023704700F013BC0B0002000021C4
-:1013400000207047F7D3002200237047904271EBD2
-:10135000030CF2D370B5B1FA81F4B3FA83F52C1B08
-:10136000A340C4F1200532FA05F63343A2405FF0F2
-:101370000046E64002E05B085FEA3202841A71EB45
-:10138000030524BF204629467641F4D302000B0012
-:101390003000002170BD70B5B1FA81F4B2FA82F567
-:1013A000C4F120046419B4F12006DAD3B2405FF02E
-:1013B0000044F440002502E052085FEA3303C61AF5
-:1013C00071EB020E24BF3046714664416D41F3D388
-:1013D00002000B002000290070BD0000B0B581EABA
-:1013E000030C0CF0004C40F2FF7515EA11541DBFC0
-:1013F00015EA1357AC42AF4239E0E41923EA4553EA
-:1014000043F48013C90241F0004141EA505EC70233
-:101410001100A7FB020200284FF00000EEFB0120A4
-:101420004FF00001E3FB072118BF42F00102401812
-:1014300000214941E3FB0E01A4F580640F0302D2B1
-:1014400052004041494154F101046CDD470872F1FA
-:10145000004250F1000051EB0451A1F580115CBF36
-:1014600041EA0C01B0BD4CEA05510020B0BD05EACF
-:101470001357AC4214BFAF4241E050EA410E1CBFCB
-:1014800052EA430E02E061460020B0BD24423C44D3
-:101490001BD15FEA070EF6D0090302BF0146002008
-:1014A000AEF1140EB1FA81F7AEEB070401FA07FEB4
-:1014B0000C37C7F1200100FA07F7C8404EEA000ECA
-:1014C00023EA455343F48013A2E733F00043B3FA11
-:1014D00083F704BFB2FA82FE77440B3FE41BB7F1F7
-:1014E000200E2FBF02FA0EF3BB40C7F1200E22FAE6
-:1014F0000EFE38BF43EA0E03BA40641C82E750EA8E
-:10150000410E14BF52EA430E6FF000014FF4001772
-:1015100017EB430F8ABF194617EB410FB5E74CEAAB
-:1015200005510020B0BDD4F10104B4F120070FDA59
-:10153000C4F12007520828BF42F0010210FA07F553
-:1015400001FA07F7E1BF2A43E0403843E1400FE0EA
-:10155000352C98DCC7F1200452EA400220FA07F249
-:1015600018BF42F0010231FA07F0A1400A430021FE
-:1015700072F1004250F1000051EB0C01B0BD0000CF
-:1015800010B5144600F002F8226010BDC1F30A53F2
-:1015900043B14A0012F5001F28D2A3F2FE32A1EB9C
-:1015A0000251704750EA410C20D001F0004C31EA62
-:1015B0000C01B1FA81F204BFB0FA80F3D2180B3AF1
-:1015C000B2F120032CBF00FA03F1914041EA0C0173
-:1015D0003EBFC2F1200C20FA0CF319439040524256
-:1015E00040F2FD33D21A01EB0351704700227047DD
-:1015F0004FF4001C1CEB410F94BF1CEB430F09E0A0
-:1016000041EA030C50EA4C0C52EA0C0C03D299420A
-:1016100008BF9042704714BF8B428242704700005F
-:101620004FF4001C1CEB410F94BF1CEB430F09E06F
-:1016300041EA030C50EA4C0C52EA0C0C03D28B42E8
-:1016400008BF8242704714BF994290427047000021
-:10165000124254D440F2FF7C1CEA11530FD0634570
-:1016600031D09B1863453CBF01EB0251704701F03C
-:10167000004141EA0C510020AFF30080704750EA6E
-:10168000410320D001F0004C91EA0C011CD0B1FACA
-:1016900081F30B3B9A420DD9D21A994051EA0C01C1
-:1016A000C3F1200C20FA0CFC61449840531C40F21A
-:1016B000FF7CD7E7914041EA0C01C2F1200C20FAEF
-:1016C0000CF3194390407047B0FA80F31533202B88
-:1016D000E0D3202AEED3203A203B9A4209D9D21AED
-:1016E00000FA03F141EA0C010020531C40F2FF7C98
-:1016F000B8E700FA02F141EA0C01002070475242BB
-:1017000040F2FF7C1CEA11530DD06345DBD0B2EBF5
-:10171000030C3CBFA1EB025170470CF1010221EA1E
-:10172000035141F4801150EA410CCCD001F0004C3F
-:10173000352A27DC30B481EA0C01B2F1200309DA42
-:10174000C2F12003044601FA03F5D0402843D140FA
-:101750009C400CE0C3F12002450020FA03F418BFBE
-:1017600044F0010421FA03F091400C43002174F18C
-:10177000004550F1000051EB0C01244230BC7FF4D5
-:101780007BAF70476146002076E70000C1F30A5343
-:1017900040F2FE329B1A14DDD3F120034FEAE172CE
-:1017A00008DDC90241EA505141F00040D84080189C
-:1017B0005040704703F2E13010B1D24382F0004054
-:1017C0007047002070470000C11768B14840401AB8
-:1017D000B0FA80F29040D21CC907C2F5846241EA97
-:1017E000025202EBD02140057047000070B44FF068
-:1017F000004591EA030F40F1B5816B40841A71EB0B
-:10180000030603D2001BB141121973414FF4001CAF
-:101810001CEB410F34BF7CEB430442E00C0DA4EB06
-:101820001356352E4FDC45EAC323DB0A45EAC121B6
-:10183000C912B6F120050DDD63FA05F6EB4086EA24
-:101840000305124218BF45F00105C01851F100010F
-:101850000CD213E062FA06F5F2405540F3415A40CB
-:10186000B340F3405A408018594107D349085FEA12
-:1018700030005FEA350528BF45F0010501F580110C
-:10188000420875F1004250F1000041EB04514E0056
-:1018900016F5001F70BC38BF70470020090D090500
-:1018A00070471CEB410F10D252EA43060BD0BCEB41
-:1018B000410F05D80C0DAB43661E342EB6DD02E099
-:1018C000AB438018594170BC704770BC7047000032
-:1018D000F0B540F2FF7581EA030C0CF0004C15EAFC
-:1018E00011541DBF15EA1357AC42AF42E5E0BC41AD
-:1018F000C1F31301C3F31303801A994143F4801316
-:1019000004D2641E4000494180185941C90241EA8D
-:101910005051B1FBF3F603FB1611A2FB0675D7EB92
-:10192000C020A94102D2761E80185941C90241EA5D
-:101930005051B1FBF3FE03FB1E11A2FB0E75D7EB5A
-:10194000C020A94103D2AEF1010E8018594189028D
-:1019500041EA9051760546EA8E2EB1FBF3F603FB81
-:101960001611A2FB0675D7EB8020A94102D2761E84
-:1019700080185941C90241EA50514EEA060EB1FBA6
-:10198000F3F603FB1611A2FB0675D7EBC020A941A5
-:1019900002D2761E80185941C90241EA5051B1FB6A
-:1019A000F3F703FB1711A2FB0735D3EBC020A941C6
-:1019B00067F100070CBF004247F0010766F3D52727
-:1019C0004FEA1E31B80814F5806412DDBD0775F1C9
-:1019D000004250EB0E5051EB045111F5801F5CBFDB
-:1019E00041EA0C01F0BD4CF07F6141F0E041002084
-:1019F000F0BDBD076D0840EA0E5041F48011D4F1EE
-:101A00000104B4F120060ADAC4F120060200E04025
-:101A100001FA06F3E1401843B24015430EE0342CBE
-:101A200013DCC6F1200445EA40056D0820FA06F2F1
-:101A3000154321FA06F0A1400D43002175F1004243
-:101A400050F1000051EB0C01F0BD00205FEA0C01E9
-:101A5000F0BDCFB992185B41B3FA83F704BFB2FA75
-:101A600082F6BF190B3FB7F120062FBF02FA06F32B
-:101A7000BB40C7F1200622FA06F638BF3343BA400E
-:101A80001CB1E419641E33E77F4231F00041B1FA22
-:101A900081F404BFB0FA80F6A4190B3CB4F120061F
-:101AA0002FBF00FA06F1A140C4F1200620FA06F685
-:101AB00038BF3143A0403C1B1AE7AC421ABF05EACD
-:101AC0001357AF4212E050EA41061CBF52EA4306E8
-:101AD000BFE750EA4107304661461CBF41EA055165
-:101AE000F0BD52EA430C08BFC143F0BD00204FF4E3
-:101AF000001616EB410F98BF16EB430F08BF16EB0D
-:101B0000410F24BFC14305E016EB430F0CBF6146F4
-:101B10004CEA0551F0BD0000400D491840EA812013
-:101B20000CD2490DA1F58061491C40F0004005DB55
-:101B3000D1F11F0154BFC840C01770470020704743
-:101B4000014648B1B0FA80F18840C91CC1F58461F2
-:101B5000090501EBD02140057047012000F0B8B81D
-:101B600070470000841A71EB030604D26E40001B1C
-:101B7000B141121973414FF4001C1CEB410F34BFEB
-:101B80007CEB430683E00C0DA4EB1356362E00F3DA
-:101B90007C80012E45EAC32341DC43EA525312BF45
-:101BA000D20292025B08240545EAC12141EA505164
-:101BB000D2EBC020994125D407D1B0FA80F610FAB3
-:101BC00006F162D00020203608E0B1FA81F6B1407B
-:101BD000C6F1200220FA02F21143B0404FEAF47439
-:101BE000B4EB465434F001064FEA74040AD8D6F533
-:101BF0000016760D04F00044F04061FA06F2504001
-:101C0000F1404840C00A40EA415021F0004128BF5D
-:101C10005FEA500550F1000044EBD12135E0DB0ACA
-:101C200045EAC121C90AB6F120050EDD42EA0242A9
-:101C3000120CC5F1200603FA06F6EB4042EA06054F
-:101C40006D42984161F100010DE062FA06F5F24043
-:101C5000554063FA06FC82EA0C02F3405A406D429A
-:101C6000904161EB030111F4801F05D1641E6205F0
-:101C700002D06D004041494121F48011430875F1C3
-:101C8000004350F1000041EB045170BC70471CEB65
-:101C9000410F15D223F0004352EA43060BD04FEA1E
-:101CA0004C0CBCEB410F04D80C0D661E342EB7DD76
-:101CB000EBE7801A994150EA410608BF0021E4E7AA
-:101CC00008BF1CEB430F28BF6FF00001DDE70000E9
-:101CD00080B5AFF30080024A11001820ABBEFBE7CD
-:101CE0002600020038B5040009D004F17C056968BB
-:101CF00009B900F01EF800F021F8012801D10120F7
-:101D000032BDA06A08B100F02AF800F00AF821F00C
-:101D10002A01FFE7816000F01BF8BDE8324000F0C7
-:101D20002EBE2068416821F490414160206881689E
-:101D3000704700202870204600F04FBF24216960C2
-:101D400020680268520852000260204600F040B944
-:101D50002068016841F0010101602046704720467B
-:101D600000F0AABD70B5044604F17C05134668680E
-:101D7000202836D149B3180027D02878012830D040
-:101D800001222A7004F154062165338073800020FB
-:101D9000E86021216960306AC8B1DFF82012C162B1
-:101DA000DFF81C02316A0863316ADFF81802486301
-:101DB0000020316A88632068216D00F12802306AB2
-:101DC00001F035F818B100F00EF8012070BD21685F
-:101DD0004020086200222A702068816841F080015A
-:101DE00008E0022070BD1020E86000212970202248
-:101DF0006A6070478160002070BD206881684A0673
-:101E00007047F8B5044640F60F002568E9692A686E
-:101E1000AB6808400DD1880602D5960602D4D800DA
-:101E200040F18980E16E00294FD02046BDE8F440A2
-:101E300008476548034204BF644E32427BD0CE0758
-:101E400009D5D70507D501262E62D4F8885045F06C
-:101E50000105C4F888508D070AD5DE0708D5276824
-:101E600002253D62D4F8885045F00405C4F8885036
-:101E70004D070AD5DE0708D5276804253D62D4F84A
-:101E8000885045F00205C4F888500D070CD5960619
-:101E900001D4034208D0256808202862D4F88800BD
-:101EA00040F00800C4F8880008050BD5550109D595
-:101EB00026684FF400603062D4F8880040F02000BB
-:101EC000C4F88800D4F88800002870D0880607D5A8
-:101ED000910601D4D80003D5E16E09B120468847A8
-:101EE000D4F8880021688A68510602D410F0280FBF
-:101EF0001AD0204600F0C5FDFFF77FFF0FD500F098
-:101F000057F860B1DFF890198163A06F00F0CEFF41
-:101F100000284CD0A06F816BBDE8F44008472046F4
-:101F2000BDE8F24001F0BAB8204601F0B7F8002051
-:101F3000C4F88800F1BDC80209D55E0207D54FF488
-:101F4000801028622046BDE8F24001F031B9080651
-:101F500009D5160601D4180205D5216F39B32046DC
-:101F6000BDE8F440084748060FD553060DD528684C
-:101F700020F0400028602021C4F880100020206755
-:101F80002046BDE8F24001F02CB9080206D5530006
-:101F900004D52046BDE8F24001F034B9C80148BF7D
-:101FA000002A04D52046BDE8F24001F02CB9F1BD6D
-:101FB000816821F040018160A06F7047D52A000838
-:101FC000032B0008092B0008010000102001000469
-:101FD0002DE9F84F0446DFF8C8182768DFF8C4B8C1
-:101FE0003A68A068DFF8C0A80A4021690243606926
-:101FF0000A43E1690243606E0A4302433A600026E5
-:102000007968E068DFF8942821F440510143796051
-:102010009742A1691CBF206A0143BA68DFF8840AAD
-:1020200002401143B960B046F96A606A090940EAA2
-:102030000111F9625F454FF400404FF480754FF491
-:1020400000714FF480624FF400634FF4805C4FF4F2
-:10205000005E4FF4804929D1DAF800B00BF0030B91
-:10206000BBF1030F3ED8DFE80BF00237343A4FF0F4
-:10207000010AD4F81CB05746BBF5004F4FF6F07A72
-:1020800040F01283012F09D0022F00F05582042F57
-:1020900000F08E82082F00F0C382F6E201F081FC8E
-:1020A0000146606A002840F01C8243E2DFF8ECB78A
-:1020B0005F4517D1DAF800A01AF4406A27D0BAF5C4
-:1020C000806F09D0BAF5006F03D0BAF5406F06D023
-:1020D00008E04FF0020A07E04FF0040A04E04FF076
-:1020E000080A01E04FF0100ADFF8B0B75F45C0D131
-:1020F000BAF1000F0BD0BAF1020F49D0BAF1040FB8
-:1021000000F08280BAF1080F00F0B180B7E301F06F
-:1021100040FC0146606A58B3012808BF022028D05D
-:10212000022808BF042024D0032808BF062020D09E
-:10213000042808BF08201CD0052808BF0A2018D092
-:10214000062808BF0C2014D0072808BF102010D084
-:10215000082808BF20200CD0092808BF402008D03C
-:102160000A2808BF802004D00B2808BF284600D0CA
-:102170000120B1FBF0F0002800F08383626802EBDD
-:102180004201884203D31303834280F0A28076E3A6
-:10219000606AB0B3012808BFDFF80C09EED002284E
-:1021A00008BFDFF80809E9D0032808BFDFF80009F5
-:1021B000E4D0042808BFDFF8FC08DFD0052808BFFA
-:1021C000DFF8F408DAD0062808BFDFF8F008D5D029
-:1021D000072808BFDFF8E808D0D0082808BFDFF8D4
-:1021E000E408CBD0092808BFDFF8DC08C6D00A28ED
-:1021F00008BFDFF8D808C1D00B2808BF4FF2244031
-:10220000BCD0DFF8CC08B9E701F079FB0146606A81
-:102210000028ADD0012808BF0220AAD0022808BF9C
-:102220000420A6D0032808BF0620A2D0042808BF97
-:1022300008209ED0052808BF0A209AD0062808BF8B
-:102240000C2096D0072808BF102092D0082808BF7D
-:1022500020208ED0092808BF40208AD00A2808BF35
-:10226000802086D00B2808BF2846FAD080E7676A0E
-:10227000002FC8D0012F08BF484629D0022F08BF21
-:10228000704625D0032F08BF41F2555020D0042FAF
-:1022900008BF60461CD0052F08BF40F6CC4017D0C1
-:1022A000062F08BF40F6AA2012D0072F08BF1846F5
-:1022B0000ED0082F08BF10460AD0092F08BF0846C5
-:1022C00006D00A2F08BF284602D00B2F00D180204D
-:1022D00054E7BAF1000F0BD0BAF1020F38D0BAF1BF
-:1022E000040F00F07280BAF1080F00F0A780ECE054
-:1022F00001F04FFB0146606A40B3012808BF022588
-:102300001ED0022808BF04251AD0032808BF0625BE
-:1023100016D0042808BF082512D0052808BF0A25B2
-:102320000ED0062808BF0C250AD0072808BF1025A4
-:1023300006D0082808BF202502D0092808BF40255C
-:1023400072D00A280CBF80250B286DD001256BE0C8
-:10235000606A002836D0012808BFDFF80C682BD04F
-:10236000022808BFDFF8046826D0032808BFDFF87A
-:10237000006821D0042808BFDFF8F8671CD00528C2
-:1023800008BFDFF8F46717D0062808BFDFF8EC674E
-:1023900012D0072808BFDFF8E8670DD0082808BF6B
-:1023A000DFF8E06708D0092808BFDFF8DC6703D052
-:1023B0000A2808BFDFF8D4677CD00B2808BFDFF8F5
-:1023C000106777D0DFF8C86774E001F098FA01462B
-:1023D000606A40B3012808BF022525D0022808BF43
-:1023E000042521D0032808BF06251DD0042808BFD6
-:1023F000082519D0052808BF0A2515D0062808BFCA
-:102400000C2511D0072808BF10250DD0082808BFBB
-:10241000202509D0092808BF402505D00A280CBF6F
-:1024200080250B2800D001256268B1FBF5F6500825
-:10243000002110EB062051EB166141E0606A002894
-:1024400036D0012808BF4FF4800633D0022808BFD9
-:102450004FF400162ED0032808BFDFF8386729D0C4
-:10246000042808BF4FF4801624D0052808BFDFF8E1
-:1024700028671FD0062808BFDFF820671AD0072872
-:1024800008BF4FF4002615D0082808BF4FF4802657
-:1024900010D0092808BF4FF400360BD00A2808BF17
-:1024A0004FF4803606D00B2808BF4FF4004601D009
-:1024B0004FF40006C246002116EB52004AEB010120
-:1024C0000023FEF707FF064601E04FF00108A6F5DE
-:1024D0004070DFF8CC16884280F0D1812268D66047
-:1024E000CFE1012808BF02251AD0022808BF042521
-:1024F00016D0032808BF062512D0042808BF0825D7
-:102500000ED0052808BF0A250AD0062808BF0C25CA
-:1025100006D0072808BF102502D0082808BF2025AC
-:1025200075D0092808BF402571D00A280CBF802526
-:102530000B286CD001256AE0606AB0B3012808BF9F
-:10254000DFF88C0521D0022808BFDFF85C051CD01D
-:10255000032808BFDFF84C0617D0042808BFDFF8AF
-:102560004C0512D0052808BFDFF83C060DD0062820
-:1025700008BFDFF83C0508D0072808BFDFF834059E
-:1025800003D0082808BFDFF838057AD0092808BF2B
-:10259000DFF8300575D00A2808BFDFF82C0570D0A9
-:1025A0000B2808BFDFF824056BD0DFF8E00568E0F2
-:1025B00001F0A5F90146606A40B3012808BF022571
-:1025C00025D0022808BF042521D0032808BF0625EE
-:1025D0001DD0042808BF082519D0052808BF0A25E2
-:1025E00015D0062808BF0C2511D0072808BF1025D4
-:1025F0000DD0082808BF202509D0092808BF40258C
-:1026000005D00A280CBF80250B2800D00125606862
-:10261000B1FBF5F1420802EB4102B2FBF0F632E009
-:10262000666A66B3012E2CD0022E08BF484628D019
-:10263000032E08BF42F6AA2023D0042E08BF7046FE
-:102640001FD0052E08BF41F698101AD0062E08BFDD
-:1026500041F2545015D0072E08BF604611D0082E05
-:1026600008BF18460DD0092E08BF104609D00A2E03
-:1026700008BF084605D00B2E08BF284601D04FF4EE
-:10268000803000F013F9B6B201E04FF00108A6F176
-:102690001000504580F0F3800AEA0601C6F34200BC
-:1026A00001432068C160ECE0012F07D0022F35D034
-:1026B000042F70D0082F00F0A580D7E001F071F949
-:1026C0000146606A40B3012808BF022516D00228DF
-:1026D00008BF042512D0032808BF06250ED0042801
-:1026E00008BF08250AD0052808BF0A2506D00628F5
-:1026F00008BF0C2502D0072808BF10257AD008286B
-:1027000008BF202576D0092808BF402572D00A28A6
-:102710000CBF80250B286DD001256BE0606AB0B33B
-:10272000012808BFDFF8801333D0022808BFDFF884
-:102730007C132ED0032808BFDFF8741329D0042897
-:1027400008BFDFF8701324D0052808BFDFF868132E
-:102750001FD0062808BFDFF864131AD0072808BF67
-:10276000DFF85C1315D0082808BFDFF8581310D025
-:10277000092808BFDFF850130BD00A2808BFDFF87C
-:102780004C1306D00B2808BF4FF2244101D0DFF8CC
-:102790004013606831E001F0B2F80146606A40B36E
-:1027A000012808BF022525D0022808BF042521D012
-:1027B000032808BF06251DD0042808BF082519D006
-:1027C000052808BF0A2515D0062808BF0C2511D0FA
-:1027D000072808BF10250DD0082808BF202509D0DC
-:1027E000092808BF402505D00A280CBF80250B28E2
-:1027F00000D001256068B1FBF5F101EB5001B1FBA0
-:10280000F0F631E0666A6EB3012E08BF484629D063
-:10281000022E08BF704625D0032E08BF41F2555046
-:1028200020D0042E08BF60461CD0052E08BF40F6FD
-:10283000CC4017D0062E08BF40F6AA2012D0072E93
-:1028400008BF18460ED0082E08BF10460AD0092E21
-:1028500008BF084606D00A2E08BF284602D00B2E15
-:1028600008BF802000F022F8B6B201E04FF0010866
-:10287000A6F11000504502D22168CE6001E04FF071
-:10288000010804F1680001210023418001804360B8
-:1028900083604046BDE8F28F572B0008008000405F
-:1028A000F369FFCF0038014088000058616800EBF1
-:1028B0005100B0FBF1F6704790F82810CA0706D512
-:1028C00002685368C16A23F400330B43536090F8E5
-:1028D00028108A0706D502685368016B23F48033F9
-:1028E0000B43536090F828104A0706D502685368D6
-:1028F000416B23F480230B43536090F828100A07A0
-:1029000006D502685368816B23F400430B43536080
-:1029100090F82810CA0606D502689368C16B23F4A4
-:1029200080530B43936090F828108A0606D50268FE
-:102930009368016C23F400530B43936090F82810C4
-:102940004A0610D502685368416C23F480130B4388
-:102950005360436CB3F5801F05D15368816C23F439
-:10296000C0030B43536090F828100A0606D501688F
-:102970004A68C06C22F4002202434A607047F8B5EE
-:10298000044604F17C050020E8606FF07E4701F00A
-:1029900095F80646206801680A0708D5009733466F
-:1029A00000224FF40011204600F016F860B92068AC
-:1029B00001684A070AD50097334600224FF4800188
-:1029C000204600F009F808B10320F2BD202068601D
-:1029D000A86000202870F2BD2DE9F041069C054654
-:1029E0000E4690461F462868C1693140B1420CBF6F
-:1029F00001200020404528D114F1010FF3D001F04F
-:102A00005DF8C01B844200D34CB92868016821F4EA
-:102A1000D071016000F01CF80021017013E02868FB
-:102A200001684A07DFD5C1690A05DCD54FF40061AA
-:102A300001622868026822F4D0720260002200F06D
-:102A400007F8C1600270032000E00020BDE8F081BB
-:102A50002868816849084900816005F17C002021CF
-:102A600041608160704701680A6822F0C0020A6014
-:102A700001688A6822F400028A602021C0F8801070
-:102A8000704701680A6822F490720A60DFF81C112E
-:102A9000026893680B4093602022C0F884200021D4
-:102AA000C1667047FFF4FF1100127A0000093D0073
-:102AB000AAB0280080841E00006A1800555814002F
-:102AC00040420F0020A1070090D0030048E8010019
-:102AD0000024F400816A00680268930644BF084637
-:102AE00000F07FBB0020A1F856000868826822F041
-:102AF000800282600868FFE7016841F040010160E0
-:102B00007047806A00F0E0BFF8B5846A04F1800580
-:102B100004F1560728686E6821688A68110606D590
-:102B2000212804D1002038802046FFF79CFF21682F
-:102B30008868410606D5222E04D10020388120461F
-:102B4000FFF79FFFA86840F01000A8602046BDE88E
-:102B5000F24000F0A3BA806A00F1560100220A8117
-:102B60000A8000F09BBA00000000127A0000093DC4
-:102B700000AAB0280080841E00006A18005558146E
-:102B80000040420F0020A1070090D0030048E80158
-:102B9000000024F40055150000CC0C0000AA0A0027
-:102BA00000FD0F005461510000D43000FEFFFFEF24
-:102BB000604981B00A6802430A600968084008E079
-:102BC0005D4881B0016841F400210160006800F4B3
-:102BD00000200090009801B0704738B586B00446D8
-:102BE0006846142100F072FF2068544D5449A842F1
-:102BF00030D10868534D40F001000860096801F0C9
-:102C00000101059105980120FFF7D2FF02210191F2
-:102C1000002202920C2003210090039100F05AF848
-:102C2000002202920392402002210090019100F0C4
-:102C300051F845482860112100F053F808B101F01F
-:102C400097F86567AC6200220021252001F0ACF8FE
-:102C500025203BE03D4A90423AD148683C4D40F443
-:102C600080404860486800F4804005900598012045
-:102C7000FFF79EFF0220FFF79BFF002202920392C4
-:102C80004FF40060022100900191072200F023F828
-:102C90000221019101220292C020032100900391A0
-:102CA0000722049269462B4801F0F2F82A4828606E
-:102CB0000F2100F016F808B101F05AF86567AC6210
-:102CC00000220021242001F06FF8242001F089F86F
-:102CD00007B030BD0822049269464FF0904001F0E1
-:102CE000D7B8696000201022E86080216861A8617F
-:102CF000E8612862AA602961284600F033B810B55F
-:102D0000044616492068884213D101F08FF901F07A
-:102D10008DF91348016821F4407141F4807101601C
-:102D2000026842F4004202602046BDE8104001F013
-:102D300090B910BD4C000058500000580080004071
-:102D40005C0000582C15002044000240003801406F
-:102D50008C15002000040048440402400028004074
-:102D60009000005870B5040001D1012070BD2268A8
-:102D7000DFF800339A4204F124050BD2DFF8F802A1
-:102D800081181426B1FBF6F18900DFF8F0322962D0
-:102D9000EB610AE0DFF8E80281181423B1FBF3F1DC
-:102DA0008900DFF8E0022962E86102216970136896
-:102DB000A068E1686FF30E13034320690B43616958
-:102DC0000343A0690B43E1690343206A0B430343B8
-:102DD0001360204600F022F9A068B0F5804F04BFD0
-:102DE00000216160696A207900F01BF838B105287C
-:102DF00005D2204600F02FF900F00CF803E0002087
-:102E000028636863A8630021A961012068702970A4
-:102E1000002070BD296B00200860696BA86B4860BA
-:102E200070470860A96AE86A486060687047F8B54A
-:102E3000044604F1240600253078012801D102203F
-:102E4000F2BD012030707778012F2BD102207070F5
-:102E5000B561206807687F087F000760204600F0A2
-:102E6000C1F82168F06820B10A6842F00E020A60D9
-:102E700008E0086820F0040008602068016841F05C
-:102E80000A010160706A0168CA0301D500F044F8C4
-:102E9000306B08B100F040F82068016841F0010192
-:102EA000016001E0357002252846F2BD38B500F119
-:102EB000240200245178022903D0042090610124C7
-:102EC00028E001680B6823F00E030B6001680D68B1
-:102ED0006D086D000D60516A0B6823F480730B6000
-:102EE000012192F82030D56903F01C0399406960F4
-:102EF000936AD16A5960116B31B10B6823F4807306
-:102F00000B60536B916B59600121517014705169C2
-:102F100001B18847204632BD016841F480710160EB
-:102F20007047F8B500F124010423CA6914680268E7
-:102F3000156891F8206006F01C0603FA06F73C427B
-:102F400010D06F070ED51468A50603D4146824F0BA
-:102F50000404146000F03DF8C968002938D0BDE8C9
-:102F6000F4400847022303FA06F73C4213D0AF07A8
-:102F700011D51468A50605D4146824F00A04146059
-:102F800001224A7000F025F800220A708968F9B120
-:102F9000BDE8F4400847082303FA06F6344217D088
-:102FA0002B0715D5146824F00E041460012291F843
-:102FB0002030CC6903F01C039A40626001228A61D0
-:102FC0004A7000220A70096911B1BDE8F44008474F
-:102FD000F1BD91F82020CC6902F01C02934063609F
-:102FE0007047000070B5C56C046D6C60446D14B121
-:102FF000856DC46D6C60012490F84450066C05F03A
-:103000001C05AC407460046863608068102802D1BD
-:10301000A260E16070BDA160E26070BD10B5416C5E
-:103020000268144B89089A4239BF174C04EB81019E
-:10303000164B03EB8101816402F0FF02083A142170
-:10304000B2FBF1F1012301F01C01114AC26403FA41
-:1030500001F1016510BD01790E4A0F4B836502EB4A
-:1030600081024265491E012201F003018A40C265C6
-:103070007047000008040240F8FFFDBF0000024056
-:10308000F8FBFDBF00040240000802401C0802409B
-:1030900080080240FC0802404009024070470000DE
-:1030A00010B500F17C010A78012A01D1022010BD7F
-:1030B00001220A7024234B600268136814686408B4
-:1030C000640014600022426623F00053006803602D
-:1030D00020224A6000230B70002010BD70B500F064
-:1030E0001FF801D1022070BD00F020F822F06042EC
-:1030F00009E070B500F014F801D1022070BD00F0B5
-:1031000015F822F0606211438160204600F01CF83F
-:10311000206806602021696000222A70002070BDAE
-:10312000044604F17C0528780128704701202870A6
-:1031300024226A6020680668026852085200026011
-:103140002068826870470000FFB500BF14A200BF6E
-:1031500015A6D2E9003402A9C1E90034D6E900710C
-:10316000CDE90071416E11B90121012213E001681E
-:103170008A688968520E02F00702490F02AC655C4A
-:10318000A45C1DF801101DF80220ED00E40095FB81
-:10319000F1F194FBF2F2683041800280FFBD000043
-:1031A00001010103070100000804020408010101F4
-:1031B0007047000038B5002488B90F4D0F482B60C8
-:1031C0000F4B0360FEF7CEFD012805D007D303287F
-:1031D00004D038BF022402E0012400E0032420468A
-:1031E00032BD00680649884204D1034A10680028AD
-:1031F00018BF004770470000C0170020A013002030
-:1032000000380140704770474FF0B040006800F050
-:10321000F000B02888BFB02070472DE9F0410400CD
-:1032200062D0207881064FF0B04533D5A868E968B0
-:1032300010F00C0001F0030104D00C2808BF012994
-:1032400040F07E802868810702D5E06900284BD0D5
-:10325000FFF7DAFF616A884207D2084600F0B2FB46
-:10326000002815D100F052FA0AE0286820F0F0009A
-:10327000014300F050FA606A00F0A4FB002807D177
-:1032800000F028FFDFF8D407006800F073FF002883
-:1032900040F08E812078C10711D5A868E96800F058
-:1032A0000C00082801F0030103D00C2808BF0329F3
-:1032B00069D12868810302D56068002814D021787C
-:1032C00088071AD5A868E96800F00C00042801F006
-:1032D000030104D00C2808BF022940F08D80286823
-:1032E000410503D5E068002800F062816868216923
-:1032F00020F0FE4040EA016068602168DFF8606706
-:1033000011F0180F00F076816069002800F0AF809E
-:10331000C806706840F19C80800708D4716841F04D
-:103320000101716000F0CAFB07467068800700F178
-:10333000418100F0C3FBC01B0328F6D30320DEE16C
-:10334000E06978B1296841F0010100F0CEFA064643
-:103350002868800700F13D8100F0B0FB801B032846
-:10336000F6D3EBE7286840084000286000F0A6FB91
-:103370000646286800F0C6F98CD000F09FFB801B41
-:103380000328F6D3DAE76068B0F5803F04D12868F7
-:1033900040F48030286011E0B0F5A02F286806D1F5
-:1033A00040F480202860296841F4803105E020F451
-:1033B00080302860296821F480212960606860B12C
-:1033C00000F07CFB0646286880033FF578AF00F0EC
-:1033D00075FB801B6528F6D3B0E700F06FFB06464F
-:1033E0002868400C10F001003FF469AF00F066FB64
-:1033F000801B6528F4D3A1E7E06878B1296841F41F
-:10340000807100F072FA0646286840053FF56EAFFD
-:1034100000F054FB801B0328F6D38FE7286820F4C4
-:103420008070286000F04AFB06462868800A10F089
-:1034300001003FF462AF00F041FB801B0328F4D38E
-:103440007CE700F03BFBC01B0328C0F0CF8075E792
-:1034500040F0010000F070F907467068800700F145
-:10346000E08000F02BFBC01B0328F6D366E77068F2
-:1034700020F0040000F060F907467068C00810F002
-:10348000010000F0DD8000F019FBC01B0428F4D31C
-:1034900054E70528306806D140F0040030603168F8
-:1034A00041F0010105E0400840003060316821F042
-:1034B00004013160A06841F2893768B100F0FEFA7A
-:1034C00080463068800700F1D08000F0F7FAA0EB6A
-:1034D0000800B842F5D331E700F0F0FA80463068D2
-:1034E00000F010F900F0C18000F0E8FAA0EB08004D
-:1034F000B842F4D322E700F0E1FAC01B0328C0F081
-:10350000C2801BE740084000B06000F0D7FA0746D1
-:10351000B06800F0F7F800F0BA8000F0CFFAC01BF6
-:103520000328F5D30AE700F0C9FA801B0328C0F08E
-:10353000C08003E700F0C2FA001B0328C0F0DA8065
-:10354000FCE6E968DFF81C0589088900E960E9689C
-:103550000140E96000F0B2FA044600F0E5F825D039
-:1035600000F0ACFA001B0328F7D3E7E601281FD0D0
-:10357000E868226B00F00301914202BF00F0700185
-:10358000626B914214D1A26BC0F30621914202BF3B
-:1035900000F47811E26B91420AD1226C00F0606174
-:1035A000914202BF00F06040616C884200F0A6804A
-:1035B0000120A4E0706840F0040000F0BDF8074668
-:1035C0007068000708D400F079FAC01B0428F7D30C
-:1035D000B4E600F09BF85DE67068A16920F47060C5
-:1035E00040EA0120706000F0A4F8074600F089F876
-:1035F0007FF427AF2078410737D5DFF86C7438683F
-:10360000C10529D400F012FD00F058FA8046386850
-:10361000C10521D400F052FAA0EB08000328F6D32C
-:103620008CE6706820F0040070607068C00810F0CC
-:103630000100DFD000F042FAC01B0428F5D37DE67C
-:1036400000F077F8074600F05CF8D3D000F036FAC7
-:10365000C01B0328F7D371E6A06801287FF419AFD7
-:10366000306840F00100306024E721784A060ED52A
-:10367000A06A0028B0683FF445AF40F00100B06098
-:1036800000F01CFA0746B06880077FF534AFE06AA7
-:10369000A0B3A96801F00C010C293FF467AF022820
-:1036A000286820F0807028607FF44BAF00F006FAA5
-:1036B000064600F039F87FF436AFEA68DFF8AC036D
-:1036C000216BA36B0240606B0A430243E16B206CE9
-:1036D00042EA03220A43616C02430A43EA60286813
-:1036E00040F080702860E96841F08051E96000F0A6
-:1036F000E5F90446286880017FF51CAF0020BDE88D
-:10370000F0817068400810F0010070472968606A15
-:1037100021F0F001014329606968206A21F47F41AA
-:1037200041EA0021696070472868400E10F00100EE
-:103730007047706840084000706000F0BFB92DE924
-:10374000F8430400884646D0DFF8246300F0C8F848
-:1037500049D200F0CDF8074600F0C2F843D000F09F
-:10376000ADF9C01B0228F7D90320B7E000F0A6F995
-:10377000401B022845D9F7E700F0A0F9A0EB0900AB
-:1037800002284ED9F0E700F099F9A0EB09000228D1
-:1037900056D9E9E700F092F9401B02285FD9E3E728
-:1037A00000F08CF9401B022869D9DDE700F086F9AA
-:1037B000401B41F28931884275D3D5E7032802D1F5
-:1037C0003968890103E00028396802D1890762D489
-:1037D00001E049055FD4012080E000F06FF9C01BD3
-:1037E000022870D9C0E7207881074FF0B0470BD589
-:1037F000BA68A06822F0F0020243BA6000F05EF9F5
-:103800000546B868C003B1D52178DFF84C52880668
-:103810000AD52968606921F0F001014300F065F8DC
-:10382000814628688003A7D5217848060BD52968EA
-:10383000A0690909090141EA101100F056F8814612
-:103840002868C0039FD5217848070BD5B968E06880
-:1038500021F4E0610143B96000F030F90546B86831
-:10386000800397D5217808070CD5B968206921F421
-:10387000605141EAC001B96000F020F90546B8681E
-:1038800040038DD52178C80715D56068022895D1E9
-:10389000396889039FD5BA68920840EA8200B86007
-:1038A00000F00CF90546B868616800F00C00B0EB58
-:1038B000810F7FF47BAF306800F00700804505D2B0
-:1038C00000F016F8074600F00BF886D100F002FC75
-:1038D00000F086FCBDE8F24300F04CBCBDE8F2838A
-:1038E000306800F0070040457047296000F0E6B8F6
-:1038F0003168C90848EAC101316000F0DFB838B565
-:103900004FF0B0445C4DA16811F00C0106D1FFF7F7
-:103910007BFCC0F3031055F8200032BD0429574A40
-:1039200005D00829564804D12168C90222D510467D
-:1039300032BDE16801F00301022904D0032904D15A
-:103940002168C90207D5104605E0FFF75DFCC0F30A
-:10395000031055F82000E168E268E368C1F306212E
-:103960004843C2F30211491C5B0FB0FBF1F05B1C32
-:10397000B0FBF3F032BD80B5FFF7C1FF3D49FFE773
-:10398000404A0968C1F3031152F82110B0FBF1F06D
-:1039900002BD80B5FFF7EFFF00F010F8C1F3022180
-:1039A00006E080B5FFF7E7FF00F008F8C1F3C22199
-:1039B00012F8211001F01F01C84002BD2D49324A02
-:1039C0000968704770B52C49B1282EBFCC6AC0F386
-:1039D000031051F820402048056800F015FC2949E3
-:1039E00005F00F0551F825202849B4FBF2F2002418
-:1039F000B2FBF1F1B0F5007F2CA2204609D100BF47
-:103A000023A353F820508D4214D2401C0328F8D928
-:103A100012E000BF22A353F820508D420AD2401C6E
-:103A20000328F8D308E000F049F8801B03280CD3E2
-:103A3000032070BD52F820400D4D2868C00844EAAC
-:103A4000C000286000F03AF80646286800F0070039
-:103A5000A042E8D1002070BD080100585410002099
-:103A600090000058FFFFFEEE000400588C80C1114A
-:103A70000040005808000058947600080024F40024
-:103A80000048E80154760008E079000840420F0041
-:103A9000120000002400000036000000400000007A
-:103AA000060000000C0000001000000000000000F4
-:103AB000010000000200000004000000014800684E
-:103AC000704700BF5010002070470000002200F037
-:103AD000A3BB0000984900E0984981B00A680243FE
-:103AE0000A60096808400090009801B0704710B55E
-:103AF00000F062FB924C606840010ED56068C00027
-:103B00000BD400F093FA00F091FA206840F4803072
-:103B10002060216821F48031216000F0D3F800207A
-:103B200000F094FB40B180798649E160E26822F4BC
-:103B30007C5242EA0022E26000F048F88248834C5E
-:103B4000016800220260036903F050030361012051
-:103B5000FFF7C2FF0220FFF7BFFF0420FFF7BAFF05
-:103B60000220FFF7B7FF0120FFF7B4FF00220F216B
-:103B70000E2000F019F90E2000F033F900220F2179
-:103B80003A2000F011F93A2000F02BF900210F2221
-:103B90006F484160826047F6FF710022C160026198
-:103BA0008261C261046000F065FBCA20606253213B
-:103BB0006162FF21A068C008C000A060616200F0DF
-:103BC000FFFB4FF0FF3000F089FCFAE710B5AEB014
-:103BD000604C1CA821464822FDF770FB01A81C215F
-:103BE000FFF774FF08A804F148015022FDF766FBB7
-:103BF0005348016821F0180101604FF480335648A2
-:103C0000026822F4C06242F4007202600722006877
-:103C100000F4C06000904FF4807400991C92012160
-:103C20001E91002240211D93209127921F941CA8D1
-:103C3000FFF7F3FA6F200221019002910022039214
-:103C40000492059206920792012101A8FFF777FDE1
-:103C500043F60301002208910E9200214FF48042A6
-:103C600002230F9119921A931B91189408A800F03F
-:103C70001BFD2EB010BD10B5384C394820604FF4F4
-:103C8000E1310C20606100224FF40040E06100F05F
-:103C900010F82046FEF726F800212046FFF71EFA0E
-:103CA00000212046FFF725FA2046BDE81040FFF727
-:103CB000F7B96160A260E2602261A2612262626281
-:103CC000A2627047274881B0016841F48011016009
-:103CD0003F21006800F48010009000982248416065
-:103CE0004161016841F47C110160026942F47C1277
-:103CF0000261016841F03F010160026942F03F0248
-:103D0000026101B0704738B50446FFF7D7FE14F1E1
-:103D1000010F054609D000F066FA041905E01348C2
-:103D2000016821F00401016030BFFFF7C7FE401BAE
-:103D3000A042F4D331BD0000480000584C000058A8
-:103D400090000058FECAFECA8008005800280040B3
-:103D5000B81600202C75000800040058A01300209D
-:103D60000038014050000058040C005810ED00E0ED
-:103D7000704700000901020002D43C48815470479A
-:103D80003B4B02F00F021A4402F8041C7047394BF7
-:103D900019684FF6FF020002114000F4E06008438A
-:103DA000354908431860704738B5324B1C68C4F376
-:103DB0000223C3F10704052C28BF04241D1D072D71
-:103DC00034BF0023DB1E012505FA04F4641E2140E4
-:103DD000994005FA03F35B1E1A401143BDE83440D5
-:103DE000C8E7010007D4012200F01F01234B8A40DD
-:103DF000400943F82020704701000BD4012200F055
-:103E00001F011F4B8A40400943F82020BFF34F8F0A
-:103E1000BFF36F8F704710B5401EB0F1807F01D3A4
-:103E2000012010BD174C60600F214FF0FF30FFF7ED
-:103E3000A1FF0021A16007202060002010BD01002B
-:103E400007D4012200F01F010F4B8A40400943F8BC
-:103E500020207047010007D4012200F01F010B4B06
-:103E60008A40400943F820207047000000E400E049
-:103E700018ED00E00CED00E00000FA0500E100E0C4
-:103E800080E100E010E000E000E200E080E200E01D
-:103E90002DE9F04106460A464FF0000C4FF00F089E
-:103EA0002CE05A4FBE4214BF4FF0070E4FF0040EE5
-:103EB0000EFA01F1294344F82310C143544C2368FE
-:103EC00055680B40ED0348BF0343236063685568A2
-:103ED0000B40AD0348BF034363604E4C23685568F5
-:103EE0000B40ED0248BF0343236063680B405168F9
-:103EF0008D0248BF034363600CF1010C106830FA77
-:103F00000CF172D0012303FA0CF31840F4D054687A
-:103F1000022C18BF122C4FEA8C010ED14FEADC04A0
-:103F200006EB840401F01C0E256A08FA0EF7BD4367
-:103F3000176907FA0EF73D4325624FEA4C04032543
-:103F40003768A540ED4305EA070E177907F0030728
-:103F5000A74047EA0E0737605768012F18BF022FA6
-:103F600003D0112F18BF122F11D1B76805EA070E21
-:103F7000D768A74047EA0E07B760776827EA0303C8
-:103F80005768C7F3001707FA0CF73B437360F368F1
-:103F90001D40936803FA04F42C43F4605468E30072
-:103FA000AAD51D4C4FEA9C0354F8237001F00C0174
-:103FB00008FA01F5B6F1904F27EA050508BF4FF062
-:103FC000000E11D0154FBE4208BF4FF0010E0BD0AE
-:103FD000134FBE4208BF4FF0020E05D0114FBE4234
-:103FE0007FF45FAF4FF0030E62E7BDE8F0810AB1E6
-:103FF00081617047816270470B4A136803421CBF9E
-:10400000106000F05DBA704700000000001000482A
-:1040100080080058000800580800014000040048CB
-:1040200000080048000C00480C08005802480168CD
-:1040300041F4807101607047000400588A60FF21DC
-:104040000268516280F82130002180F820100020A1
-:10405000704790F82010012901D1022070470121FA
-:1040600080F82010022280F82120CA2103685962BA
-:10407000532201684A62012301688A6842F02002E3
-:10408000FFF7DCBF3249002008604FF0B0413148F3
-:10409000026842F4700202604FF4E022086840F0C7
-:1040A000010008608A600B682B4803402B480B60B6
-:1040B000026822F005020260002243685B085B0090
-:1040C00043602748C8600861086820F480200860C1
-:1040D0008A61704710B54FF0B04222491068C0F3B2
-:1040E000031001EB8003186C936803F00C03042B9E
-:1040F00004D0082B04D00C2B04D01CE01A481AE082
-:104100001A4818E0D368D468C4F3021403F0030318
-:10411000641C022B08BF144802D0032B08BF1348AD
-:10412000B0FBF4F3D068D468C0F30620640F4343B7
-:10413000641CB3FBF4F00E4B186090681A68C0F36F
-:10414000031051F82000B2FBF0F0186010BD000021
-:1041500008ED00E088ED00E0FBFEF6FA9400005860
-:1041600000100422547600080024F4000048E801FE
-:104170007410002070B50F4E0446B0680025A8B139
-:10418000FFF7F9FBB2684FF47A71B1FBF2F2B0FBC2
-:10419000F2F0FFF740FE48B9102C07D2002221466A
-:1041A0004FF0FF30FFF700FE746000E00125284665
-:1041B00070BD00BF50100020104810B5016841F4D8
-:1041C000807101600320FFF7E2FD0020FFF7D2FFBE
-:1041D0000024002814BF0124FEF7F2FC204610BD85
-:1041E0000748406870470648806870470548FFE701
-:1041F000016841F001010160704700000040005873
-:1042000050100020042004E0DFF80800006800F4EB
-:10421000C06070470004005800B500BF1300964608
-:104220009446103928BFA0E80C50FAD85FEA417CC8
-:1042300028BF0CC048BF40F8042BC90728BF20F88E
-:10424000022B48BF00F8012B00BD000020B501463D
-:104250000648074DC2798A4218BFA84218BF0838DD
-:10426000F8D18A4218BF002020BD00BFF873FF1F9D
-:104270000070FF1F70B5040049D094F8210028B9E0
-:10428000002184F820102046FEF739FD00F04EF89A
-:1042900053202168486200F052F8FF2510B100F069
-:1042A0003FF834E02168DFF8AC008A6802408A6099
-:1042B0002268936866682169A0690E430643334308
-:1042C00093602068E168016120680169A26841EAA1
-:1042D000024101612068C16821F08001C16020684D
-:1042E000C16C89088900C1642168CA6CE36960698E
-:1042F00003431A43CA6421688868810609D400F020
-:104300001CF830B120684562042100F01DF801203E
-:1043100070BD20684562012184F82110002070BD25
-:1043200020684562042184F821107047022084F837
-:104330002100CA2122685162704720460CE02046C5
-:1043400023E02068C0F8248084F82110002084F83D
-:1043500020007047BFFF8FFF38B504462068C16852
-:1043600021F0A001C160FFF7A9FB05462068C168E4
-:10437000880608D4FFF7A2FB401B40F2E9318842CF
-:10438000F4D3032032BD002032BD38B50446206886
-:10439000C1684A0612D44FF0FF31C160FFF78EFBAF
-:1043A00005462068C168480608D4FFF787FB401B14
-:1043B00040F2E9318842F4D3032032BD002032BDFF
-:1043C00010B52848284C88B0016841F400410160CC
-:1043D00000F0EEFA2549002000F087FCFFF706FF09
-:1043E0002348016841F480310160026C42F480325C
-:1043F000026400F0D0FD0121012000F0DEFA00206F
-:1044000000F012FE012000F00FFE022000F00CFE72
-:10441000012000F02DFE0121002000F043FE00F0FD
-:1044200099FE144A0021402000F0B8F804F23C51F3
-:10443000009169460FF241020FF24100019200F033
-:1044400077FF04F25471029104F5C96240F23C51C5
-:1044500003920591049402A800F002FF00F078FE98
-:1044600008B010BD0800005824000320B816002032
-:1044700090080058735300087047000080B500F0A2
-:1044800026FF00F0F7FFBDE804400021012000F006
-:1044900094BA70474FF0FF3000F020B80021402060
-:1044A00000F089B8022000F0A8B8022000F0ADB8F2
-:1044B000FFF7E1BB13460A4601460020FEF77ABE2D
-:1044C000012805D0022805D0102805D101F0F2B846
-:1044D00001F0FFB801F0FEB8704700002DE9F0418F
-:1044E000544CDFF85481A5692840A06131E0491C93
-:1044F00054F831000742FAD004EBC107184079683C
-:104500001040014204BF4FF0FF327A607E683040B5
-:1045100000F094F86062012101FA00F086437E60A9
-:10452000EFF3108272B6606A23698140C9430B4081
-:104530002361022004EBC00353F8087C0F40401EA7
-:1045400043F8087CF6D182F31088606A58F820108E
-:10455000884763692069A2691840104207D0E06962
-:10456000216A084203D1002103EA0207C0E701F0F3
-:10457000EDF9EFF3108872B621696069A269014014
-:10458000114201BFE069216A0842FFF782FF88F308
-:10459000108801F0DCF9A561BDE8F08138B514465A
-:1045A000EFF3108572B600F049F8234941F8204036
-:1045B00085F3108831BD30B5EFF3108272B61D4B14
-:1045C0001C6904431C6153F83150284343F83100FF
-:1045D00082F3108830BDEFF3108172B6154A53692B
-:1045E00023EA000005E0EFF3108172B6114A536927
-:1045F0001843506181F310887047EFF3108172B651
-:104600000C4AD3691843D061F4E770B5094C656A68
-:10461000266A2062012101FA05F502E02846FFF72B
-:1046200039FF216AE0690842F8D088432662E061D8
-:1046300070BD0000281000202C140020024600202D
-:10464000110C090404BF1020120412F07F4F04BFA4
-:104650000830120205A312F0704F04BF001D1201B2
-:10466000120FC0F11F00995C401A70470403020248
-:10467000010101010000000000000000DFF82C1320
-:104680000A68030903F47F2300019A4300F47F20A2
-:1046900000F088B9DFF814231368010C23EA014302
-:1046A00043EA0043136070472DE9F84305460024B0
-:1046B0002878DFF8F8624106A0464FF0B0472DD5C4
-:1046C000286B70B1B0F5800F06D0B0F5000F18BFA1
-:1046D000B0F5400F17D01FE0F96841F48031F96060
-:1046E000F3E0386820F080603860FFF7E7F9814632
-:1046F0003868000140F1D680FFF7E0F9A0EB09002F
-:104700000228F5D90324DDE0FFF7D8F9A0EB090072
-:10471000022840F2CF80F5E70124A0462868010571
-:1047200031D5B06800F44078286C80452AD0FFF776
-:104730007DFCB8F1000FB16805D1286C21F44071FF
-:104740000143B1601EE0B06840F48030B06021F4F5
-:104750004071B06820F48030B060286C0143B160D3
-:10476000B068C0070ED5FFF7A9F98046B06880078A
-:1047700008D4FFF7A3F9A0EB080041F28931884281
-:10478000F4D30324A0462878C10705D53268A86968
-:10479000920840EA820232602978880705D531689C
-:1047A000E86921F44061014331602978C80644BFBB
-:1047B000A86AFFF76FFF2878810644BFE86AFFF711
-:1047C00069FF2878410744BF286AFFF757FF287818
-:1047D000010744BF686AFFF751FF2868C1051ED56D
-:1047E0003268686B22F0406202433260696BB1F15B
-:1047F000006F00F0C9F8686BB0F1806F0FD13968B5
-:1048000021F0806100F0CBF804463868000163D5E0
-:10481000FFF754F9001B0228F7D94FF0030870E0A6
-:10482000FFF74CF9001B022864D9F6E7316821F044
-:104830004041316020F08050326822F040621043E5
-:104840003060A86BB0F1C05F00F09EF828684105A9
-:1048500076D53268E86B22F0405202433260E96B51
-:10486000B1F1005F03D1F86840F48030F860E86B84
-:10487000B0F1805F64D1396821F0806100F08FF879
-:104880000446386800014CD5FFF718F9001B0228D0
-:10489000F7D94FF0030853E0FFF710F9001B022887
-:1048A00047D9F6E700F067F8A86821F4781100F01E
-:1048B00071F88146386800017FF526AF396968696B
-:1048C00001433961002C7FF428AF3168286B21F453
-:1048D00040010143316021E73969686821F4FE41F4
-:1048E00041EA002139613969E86821F0606100F02E
-:1048F00051F804463868000192D539696869014366
-:10490000396129688805A1D5A86BB0F1804F1CBF1B
-:10491000B0F1004F002889D1316821F040410843AF
-:104920008EE700F028F8286921F0604100F032F8A5
-:10493000044638680001AFD53969686901433961B7
-:104940002968C80405D5F168686C21F44041014329
-:10495000F160296888040BD5796AE86C21F0300190
-:1049600001437962796AA86C890840EA8101796219
-:104970004046BDE8F2833869696820F4FE4040EAA9
-:10498000012038613969704703D1F86840F08070C0
-:10499000F860704701433961396841F080613960DE
-:1049A000FFF78CB81043086070470000880000587B
-:1049B0000C48002101604160704710B500F00CF810
-:1049C0005C6819B1012904D1204301E024EA000008
-:1049D000586082F3108810BDEFF3108272B6014B5D
-:1049E0007047000084170020DFF84C150A6892B267
-:1049F00000E00246086880B28242FAD170472DE991
-:104A0000F041DFF83865DFF838853178044618253D
-:104A10006843062908EB000708D1307870703470BD
-:104A200079754FF0FF30706000203DE000F07BF8BA
-:104A3000B9680918B96008F10803B96832786A439F
-:104A40009A589142327813D308F1150315FB02FCF2
-:104A500013F80C30062B29D008F108066B43F358E5
-:104A6000994222BF08F115036A439A5CECD21DE01B
-:104A70001146337869439A420FD008F1140C08F1BB
-:104A8000150E1CF8013015FB03F50EF805407A757C
-:104A90003B7508F11402545403E008F114037A75CD
-:104AA0005C54317871703470BDE8F081114669430F
-:104AB00008F115035B5C062B04D008F1140615FB06
-:104AC00003F574557B753A7508F115025454EBE7FC
-:104AD000F0B5DFF86834DFF868541E781824024611
-:104AE0006243B0422A4404D118785870547D1C7037
-:104AF0000FE0167D507D92F815C005F1150766434D
-:104B0000062807F806C004D0167D143514FB00F4FF
-:104B10002E55012010731A78062A02BF00294FF083
-:104B2000FF305860F0BD10B5DFF81044606810F138
-:104B3000010F10D0FFF758FF6168DFF808248142A9
-:104B40002FBF636861685388CB1851781278181AA0
-:104B50004843D04000E0002080B210BD2DE9F84F5E
-:104B6000DFF8E053DFF8E0B3D5F80880D8F80000AC
-:104B7000DBF800104A0500F0A2F9DFF8C063DFF8A7
-:104B8000C0A321F4806181604FF0180934780AF1E4
-:104B9000080019FB04F14758FFF7C5FF874211D2FF
-:104BA00000270121B170062C3FD019FB04F40AF153
-:104BB00008010A59824210D200230B510AEB04016A
-:104BC0004C7DF0E7A9884118B94202D2AF88002194
-:104BD000E8E701223F1AB270E5E70A590AF1080333
-:104BE000121A1A51EAE7022802DA2878012800D0BE
-:104BF0007F1ED8F80000C1684A07FAD500F052F9C4
-:104C0000DBF80C00000CBFB247EA0047CBF80C7091
-:104C1000FFF7EAFE7060A8680068816841F480616F
-:104C20008160AFF30080BDE8F18FB8B20028DAD11F
-:104C3000FFF7DAFE70600320BDE8F24FFFF7FFB820
-:104C40002DE9F843EFF3108872B6BE4DBC4BA8684F
-:104C50000168CA224A625320486218208A6822F4F6
-:104C600080628A60B54A1678374647431F44387BCE
-:104C7000022823D13C68D7F810909078D8B17A7B7D
-:104C8000012A0AD101213046FFF722FF88F310885C
-:104C90007968304600F019F904E088F3108830464E
-:104CA00000F0C6F8A86800F01AF8314622464846D7
-:104CB00000F054F90DE0FFF751FF08E0C868420723
-:104CC000FCD500F086F84FF40020A049086088F376
-:104CD0001088FF22A86801684A62BDE8F183006875
-:104CE000CA214162532242627047F8B5954CA160D7
-:104CF000CA2209684A625323934A4B62156845F0F9
-:104D000020051560136803F00703C3F10403237043
-:104D100095682D0C05F07F056D1C6570EDB29268ED
-:104D2000C2F30E02521C628092B2521E6A43A2F576
-:104D3000A072DA404FF6FF739A422CBFA380A28084
-:104D4000834A136843F400231360824B1D6845F4C3
-:104D500000251D6048BB7948012383704FF0FF3563
-:104D600045600023764D00260C355FFA83FC18273A
-:104D700017FB0CFC5B1CDFB205F80C60062FF4DBA4
-:104D800006230370886820F48060886000F021F8B2
-:104D90004FF40021D1600320FFF75CF8A0680068A1
-:104DA000816841F48041816005E0C868410544BFE5
-:104DB0000320FFF744F8A1680A68FF205062002230
-:104DC00003210320FEF7F0FFBDE8F2400320FFF7C8
-:104DD00008B8C86800F0800060F49060C860704750
-:104DE0002DE9F04104460025EFF3108672B618272E
-:104DF000DFF84CC10CF10C0E07FB05F81EF808009B
-:104E000010B16D1C062DF5DB062D0CD06F430CEB9D
-:104E100007000127077386F310880461427303605B
-:104E20000D70002002E086F310880120BDE8F081BB
-:104E3000F8B50746EFF3108472B60320FEF7DCFFE7
-:104E4000404DAE683068FFF74BFF3B4618204249A3
-:104E50004343CA5C022A1BD100213846FFF738FEC3
-:104E60003648017806290ED1306837490A6853055B
-:104E700000F025F821F480618160C1684A07FCD503
-:104E800000F010F804E04078884218BFFFF766FE93
-:104E9000A9680A68FF2050620320FEF7A2FF84F38E
-:104EA0001088F1BDC16801F0800161F49061C160BA
-:104EB0004FF40020254908600320FEF7CBBF02D540
-:104EC000C1684A07FCD4816870472DE9F0418046EB
-:104ED0000F46424618201A4942438C18237B022B66
-:104EE00004BF4046FFF7A4FFEFF3108572B603201E
-:104EF000FEF782FF134EB068FFF7F1FE0220207329
-:104F0000A76067604046FFF77AFD0C490A78497848
-:104F1000914202D0FFF722FE02E0A168081AA060C9
-:104F2000FF20B1680A6850620320FEF75AFF85F33C
-:104F30001088BDE8F081000028280040B417002048
-:104F40008412002070170020082800400C08005828
-:104F500000080058800800589012002010470000F8
-:104F600038B5EFF3108472B6274D6946281D00F05E
-:104F70000AFE6946281D00F060FE38B184F31088EF
-:104F8000BDF80010214AFFF795FA31BD01202870C5
-:104F900084F3108831BD80B5FFF78AFA02210091B1
-:104FA0000023194800F124014FF48052001D00F045
-:104FB000CFFC01BD00BFF8B514460026EFF3108505
-:104FC00010F1010F1ED001281CBF02284FF0FF3640
-:104FD00018D1BCB1264672B60B4F012392B2381DD0
-:104FE00000F0CBFC00281CBF3978002908D0002233
-:104FF0003A7085F31088A1B2044AFFF75BFA01E02A
-:1050000085F310883046F2BD04000020614F00088F
-:10501000464981B00A6802430A6009680840009066
-:10502000009801B07047000078B585B00446684626
-:105030001421FEF74BFD0220FFF7EAFF3FA13C4E93
-:1050400031F81450009501210191002202210292B1
-:105050000391694656F82400FEF71AFF00F002F8A3
-:1050600006B070BD56F8240000222946FEF7BFBFE7
-:1050700010B500F00FF8BDE810400122FEF7B7BFF1
-:1050800010B500F007F8BDE810400022FEF7AFBFF2
-:105090000000000029A3264C33F8101054F820001B
-:1050A0007047000030B585B004460D4668461421AF
-:1050B000FEF70CFD210008BF042004D0012C18BF0E
-:1050C000022C02D10820FFF7A3FF2900DFF864209B
-:1050D0001CA00ED130F8141000910023019301217F
-:1050E00002230291039300F01BF80120FEF70BFE50
-:1050F00014E0012D12D130F814000F4B00900295EE
-:10510000019300F00DF800BF10A0045D00220F21F4
-:1051100060B2FEF749FE60B2FEF763FE05B030BD37
-:10512000694652F82400FEF7B3BE00004C00005858
-:105130005C100020681000200000211020000100F9
-:105140000200000010000100020000000A06070033
-:1051500000F034BE6C486D49016001F120024260EC
-:1051600001F13003836001F13C02026201F144036A
-:10517000C36001F14C02026101F16803436101F176
-:105180006C0282617831C16100F020BE38B50446FE
-:105190005F4D05F1100000F07DFE5B494868A16895
-:1051A000016005F11001E268C2608160456000F0B5
-:1051B00029FE58482DE080B553494A6813680120FC
-:1051C000187200F025FE002002BD38B5514C504D3C
-:1051D00007E0694605F1100000F088FE009821689C
-:1051E000884705F1100000F058FE0028F1D031BDCD
-:1051F00048484168084738B50446474D284600F0FE
-:1052000049FE4149C868A1680160456000F005FE9B
-:1052100042482168016062684260002032BD80B56A
-:105220003949CA6813681020187200F0FCFD00208C
-:1052300002BD3549CA68394910680B68184738B546
-:10524000364C354D06E06946284600F04FFE009882
-:1052500061688847284600F020FE0028F3D031BD61
-:1052600038B504462E4D284600F014FE2D4800F0B7
-:1052700011FE25480069A1688160E268C26005618D
-:1052800021680160626842602169416162698261EE
-:1052900031BD80B50146234800F012FEBDE8024052
-:1052A0000FF2050000F0CFBD38B5174C1D4D08E0DA
-:1052B0006946284600F01AFE00992069006900F04E
-:1052C000FFFD284600F0E9FD0028F1D031BD10B502
-:1052D000154C204600F0DEFD0B4948690460BDE82E
-:1052E000104000F0C4BD1CB50F4C06E069462046D6
-:1052F00000F0FCFD009800F019F8204600F0CDFD0C
-:105300000028F3D013BD000000000320B0090320E3
-:1053100084080320941700209C0803209C17002079
-:10532000340A03208C1700203C0A03207047000039
-:105330007FB50C464C4D61684C4EE86129622846A9
-:1053400000F0E6FD2468746006F1080000F0A2FD9C
-:10535000012000F065F801203070296841B10FF29A
-:10536000E5020FF2E9030092019302946846884730
-:105370007FBD1FB53D4C04F1080000F08EFDE8B97B
-:105380002078D8B1694604F1080000F0AFFD012093
-:1053900035492070C96941B10098029001A8884739
-:1053A0009DF804102170080003D00098FFF771FFEA
-:1053B00004E0009904F1080000F078FD04F1080011
-:1053C00000F06BFD28B9207818B104F10800FFF750
-:1053D00065F81FBD2DE9F04105460E4690461C4676
-:1053E000002000F01DF8214F7868A0F80950C6721F
-:1053F000324641460C30FBF761FF1B4A136900211E
-:105400000020984748F2E800FFF74FF879688A785B
-:10541000D21C04F10800FBF751FFBDE8F041012068
-:1054200010B51149124C096A20B901B18847002111
-:10543000217010BD0120207011B1BDE81040084757
-:1054400010BD00000020FFF72DB8000010B5014688
-:10545000064C04F1080000F033FD04F10800BDE83B
-:105460001040FFF71BB80000DC160020601700207A
-:10547000CC17002038B58EB002A8DFF80C14DFF886
-:105480000C440FF265453022FBF718FF009401959C
-:1054900069460FF23D40DFF8F84300F043FD01217B
-:1054A0000220FFF78AFADFF8EC2300212020FFF723
-:1054B00075F802A800F01AFE00F00EF900F01EFECA
-:1054C0000FF2353200210120FFF768F80FF2653244
-:1054D00000210220FFF762F8002084F890002020CD
-:1054E00000F0AAFE00F0E4FE0FF2C933002204F13E
-:1054F00091010020FFF774FC0FB030BD2DE9F84793
-:10550000044685B06078DFF88873DFF88C63DFF8D5
-:105510008C8305284FF0000A07F1900553D03E28F0
-:1055200062D0FF280DD101213172B4F803000428A4
-:1055300041D040F20742904204D040F6020290422D
-:1055400017D0A4E06179022904BFA1790029F8D11C
-:105550000020FFF795FD404601F06CF8A87801287F
-:1055600006D12978062903D000210220FFF723F86D
-:105570008DE0002000F060FEE07930732189357BFA
-:10558000F18161893182A2897282E389B382208AA2
-:10559000F08201241026009004940395029601964F
-:1055A000F88C01F05BF810B10220FFF761FD2020BC
-:1055B00000F042FE6BE00120FFF75AFD68780A21F7
-:1055C000FFF783FC63E0A088F98C88425FD1A7F8DD
-:1055D00026A085F800A008F1300001F02BF801208A
-:1055E000307200F058F852E0E078012802D002282A
-:1055F0001DD04CE0B4F80510F9840620287008F19D
-:10560000580001F017F886F808A000F044F8F88C6C
-:1056100001F09FF830B908F1800001F00BF808F1B3
-:10562000B40001E008F1E40001F004F82FE0677B2A
-:10563000607960BB29E004EB0A00C17B90F80E9012
-:10564000FF291FD1B9F1070F1CDB007C012819D1FC
-:10565000AAA000F0EFFF04EB0A00407C832811D1E0
-:1056600008F5927000F0E6FF0120A870E179317032
-:10567000207A7070617AB170A07AF070E17A31713D
-:10568000207B707109F101008244BA45D3DB01200F
-:1056900006B0BDE8F08706F10800F98C718100F0D2
-:1056A00026BE7B49CA8C824202D191F89000704795
-:1056B0000020704780B500F034FF062805D0BDE813
-:1056C000044000210120FEF776BFBDE8014000F054
-:1056D0001FBE70477047000018B589B00020ADF8B4
-:1056E0001A0001F01AF96E4C216811F1010F0DD06A
-:1056F0006C4862680170120A0B0A090C81704370D1
-:1057000061680271C170120A427104E00020FEF764
-:105710009DFD00B983A002460621002000F05DFD3A
-:105720004EF66E51089107AA2068594C0790062141
-:105730002E2000F052FD00BF7CA21021182000F0A6
-:105740004CFD00BF7DA21021082000F046FD18216D
-:10575000012000F063FD00F0C3FF0DF1160006A963
-:105760000190009105AB07220021042001F043F9CC
-:105770006AA0BDF8181000900723BDF8140000229D
-:1057800000F0C4FF0DF11A0000900223BDF81610BE
-:10579000BDF81400002200F0B9FF0020207001F0D5
-:1057A000E7F8012060700021E17008206075102189
-:1057B000A17501202075A07000203B49A161C1B2F4
-:1057C00021440871401CC1B21029F8DB002004906C
-:1057D0000023A169207D039102900122A17D607DBB
-:1057E000019100906178A07801F0D6F8A07808B116
-:1057F00001F03DF90AB010BD254890F89010062937
-:1058000000D1704710B50020FFF732FC4FF448710B
-:1058100001230022084601F043F9244C08B9204630
-:1058200004E00220FFF724FC04F13000BDE8104042
-:1058300000F000BF18B587B01D48154C00F0FAFE07
-:1058400094F8900006281CD01021069105914FF481
-:10585000FA720492502100230291282003930190B0
-:10586000002200924FF448710B4B084601F04DF9AD
-:1058700008B9042003E00220FFF7FAFB002084F8B7
-:10588000900008B010BD000010790008A4080320A3
-:10589000F0110020635F000820170020006E000850
-:1058A0008075FF1F7C17002007B201008077000879
-:1058B000407900080120FFF7E3BB00212020FEF71C
-:1058C0007ABE0120FEF799BE0120FEF79EBE0000C1
-:1058D00010B50446616801F1080000F01FFC00B13A
-:1058E0000120207010BD000010B1012803D07047C6
-:1058F0003F20FEF770BE3F20FEF775BE2D2D2D20F8
-:105900005354204D414E5546414354555245522023
-:105910004944202D2D2D200A0000000053544D3302
-:10592000325742006C7AD8AC577200001234567865
-:105930009ABCDEF0123456789ABCDEF0FEDCBA096E
-:1059400087654321FEDCBA098765432170477047AC
-:1059500030B5039C016000250021C16041610561F3
-:10596000A107856142600381047704D5008910B1E5
-:105970004FF0FF3030BD002030BD2DE9F84F064616
-:1059800084B030890C460025002700287169BC4688
-:105990000CBF4FF00208B84699B180B930697568FC
-:1059A00000F1010BAB4528BFABEB050B3568285C5C
-:1059B00015F80BB000EB0B25AD1CADB203E00546AE
-:1059C00000E000B102463069D6F80CB05845934665
-:1059D00023BFD6F804E0AEEB0000401B002008EB2C
-:1059E0000B0903FB09FE864532BF0020B0FBF9FA24
-:1059F00009FB1A00C0B2804509DA96F81C905FEAEC
-:105A0000C97A48BF84465FEA897048BFC44610001F
-:105A100000F0AF807068714461448842C0F0A98092
-:105A2000B9460294ADF80020039357E082073CD5B5
-:105A30003089002840F09D8032681A44270A02F815
-:105A4000024C2246D6F800C09C440CF8017C274644
-:105A500030681844FBF732FC7169B06961187161F4
-:105A6000401C019CB06117E09CB3307FC207DDD5BC
-:105A7000308948B930681844FF2100F8021CFF2221
-:105A80003168194401F8012C0027706924187461E9
-:105A90005C463089002340B931680C70200A3268B6
-:105AA000507002237069801C706108EB04050020AF
-:105AB000ADB230616CB1BA440298D6F800C000EBC8
-:105AC0000A0122460CEB0300FBF7F8FB706924186F
-:105AD000746109F10109B069401CB061039A7068F2
-:105AE0003169914549D2691881422CBF081A08468C
-:105AF000306103463089A8B93168BDF80000C85448
-:105B00005B1C70683168834228BF1B1ABDF8000017
-:105B1000000AC8545B1C7068834228BF1B1A706956
-:105B2000801C70610BFB09FA7468BDF800000299D3
-:105B3000E41A844288BF0446ABEB04025C4551443E
-:105B4000019203D090D2307F00288DD13768224651
-:105B5000F818FBF7B3FB7069201870612746BDF891
-:105B60000050019C45440023ADB2A3E73068404497
-:105B700000E0002005B0BDE8F08F88448045F5D3F3
-:105B8000A8EB0008F2E770B5028900230B80002A19
-:105B900044690CBF02250025002C4CD0028952B963
-:105BA000C2684668531CB34228BF9B1B0668B25CA0
-:105BB000F35C02EB032200F086F825D10A884FF649
-:105BC000FF739A4204BF0289002A09D0C3680269A0
-:105BD0009A4219D20289BAB14668F31A934213D293
-:105BE0004368C268E41A1419446100240289C4603D
-:105BF0004AB902681478012B94BFC3F10103012351
-:105C0000D25C04EB02220A80C468426806682B1941
-:105C1000934228BF9B1A33440E884169891B491B54
-:105C2000416105D034192D19954228BFAD1AC560C0
-:105C30008169491E8161184670BDF0B50289002353
-:105C40000B80002A42690CBF02240024002A38D0AD
-:105C5000C56802892B464AB946686A1CB24228BF09
-:105C6000921B0668775DB25C07EB022200F02BF80E
-:105C700020D10A884FF6FF76B24204BF0289002A7B
-:105C800007D142680023012A94BFC2F10102012218
-:105C90000AE00269AA420DD202895AB14668751B10
-:105CA000954207D2002304E005682E78AA5C06EB33
-:105CB00002220A8041680068E4188C4228BF641AF6
-:105CC00003191846F0BD0A80027F02F00302012A80
-:105CD00070470000C0680840884201D10120704729
-:105CE00000207047C0690840884201D101207047F8
-:105CF0000020704710B5614C02212046FFF7F2FFEB
-:105D000038B16068C043810703D5FFF798FA0220D5
-:105D100018E001212046FFF7E5FF38B16068C04375
-:105D2000C10703D5FFF751FA01200BE008212046F7
-:105D3000FFF7D8FF38B16068C043010703D5FFF70C
-:105D4000D2FA0820A06010BD10B54C4C00F033F81A
-:105D500018B96068C043810306D400F02CF830B94C
-:105D60006068C043810302D5BDE8104064E00821AB
-:105D700000F022F870B96068C04301030AD560687A
-:105D80003F4940F400206060086880474FF40022DB
-:105D9000A26010BD202100F00FF858B96068C04320
-:105DA000810207D5606840F400106060BDE81040D3
-:105DB000FFF71EBA10BD022120468BE740BF20BF6F
-:105DC0003048016841F400410160704780B52E48B9
-:105DD000016841F480110160006800F480100090B7
-:105DE00000982648016841F001010160026842F410
-:105DF000803202602C20FDF7F4FFBDE802402D2028
-:105E0000FDF7EFBF2148016849084900016070476C
-:105E10001F494FF48030086070471C48016821F02A
-:105E200002010160704719484FF400314160026877
-:105E300022F40032026070471448016841F40031D6
-:105E40000160FFF7F6B938B504460C4D0821284625
-:105E5000FFF740FF30B10A480460696821F400216F
-:105E6000696031BDA0474FF40020A86031BD0748EC
-:105E7000016821F00801016070470000000C005823
-:105E8000BC1700200C04005850000058040C0058A7
-:105E9000080C0058006040607047EFF3108172B644
-:105EA000026882420CBF012000201CE0EFF3108248
-:105EB00072B603680B60486001600868416023E0C7
-:105EC000EFF3108272B6086043684B604160486827
-:105ED000016019E0EFF3108172B6436802681A603E
-:105EE00042680068426081F31088704710B5EFF394
-:105EF000108472B602680A600068FFE7FFF7EAFFE5
-:105F000084F3108810BD086082F310887047000089
-:105F10000249034A01600261704700BFF75100085F
-:105F20001F5200087FB50C466A4D61686A4EE861F1
-:105F30002962284600F058FE246805F12400FFF786
-:105F4000A9FF746006F10800FFF7A4FF012030707C
-:105F5000296829B10FF249120092029468468847D5
-:105F60007FBD1FB55C4C04F10800FFF796FFE8B950
-:105F70002078D8B1694604F10800FFF7B7FF012087
-:105F800054492070C96941B10098029001A888471E
-:105F90009DF804102170080003D00098FFF779F9EC
-:105FA00004E0009904F10800FFF780FF04F1080005
-:105FB000FFF773FF28B9207818B104F10800FFF744
-:105FC0007CFC1FBD2DE9FC410446002000F05EF87A
-:105FD00066882088A268DFF8FC80C6F3090646EAD6
-:105FE0008026E068B6B2C1B2304600F03BF800252A
-:105FF00048F2E800FFF768FC08E07888B04202D178
-:10600000226939781170787800B1012508F12400EF
-:10601000FFF743FFF0B9694608F12400FFF766FF78
-:106020000098014600F10B07487A0F28E5D0B7F831
-:106030000100B0420CD1887A6169C01EC0B28842AA
-:10604000C8BF0846606102462069F91CFBF736F9B3
-:106050003878D9E72800CBD0012000F017F80020CD
-:10606000BDE8F68110B513461B4A5468A4F8090030
-:10607000E1720A46194604F10C00FBF71FF9154AB4
-:106080001369BDE810400021002018471149096A32
-:1060900008B921B1084700291CBF012008477047F3
-:1060A00010B50146487A0F2818BF0E2807D10B48B3
-:1060B000FFF706FFBDE810400020FFF702BC064CCA
-:1060C00004F10800FFF7FCFE04F10800BDE81040F1
-:1060D000FFF7F3BB8C16002050170020B0160020ED
-:1060E000FFF778F99DF80E0005B000BDF8B500F196
-:1060F0000C026B4621214FF66640F1E72349002050
-:10610000087700222248027100F044B820490A7939
-:1061100041F822000879401C0871704770B50446A8
-:106120006078FF2802BFB4F8030000F47F40B0F5A8
-:10613000406F1FD10025154E317FE8B2884222D230
-:10614000E9B256F8212020469047002808BF6D1C70
-:10615000F2D018E0761C2979F0B288420AD2F1B266
-:1061600055F82120204690470100F3D002D00228A4
-:1061700005D006E02046BDE87040FFF7BFB900201B
-:1061800070BD012070BD0026014DE4E7001700201E
-:10619000AC17002080B500F031FD00F030FD00F0BC
-:1061A0002FFD00F02EFD00F02DFD00F02CFD00F085
-:1061B0002BFD00F02AFD00F029FD00F028FD00F085
-:1061C00027FD00F026FD00F025FD00F024FD00F085
-:1061D00023FDBDE8014000F020BD18B50C46C7B056
-:1061E000114600F04EF88DF81D4022460DF11E00BC
-:1061F00000F014FD00F03AF83F21ADF804100C2235
-:1062000000F039F8A41C0692049400F04BF8002822
-:106210004CBFFF209DF8000048B010BD00B5C7B0CE
-:1062200000F01DF80F2200F032F800284CBFFF20CC
-:106230009DF8000047B000BD00B5C7B000228DF842
-:106240000020ADF81C0000F011F8182200F01FF833
-:1062500000284CBFFF209DF8000047B000BD002380
-:106260008DF81C008DF81D108DF8003018220021CB
-:1062700001A800F0D9BCADF8062007A903910122BE
-:10628000704700228DF800208DF81C007047ADF893
-:1062900006203F21ADF804100222049207A90391C1
-:1062A00001220692CDF814D0002101A8FFF78ABE82
-:1062B00080B50FF2A92200210420FEF76FF90FF23A
-:1062C000692200210820FEF769F9C4480021012253
-:1062D0000180C1808170C270017101720FF23900BA
-:1062E000FFF714FFBDE80240C3A000F0A3B9027895
-:1062F000BA4912B1012A03D070474088C88070475C
-:106300000022087ACA8000B10A720020FEF7B8BEE7
-:1063100000210820FEF74FB92DE9F04704466078C8
-:10632000FF2814D1AD4DB4F803006989DFF8B092AD
-:1063300040F60442801A00F08880801E47D0001F7B
-:1063400006D0401F00F0B080401E00F0D780E5E08E
-:10635000B4F80570287A58B10846FFF7A2F9297AEF
-:10636000062908BF0028F2D14FF6FF712872698113
-:106370006F81E079217A91FBF0F814285FFA88F8B0
-:10638000E5D110264FF0000A5FFA8AF04045DEDAC8
-:10639000A719787AB97A40EA01204FF64062904214
-:1063A00010D16989484600F045F9F81F0178427814
-:1063B00041EA0221A9818178C07841EA0021E9817E
-:1063C00008212972B61DF6B20AF1010ADCE7B4F819
-:1063D0000500814202BF4FF01108E07915283DD138
-:1063E000207A411E2172207A0028B0D004EB0801E7
-:1063F00004F10A02487A11F8057D12F8083049784C
-:1064000040EA032047EA01274FF64162698990423A
-:106410000BD04FF6426398420ED109F1740000F0A0
-:1064200009F90A202872AF8206E009F13C0000F069
-:1064300001F9092028722F82207AA0F1150108F1B4
-:10644000150021725FFA80F8CDE7B4F805008142AB
-:1064500001BF94F808800026E07901285ED1B24699
-:106460005FFA8AF0B0EB980F58DAA01904F10A012C
-:10647000477A8A5DC17A007B47EA022741EA002118
-:1064800042F6021291420AD1698909F1B80000F07E
-:10649000D1F8287A0A2802D10B20EF822872361D03
-:1064A000F6B20AF1010ADBE7B4F80500814202BF47
-:1064B000B4F80710A88A814230D1617A022902BF5C
-:1064C000A07A6870012829D194F80B0052A4A87012
-:1064D00048B9FEF7D5FD09F5987000F0ABF82046F5
-:1064E00000F0A8F81AE009F5B87000F0A3F820460B
-:1064F00000F0A0F80020FEF7BBFD0FE009F580706A
-:1065000000F098F843A000F095F86889B4F80510F9
-:10651000884203D100210420FEF74DF80020BDE899
-:10652000F0872E48007A704710B52E482B4C00F0AB
-:1065300081F800BF38A000F07DF82079401E80412E
-:10654000C00F2071207A38B1218A6089E31CBDE830
-:106550001040022200F0A1B910BD00001CB51F4C74
-:10656000217A01200029ADF8000036D0C91F052985
-:106570001D4832D8DFE801F0030810151F2A00BFBC
-:1065800026A000F057F813BD00F054F8E289A18965
-:10659000608900F004F913BD283000F04BF8218A1F
-:1065A00003E0643000F046F8A18A60898A1C92B248
-:1065B00000F015F913BDA83000F03CF800F016F813
-:1065C000062020720220FEF75BFD13BDD03000F0E4
-:1065D00031F800F00BF80620207213BD38170020A8
-:1065E000506C000894780008B4700008E18A608953
-:1065F0006B46022200F024B92D2D2050325020434A
-:106600004C49454E5420494E495449414C495A45FC
-:1066100044200A000A000000200A0D005032505F9A
-:10662000444953434F5645525F534552564943459B
-:10663000530A00000EB4C0B5024603A80021019021
-:10664000009101AB0121044878440C30F9F776FD44
-:1066500006BC5DF810FB00BFDF1300002DE9F84217
-:10666000C7B04FF00009ADF81C00DDF838C14F9EEF
-:10667000509F519D529C8DF8009007A84180ADF825
-:106680002020ADF82230A0F808C0ADF82660878140
-:106690008DF82A508DF82B4000F017F84FF4C17296
-:1066A000ADF806203F21ADF804101022049207A98E
-:1066B00003910122069200F00DF800284CBFFF2044
-:1066C0009DF8000048B0BDE8F0821822002101A822
-:1066D00000F0AABACDF814D0002101A8FFF772BCCF
-:1066E00000B587B000208DF8000000F09CF840F263
-:1066F000011200F00CF90122069200F09BF800282C
-:106700004CBFFF209DF8000007B000BD78B5C7B0B2
-:106710001D464C9B00F0EEF800268DF800608DF8C9
-:1067200021502A4619460DF1220000F077FA00F0B8
-:106730007AF800F067F84FF4837200F0E2F8AD1DCC
-:1067400000F076F800284CBFFF209DF8000049B00B
-:1067500060BD00B5C7B000F011F800F064F800F0BB
-:1067600051F84FF4897200F00FF800F063F8002838
-:106770004CBFFF209DF8000047B000BD00228DF8FF
-:106780000020ADF81C0070470F210291ADF80620E3
-:106790000221049107AA012106910392704718B5BE
-:1067A000C7B000F00FF800F02DF840F2151200F01D
-:1067B0002DF800F03FF800284CBFFF209DF80000A6
-:1067C00048B010BD0024ADF81C008DF8004007A8AB
-:1067D000418082800021182201A800F025BA18B556
-:1067E000C7B0FFF7EFFF00F00DF840F2171200F00E
-:1067F0000DF800F01FF800284CBFFF209DF80000A6
-:1068000048B010BD3F21ADF8041070470F21029130
-:10681000ADF806200621049107AA012106910392F2
-:1068200070478DF800301822002101A800F0FCB953
-:1068300006920495CDF814D0002101A8FFF7C2BB41
-:1068400030B5C7B000F011F800F046F8FFF7EBFFE5
-:1068500040F2211100F013F8FFF7ECFF00284CBFC5
-:10686000FF209DF8000047B030BD1446ADF81C0075
-:10687000002507A88DF80050418004717047ADF8DD
-:1068800006100F2202923F2007A9ADF804000391E1
-:106890000122641D06920494704730B5C7B000F021
-:1068A00011F8FFF7C0FFFFF7ADFF40F2231200F031
-:1068B00018F8FFF7BFFF00284CBFFF209DF800002D
-:1068C00047B030BDADF81C00ADF81E1014460025D1
-:1068D0008DF800508DF8204019460DF1210000F090
-:1068E0009DB9ADF8062007A903910122641D069207
-:1068F00004947047ADF81C00ADF81E108DF82020F0
-:106900007047ADF8062007A9039101227047ADF842
-:1069100006203F21ADF80410704700B587B000F0A5
-:1069200013F800F020F8032100F009F800F013F844
-:1069300000284CBFFF209DF8000007B000BDADF857
-:106940000410ADF80610704700208DF80000704765
-:10695000049207A9039101220692CDF814D00021D8
-:1069600001A8FFF72FBB1822002101A800F05CB995
-:1069700000B5C7B000F06EF800F0C2F800F0AFF854
-:10698000852200F06DF800F012F900284CBFFF20BE
-:106990009DF8000047B000BD2DE9F043C7B0DDF819
-:1069A00038814F9E509D519F529C8DF81C004FF096
-:1069B000000907A88DF80090417082700DF1230145
-:1069C0008DF81F308DF820808DF821608DF82250D1
-:1069D0000F608DF8274000F093F8862200F05AF8F7
-:1069E0000C2200F0E0F800284CBFFF209DF80000CA
-:1069F00047B0BDE8F083F8B5C8B005460E46174667
-:106A00001C4600F022F808A8467087708DF82050C8
-:106A100000F0E5F88A2200F0D1F8032200F0D4F863
-:106A2000002848BFFF200ED49DF8000058B94F99A8
-:106A30004E98BDF801202280BDF803300380BDF8D8
-:106A400005000880002049B0F0BD072200216846FB
-:106A500000F0EAB800228DF800208DF81C00704785
-:106A6000ADF8062007A9039101220492704700B5F2
-:106A700087B000208DF8000000F042F8922200F06C
-:106A800009F800F093F800284CBFFF209DF80000A3
-:106A900007B000BDADF806203F21ADF804107047E7
-:106AA00030B5C7B000F010F800F02AF800F017F881
-:106AB000972200F018F800F07BF800284CBFFF2068
-:106AC0009DF8000048B020BD0025ADF81C008DF8F1
-:106AD000213007A8418002718DF8005070473F2196
-:106AE000ADF8041070470F210291ADF80620062181
-:106AF000049107AA01210691039270478DF8003096
-:106B00001822002101A800F08FB82DE9F04F0026CF
-:106B1000C7B000F01DF800F00FF8FFF7F1FF0F22EB
-:106B200002929C2100F02EF800284CBFFF209DF817
-:106B3000000047B0BDE8F08F8DF82790B581ADF823
-:106B40002AB03782ADF82E80B482ADF832A07047FB
-:106B50008446559CDDF84091519DDDF848B1539F26
-:106B6000DDF85081DDF858A18DF80060ADF81CC04B
-:106B700007AE084670803271194606220DF12100D9
-:106B800000F04CB8ADF80610182204923F2007A977
-:106B9000ADF80400039101220692CDF814D0002133
-:106BA00001A8FFF70FBA049207A9039101220692E8
-:106BB000CDF814D0002101A8FFF704BAADF80A20DF
-:106BC0003F21ADF808107047059208A904910722EB
-:106BD0000792CDF818D0002102A8FFF7F3B91822C8
-:106BE000002102A800F020B80249034A01600261B6
-:106BF000704700BF8D510008B751000870477047BB
-:106C000070477047704770477047704770477047CC
-:106C100070477047704770477047704710B504461B
-:106C2000FAF74CFB204610BD10B5044610460A4644
-:106C30000146204600F002F8204610BD4018491CCD
-:106C40001CBFB1F1010100F8012DF9D1704700001E
-:106C50002D2D2047415454203A205032505F534547
-:106C600052564943455F5555494420464F554E4479
-:106C7000202D20636F6E6E656374696F6E2068618E
-:106C80006E646C652030782578200A002D2D204711
-:106C9000415454203A2057524954455F5555494470
-:106CA00020464F554E44202D20636F6E6E656374F1
-:106CB000696F6E2068616E646C6520307825780A93
-:106CC000000000002D2D2047415454203A204E4F03
-:106CD00054494649434154494F4E5F434841525FEE
-:106CE0005555494420464F554E4420202D20636F72
-:106CF0006E6E656374696F6E2068616E646C65208A
-:106D0000307825780A0000002D2D2047415454206A
-:106D10003A20434C49454E545F434841525F434FEC
-:106D20004E4649475F44455343524950544F525F82
-:106D3000555549442D20636F6E6E656374696F6E9F
-:106D40002068616E646C6520307825780A00000048
-:106D50002D2D2047415454203A204556545F424C33
-:106D600055455F474154545F50524F434544555237
-:106D7000455F434F4D504C455445200A00000000EC
-:106D8000202D2D20503250204150504C4943415429
-:106D9000494F4E20434C49454E54203A204E4F54C3
-:106DA000494649434154494F4E205245434549566F
-:106DB0004544202D204C4544204F4646200A0D00D6
-:106DC000202D2D20503250204150504C49434154E9
-:106DD000494F4E20434C49454E54203A204E4F5483
-:106DE000494649434154494F4E205245434549562F
-:106DF0004544202D204C4544204F4E0A0D000000F4
-:106E00002D2D204741502047454E4552414C2044AE
-:106E10004953434F564552592050524F43454455CC
-:106E200052455F434F4D504C455445440A000000C5
-:106E30000D0A0D2A2A20444953434F4E4E454354D0
-:106E4000494F4E204556454E5420574954482053EB
-:106E50004552564552200A000D0A0D2A2A20434F5A
-:106E60004E4E454354494F4E204556454E542057AB
-:106E700049544820534552564552200A000000000C
-:106E80000D0A0D2A2A204741545420534552564991
-:106E900043455320262043484152414354455249DB
-:106EA000535449435320444953434F564552592064
-:106EB000200A00002A2047415454203A20205374CD
-:106EC00061727420536561726368696E67205072E5
-:106ED000696D617279205365727669636573200DFF
-:106EE0000A0D0000424C455F4354524C5F417070A4
-:106EF0005F4E6F74696669636174696F6E28292CCF
-:106F000020416C6C207365727669636573206469D7
-:106F100073636F76657279204661696C6564200DD4
-:106F20000A0D00002D2D2053455256455220444550
-:106F3000544543544544202D2D20564941204D4170
-:106F40004E2049440A00000010B50446AFF300800B
-:106F5000204600F005F80446AFF30080204610BD3F
-:106F600070B500F10F06F608F600B04240D2082EC8
-:106F700004D2082602E0083000F047F8DFF8045198
-:106F80002C68210005D1002007E00268B24221D21E
-:106F9000011D08680028F8D12068291D0A6882426E
-:106FA00022D01368B34238BF111DF7D312E09319F2
-:106FB0000B60801B54685C600B6818601660096881
-:106FC00000291DBF48680028081D0020286002F124
-:106FD000080070BD61B10A681068A0F10803B342EF
-:106FE000E5D250680860EAE700F04EF80028C2D108
-:106FF000002070BD10B5040006D0AFF3008020461D
-:1070000000F003F8AFF3008010BD002800D17047F6
-:1070100070B4A0F108021368072B2BD913F0070FE7
-:1070200028D1184C616809B18A4202D2516062606D
-:1070300013E0486800B3904238BF0146F9D31BE023
-:10704000964203D11B180B600A4606E0486810B14F
-:10705000134498420ED350604A60506850B1136890
-:10706000D518854206D1002626600168CB1813602A
-:107070004068506070BC704708680E18B242DFD29A
-:1070800070BC7047A41700200749086808B10020A9
-:1070900070470648C008C00008600549C908C90013
-:1070A000091A0160704700BFC8170020D7270020C9
-:1070B000D02B00202A2047415454203A20446973A1
-:1070C000636F76657220503250204368617261634D
-:1070D0007465726973746963730A00002A204741FA
-:1070E0005454203A20446973636F76657220446576
-:1070F0007363726970746F72206F66205458202D0C
-:1071000020577269746520436861726163746572A7
-:10711000697469630A0000002A2047415454203AE8
-:1071200020446973636F7665722044657363726986
-:1071300070746F72206F66205278202D204E6F740D
-:10714000696669636174696F6E2043686172616327
-:10715000746572697469630A000000002A2047415F
-:107160005454203A20456E61626C652053657276F6
-:107170006572204E6F74696669636174696F6E0A27
-:10718000000000002A2047415454203A20446973EB
-:1071900061626C6520536572766572204E6F74690A
-:1071A0006669636174696F6E0A0000002DE9F04141
-:1071B00007468846387810F0030F16461D4633D030
-:1071C000384600F099F878BBB8F1000F1CBFD8E939
-:1071D00000018619012D2ED13888C10415D5396AD0
-:1071E00007F14402384600F0A3F83A6B044602B9AE
-:1071F0003A69F968384600F09BF8361B341A7A6908
-:10720000F968384600F094F8261A1EB94DB916F1FF
-:10721000010F09D097F903002A46314600F08EF895
-:10722000064616F1010F09D12320AFF300804FF07D
-:10723000FF30BDE8F081022DE8D1EBE7388810F48B
-:10724000405F0ED07868F86038617861B86107F106
-:1072500044017868F861396207F1300000217862F2
-:107260003963B8F1000F05D0D8E9020107F1340203
-:10727000C2E900013B884CF6FF6003403B800020E0
-:10728000BDE8F08170B50546AFF300802888810421
-:1072900015D56E680024EA6895F9030031469142DD
-:1072A00012D2521AFDF786FE10F1010F1CBF002802
-:1072B0003618F0D10FE04DF6FF70014029802846C6
-:1072C000AFF30080002070BD00220021FDF772FEA8
-:1072D00010F1010F00D101246868E860A861E8613D
-:1072E000002C2988E7D041F4007129802846AFF3AB
-:1072F00000804FF0FF3070BDF8B5A0B9AFF300804B
-:1073000000250A4E08244FF0FF37306820B1FFF700
-:10731000B9FF002848BF3D46361D641EF5D1AFF3C6
-:1073200000802846F2BDBDE8F240ABE7D011002056
-:10733000914234BF511A0021084670473EB50400FF
-:107340000D00012A02D100F063F807E0022A07D1FC
-:1073500000940020019069460C20ABBE2D1801E07E
-:10736000002A0CD10094019569460A20ABBE002882
-:1073700005D100222100280000F027F801E00020BC
-:10738000C04303B030BD000010B4314A00211346A1
-:107390001C6884421EBF491C9C6884421EBF491C55
-:1073A0001C69844209D09C69491C844205D0491C4F
-:1073B00020331029ECD310BC7047002342F8313041
-:1073C00002EBC1014B6010BC704770B4204C00232D
-:1073D00025462E688E421EBF5B1CAE688E421EBFC5
-:1073E0005B1C2E698E4209D0AE695B1C8E4205D0B3
-:1073F0005B1C2035102BECD370BC7047054604EBAA
-:10740000C303012A04BF59684D195D6070BC704701
-:1074100010B40F4A002113461C6884421EBF491C49
-:107420009C6884421EBF491C1C6984420AD09C6926
-:10743000491C844206D0491C20331029ECD310BCCF
-:107440000020704702EBC100406810BC704700008C
-:10745000AC14002010B50446E068A169884251D3FD
-:10746000218849F202030B40022B08D008044CBFCC
-:107470004FF400704FF48440014321803BE001F45D
-:10748000C042B2F5C04F06D1A168884203D320465E
-:10749000FFF732FF78BB208810F4406F02BF6068AE
-:1074A00004F14401884217D14FF40070FFF74CFDFE
-:1074B000606030B904F144006060E060401CA0608E
-:1074C0000AE0218841F040012180E060606100F520
-:1074D00000726068A260E0616068A1682061A161DB
-:1074E000207841070AD502220021204600F00CF83E
-:1074F00010F1010F02D14FF0FF3010BD208840F491
-:10750000C0402080002010BD70B504460D461646D0
-:10751000AFF3008033462A4600212046FFF746FE9F
-:1075200005462046AFF30080284670BD00000000ED
-:10753000000000000000000000000000000000004B
-:10754000000000000000000000000000000000003B
-:10755000000000000000000000000000000000002B
-:10756000000000000000000000000000000000001B
-:10757000000000000000000000000000000000000B
-:1075800000000000000000000000000000000000FB
-:1075900000000000000000000000000000000000EB
-:1075A00000000000000000000000000000000000DB
-:1075B00000000000000000000000000000000000CB
-:1075C0000000000018B401780A0627D51F4A136886
-:1075D0000021834203D1002442F821401BE053687C
-:1075E000012183421EBF022193688342F3D0D368F6
-:1075F000032183421EBF042113698342EBD05369E8
-:10760000052183421EBF0621936983421EBF0721C5
-:10761000D3698342DFD012BC00F01AB80021018088
-:107620004FF0FF3200F14401C270C1604161C1619D
-:1076300000F1440300F1440200F1300143600261B3
-:1076400082610262416211BC70470000D0110020CB
-:10765000FFF7D0BC0100000003000000050000009F
-:107660000100000001000000060000000A00000008
-:1076700020000000020000000400000008000000DC
-:107680001000000040000000800000000001000029
-:1076900000020000A0860100400D0300801A0600D1
-:1076A00000350C0040420F0080841E0000093D00A0
-:1076B00000127A000024F40000366E010048E80150
-:1076C000006CDC0200000000000000000000000070
-:1076D0000000000038B504000ED0207810F0030F31
-:1076E00003D094F90300002809D5AFF300802046A9
-:1076F000FFF768FFAFF300804FF0FF3032BD204648
-:10770000FFF7FAFD0546AFF300802078410644BF3D
-:107710006068FFF79DFF0020606094F90300022875
-:1077200004D900F016F808B14FF0FF35E06B48B10E
-:1077300000F01BF808B14FF0FF35E06BFFF788FF52
-:107740000020E0632046FFF73DFFAFF300802846AE
-:1077500032BD1CB50200009269460220ABBE040097
-:107760001000FFF711FE200016BDE0B50090F9F7FC
-:1077700049FD019069460E20ABBE03B000BD00007C
-:10778000200D0A0D2A2A2053544152542047454EB9
-:107790004552414C20444953434F564552592028A5
-:1077A0005343414E29202A2A20200D0A0D000000B3
-:1077B0002D2D20424C455F4170705F53746172748F
-:1077C0005F4C696D697465645F446973635F52659A
-:1077D000712C204661696C6564200D0A0D00000063
-:1077E00038B50C46C5B22046AFF30080E068A16909
-:1077F000884204D32046FFF72DFE00280FD4E0680E
-:10780000401CE06000F8015D2088010503D44005BC
-:107810000BD50A2D09D12046FFF76EFD28B1204671
-:10782000AFF300804FF0FF3032BD2046AFF3008051
-:10783000284632BD7047FEE7FEE7FEE7FEE77047E9
-:107840007047704700F01EB80548FBF76ABB054853
-:10785000FAF7D7BA0448FAF7D4BA0448FBF761BB81
-:107860002C150020A0130020141300208C150020DC
-:107870001020FCF7C1BBFDF7E3B9FEF765BAFEF7D0
-:1078800039BA000002490A68886882180A6070479D
-:10789000501000202D2D20503250204150504C4986
-:1078A000434154494F4E20434C49454E5420203AC1
-:1078B00020425554544F4E20505553484544202D96
-:1078C00020575249544520544F2053455256455253
-:1078D000200A200038B50D4D0824286800281CBF58
-:1078E000017811F0030F05D090F90310002958BF5B
-:1078F000FFF7F0FE2D1D641EEFD1BDE838400022D9
-:1079000000214FF0FF30FDF755BB00BFD011002024
-:107910000000000000000000000000000000000067
-:107920000000000044000800400508013A799C006E
-:10793000F4010000FFFFFFFF48010100000000000C
-:107940000D0A0D2A2A2043524541544520434F4EEB
-:107950004E454354494F4E20544F205345525645AF
-:1079600052202A2A20200D0A0D00000010B50749D8
-:1079700079441831064C7C44163404E00A68081D2A
-:10798000114488470146A142F8D110BD2C000000E7
-:10799000500000004EF68851CEF20001086840F415
-:1079A00070000860BFF34F8FBFF36F8F4FF0007010
-:1079B000E1EE100A70470000D397FFFFE0050000DA
-:1079C000F0110020800800002400032000000000C7
-:1079D000B396FFFF84010000960100000400002020
-:1079E0000000000000000000000000000000000097
-:1079F000010000000200000003000000040000007D
-:107A000000F00DF8002801D0FFF7B0FFAFF30080C1
-:107A10000020AFF30080FCF76AF800F002F80120C4
-:107A2000704700F001B800000746FFF753FF3846E3
-:107A3000FAF74EF9FBE738B504460D46284600F044
-:107A400005F8A84218BF0024204632BD0149FFF7BF
-:107A5000C7BE00BF401100200148804701480047D1
-:107A600085400008697A0008AFF30080FFF792FFB5
-:107A7000FFF7C6FF00002E004300FFF7FEBFFFF731
-:107A8000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF72A
-:107A9000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF71A
-:107AA000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF70A
-:107AB000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7FA
-:107AC000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7EA
-:107AD000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7DA
-:107AE000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7CA
-:107AF000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7BA
-:107B0000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7A9
-:107B1000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF799
-:107B2000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF789
-:107B3000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF779
-:107B4000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF769
-:107B5000FEBFFFF7FEBF0000F3FF010001F1FF01D0
-:107B6000F1FF01F1FF01F1FF01F1FF01F1FF01F16F
-:107B7000FF01F1FF01F1FF01F1FF01F1FF01F1FF51
-:107B800001F1FF01F1FF01F1350152FF01ED3F105D
-:107B90001210113D541070010400480412080452E0
-:107BA0000C04F00507093D00747A0008046158F2DE
-:107BB00000761410010000780C215CFC021778108C
-:107BC0000020B710134D127E1101433B123C2101DE
-:107BD0001007010400003C1100203D04523C042128
-:107BE0001BA108F3112811641007020401013C16BF
-:107BF00000208C04523C0431405108128444F2139A
-:107C000070484003080202EC154021082104213489
-:107C1000610812CC44F212B84816F818124028F243
-:037C200006882CA7
-:0400000508007A690C
+:10000000D0270020897C0008C17A0008C37A000844
+:10001000C57A0008C77A0008C97A00080000000005
+:10002000000000000000000000000000CB7A000883
+:10003000CD7A000800000000CF7A0008D17A0008CD
+:10004000AB7C0008AF7C0008B37C0008037B000891
+:10005000B77C0008BB7C0008BF7C0008C37C00089C
+:10006000C77C0008CB7C0008FD7A0008CF7C000824
+:10007000D37C0008D77C0008D57A0008DB7C000818
+:10008000DF7C0008E37C0008E77C0008EB7C0008CC
+:10009000EF7C0008F37C0008F77C0008FB7C00087C
+:1000A000FF7C0008037D0008077D00080B7D000829
+:1000B0000F7D0008137D0008177D00081B7D0008D8
+:1000C0001F7D0008237D0008277D00082B7D000888
+:1000D000DB7A0008E17A00082F7D0008337D0008F4
+:1000E000377D00083B7D00083F7D0008437D000808
+:1000F0000B7B0008077B0008477D00084B7D00084C
+:100100004F7D0008537D0008577D00085B7D000887
+:100110005F7D0008637D0008677D00086B7D000837
+:100120006F7D0008737D0008E77A0008777D00087E
+:100130007B7D00087F7D0008837D00082DE9F84F56
+:100140000FF2D017A2B0D7E90045CDE900452C9EAB
+:10015000DFF82C7C04918DF8436000210FF2BC1471
+:100160000D9112944FF0FF368246904699460FE06B
+:10017000C3462C461BF8011B0498D0470028049066
+:1001800000F0B2800D98401C641E0D90F2D1A8447E
+:1001900098F80000252807D10021079108910991BE
+:1001A0000A910B910C910DE06A463146404600F0F1
+:1001B000FDFF050001D10D98B4E0D9D50125E6E792
+:1001C00041F0010118F8010F2028F9D023280CD0A4
+:1001D0002B2804D02D2805D0302809D086E041F006
+:1001E0000201EFE741F00401ECE741F00801E9E723
+:1001F00041F01001E6E700200F900AE00F98B842A6
+:1002000005DA00EB800302EB4302303A0F9208F16B
+:10021000010898F80020A2F130000A28EED398F8DF
+:1002200000002E2818BF0E9629D118F8010F2A2891
+:100230000BD1D9F80000C9F8000008F1010850F806
+:10024000042BC9F800000E9219E02D280CBF18F8F5
+:10025000010B002000220E920BE040B90E9ABA4228
+:1002600005DA02EB820403EB4403303B0E9308F102
+:10027000010898F80030A3F130020A2AEDD3ADF856
+:100280004010129898F8001000F09CFF08B118F880
+:10029000010B8DF842009DF84200682804BF98F8D1
+:1002A0000010682903D162208DF8420008E06C2814
+:1002B00004BF98F800006C2804D171218DF8421019
+:1002C00008F1010813A806904A4618F8013B02A954
+:1002D000504600F067F838B913AA02A9504600F05A
+:1002E000C9F900287FF554AF30461BE02A2882D197
+:1002F000D9F80020C9F8002052F8040BC9F80020F2
+:1003000000280F9003D540420F9041F0040108F1FE
+:10031000010884E70000000000000000686A6C74B7
+:100320007A4C000023B0BDE8F08F622820D0682806
+:1003300011D06A2803D06C2827D0712825D10868ED
+:10034000C01D20F007000860D0E9002308300860D5
+:10035000194610467047002A0A680A60106803D0E0
+:10036000121D0A6000B217E0121D0A6080B217E089
+:10037000002A0A680A60106803D0121D0A6040B2A1
+:100380000AE0121D0A60C0B20AE0002A0A680A6088
+:10039000106803D0121D0A60C1177047121D0A6051
+:1003A000002170477CB50D4611461C462E69B4F1FC
+:1003B000250200F04D811C3A00F08680121F022AAF
+:1003C00040F282800E3A00F00781521F5AD0093A5B
+:1003D0007AD0921E16D0521E35D0521E022A73D9E0
+:1003E000121F30D0521F00F09A80521E4AD0521E67
+:1003F00000F0E480D21E00F0FD80921E42D0D21E9A
+:1004000040D02BE195F83A206C2A09D06869421C4B
+:100410006A610A680A6052F8043B0A60335427E1B3
+:100420000A680A6052F8043B0A60002100930191B7
+:100430004FF0FF322A6329466A4600F096F90028F9
+:1004400040F1168101E195F83A000122FFF76DFFB6
+:10045000C5E900010023994204DA6869411C696119
+:100460002D210DE0288F810704D56869411C696141
+:100470002B2105E0C00722D56869411C6961202154
+:1004800031541CE095F83A000022FFF74EFFC5E911
+:10049000000195F83800010711D5D5E900230020A7
+:1004A000834208BF82420AD044F02000782806D157
+:1004B000686930213154401C411C69613454214623
+:1004C00068693044E86083E00868C01D20F00700D8
+:1004D0000860D0E9002308300860C5E90023D5E9A9
+:1004E0000001C80F04D06869411C69612D210DE02D
+:1004F000288F810704D56869411C69612B2105E0BB
+:10050000C00704D56869411C6961202131546869BC
+:100510003044E8602146284600F032FAA8E005F1B0
+:100520003A02507820B14FF0FF340FF6243070E0DB
+:100530001078622808D0682824D06A2812D06C2845
+:100540002ED071280ED02BE00A680A6052F8040BF6
+:100550000A6020B94FF0FF340FF60C3059E0E96A19
+:10056000017085E00A680A6052F8040B0A6020B93D
+:100570004FF0FF340FF6F0204BE0EA6AD317C0E9E2
+:10058000002375E00A680A6052F8040B0A6020B97B
+:100590004FF0FF340FF6D0203BE0E96A018067E0BE
+:1005A0000A680A6052F8040B0A6020B94FF0FF3461
+:1005B0000FF6B4202DE0E96A016059E00A680A608C
+:1005C00052F8040B0A600021C5E90001EE607821B1
+:1005D000284600F029F94BE06C2285F83A200B6898
+:1005E0000B6053F8042B0B6052BB4FF0FF340FF637
+:1005F000AC200EE095F83A206C2AF0D0086808602C
+:1006000050F8044B0860EC603CB94FF0FF340FF633
+:10061000702000F0F1FD201A76BD2E6B002E04D55F
+:10062000204600F00BFE044608E03246002120463A
+:1006300000F020FE002814BF041B3446AC6117E014
+:10064000294600F092F8002812D54FF0FF3076BD11
+:100650006869411C69612521315409E06969481CB8
+:10066000686125227254210002D0411C6961345412
+:10067000002076BD2DE9F0410E460546716B70698C
+:10068000B46A091A306A091AB069091A706A091A33
+:10069000F069091A96F838000C1B410790460DD4F2
+:1006A000002C0BDD2746B0682021A8470028B06049
+:1006B00057D0F06A401C7F1EF062F4D17369424645
+:1006C0003146284600F0ACFC00284AD1376A002F9A
+:1006D0000ADDB0683021A8470028B06041D0F06A38
+:1006E000401C7F1EF062F4D1B369F268314628469F
+:1006F00000F096FCA8BB776A002F09DDB0683021B6
+:10070000A847B06068B3F06A401C7F1EF062F5D164
+:10071000F068B169F36942183146284600F080FC60
+:10072000F8B9B76A002F09DDB0683021A847B0607A
+:10073000B8B1F06A401C7F1EF062F5D196F838001F
+:1007400041070BD5002C09DDB0682021A847B06017
+:1007500038B1F06A401C641EF062F5D10020BDE89B
+:10076000F0814FF0FF30BDE8F0812DE9F8470D46EC
+:10077000A3B02F6B002F8146904648BF6FF0004713
+:1007800000F0A4FD696B40180FF62C118128D1E907
+:100790000023CDE9012328BF4FF0FF303ED20024D3
+:1007A000002F2FDDD8F8001001AA684600F000FDE8
+:1007B0000646002E35D4D8F8000008B9761E30D48D
+:1007C000B7421FDB6869301881280AD300206863AC
+:1007D00003AA29464846FFF74DFF040012D4002023
+:1007E000686103A8D5F814A032466946504400F069
+:1007F00073FDB244C5F814A058F8040B002818BFC4
+:10080000BF1BCDD12CB903AA29464846FFF732FFBA
+:10081000044614B9002068616863204624B0BDE82E
+:10082000F0874FF0FF34F8E72DE9FC4707468A468A
+:100830003E69BAF16F0F08BF082405D04AF02001C5
+:10084000782914BF0A2410243C25D7E90023BAF1E3
+:10085000640F18BFBAF1690F9046994606D100217E
+:100860008B4203DAD8F1000869EB49090020814581
+:1008700008BF80451FD1386BE8B9082C4CD197F8D8
+:100880003800010748D530203B2586F83B0043E07F
+:1008900000280ED597F8380000F01400102808D171
+:1008A0007A6B7869121A386A121A511A0029C8BF6D
+:1008B0003962BDE8F3878DF800A0404649462246DC
+:1008C000E31700F05DFD3032D0B26D1E3A2801957D
+:1008D00004DB9DF80000A0F151018A1872554046D2
+:1008E00049462246E31700F04BFD8046894600202A
+:1008F000814508BF804503D0F86871198842DCD370
+:10090000082C09D197F83800010705D5715D302909
+:1009100002D06D1E30207055C5F13C01B9617019CF
+:10092000F860386B8142B3DA411A39624FF6EF70E2
+:10093000398F01403987BDE8F3872DE9D04306465A
+:100940000F4614464FF00008DFF8389412E0E00735
+:1009500007D542464B463046394600F029FE06464A
+:100960000F464046494642464B4600F021FE641081
+:1009700080468946002CEAD130463946BDE8D0830E
+:100980002DE9F34F054641F020048DB0D5E90089EB
+:10099000612C02AE09D0286B002848BF062003D482
+:1009A00008BF672C01D101202863D5E90023580036
+:1009B0004015401C0ED119030CD00320A8619DF8EE
+:1009C000380061381A2802D20FF2F46111E00FF2F8
+:1009D000F4610EE058004015401C0FD119030DD1F1
+:1009E0000320A8619DF8380061381A2814D30FF24B
+:1009F000DC61E868032200F06FFCD3E1194621F0C6
+:100A00000043B3F5801F10460DD20027BB4208BF3C
+:100A1000BA42019703D111E00FF2AC61E9E701AAF4
+:100A200000F098FE0AE0DFF8607307EB1352DFF87E
+:100A30005C3301921940DFF858331943C5E90001CE
+:100A4000612C0ED1E86830210170811CE9609DF8AD
+:100A5000381061290CBF7821582141706869801CC9
+:100A60006861D5E900AB2BF0004300202AF00002BA
+:100A7000834204BF8242002300F05A81612C40F07F
+:100A8000A980286B00284CBF2120401C00904046C4
+:100A9000009F7F1C49460022002300F093FED946A8
+:100AA00001988DF8082038BF89F00049001F019097
+:100AB000002FD0460DF1090040F3498140F2FF714B
+:100AC000DFF8D0B20C91064640464946002200238A
+:100AD00000F090FE80F03A814800400D00F11C02C9
+:100AE00010D0002A0EDD0C98824205DB09F0004090
+:100AF00040EA0B01002013E0A448084040EA0251FC
+:100B000040460DE029F00043002028F00002834217
+:100B100008BF82420FBF40461C22404600F082FEC2
+:100B20008046894600F01CFFFF1F002F044609DDA8
+:100B300000F034FF02460B464046494600F040FFB5
+:100B400080468946F01D072104E004F00F0200F8FA
+:100B5000012D2411002C01DD491EF6D5491E5CBF74
+:100B6000002200F8012DF9D5ECE00020194602AA78
+:100B70000A4400E05B1E12F80149491E8442F9D084
+:100B80000F2804D10DF10900425C521C4254002987
+:100B900004D50198001D02AE5B1C0190591E12D4B1
+:100BA0009DF838007218147804F130085FFA88F460
+:100BB000392CC4BFA0F13A04A044491E02F80189AF
+:100BC000F1D58DF83800286B002840F1B080591E0F
+:100BD0002963ACE0404649460022002300F0F2FDC4
+:100BE000019938BF89F0004947F2975041436A4A5A
+:100BF00091FBF2F20192D2F1070204DD4046494630
+:100C0000FFF79BFE0AE0524200206449FFF795FE81
+:100C100002460B464046494600F044FF8046662C9B
+:100C2000286BDFF87CB106BF019F0A3706273F1803
+:100C3000142FC8BF142730208DF8080089460DF105
+:100C4000090000E03046002F34DD064640464946A4
+:100C500001F04CF801460A4606F1080304200A2672
+:100C6000B2FBF6F606EB860EA2EB4E02303203F82C
+:100C7000012C0A22B6FBF2F202EB820EA6EB4E0624
+:100C80003036401E03F8026DE9D1083F002F03F112
+:100C90000806D7DD084601F03DF802460B464046FF
+:100CA000494600F08DFE00225B4600F081FC804644
+:100CB0008946CBE70DF10901401A0DF1090604E060
+:100CC0000199491E401E0191761C31783029F7D0D8
+:100CD000662C02D10199491C03E0652C0CBF01214F
+:100CE00000212B6BCB189842B8BF431E002B1ED49B
+:100CF000834204DAF05C3528A8BF392000DA3020BE
+:100D00001946721E02EB010800E05B1E18F80199FB
+:100D1000491E8145F9D0392802D1705C401C7054BD
+:100D2000002904D50198401C16465B1C01900198CF
+:100D300000B200901BB29DF838103246284600F0F1
+:100D400034F82FE0C61D002F3FF7BEAE30460DF140
+:100D50000901401A009903468842C8BF0B46002B80
+:100D60000DF109063FF52FAF8342BFF6FEAE0DF140
+:100D70000900C05C07287FF7F8AE0F20F6E60000F8
+:100D8000CBCCCC0C0000244002FCFFFFFFFF0F8007
+:100D90000000E03F0000F07FA08601000000F03F6F
+:100DA00084D797410FB0BDE8F08F2DE9F84783B0A5
+:100DB00006468A461746984600F0FCF9B8F1000F3F
+:100DC000406A356B90F8009003DC4FF001080FF299
+:100DD0000037BDF930404AF02000662808BF641C87
+:100DE00015D0672840F0848014F1040FC0F286808B
+:100DF000AC4280F2838096F83800641C010702D46C
+:100E0000A845B8BF454620B22D1A48BF00250FFAA5
+:100E100084FAF068B169BAF1000F25DC4A1C30236E
+:100E20004354002D03DC96F83800010703D5F06821
+:100E300000F80290521C15EB0A0FB8BF6C4220B2AA
+:100E4000441941424445B8BFA046B26171620FFAED
+:100E500088F5F561F068B3692A463946184400F010
+:100E60003BFA641BB462C4E022B29045084417DA2E
+:100E70004246394600F030FAB0694044B061AAEB0E
+:100E80000801002D716203DC96F838100A0705D5B9
+:100E9000F16801F80090F069401CF061B562A8E0CB
+:100EA000394600F019FAB069002D5044A8EB040847
+:100EB00003DC96F838100A0703D5F16801F80090B2
+:100EC000401CB0610FFA88F08542F068B369B8BF82
+:100ED000A8460FFA88F207EB0A01184400F0FCF963
+:100EE000B0690FFA88F10844B061681A706280E056
+:100EF000BAF1610F14D14FF0700A16E0A84504DA78
+:100F000096F838100A0758BF45466D1E48BF0025A1
+:100F1000BAF1670F14BF4FF0450A4FF0650A04E0BD
+:100F2000BAF1410F08BF4FF0500AB169F368481C8D
+:100F3000B061002D17F8012B5A5403DC96F83810D5
+:100F40000A071BD5F168431CB36101F80090002D1E
+:100F500014DDA8F101080FFA88F08542F068B8BFE7
+:100F6000A8460FFA88F23946184400F0B5F9B0697E
+:100F70000FFA88F108446D1AB0617562F068B169C2
+:100F80000844002C80F800A003D42B214170811C60
+:100F900003E02D2141706442811C00206A460AE072
+:100FA00023460A2493FBF4F404EB8405A3EB4503E6
+:100FB00002F8013B401C24B2002CF1DC012806DCC5
+:100FC0004AF02002652A04BF302201F8012B48B9FB
+:100FD000302001F8010B07E0401E1DF800203032E0
+:100FE00001F8012B0028F7DCF068B2691044091AF7
+:100FF000F16196F8380000F0140010280DD17169E5
+:10100000B0694118706A4118F0694118B06A411816
+:10101000706B8142BCBF411A316204B0BDE8F087F9
+:10102000F8B505460E4617461C46002074B117F861
+:10103000011BB068A847B06030B1F06A401CF06294
+:101040000020641EF3D1F2BD4FF0FF30F2BD00006E
+:101050007072696E74665F733A20256E20646973DE
+:10106000616C6C6F776564007072696E74663A20AB
+:1010700062616420256E20617267756D656E740013
+:101080007072696E74665F733A20626164202573C2
+:1010900020617267756D656E740000007072696E14
+:1010A00074665F733A2062616420256C73206172FC
+:1010B00067756D656E7400000000000000000000A0
+:1010C0006E616E004E414E00696E6600494E4600EC
+:1010D0003000F0B40246106895681318506803EBAE
+:1010E0005004C00721D54D441FE0F0BC02F10C00B4
+:1010F000704713F8017B05F8017B491EF9D1A0B1B7
+:10110000B60813F8011B06F00306032E08BF13F8F8
+:10111000016B01EB06214942801C294405D011F8DE
+:10112000016B05F8016B401EF9D1A342DDD013F825
+:10113000016B16F0030104BF13F8011BC91C300931
+:101140000F28DAD113F8010B0F30D6E71B48704790
+:1011500030B45368D418042B09DA41B1057804F887
+:10116000015B10F8015B15B15B1C491EF3E753608E
+:1011700030BC704738B514461D4661B1FFF7E8FF33
+:1011800061686A6B204690476FF00102811A02D0B5
+:10119000491E03D005E06FF0010032BD4FF0FF3073
+:1011A00032BD0021616032BDDA6B1047034BE1E7CD
+:1011B000024BF9E70248704700000000B010002021
+:1011C000781000200278C9B28A421AB11CBF10F808
+:1011D000012FF9E718BF00207047B1F5807F02D3D7
+:1011E0004FF0FF3070470170012070470078401EBB
+:1011F0008041C043C00F704780B508B90FF21C0092
+:1012000005490B681BB122220021984701E000F03C
+:101210008EFD222002BD0000C4170020636F6E7394
+:10122000747261696E742068616E646C65723A20D4
+:10123000626164206D6573736167650000F101038D
+:10124000810704D010F8011B89B18107FAD1026827
+:10125000B2F10131914311F0803F04BF50F8042FE7
+:10126000F6E710F8011B11B110F8011BFBE7C01ADB
+:1012700070470000C9B2830706D0521E22D310F86F
+:10128000013B9942F7D11FE0083A13D302F104025F
+:1012900041EA012141EA014150F8043B121F21BFFC
+:1012A0004B40A3F1013C2CEA030C1CF0803FF3D02F
+:1012B000C9B2001F083210F8013B521E28BF91EA44
+:1012C000030FF8D818BF0120401E704780B5FFF704
+:1012D0003DFF006C02BD000062B38B0708D0521EB8
+:1012E00011F8013B00F8013B00F024808B07F6D198
+:1012F000830740F0208000BF103A07D330B4B1E834
+:101300003810103AA0E83810F9D230BC530724BF87
+:10131000B1E80810A0E8081044BF51F8043B40F8B9
+:10132000043BD20724BF31F8022B20F8022B44BF24
+:101330000B7803707047121F17D35B0009D151F867
+:10134000043B20F8023B1B0C121F20F8023BF6D294
+:101350000BE051F8043B00F8013B1B0A20F8023B6C
+:101360001B0C121F00F8013BF3D238BF121D521E96
+:1013700024BF11F8013B00F8013BF8D8704700008A
+:10138000B3BBD9B1B2F5803F7DD2022A1ED98C46BB
+:10139000B1FBF2F102FB11C31B0443EA1043B3FBA0
+:1013A000F2FC02FB1C3380B240EA0343B3FBF2F0D1
+:1013B00002FB103240EA0C4000237047022A05D994
+:1013C0008446B0FBF2F002FB10C270474AB105D16F
+:1013D00000F0010249085FEA300070470022002354
+:1013E000704700F0A7BC0B000200002100207047EE
+:1013F000904271EB030CF6D3B3F5803F2FD2F0B5DA
+:10140000B3FA83F7B1FA81F4A7F10F0E3D1B5340F5
+:10141000CEF1200602FA0EF2F3415340B5F10F0768
+:1014200046D80F3C2C444140C4F12006A040F14175
+:101430004140B1FBF3F603FB1611A2FB0645001B6E
+:10144000A94102D2761E8018594180EA010221FA90
+:101450000EF362FA0EF200215A403046F0BD30B46D
+:10146000B1FBF3FC03FB1C11A2FB0C45001BA941C3
+:1014700003D2ACF1010C8018594130BC02460B4636
+:10148000604600217047B2F1807F65D3F0B5B2FAB3
+:1014900082F7B1FA81F4C7F10F063D1B22FA06F379
+:1014A00007F1110EF24120355A40B5F10F07B8D9B6
+:1014B0004140C4F12006A040F1414140B1FBF3FCA2
+:1014C00003FB1C11A2FB0C45001BA94103D2BCF17C
+:1014D000010C801859410F2F12D30F3FC90341EA65
+:1014E0005041B1FBF3F603FB1611A2FB0645D4EB0A
+:1014F000C030A94102D2761E8018594146EACC3C40
+:1015000007B34140C7F12006B840F1414140B1FB6B
+:10151000F3F603FB1611A2FB0645001BA94102D2FC
+:10152000761E8018594180EA010221FA0EF3C7F1B4
+:10153000200462FA0EF20CFA07F05A402CFA04F179
+:101540003043F0BD80EA010221FA0EF3002162FA75
+:101550000EF260465A40F0BD8C46B1FBF2F102FB40
+:1015600011C31B0243EA1063B3FBF2FC02FB1C3302
+:101570001B024CEA002043EA1063B3FBF2FC02FBBF
+:101580001C331B024CEA002043EA1063B3FBF2FC5D
+:1015900002FB1C331B024CEA002043EA1063B3FB3E
+:1015A000F2FC02FB1C324CEA0020002370470000D2
+:1015B000B0B581EA030C0CF0004C40F2FF7515EA5F
+:1015C00011541DBF15EA1357AC42AF4239E0E4197C
+:1015D00023EA455343F48013C90241F0004141EA34
+:1015E000505EC7021100A7FB020200284FF0000066
+:1015F000EEFB01204FF00001E3FB072118BF42F092
+:101600000102401800214941E3FB0E01A4F580646A
+:101610000F0302D252004041494154F101046CDDF4
+:10162000470872F1004250F1000051EB0451A1F55E
+:1016300080115CBF41EA0C01B0BD4CEA05510020AD
+:10164000B0BD05EA1357AC4214BFAF4241E050EAC7
+:10165000410E1CBF52EA430E02E061460020B0BDBD
+:1016600024423C441BD15FEA070EF6D0090302BFB7
+:1016700001460020AEF1140EB1FA81F7AEEB07047B
+:1016800001FA07FE0C37C7F1200100FA07F7C8403E
+:101690004EEA000E23EA455343F48013A2E733F0E9
+:1016A0000043B3FA83F704BFB2FA82FE77440B3FDC
+:1016B000E41BB7F1200E2FBF02FA0EF3BB40C7F1B7
+:1016C000200E22FA0EFE38BF43EA0E03BA40641C15
+:1016D00082E750EA410E14BF52EA430E6FF0000158
+:1016E0004FF4001717EB430F8ABF194617EB410F52
+:1016F000B5E74CEA05510020B0BDD4F10104B4F1C6
+:1017000020070FDAC4F12007520828BF42F0010277
+:1017100010FA07F501FA07F7E1BF2A43E040384322
+:10172000E1400FE0352C98DCC7F1200452EA40027A
+:1017300020FA07F218BF42F0010231FA07F0A14087
+:101740000A43002172F1004250F1000051EB0C01FC
+:10175000B0BD000010B5144600F002F8226010BDC4
+:10176000C1F30A5343B14A0012F5001F28D2A3F275
+:10177000FE32A1EB0251704750EA410C20D001F03B
+:10178000004C31EA0C01B1FA81F204BFB0FA80F3E7
+:10179000D2180B3AB2F120032CBF00FA03F19140AA
+:1017A00041EA0C013EBFC2F1200C20FA0CF31943B0
+:1017B0009040524240F2FD33D21A01EB0351704780
+:1017C000002270474FF4001C1CEB410F94BF1CEB30
+:1017D000430F09E041EA030C50EA4C0C52EA0C0CAE
+:1017E00003D2994208BF9042704714BF8B42824295
+:1017F000704700004FF4001C1CEB410F94BF1CEB22
+:10180000430F09E041EA030C50EA4C0C52EA0C0C7D
+:1018100003D28B4208BF8242704714BF9942904264
+:1018200070470000124254D440F2FF7C1CEA11536E
+:101830000FD0634531D09B1863453CBF01EB02518B
+:10184000704701F0004141EA0C510020AFF30080E5
+:10185000704750EA410320D001F0004C91EA0C019E
+:101860001CD0B1FA81F30B3B9A420DD9D21A9940A0
+:1018700051EA0C01C3F1200C20FA0CFC61449840A1
+:10188000531C40F2FF7CD7E7914041EA0C01C2F1C2
+:10189000200C20FA0CF3194390407047B0FA80F303
+:1018A0001533202BE0D3202AEED3203A203B9A4256
+:1018B00009D9D21A00FA03F141EA0C010020531CA5
+:1018C00040F2FF7CB8E700FA02F141EA0C01002087
+:1018D0007047524240F2FF7C1CEA11530DD0634521
+:1018E000DBD0B2EB030C3CBFA1EB025170470CF113
+:1018F000010221EA035141F4801150EA410CCCD09D
+:1019000001F0004C352A27DC30B481EA0C01B2F139
+:10191000200309DAC2F12003044601FA03F5D0409E
+:101920002843D1409C400CE0C3F12002450020FA3E
+:1019300003F418BF44F0010421FA03F091400C4372
+:10194000002174F1004550F1000051EB0C012442DC
+:1019500030BC7FF47BAF70476146002076E7000023
+:10196000C1F30A5340F2FE329B1A14DDD3F1200377
+:101970004FEAE17208DDC90241EA505141F00040EE
+:10198000D84080185040704703F2E13010B1D24384
+:1019900082F000407047002070470000C11768B116
+:1019A0004840401AB0FA80F29040D21CC907C2F5F4
+:1019B000846241EA025202EBD021400570470000E8
+:1019C00070B44FF0004591EA030F40F1B5816B40D0
+:1019D000841A71EB030603D2001BB1411219734143
+:1019E0004FF4001C1CEB410F34BF7CEB430442E07E
+:1019F0000C0DA4EB1356352E4FDC45EAC323DB0A4E
+:101A000045EAC121C912B6F120050DDD63FA05F6DC
+:101A1000EB4086EA0305124218BF45F00105C018E5
+:101A200051F100010CD213E062FA06F5F240554084
+:101A3000F3415A40B340F3405A408018594107D30C
+:101A400049085FEA30005FEA350528BF45F0010527
+:101A500001F58011420875F1004250F1000041EBA0
+:101A600004514E0016F5001F70BC38BF70470020AF
+:101A7000090D090570471CEB410F10D252EA4306CD
+:101A80000BD0BCEB410F05D80C0DAB43661E342EBA
+:101A9000B6DD02E0AB438018594170BC704770BCA2
+:101AA00070470000F0B540F2FF7581EA030C0CF0BE
+:101AB000004C15EA11541DBF15EA1357AC42AF4252
+:101AC000E5E0BC41C1F31301C3F31303801A99414C
+:101AD00043F4801304D2641E4000494180185941E8
+:101AE000C90241EA5051B1FBF3F603FB1611A2FB08
+:101AF0000675D7EBC020A94102D2761E8018594145
+:101B0000C90241EA5051B1FBF3FE03FB1E11A2FBD7
+:101B10000E75D7EBC020A94103D2AEF1010E80189B
+:101B20005941890241EA9051760546EA8E2EB1FB71
+:101B3000F3F603FB1611A2FB0675D7EB8020A94133
+:101B400002D2761E80185941C90241EA50514EEA2C
+:101B5000060EB1FBF3F603FB1611A2FB0675D7EBDD
+:101B6000C020A94102D2761E80185941C90241EA1B
+:101B70005051B1FBF3F703FB1711A2FB0735D3EB71
+:101B8000C020A94167F100070CBF004247F00107E0
+:101B900066F3D5274FEA1E31B80814F5806412DDCC
+:101BA000BD0775F1004250EB0E5051EB045111F599
+:101BB000801F5CBF41EA0C01F0BD4CF07F6141F039
+:101BC000E0410020F0BDBD076D0840EA0E5041F431
+:101BD0008011D4F10104B4F120060ADAC4F1200620
+:101BE0000200E04001FA06F3E1401843B240154319
+:101BF0000EE0342C13DCC6F1200445EA40056D08E4
+:101C000020FA06F2154321FA06F0A1400D43002107
+:101C100075F1004250F1000051EB0C01F0BD0020C5
+:101C20005FEA0C01F0BDCFB992185B41B3FA83F7BC
+:101C300004BFB2FA82F6BF190B3FB7F120062FBFDF
+:101C400002FA06F3BB40C7F1200622FA06F638BFB7
+:101C50003343BA401CB1E419641E33E77F4231F0CC
+:101C60000041B1FA81F404BFB0FA80F6A4190B3C2C
+:101C7000B4F120062FBF00FA06F1A140C4F12006FE
+:101C800020FA06F638BF3143A0403C1B1AE7AC42AD
+:101C90001ABF05EA1357AF4212E050EA41061CBFD3
+:101CA00052EA4306BFE750EA4107304661461CBF8F
+:101CB00041EA0551F0BD52EA430C08BFC143F0BDF3
+:101CC00000204FF4001616EB410F98BF16EB430FA0
+:101CD00008BF16EB410F24BFC14305E016EB430FCD
+:101CE0000CBF61464CEA0551F0BD0000400D49189B
+:101CF00040EA81200CD2490DA1F58061491C40F0D9
+:101D0000004005DBD1F11F0154BFC840C017704728
+:101D100000207047014648B1B0FA80F18840C91CE4
+:101D2000C1F58461090501EBD02140057047012010
+:101D300000F0B6B870470000841A71EB030604D2B5
+:101D40006E40001BB141121973414FF4001C1CEB93
+:101D5000410F34BF7CEB430682E00C0DA4EB13561D
+:101D6000362E7BDC012E45EAC32341DC43EA525385
+:101D700012BFD20292025B08240545EAC12141EA62
+:101D80005051D2EBC020994125D407D1B0FA80F64A
+:101D900010FA06F162D00020203608E0B1FA81F690
+:101DA000B140C6F1200220FA02F21143B0404FEADE
+:101DB000F474B4EB465434F001064FEA74040AD8C4
+:101DC000D6F50016760D04F00044F04061FA06F2F4
+:101DD0005040F1404840C00A40EA415021F00041E3
+:101DE00028BF5FEA500550F1000044EBD12135E0F7
+:101DF000DB0A45EAC121C90AB6F120050EDD42EA37
+:101E00000242120CC5F1200603FA06F6EB4042EA44
+:101E100006056D42984161F100010DE062FA06F598
+:101E2000F240554063FA06FC82EA0C02F3405A4045
+:101E30006D42904161EB030111F4801F05D1641ED6
+:101E4000620502D06D004041494121F480114308F0
+:101E500075F1004350F1000041EB045170BC704734
+:101E60001CEB410F15D223F0004352EA43060BD07E
+:101E70004FEA4C0CBCEB410F04D80C0D661E342EFF
+:101E8000B7DDEBE7801A994150EA410608BF00210F
+:101E9000E4E708BF1CEB430F28BF6FF00001DDE74C
+:101EA00080B5AFF30080024A11001820ABBEFBE7FB
+:101EB0002600020038B5040009D004F17C056868EA
+:101EC00008B900F01EF800F021F8012801D1012026
+:101ED00032BDA06A08B100F02AF800F00AF821F03B
+:101EE0002A01FFE7816000F01BF8BDE8324000F0F6
+:101EF0002EBE2068416821F49041416020688168CD
+:101F0000704700212970204600F049BF24206860F6
+:101F100020680168490849000160204600F040B986
+:101F20002068016841F001010160204670472046A9
+:101F300000F0AABD70B5044604F17C05134668683C
+:101F4000202836D149B3180027D02878012830D06E
+:101F500001222A7004F15406216533807380002029
+:101F6000E86021206860306AC8B1DFF82012C162E1
+:101F7000DFF81C02316A0863316ADFF8180248632F
+:101F80000020316A88632068216D00F12802306AE0
+:101F900001F043F818B100F00EF8012070BD21687F
+:101FA00040200862002028702068816841F080018C
+:101FB00008E0022070BD1020E8600020287020207A
+:101FC000686070478160002070BD206881684A06A3
+:101FD0007047F8B5044640F60F002568E9692A689D
+:101FE000AB6808400DD1880602D5900602D4D8000F
+:101FF00040F18980E16E00294FD02046BDE8F440D1
+:1020000008476548034204BF644E32427BD0CF0785
+:1020100009D5D60507D501262E62D4F8885045F09B
+:102020000105C4F888508D070AD5DD0708D5266854
+:1020300002253562D4F8885045F00405C4F888506C
+:102040004D070AD5DD0708D5266804253562D4F882
+:10205000885045F00205C4F888500D070CD5950648
+:1020600001D4034208D0256808202862D4F88800EB
+:1020700040F00800C4F8880008050BD5500109D5C8
+:1020800025684FF400602862D4F8880040F02000F2
+:10209000C4F88800D4F88800002870D0890607D5D5
+:1020A000900601D4D80003D5E16E09B120468847D7
+:1020B000D4F8880021688A68510602D410F0280FED
+:1020C0001AD0204600F0BEFDFFF77FFF0FD500F0CD
+:1020D00057F860B1DFF890198163A06F00F0E0FF5E
+:1020E00000284CD0A06F816BBDE8F4400847204623
+:1020F000BDE8F24001F0C4B8204601F0C1F800206C
+:10210000C4F88800F1BDC80209D5580207D54FF4BC
+:10211000801028622046BDE8F24001F039B9080677
+:1021200009D5100601D4180205D5216F39B3204610
+:10213000BDE8F440084748060FD550060DD528687D
+:1021400020F0400028602021C4F880100020206783
+:102150002046BDE8F24001F034B9080206D550002F
+:1021600004D52046BDE8F24001F03CB9C80148BFA3
+:10217000002A04D52046BDE8F24001F034B9F1BD93
+:10218000816821F040018160A06F7047992C0008A0
+:10219000C72C0008CD2C000801000010200100040D
+:1021A0002DE9F84F0446DFF8C8082768DFF8C4B8FF
+:1021B0003968DFF8C4A80140A068014320690143E1
+:1021C00060690143E0690143606E014339600026A4
+:1021D0007968E06821F4405101437960B046A16913
+:1021E000DFF8880887421CBF206A0143BA68DFF81D
+:1021F000780A02401143B9604FF48075F96A606A49
+:10220000090940EA0111F9625F454FF400404FF4BB
+:1022100000714FF480624FF400634FF4805C4FF420
+:10222000005E4FF4804929D1DAF800B00BF0030BBF
+:10223000BBF1030F3ED8DFE80BF00237343A4FF022
+:10224000010AD4F81CB05746BBF5004F4FF6F07AA0
+:1022500040F01183012F09D0022F00F05482042F87
+:1022600000F08D82082F00F0C282F5E201F094FCAC
+:102270000146606A002840F01B8242E2DFF8ECB7BA
+:102280005F4517D1DAF800A01AF4406A27D0BAF5F2
+:10229000806F09D0BAF5006F03D0BAF5406F06D051
+:1022A00008E04FF0020A07E04FF0040A04E04FF0A4
+:1022B000080A01E04FF0100ADFF8B0B75F45C0D15F
+:1022C000BAF1000F0BD0BAF1020F49D0BAF1040FE6
+:1022D00000F08280BAF1080F00F0B080B6E301F0A0
+:1022E00053FC0146606A58B3012808BF022028D079
+:1022F000022808BF042024D0032808BF062020D0CD
+:10230000042808BF08201CD0052808BF0A2018D0C0
+:10231000062808BF0C2014D0072808BF102010D0B2
+:10232000082808BF20200CD0092808BF402008D06A
+:102330000A2808BF802004D00B2808BF284600D0F8
+:102340000120B1FBF0F0002800F08283626802EB0C
+:102350004201884203D31103814280F0A18075E3DA
+:10236000606AB0B3012808BFDFF80009EED0022888
+:1023700008BFDFF8FC08E9D0032808BFDFF8F4083D
+:10238000E4D0042808BFDFF8F008DFD0052808BF34
+:10239000DFF8E808DAD0062808BFDFF8E408D5D06F
+:1023A000072808BFDFF8DC08D0D0082808BFDFF80E
+:1023B000D808CBD0092808BFDFF8D008C6D00A2833
+:1023C00008BFDFF8CC08C1D00B2808BF4FF224406B
+:1023D000BCD0DFF8C008B9E701F08CFB0146606AA9
+:1023E00058B3012808BF0220ABD0022808BF042040
+:1023F000A7D0032808BF0620A3D0042808BF0820C0
+:102400009FD0052808BF0A209BD0062808BF0C20B3
+:1024100097D0072808BF102093D0082808BF202095
+:102420008FD0092808BF40208BD00A2808BF802001
+:1024300087D00B2808BF284683D081E7676A002F22
+:1024400084D0012F08BF4846FAD0022F08BF70463B
+:10245000F6D0032F08BF41F25550F1D0042F08BF2A
+:102460006046EDD0052F08BF40F6CC40E8D0062FDF
+:1024700008BF40F6AA2012D0072F08BF18460ED07A
+:10248000082F08BF10460AD0092F08BF084606D0FB
+:102490000A2F08BF284602D00B2F00D1802055E715
+:1024A000BAF1000F0BD0BAF1020F38D0BAF1040F15
+:1024B00000F07280BAF1080F00F0A780ECE001F0A4
+:1024C00063FB0146606A40B3012808BF02251ED0A5
+:1024D000022808BF04251AD0032808BF062516D0F5
+:1024E000042808BF082512D0052808BF0A250ED0E9
+:1024F000062808BF0C250AD0072808BF102506D0DB
+:10250000082808BF202502D0092808BF402572D01E
+:102510000A280CBF80250B286DD001256BE0606A6E
+:10252000002836D0012808BFDFF800682BD0022829
+:1025300008BFDFF8FC6726D0032808BFDFF8F46780
+:1025400021D0042808BFDFF8F0671CD0052808BF99
+:10255000DFF8E86717D0062808BFDFF8E46712D075
+:10256000072808BFDFF8DC670DD0082808BFDFF8B0
+:10257000D86708D0092808BFDFF8D06703D00A2839
+:1025800008BFDFF8CC677CD00B2808BFDFF80467F2
+:1025900077D0DFF8C06774E001F0ACFA0146606AFA
+:1025A00040B3012808BF022525D0022808BF042512
+:1025B00021D0032808BF06251DD0042808BF082500
+:1025C00019D0052808BF0A2515D0062808BF0C25F4
+:1025D00011D0072808BF10250DD0082808BF2025D6
+:1025E00009D0092808BF402505D00A280CBF80253E
+:1025F0000B2800D001256268B1FBF5F650080021D8
+:1026000010EB062051EB166141E0606A002836D0DD
+:10261000012808BF4FF4800633D0022808BF4FF4CA
+:1026200000162ED0032808BFDFF82C6729D0042815
+:1026300008BF4FF4801624D0052808BFDFF81C67B8
+:102640001FD0062808BFDFF818671AD0072808BF70
+:102650004FF4002615D0082808BF4FF4802610D06C
+:10266000092808BF4FF400360BD00A2808BF4FF4E2
+:10267000803606D00B2808BF4FF4004601D04FF437
+:102680000006C246002116EB52004AEB010100236E
+:10269000FEF776FE064601E04FF00108A6F5407011
+:1026A000DFF8C016884280F0D1812168CE60CFE18A
+:1026B000012808BF02251AD0022808BF042516D019
+:1026C000032808BF062512D0042808BF08250ED00D
+:1026D000052808BF0A250AD0062808BF0C2506D001
+:1026E000072808BF102502D0082808BF202575D06C
+:1026F000092808BF402571D00A280CBF80250B2867
+:102700006CD001256AE0606AB0B3012808BFDFF829
+:10271000840521D0022808BFDFF850051CD003280B
+:1027200008BFDFF8440617D0042808BFDFF84005CB
+:1027300012D0052808BFDFF834060DD0062808BFE0
+:10274000DFF8300508D0072808BFDFF82C0503D0D4
+:10275000082808BFDFF82C057AD0092808BFDFF861
+:10276000280575D00A2808BFDFF8200570D00B288F
+:1027700008BFDFF81C056BD0DFF8D40568E001F076
+:10278000B9F90146606A40B3012808BF022525D087
+:10279000022808BF042521D0032808BF06251DD024
+:1027A000042808BF082519D0052808BF0A2515D018
+:1027B000062808BF0C2511D0072808BF10250DD00A
+:1027C000082808BF202509D0092808BF402505D0C2
+:1027D0000A280CBF80250B2800D001256068B1FBBA
+:1027E000F5F1420802EB4102B2FBF0F632E0666A14
+:1027F00066B3012E2CD0022E08BF484628D0032EE7
+:1028000008BF42F6AA2023D0042E08BF70461FD06E
+:10281000052E08BF41F698101AD0062E08BF41F2C7
+:10282000545015D0072E08BF604611D0082E08BF9F
+:1028300018460DD0092E08BF104609D00A2E08BF31
+:10284000084605D00B2E08BF284601D04FF4803033
+:1028500000F014F9B6B201E04FF00108A6F1100043
+:10286000504580F0F3800AEA0601C6F342000143B6
+:102870002068C160ECE0012F07D0022F35D0042F73
+:1028800070D0082F00F0A580D7E001F085F901464F
+:10289000606A40B3012808BF022516D0022808BF8D
+:1028A000042512D0032808BF06250ED0042808BF2F
+:1028B00008250AD0052808BF0A2506D0062808BF23
+:1028C0000C2502D0072808BF10257AD0082808BF99
+:1028D000202576D0092808BF402572D00A280CBFD1
+:1028E00080250B286DD001256BE0606AB0B301280C
+:1028F00008BFDFF8781333D0022808BFDFF8701361
+:102900002ED0032808BFDFF86C1329D0042808BF95
+:10291000DFF8641324D0052808BFDFF860131FD048
+:10292000062808BFDFF858131AD0072808BFDFF8B9
+:10293000541315D0082808BFDFF84C1310D009280D
+:1029400008BFDFF848130BD00A2808BFDFF8401390
+:1029500006D00B2808BF4FF2244101D0DFF8341312
+:10296000606831E001F0C6F80146606A40B30128B2
+:1029700008BF022525D0022808BF042521D003283E
+:1029800008BF06251DD0042808BF082519D0052832
+:1029900008BF0A2515D0062808BF0C2511D0072826
+:1029A00008BF10250DD0082808BF202509D0092808
+:1029B00008BF402505D00A280CBF80250B2800D071
+:1029C00001256068B1FBF5F101EB5001B1FBF0F6B8
+:1029D00031E0666A6EB3012E08BF484629D0022E48
+:1029E00008BF704625D0032E08BF41F2555020D0B5
+:1029F000042E08BF60461CD0052E08BF40F6CC4010
+:102A000017D0062E08BF40F6AA2012D0072E08BF06
+:102A100018460ED0082E08BF10460AD0092E08BF4F
+:102A2000084606D00A2E08BF284602D00B2E08BF43
+:102A3000802000F023F8B6B201E04FF00108A6F1C3
+:102A40001000504502D22068C66001E04FF0010836
+:102A500004F1680001214180018000214160816012
+:102A60004046BDE8F28F00001B2D000800800040AA
+:102A7000F369FFCF0038014088000058616800EB1F
+:102A80005100B0FBF1F6704790F82810CA0706D540
+:102A900002685368C16A23F400330B43536090F813
+:102AA00028108A0706D502685368016B23F4803327
+:102AB0000B43536090F828104A0706D50268536804
+:102AC000416B23F480230B43536090F828100A07CE
+:102AD00006D502685368816B23F400430B435360AF
+:102AE00090F82810CA0606D502689368C16B23F4D3
+:102AF00080530B43936090F828108A0606D502682D
+:102B00009368016C23F400530B43936090F82810F2
+:102B10004A0610D502685368416C23F480130B43B6
+:102B20005360416CB1F5801F05D15368816C23F46B
+:102B3000C0030B43536090F828100A0606D50168BD
+:102B40004A68C06C22F4002202434A607047F8B51C
+:102B5000044604F17C050020E8606FF07E4701F038
+:102B6000A9F80646206801680A0708D50097334689
+:102B700000224FF40011204600F016F860B92068DA
+:102B800001684A070AD50097334600224FF48001B6
+:102B9000204600F009F808B10320F2BD202068604B
+:102BA000A86000202870F2BD2DE9F041069C054682
+:102BB0000E4690461F462868C1693140B1420CBF9D
+:102BC0000120002040451CD114F1010FF3D001F089
+:102BD00071F8C01B844200D314B900F015F80CE062
+:102BE000286801684A07E6D5C1690A05E3D54FF4AC
+:102BF0000062026200F008F8C16000210170032049
+:102C000000E00020BDE8F0812868016821F4D0715F
+:102C100001602868816849084900816005F17C00ED
+:102C2000202141608160704701680A6822F0C0027B
+:102C30000A6001688A6822F400028A602021C0F8D4
+:102C40008010704701680A6822F490720A60DFF809
+:102C50002011026893680B4093602021C0F8841013
+:102C60000021C16670470000FFF4FF1100127A00D6
+:102C700000093D00AAB0280080841E00006A1800E8
+:102C80005558140040420F0020A1070090D00300C7
+:102C900048E801000024F400816A00680268930695
+:102CA00044BF084600F08DBB0020A1F8560008681C
+:102CB000826822F0800282600868FFE7016841F0C4
+:102CC000400101607047806A00F0FABFF8B5846A7D
+:102CD00004F1800504F1560728686E6821688A6847
+:102CE000110606D5212804D1002038802046FFF7A0
+:102CF0009BFF20688168480606D5222E04D100205B
+:102D000038812046FFF79EFFA86840F01000A860B9
+:102D10002046BDE8F24000F0B3BA806A00F15601E7
+:102D200000220A810A8000F0ABBA00000000127A8B
+:102D30000000093D00AAB0280080841E00006A1827
+:102D4000005558140040420F0020A1070090D00306
+:102D50000048E801000024F40055150000CC0C00E8
+:102D600000AA0A0000FD0F005461510000D4300099
+:102D7000FEFFFFEF694981B00A6802430A600968F3
+:102D8000084008E0664881B0016841F40021016014
+:102D9000006800F400200090009801B0704738B53A
+:102DA0008AB004466846142100F08CFF20685D4A12
+:102DB0005D4990423ED108685C4D40F001000860DA
+:102DC000096801F00101059105980120FFF7D2FF84
+:102DD0000C20009002210020019102900321082084
+:102DE000039100F06AF8402000F060F8082000F03D
+:102DF00064F84F482860112000F065F808B101F030
+:102E0000AFF84FF088500690002101200791ADF8EF
+:102E10002010099006A9284601F0A4F808B101F095
+:102E20009FF86567AC6200220021252001F0DCF8E4
+:102E3000252037E03F4A904236D148683E4D40F465
+:102E400080404860486800F4804005900598012063
+:102E5000FFF790FF0220FFF78DFF4FF4006000F0B6
+:102E600025F8072000F029F8C02000900221012059
+:102E700001910290032107200391049069462F4895
+:102E800001F026F92E4828600F2000F01CF808B148
+:102E900001F066F86567AC6200220021242001F091
+:102EA000A3F8242001F0BDF80BB030BD0090022142
+:102EB00000200290039001917047049069464FF002
+:102EC000904001F005B968601020A8600020E8601B
+:102ED0008020286100206861A861E8612862284696
+:102EE00000F034B810B5044616492068884213D162
+:102EF00001F0D2F901F0D0F91348016821F44071D2
+:102F000041F480710160026842F400420260204690
+:102F1000BDE8104001F0D4B910BD00004C000058CD
+:102F200050000058008000405C0000582C15002024
+:102F300044000240003801408C1500200004004885
+:102F400044040240002800409000005838B50400B6
+:102F500001D1012032BD2168DFF8FC02814204F179
+:102F6000240500F042F8022068700A68A0686FF338
+:102F70000E120243E0680243206902436069024383
+:102F8000A0690243E0690243206A02430A602046C6
+:102F900000F039F9A068B0F5804F04BF00216160EE
+:102FA000696A207900F014F838B1052805D2204666
+:102FB00000F043F900F012F803E000202863686392
+:102FC000A8630020A861012068700020287032BD2D
+:102FD0000860A96AE86A486060687047296B002049
+:102FE0000860696BA86B486070470AD2DFF86C0212
+:102FF00042181423B2FBF3F292002A62DFF8600257
+:1030000009E0DFF8600242181423B2FBF3F29200E9
+:103010002A62DFF85402E8617047F8B5044604F10B
+:10302000240600253078012801D10220F2BD0127B5
+:103030003770707801282FD102277770B56120682A
+:1030400007687F087F000760204600F0C0F821680D
+:10305000F06820B10A6842F00E020A6008E00868D1
+:1030600020F0040008602068016841F00A01016056
+:10307000706A0168CA0303D5026842F48072026074
+:10308000306B18B1016841F48071016020680268FA
+:1030900042F00102026001E0357002252846F2BDCF
+:1030A00038B500F1240200245178022903D004200D
+:1030B0009061012428E001680B6823F00E030B6087
+:1030C00001680D686D086D000D60516A0B6823F48E
+:1030D00080730B60012192F82030D56903F01C0346
+:1030E00099406960936AD16A5960116B31B10B687C
+:1030F00023F480730B60536B916B59600121517005
+:103100001470516901B18847204632BDF8B500F10D
+:1031100024010423CA6914680268156891F82060C4
+:1031200006F01C0603FA06F73C4210D06F070ED5D6
+:103130001468A50603D4156825F00405156000F091
+:103140003DF8C968002938D0BDE8F440084702239B
+:1031500003FA06F73C4213D0AF0711D51468A50651
+:1031600005D4156825F00A05156001224A7000F0A3
+:1031700025F800220A708968F9B1BDE8F4400847D3
+:10318000082303FA06F6344217D02B0715D5136827
+:1031900023F00E031360012291F82030CC6903F074
+:1031A0001C039A40626001228A614A7000220A7000
+:1031B000096911B1BDE8F4400847F1BD91F820203C
+:1031C000CC6902F01C02934063607047000078B540
+:1031D000C56C046D6C60446D14B1846DC56D656023
+:1031E000012590F84440066C04F01C04A54075606D
+:1031F000046863608068102802D1A260E16071BD3C
+:10320000A160E26071BD416C0268134B89089A426B
+:1032100034BF164B164B03EB8101816402F0FF02B1
+:10322000083A1421B2FBF1F1124AC26401F01C0108
+:10323000012202FA01F10165704701790E4A02EBA1
+:1032400081024265491E0D4A826501F00301012297
+:103250008A40C2657047000008040240F8FFFDBFC5
+:1032600000000240F8FBFDBF0004024000080240DD
+:103270001C08024080080240FC080240400902404D
+:103280007047000010B500F17C010A78012A01D1D5
+:10329000022010BD01230B7024224A6002681368CB
+:1032A00014686408640014600022426623F000532E
+:1032B00000680360202048600020087010BD70B5D1
+:1032C00000F01EF801D1022070BD00F01FF822F0BE
+:1032D000604209E070B500F013F801D1022070BD22
+:1032E00000F014F822F0606211438160204600F083
+:1032F0001AF820680660202068600020287070BDE1
+:10330000044604F17C0528780128704701222A70C0
+:103310002420686020680668026852085200026033
+:10332000206882687047FFB50FF254020FF258060A
+:10333000D2E9003402A9C1E90034D6E90071CDE92F
+:103340000071416E11B90121012213E001688A6800
+:103350008968520E02F00702490F02AC655CA45C5A
+:103360001DF801101DF80220ED00E40095FBF1F1BD
+:1033700094FBF2F2683041800280FFBD0000000043
+:103380000101010307010000080402040801010112
+:103390007047000010B5002488B9114803600E483A
+:1033A0000E4B0360FEF7C6FD012805D007D30328A6
+:1033B00004D038BF022402E0012400E003242046A8
+:1033C00010BD00680549884204D1054908680028F5
+:1033D00018BF004770470000A013002000380140CC
+:1033E000C0170020704770474FF0B040006800F0F1
+:1033F000F000B02888BFB02070472DE9F0410400EC
+:1034000068D0207881064FF0B04539D5A868E968C2
+:1034100010F00C0001F0030104D00C2808BF0129B2
+:1034200040F083802868800702D5E069002851D0E9
+:10343000FFF7DAFF616A884207D2084600F0BDFB59
+:1034400000281BD100F05AFA10E0286820F0F000A4
+:10345000014329606968206A21F47F4141EA002123
+:103460006960606A00F0A9FB002807D100F068FFDE
+:10347000DFF8E007006800F0F1FF002840F08881E5
+:103480002078C10711D5A868E96800F00C00082869
+:1034900001F0030103D00C2808BF032967D1286875
+:1034A000800302D56068002814D0217888071AD5D7
+:1034B000A868E96800F00C00042801F0030104D0BA
+:1034C0000C2808BF022940F087802868400503D5F2
+:1034D000E068002800F05C816968206921F0FE4105
+:1034E00041EA006169602168DFF86C6711F0180F2C
+:1034F00000F078816069002800F0A880C906706833
+:1035000040F19580800707D4706840F0010000F01A
+:103510000EFA07467068800700F13C8100F0CAFB94
+:10352000C01B0328F6D30320E1E1E06978B12968E4
+:1035300041F0010100F0D4FA06462868800700F146
+:10354000388100F0B7FB801B0328F6D3EBE728682F
+:103550004008400000F0E5F90646286800F0CAF986
+:103560008ED000F0A7FB801B0328F6D3DBE7606852
+:10357000B0F5803F06D0B0F5A02F296807D141F4FF
+:1035800080212960286840F48030286006E021F41A
+:10359000803129602A6822F480222A60606860B144
+:1035A00000F088FB0646286880033FF57EAF00F0F8
+:1035B00081FB801B6528F6D3B5E700F07BFB064650
+:1035C0002868400C10F001003FF46FAF00F072FB70
+:1035D000801B6528F4D3A6E7E06878B1296841F438
+:1035E000807100F07DFA06462868400500F1E4800D
+:1035F00000F060FB801B0328F6D394E7286820F4D2
+:10360000807000F08EF906462868800A10F00100EC
+:103610003FF469AF00F04EFB801B0328F4D382E730
+:1036200000F048FBC01B0328C0F0D8807BE740F0C7
+:10363000010000F07CF907467068800700F1E9801E
+:1036400000F038FBC01B0328F6D36CE7706820F04D
+:10365000040000F06CF907467068C00810F0010023
+:1036600000F0E68000F026FBC01B0428F4D35AE7E4
+:103670000528306806D140F004003060316841F020
+:10368000010105E0400840003060316821F004018C
+:103690003160A06841F2893768B100F00BFB8046C9
+:1036A0003068800700F1D98000F004FBA0EB08002F
+:1036B000B842F5D337E700F0FDFA8046306800F0F5
+:1036C00019F900F0CA8000F0F5FAA0EB0800B84242
+:1036D000F4D328E700F0EEFAC01B0328C0F0CB803B
+:1036E00021E7B06840084000B06000F0E3FA074608
+:1036F000B06800F0FFF800F0C28000F0DBFAC01BF9
+:103700000328F5D30FE700F0D5FA801B0328C0F09B
+:10371000C88008E700F0CEFA001B0328C0F0E28062
+:1037200001E7E968DFF8340589088900E960E9689C
+:103730000140E96000F0BEFA044600F0EDF825D043
+:1037400000F0B8FA001B0328F7D3ECE601281FD0DD
+:10375000E868226B00F00301914202BF00F07001A3
+:10376000626B914214D1A26BC0F30621914202BF59
+:1037700000F47811E26B91420AD1226C00F0606192
+:10378000914202BF00F06040616C884200F0AE8060
+:103790000120ACE0706840F0040000F0C8F8074673
+:1037A0007068000710D400F085FAC01B0428F7D316
+:1037B000B9E600F0A3F863E66868216920F0FE40EE
+:1037C00040EA016068608EE67068A16920F470606C
+:1037D00040EA0120706000F0A7F8074600F089F881
+:1037E0007FF41EAF2078410737D5DFF8747438684E
+:1037F000C10529D400F050FD00F05CFA804638681D
+:10380000C10521D400F056FAA0EB08000328F6D336
+:1038100089E6706820F0040070607068C00810F0DD
+:103820000100DFD000F046FAC01B0428F5D37AE689
+:1038300000F07AF8074600F05CF8D3D000F03AFACE
+:10384000C01B0328F7D36EE6A06801287FF410AFF1
+:10385000306840F0010030601BE7217848060ED543
+:10386000A06A00283FF43DAFB16841F00101B160AA
+:1038700000F020FA0746B06880077FF52BAFE06ABA
+:10388000A0B3A96801F00C010C293FF45FAF022836
+:10389000286820F0807028607FF443AF00F00AFAB7
+:1038A000064600F039F87FF42EAFE968DFF8B4037C
+:1038B000A26B0140206B0143606B0143E06B41EA66
+:1038C00002210143206C0143606C0143E9602868D8
+:1038D00040F080702860E96841F08051E96000F0B4
+:1038E000E9F90446286880017FF514AF0020BDE89F
+:1038F000F0817068400810F0010070472968606A24
+:1039000021F0F001014329606868216A20F47F40BA
+:1039100040EA0120686070472868400E10F00100FE
+:103920007047286000F0C6B97068400840007060B9
+:1039300000F0C0B92DE9F8430400884644D0DFF810
+:10394000286300F0C8F847D200F0CDF8074600F031
+:10395000C2F841D000F0AEF9C01B0228F7D903200D
+:10396000B7E000F0A7F9401B022843D9F7E700F0C1
+:10397000A1F9A0EB090002284CD9F0E700F09AF970
+:10398000A0EB0900022854D9E9E700F093F9401BA5
+:1039900002285DD9E3E700F08DF9401B022867D9C2
+:1039A000DDE700F087F9401B484577D3D7E70328C8
+:1039B00002D13968890103E00028396802D18907FA
+:1039C00062D401E049055FD4012082E000F072F981
+:1039D000C01B022872D9C2E7207881074FF0B04798
+:1039E0000BD5B968A06821F0F0010143B96000F07F
+:1039F00061F90546B868C003B3D52078DFF85052A6
+:103A000081060AD52968606921F0F001014300F0C0
+:103A100067F8814628688003A9D5207841060BD530
+:103A20002968A0690909090141EA101100F058F854
+:103A300081462868C003A1D5207841070BD5B96815
+:103A4000E06821F4E0610143B96000F033F9054614
+:103A5000B868800399D5207801070CD5B86821692A
+:103A600020F4605040EAC100B86000F023F9054638
+:103A7000B86840038FD52078C10717D56068022841
+:103A800095D1396889039FD5B968890840EA8100D2
+:103A9000B86041F2893900F00DF90546B8686168EF
+:103AA00000F00C00B0EB810F7FF47BAF306800F0CA
+:103AB0000700804505D200F016F8074600F00BF825
+:103AC00084D100F03DFC00F0FFFCBDE8F24300F0C3
+:103AD000C5BCBDE8F283306800F007004045704780
+:103AE000296000F0E7B83168C90848EAC1013160CF
+:103AF00000F0E0B838B54FF0B0445D4DA16811F06A
+:103B00000C0106D1FFF770FCC0F3031055F820003C
+:103B100032BD0429574A05D00829574804D12168E5
+:103B2000C90222D5104632BDE16801F00301022925
+:103B300004D0032904D12168C90207D5104605E045
+:103B4000FFF752FCC0F3031055F82000E168E2686B
+:103B5000E368C1F306214843C2F30211491C5B0F1D
+:103B6000B0FBF1F05B1CB0FBF3F032BD80B5FFF7AA
+:103B7000C1FF3E49FFE7414A0968C1F3031152F80A
+:103B80002110B0FBF1F002BD80B5FFF7EFFF00F0B0
+:103B900010F8C1F3022106E080B5FFF7E7FF00F05F
+:103BA00008F8C1F3C22112F8211001F01F01C8402A
+:103BB00002BD2E49324A0968704770B52C49B128B8
+:103BC0002EBFCC6AC0F3031051F82040204805688E
+:103BD00000F08EFC29492B4A05F00F0551F82510FD
+:103BE000B4FBF1F10024B1FBF2F1B0F5007F0FF26C
+:103BF000B402204609D10FF2900353F820508D42B1
+:103C000014D2401C0328F8D912E00FF28C0353F8A9
+:103C100020508D420AD2401C0328F8D308E000F05F
+:103C200049F8801B03280BD3032070BD52F82040B5
+:103C30000D4D2868C00844EAC000FFF772FE064632
+:103C4000296801F00701A142E9D1002070BD000000
+:103C5000080100585410002090000058FFFFFEEEAD
+:103C6000000400588C80C111004000580800005822
+:103C70001C4400080024F4000048E801DC4300086C
+:103C8000107C000840420F001200000024000000D9
+:103C90003600000040000000060000000C0000009C
+:103CA0001000000000000000010000000200000001
+:103CB0000300000001480068704700BF501000205A
+:103CC00070470000002200F01BBC0000974900E094
+:103CD000974981B00A6802430A6009680840009069
+:103CE000009801B0704710B500F0DAFB914C6068A5
+:103CF00040010ED56068C0000BD400F0CDFA00F092
+:103D0000CBFA206840F480302060216821F48031B3
+:103D1000216000F0D0F8002000F00CFC40B1807968
+:103D20008549E160E16821F47C5141EA0021E160CC
+:103D300000F047F88148824C016800220260026965
+:103D400002F0500202610420FFF7C2FF0120FFF7DA
+:103D5000BFFF0220FFF7BCFF0420FFF7B7FF0220E0
+:103D6000FFF7B4FF0120FFF7B1FF00220F210E2063
+:103D700000F03AF90E2000F054F900220F213A2009
+:103D800000F032F93A2000F04CF900216D48416012
+:103D90000F218160046047F6FF71C16000F0DCFB19
+:103DA000CA206062FF2153206062A068C008C00082
+:103DB000A060616200F074FC4FF0FF3000F0FEFC88
+:103DC000FAE710B5AEB01CA84821FFF77BFF01A8A9
+:103DD0001C21FFF777FF08A85021FFF773FF554814
+:103DE000016821F01801016007215748026822F498
+:103DF000C06242F4007202604FF48032006800F446
+:103E0000C06000904FF4807400981C9101201E90B7
+:103E10000021402020901D9227911F941CA8FFF79D
+:103E2000ECFA6F200190022100200291039004908F
+:103E3000059006900790012101A8FFF77BFD43F64E
+:103E40000300089000214FF4804019900E910F91CB
+:103E5000102002211B901A91189408A800F0A0FDD0
+:103E60002EB010BD10B5394C394800F017F84FF49A
+:103E70000040E061002020626062A0622046FEF700
+:103E800019F800212046FFF71AFA00212046FFF713
+:103E900021FA2046BDE81040FFF7F4B920604FF446
+:103EA000E13060600020A060E06020610C20606173
+:103EB0000020A0617047274881B0016841F480115B
+:103EC00001603F21006800F48010009000982248B3
+:103ED00041604161016841F47C110160026942F472
+:103EE0007C120261016841F03F010160026942F009
+:103EF0003F02026101B0704738B50446FFF7DAFEB1
+:103F000014F1010F054609D000F0E1FA041905E0AB
+:103F10001248016821F00401016030BFFFF7CAFEBA
+:103F2000401BA042F4D331BD0000000048000058FF
+:103F30004C00005890000058FECAFECA8008005885
+:103F400000280040B816002000040058A0130020EC
+:103F50000038014050000058040C005810ED00E0FB
+:103F60007047000018B500F12402507801281BD1D9
+:103F70001378012B01D1022012BD536A10701C6806
+:103F80000A48044008680443C868401E44EAC04424
+:103F900048680443087A497A44EA004444EA4124E0
+:103FA0001C600020107012BD012012BDFFFD00E05A
+:103FB0000901020081B002D43C48815405E03C482C
+:103FC00002F00F02104400F8041C01B07047394A97
+:103FD00013684FF6FF0100020B4000F4E060184345
+:103FE000354908431060704738B5324B1C68C4F33C
+:103FF0000223C3F10704052C28BF04241D1D072D2F
+:1040000034BF0023DB1E012505FA04F4641E2140A1
+:10401000994005FA03F35B1E1A401143BDE8344092
+:10402000C6E7010007D4012200F01F01234B8A409C
+:10403000400943F82020704701000BD4012200F012
+:104040001F011F4B8A40400943F82020BFF34F8FC8
+:10405000BFF36F8F704710B5401EB0F1807F01D362
+:10406000012010BD174C60600F214FF0FF30FFF7AB
+:104070009FFF0022A26007202060002010BD0100E9
+:1040800007D4012200F01F010F4B8A40400943F87A
+:1040900020207047010007D4012200F01F010B4BC4
+:1040A0008A40400943F820207047000000E400E007
+:1040B00018ED00E00CED00E00000FA0500E100E082
+:1040C00080E100E010E000E000E200E080E200E0DB
+:1040D0002DE9F84F4FF0000C674A684BDFF8A081DC
+:1040E0004FF00F0982460F4633E0664DAA4514BFD4
+:1040F000072504258D40254348F82E50C1431C68F0
+:1041000001EA040E7C68E50348BF40EA0E0EC3F8DE
+:1041100000E05C6801EA040E7C68A50348BF40EA41
+:104120000E0EC3F804E0146801EA040E7C68E50290
+:1041300048BF40EA0E0EC2F800E0546801EA040EDF
+:1041400079688C0248BF40EA0E0EC2F804E00CF118
+:10415000010C396831FA0CF000F07C80012000FA83
+:104160000CFE1EEA0100F2D07C68022C18BF122C53
+:104170004FEA8C0110D14FEADC040AEB840401F011
+:104180001C05266A09FA05FB26EA0B06D7F810B0CB
+:104190000BFA05F5354325624FEA4C040325DAF89E
+:1041A000006097F804B0A540ED430BF0030B2E40E0
+:1041B0000BFA04FB4BEA0606CAF800607E68012E83
+:1041C00018BF022E03D0112E18BF122E17D1DAF805
+:1041D0000860D7F80CB02E400BFA04FB4BEA060639
+:1041E000CAF80860DAF8046026EA0E0E7E68C6F3A4
+:1041F000001606FA0CF646EA0E06CAF80460DAF86B
+:104200000C603540BE6806FA04F42C43CAF80C4032
+:104210007C68E4009BD54FEA9C0E58F82E5001F0C4
+:104220000C0109FA01F425EA0404BAF1904F08BF21
+:1042300000250ED0144DAA4508BF012509D0134D05
+:10424000AA4508BF022504D0114DAA457FF44DAF01
+:1042500003254FE7BDE8F18F81B0002A14BF8161CB
+:10426000816201B070470B4A136803421CBF1060A3
+:1042700000F096BA70470000000800588008005807
+:1042800008000140001000480004004800080048F1
+:10429000000C00480C0800580248016841F4807185
+:1042A00001607047000400588A60FF210268516273
+:1042B000012180F82110002180F820100020704793
+:1042C00090F82010012901D102207047012280F8C6
+:1042D0002020022180F82110CA2102685162532156
+:1042E0000368596201688A6842F02002FFF7DCBF68
+:1042F0003249002008604FF4E0223148016841F45F
+:10430000700101604FF0B041086840F001000860A2
+:104310008A602C480A6802402B480A60036823F030
+:104320000503036042685208520042600022274899
+:10433000C8600861086820F4802008608A617047BE
+:104340004FF0B0410FF2D4000A68C2F3031250F8E4
+:1043500022008A6802F00C02042A04D0082A04D041
+:104360000C2A04D01CE01A481AE01A4818E0CA685F
+:10437000CB68C3F3021302F003025B1C022A08BFDE
+:10438000134802D0032A08BF1248B0FBF3F2C868F2
+:10439000CB68C0F306205B0F42435B1CB2FBF3F01B
+:1043A0000D4A0FF23803106088681168C0F30310DB
+:1043B00053F82000B1FBF0F01060704708ED00E00A
+:1043C00088ED00E0FBFEF6FA94000058001004228D
+:1043D0000024F4000048E8017410002001000000EF
+:1043E00003000000050000000100000001000000C3
+:1043F000060000000A00000020000000020000008B
+:104400000400000008000000100000004000000050
+:10441000800000000001000000020000A0860100F2
+:10442000400D0300801A060000350C0040420F00CA
+:1044300080841E0000093D0000127A000024F40070
+:1044400000366E010048E801006CDC02000000004C
+:1044500000000000000000000000000070B50F4EDA
+:104460000446B0680025A8B1FFF780FBB2684FF49E
+:104470007A71B1FBF2F1B0FBF1F0FFF7ECFD48B956
+:10448000102C07D2002221464FF0FF30FFF7ACFD81
+:10449000746000E00125284670BD00BF5010002068
+:1044A000104810B5016841F4807101600320FFF7E6
+:1044B0008EFD0020FFF7D2FF0024002814BF012446
+:1044C000FEF760FC204610BD07484068704706486C
+:1044D000806870470548FFE7016841F0010101600D
+:1044E000704700000040005850100020042004E0F5
+:1044F000DFF80800006800F4C0607047000400584E
+:1045000000B500BF130096469446103928BFA0E8B6
+:104510000C50FAD85FEA417C28BF0CC048BF40F875
+:10452000042BC90728BF20F8022B48BF00F8012B35
+:1045300000BD000001460648064AC3798B4218BFF9
+:10454000904218BF0838F8D18B4218BF002070473E
+:10455000F873FF1F0070FF1F38B5040044D094F8B3
+:10456000210028B9002184F820102046FEF7BAFC6B
+:1045700000F049F8FF2510B100F03FF834E0216861
+:10458000DFF8B0008A6802408A6021688A68636840
+:1045900020690343A06903431A438A602168E068E5
+:1045A000086120680169A26841EA0241016120684E
+:1045B000C16821F08001C1602068C16C8908890050
+:1045C000C1642168CA6CE369606903431A43CA6421
+:1045D00020688168880609D400F020F830B120688E
+:1045E0004562042100F01FF8012032BD20684562B9
+:1045F000012184F82110002032BD20684562042189
+:1046000084F821107047022084F82100CA20216814
+:104610004862532022685062204626E020460BE084
+:104620002068C0F8248084F82110002084F820003D
+:1046300070470000BFFF8FFF70B5044640F2E936B7
+:104640002068C16821F0A001C160FFF733FB054677
+:104650002068C168880606D4FFF72CFB401BB042D7
+:10466000F6D3032070BD002070BD70B504462068ED
+:10467000C1684A0612D44FF0FF32C26040F2E936F8
+:10468000FFF718FB05462068C168480606D4FFF707
+:1046900011FB401BB042F6D3032070BD002070BD5B
+:1046A00010B52848284C88B0016841F400410160E9
+:1046B00000F0F4FA2549002000F081FCFFF70AFF22
+:1046C0002348016841F480310160026C42F4803279
+:1046D000026400F0CEFD0121012000F0E4FA002088
+:1046E00000F011FE012000F00EFE022000F00BFE93
+:1046F000012000F030FE0121002000F040FE00F01B
+:1047000095FE144A0021402000F0BBF804F23C5012
+:104710000FF245010090019169460FF2410000F04F
+:1047200073FF04F25470029004F5C96140F23C50EA
+:1047300005900391049402A800F0FEFE00F074FEC0
+:1047400008B010BD0800005824000320B81600204F
+:10475000900800584B5600087047000080B500F0E4
+:1047600022FF00F0F5FFBDE804400021012000F029
+:104770009ABA70474FF0FF3000F020B80021402077
+:1047800000F08CB8022000F0ABB8022000F0B0B806
+:10479000FFF768BB13460A4601460020FEF7FABD44
+:1047A000012805D0022805D0102805D101F0F0B865
+:1047B00001F0FDB801F0FCB8704700002DE9FC479E
+:1047C000594CDFF86891A5692840A0614FF0010AB3
+:1047D0004FF0FF3830E0491C54F831000642FAD05F
+:1047E00004EBC107184079681040014208BFC7F8C0
+:1047F00004807E68304000F09BF860620AFA00F0A6
+:1048000086437E60EFF3108172B6626A20690AFA0D
+:1048100002F2D24310402061022004EBC00353F89F
+:10482000086C1640401E43F8086CF6D181F31088DE
+:10483000606A59F82010884763692069A2691840A6
+:10484000104207D0E069216A084203D1002103EA3F
+:104850000206C1E701F0E6FAEFF3108972B62169AA
+:1048600060690140A069014201BFE169206A01421B
+:10487000FFF77FFF89F3108801F0D5FAA561BDE845
+:10488000F38738B51446EFF3108572B600F050F890
+:10489000264941F8204085F3108831BD10B5EFF36B
+:1048A000108272B6204B1C6904431C6153F83140DE
+:1048B000204343F8310082F3108810BDEFF31081DC
+:1048C00072B6194A536923EA000005E0EFF310813C
+:1048D00072B6154A53691843506181F310887047C6
+:1048E000EFF3108172B6104AD3691843D061F4E730
+:1048F0002DE9F0410C4C626A266A2062012101FA1E
+:1049000002F803E039464046FFF734FF276AE569BD
+:104910003D42F7D0404600F00BF825EA0707E76173
+:1049200026626062BDE8F081281000202C1400206F
+:1049300002460020110C090404BF1020120412F0DA
+:104940007F4F04BF083012020FF2180112F0704FAF
+:1049500004BF001D1201120FC0F11F00895C401A34
+:104960007047000004030202010101010000000081
+:1049700000000000DFF820130A68030903F47F2316
+:1049800000019A4300F47F2000F082B9DFF8082389
+:104990001368010C23EA014343EA004313607047A4
+:1049A0002DE9F843054600242878DFF8EC6241063B
+:1049B000A0464FF0B0472DD5286B70B1B0F5800FF1
+:1049C00006D0B0F5000F18BFB0F5400F17D01FE0AC
+:1049D000F86840F48030F860EDE0386820F08060DE
+:1049E0003860FFF767F981463868000140F1D080F0
+:1049F000FFF760F9A0EB09000228F5D90324D7E0FE
+:104A0000FFF758F9A0EB0900022840F2C980F5E74A
+:104A10000124A0462868010531D5B06800F440782B
+:104A2000286C80452AD0FFF737FCB8F1000FB16839
+:104A300005D1286C21F440710143B1601EE0B068DB
+:104A400040F48030B06021F44071B06820F48030D0
+:104A5000B060286C0143B160B068C0070ED5FFF7A5
+:104A600029F9804641F28939B068800706D4FFF7FA
+:104A700021F9A0EB08004845F6D30324A046287886
+:104A8000C10705D53168A869890840EA810131600C
+:104A90002878810705D53168E86921F44061014330
+:104AA00031602878C10644BFA86AFFF76FFF2878F5
+:104AB000810644BFE86AFFF769FF2878410744BFD1
+:104AC000286AFFF757FF2878010744BF686AFFF795
+:104AD00051FF2868C1051BD53168686B21F0406122
+:104AE00001433160686BB0F1006F00F0BDF8686B96
+:104AF000B0F1806F75D100F0BDF804463868000150
+:104B000060D5FFF7D7F8001B0228F7D94FF003084C
+:104B100067E0FFF7CFF8001B02285BD9F6E73168A2
+:104B200021F04041316020F08050326822F0406234
+:104B300010433060A86BB0F1C05F00F095F82868B2
+:104B400041056DD53168E86B21F04051014331607A
+:104B5000E86BB0F1005F03D1F96841F48031F9608E
+:104B6000E86BB0F1805F5BD100F084F804463868F0
+:104B7000000146D5FFF79EF8001B0228F7D94FF039
+:104B800003084DE0FFF796F8001B022841D9F6E72D
+:104B900000F061F8A86821F4781100F071F88146FE
+:104BA000386800017FF52CAF3969686901433961C4
+:104BB000002C7FF42EAF3168286B21F440010143B3
+:104BC000316027E700F047F8E86821F0606100F005
+:104BD00057F80446386800019BD539696869014374
+:104BE000396128688105AAD5A86BB0F1804F1CBF38
+:104BF000B0F1004F002892D1316821F040410843C4
+:104C000097E700F028F8286921F0604100F038F8B3
+:104C1000044638680001B5D53969686901433961CE
+:104C20002868C10405D5F168686C21F4404101434E
+:104C3000F160286881040BD5796AE86C21F03001B5
+:104C400001437962796AA86C890840EA8101796236
+:104C50004046BDE8F2833869696820F4FE4040EAC6
+:104C6000012038613969704703D1F96841F08071DA
+:104C7000F9607047396821F080613960FFF71AB830
+:104C800001433961386840F080603860FFF712B83E
+:104C90001043086070470000880000580C4800214D
+:104CA00001604160704710B500F00CF85C6819B104
+:104CB000012904D1204301E024EA0000586082F376
+:104CC000108810BDEFF3108272B6014B70470000E0
+:104CD00084170020DFF83C150A6892B200E0024613
+:104CE000086880B28242FAD170472DE9FC4104463F
+:104CF0001825DFF82485DFF82465684308EB0007F2
+:104D00003078062808D131787170347078754FF09A
+:104D1000FF307060002039E000F077F8B9680918BA
+:104D2000B96008F10803B96832786A439A58914229
+:104D3000327813D308F1150315FB02FC13F80C307D
+:104D4000062B25D008F108066B43F358994222BF81
+:104D500008F115036A439A5CEED219E011463378E4
+:104D600069439A420BD008F1140308F1150C5B5CFF
+:104D700015FB03F50CF805407A753B7500E07A7574
+:104D800008F114025454317871703470BDE8F68122
+:104D90001146694308F115035B5C062B04D008F14A
+:104DA000140615FB03F574557B753A7508F1150269
+:104DB0005454EBE7F8B5DFF86434DFF85C541E7840
+:104DC000182402466243B0422A4404D1187858702D
+:104DD000507D18700FE0167D507D92F815C005F1DA
+:104DE00015076643062807F806C004D0167D14355B
+:104DF00014FB00F42E55012010731878062802BF0A
+:104E000000294FF0FF315960F1BD10B5DFF80C44B7
+:104E1000606810F1010F0FD0FFF75CFF6168DFF8E9
+:104E20000024814261683CBF5388C918081A517830
+:104E300048431178C84000E0002080B210BD2DE941
+:104E4000F84FDFF8DC53DFF8DCB3D5F80880D8F88A
+:104E50000000DBF800104A0500F090F9DFF8BC63B1
+:104E6000DFF8B4A321F4806181604FF01809347831
+:104E70000AF1080019FB04F14758FFF7C6FF874203
+:104E800017D200270121B170062C3DD019FB04F484
+:104E90000AF108010AF108020959814223BF0AF107
+:104EA00008010959091A002111510AEB04014C7D2E
+:104EB000EAE7A9884118B94202D2AF880021E2E7A7
+:104EC0003F1ADFE7022802DA2878012800D07F1E87
+:104ED000D8F80000C1684A07FAD500F055F9DBF8A8
+:104EE0000C00000CBFB247EA0047CBF80C70FFF78C
+:104EF000F1FE7060A8680068816841F4806181609B
+:104F0000AFF30080BDE8F18FB8B20028DAD1FFF727
+:104F1000E1FE70600320BDE8F24FFFF7B0B82DE965
+:104F2000F843EFF3108872B6BD4DBB4BA86801681B
+:104F3000CA224A6253204862B84A886820F48060D6
+:104F4000886018201678374647431F44387B02286C
+:104F500026D13C68D7F810909078F0B17A7B012A7E
+:104F60000AD101213046FFF725FF88F310887968C0
+:104F7000304600F016F904E088F31088304600F05F
+:104F8000C1F8A8680068CA214162224653214162E3
+:104F90004846314600F050F90BE0FFF750FF06E0BD
+:104FA000C8684207FCD500F07EF89F49086088F386
+:104FB0001088FF21A86802685162BDE8F183F8B546
+:104FC000974CA160CA2209684A6253224A62954AF4
+:104FD000136843F020031360136803F00703C3F161
+:104FE0000403237095682D0C05F07F056D1C65701A
+:104FF000EDB29268C2F30E02521C628092B2521E4F
+:105000006A43A2F5A072DA404FF6FF739A422CBFB2
+:10501000A380A280854A136843F400231360844B65
+:105020001D6845F400251D6048BB7C487A4E01236D
+:10503000837018254FF0FF33436000235FFA83FC31
+:1050400006F10C0715FB0CFC4FF0000E07F80CE006
+:105050005B1CDFB2062FF1DB06230370886820F4A7
+:105060008060886000F01FF8D0600320FFF712F81E
+:10507000A1680868826842F48042826005E0C868DE
+:10508000410544BF0320FEF7FAFFA1680A68FF202C
+:105090005062002203210320FEF7A6FFBDE8F24084
+:1050A0000320FEF7BEBFC86800F0800060F4906087
+:1050B000C8604FF400207047F0B504460025EFF3B8
+:1050C000108672B61827DFF850C10CF10C0007FBF0
+:1050D00005FE10F80E0010B16D1C062DF5DB062D37
+:1050E0000CD06F430CEB07000127077386F3108881
+:1050F0000461427303600D700020F0BD86F31088D8
+:105100000120F0BDF8B50746EFF3108472B6032016
+:10511000FEF792FF424DAE683068CA2141623A46BE
+:1051200053214162182043494243895C02291BD123
+:1051300000213846FFF73EFE3848017806290ED197
+:10514000306838490A68530500F018F821F4806186
+:105150008160C1684A07FCD500F016F804E0407889
+:10516000884218BFFFF76BFEA9680A68FF205062EB
+:105170000320FEF756FF84F31088F1BD02D5C16805
+:105180004A07FCD481687047C16801F0800161F46E
+:105190009061C1604FF40020234908600320FEF7AE
+:1051A00079BF2DE9F04180460F46424618201A4942
+:1051B00042438C18207B022804BF4046FFF7A2FF21
+:1051C000EFF3108572B60320FEF736FF144EB06879
+:1051D0000068CA2141625321416202202073A76006
+:1051E00067604046FFF781FD0C490A784978914293
+:1051F00002D0FFF724FE02E0A168081AA060FF2099
+:10520000B1680A6850620320FEF70BFF85F310882F
+:10521000BDE8F0812828004084120020B417002047
+:1052200070170020082800400C080058000800589B
+:1052300080080058901200201047000038B5EFF3A6
+:10524000108472B6284D6946281D00F006FF694695
+:10525000281D00F05FFF38B184F31088BDF80010FE
+:10526000224AFFF797FA31BD0120287084F3108895
+:1052700031BD80B5FFF78CFA0221009100231A4856
+:1052800000F124014FF48052001D00F0CDFD01BD5E
+:1052900000BFF8B514460026EFF3108510F1010F9A
+:1052A0001ED001281CBF02284FF0FF3618D1BCB118
+:1052B000264672B60C4F012392B2381D00F0C8FD8D
+:1052C00000281CBF3978002908D000223A7085F3E5
+:1052D0001088A1B2054AFFF75DFA01E085F3108856
+:1052E0003046F2BD00000000040000203D520008DE
+:1052F000444981B00A6802430A6009680840009086
+:10530000009801B0704778B585B00446684614210E
+:10531000FEF7D8FC0220FFF7EBFF00F010F8009535
+:10532000012001900021022003900291694656F865
+:105330002400FEF7CDFE00F008F806B070BD0FF2B5
+:10534000D400314E30F81450704756F82400002233
+:105350002946FEF781BF0FF2BC012B4B31F810102C
+:1053600053F820000122FEF777BF0FF2A801264B69
+:1053700031F8101053F820000022FEF76DBFF0B591
+:1053800085B005460C4668461421FEF79BFC0DB916
+:10539000042004E0012D18BF022D02D10820FFF7E0
+:1053A000A7FF2000194E0FF274070DD137F8150032
+:1053B000009000210191012002900221039100F050
+:1053C0001BF80120FEF798FD012C13D137F81500CA
+:1053D000009001210E480190029100F00DF80FF2AB
+:1053E0004400445D00220F2160B2FEF7FDFD60B273
+:1053F000FEF717FE05B0F0BD694656F82500FEF72A
+:1054000067BE00004C0000585C10002068100020AF
+:105410000000211020000100020000001000010027
+:10542000020000000A06070000F032BF6C486D4918
+:10543000016001F12002426001F13002826001F15D
+:105440003C02026201F14402C26001F14C020261BD
+:1054500001F16802426101F16C0282617831C1613F
+:1054600000F028BF38B504465F4D05F1100000F08C
+:1054700089FF5B494868A1680160E168C1604560D7
+:1054800005F11001816000F031FF58482DE080B532
+:1054900053494A6813680120187200F02DFF00205C
+:1054A00002BD38B5514C504D07E0694605F110007A
+:1054B00000F094FF00982168884705F1100000F083
+:1054C00064FF0028F1D031BD48484168084738B52D
+:1054D0000446474D284600F055FF4148C068A16882
+:1054E0000160456000F00DFF42482168016061687D
+:1054F0004160002032BD80B53949CA681368102068
+:10550000187200F004FF002002BD3549CA6839490D
+:1055100010680B68184738B5364C354D06E06946BB
+:10552000284600F05BFF009861688847284600F035
+:105530002CFF0028F3D031BD38B504462E4D284647
+:1055400000F020FF2D4800F01DFF25480069A168EC
+:105550008160E168C1600561216801606168416046
+:10556000216941616169816131BD80B5014623488E
+:1055700000F01EFFBDE802400FF2050000F0D7BEAC
+:1055800038B5174C1D4D08E06946284600F026FF47
+:1055900000992069006900F00BFF284600F0F5FE35
+:1055A0000028F1D031BD10B5154C204600F0EAFEC0
+:1055B0000B4841690C60BDE8104000F0CCBE1CB542
+:1055C0000F4C06E06946204600F008FF009800F006
+:1055D00019F8204600F0D9FE0028F3D013BD0000D2
+:1055E00000000320B0090320840803209417002042
+:1055F0009C0803209C170020340A03208C170020ED
+:105600003C0A0320704700007FB50C464D4D616891
+:105610004D4EE8612962284600F0F2FE246874606D
+:1056200006F1080000F0AEFE012000F068F801204D
+:105630003070296841B10FF2E9000FF2ED020090DD
+:1056400001920294684688477FBD1FB53E4C04F125
+:10565000080000F09AFE00BB2178F1B1694604F120
+:10566000080000F0BBFE3748C16949B100980290BC
+:1056700001228DF8042001A888479DF8040000E06D
+:1056800001202070207818B10098FFF76EFF04E029
+:10569000009904F1080000F081FE04F1080000F018
+:1056A00074FE28B9207818B104F10800FFF766F8F5
+:1056B0001FBD2DE9F04105460E4690461C460020D0
+:1056C00000F01DF8204F7868A0F80950C6723246E5
+:1056D00041460C30FBF700FE1A4A136900210020F6
+:1056E000984748F2E800FFF750F879688A78D21CAA
+:1056F00004F10800FBF7F0FDBDE8F04101201CB506
+:105700001049124C096A20B901B188470020207065
+:1057100013BD0120207011B1BDE81C40084713BD26
+:105720000020FFF72FB8000010B50146064C04F129
+:10573000080000F03DFE04F10800BDE81040FFF74E
+:105740001DB80000DC16002060170020CC170020D8
+:1057500010B58EB002A80FF29C61DFF81044302221
+:10576000FBF7CAFD0FF255400190009469460FF215
+:105770003540DFF8FC4300F04DFE01210220FFF729
+:1057800092FADFF8F02300212020FFF77AF802A830
+:1057900000F02AFF00F00DF900F02EFF0FF2393271
+:1057A00000210120FFF76DF80FF26932002102207D
+:1057B000FFF767F8002084F89000202000F0C0FF79
+:1057C00000F0F2FF0FF2C133002204F1910100203A
+:1057D000FFF772FC0EB010BD2DE9F043074685B00F
+:1057E0007878DFF88C43DFF8906305284FF00008E5
+:1057F00004F1900554D03E2863D0FF280DD101203C
+:105800003072B7F80300042842D040F207418842C2
+:1058100004D040F60201884218D0A6E07879022828
+:1058200004BFB9790029F8D10020FFF79EFD0FF2DF
+:10583000A03001F0F7FAA878012806D129780629C6
+:1058400003D000210220FFF729F88EE0002000F0AD
+:1058500077FFF879307301253889F08179893182B1
+:10586000BA897282FB89B382388A04950090F082EB
+:10587000357BE08C039510260296019601F0E6FA3E
+:1058800010B10220FFF767FD202000F059FF6CE007
+:105890000120FFF760FD68780A21FFF782FC64E0D1
+:1058A000B888E18C884260D1A4F8268085F8008011
+:1058B0000FF24C3001F0B6FA0120307200F059F8C6
+:1058C00053E0F878012802D002281DD04DE0B7F847
+:1058D0000500E084062028700FF24C3001F0A2FA97
+:1058E00086F8088000F045F8E08C01F038FB30B90C
+:1058F0000FF25C3001F096FA0FF2883001E00FF2FF
+:10590000B43001F08FFA30E097F80D90787960BBF1
+:1059100029E007EB0800847BC07BFF2821D1072CFE
+:105920001FDB07EB0800007C01281AD10FF2C430FE
+:1059300001F078FA07EB0800407C832811D10FF2C0
+:10594000D43001F06FFA0120A870F8793070387AFD
+:105950007070787AB070B87AF070F87A3071387BFD
+:105960007071641CA044C845D3DB012005B0BDE8BC
+:10597000F083E08C708106F1080000F036BF7C49AE
+:10598000CA8C824202D191F8900070470020704783
+:1059900080B501F04AF8062805D0BDE80440002192
+:1059A0000120FEF77BBFBDE8014000F030BF70472B
+:1059B000704718B589B00020ADF81A0001F08DFBD2
+:1059C0006E4C216811F1010F0DD06D4862680170B5
+:1059D000120A0B0A090C8170437061680271C17070
+:1059E000120A427105E00020FEF7A4FD08B90FF28B
+:1059F000DC3002460621002000F06DFE4EF66E50AF
+:105A0000089007AA20685A4C079006212E2000F023
+:105A100062FE0FF2C0321021182000F05CFE0FF27F
+:105A2000C4321021082000F056FE1821012000F099
+:105A300079FE01F04DFA0DF1160006A901900091D2
+:105A400005AB07220021042001F0B7FB0FF2E8208C
+:105A5000BDF8181000900723BDF81400002201F0D3
+:105A60004EFA0DF11A0000900223BDF81610BDF891
+:105A70001400002201F043FA0320207001F051FBD2
+:105A8000012060700020E070082060751020A07573
+:105A9000012020753B48A0610120A0700020C1B208
+:105AA00021440871401CC1B21029F8DB0020049089
+:105AB0000023A069617803900122207D0290A07DDF
+:105AC0000190607D0090A07801F044FBA07808B1BF
+:105AD00001F0ABFB0AB010BD254890F890100629E4
+:105AE00000D1704780B50020FFF735FC4FF44871B6
+:105AF00001230022084601F0B3FB10B90FF2402049
+:105B000004E00220FFF727FC0FF26420BDE802400A
+:105B100001F088B918B587B00FF28420144C01F059
+:105B200081F994F8900006281DD010210691059166
+:105B30004FF4FA7004905021002302912822002093
+:105B40000393019200904FF448710B4B00220846DA
+:105B500001F0ABFB08B9042003E00220FFF7FBFBD8
+:105B6000002084F8900008B010BD0000A4080320B5
+:105B7000F011002053640008201700208075FF1FDB
+:105B80007C17002007B201000120FFF7EEBB0021C7
+:105B90002020FEF783BE0120FEF7A2BE0120FEF703
+:105BA000A7BE000010B50446616801F1080000F0CE
+:105BB00033FD00B10120207010BD000010B101289C
+:105BC00003D070473F20FEF779BE3F20FEF77EBE30
+:105BD0002D2D204741502047454E4552414C2044F1
+:105BE0004953434F564552592050524F434544550F
+:105BF00052455F434F4D504C455445440A00000008
+:105C00000D0A0D2A2A20444953434F4E4E45435412
+:105C1000494F4E204556454E54205749544820532D
+:105C20004552564552200A000D0A0D2A2A20434F9C
+:105C30004E4E454354494F4E204556454E542057ED
+:105C400049544820534552564552200A000000004E
+:105C50000D0A0D2A2A2047415454205345525649D3
+:105C6000434553202620434841524143544552491D
+:105C7000535449435320444953434F5645525920A6
+:105C8000200A00002A2047415454203A202053740F
+:105C900061727420536561726368696E6720507227
+:105CA000696D617279205365727669636573200D41
+:105CB0000A0D0000424C455F4354524C5F417070E6
+:105CC0005F4E6F74696669636174696F6E28292C11
+:105CD00020416C6C2073657276696365732064691A
+:105CE00073636F76657279204661696C6564200D17
+:105CF0000A0D00002D2D2D205354204D414E5546A8
+:105D000041435455524552204944202D2D2D200AFF
+:105D1000000000002D2D2053455256455220444589
+:105D2000544543544544202D2D20564941204D4192
+:105D30004E2049440A00000053544D33325742006C
+:105D4000200D0A0D2A2A2053544152542047454E13
+:105D50004552414C20444953434F564552592028FF
+:105D60005343414E29202A2A20200D0A0D0000000D
+:105D70002D2D20424C455F4170705F5374617274E9
+:105D80005F4C696D697465645F446973635F5265F4
+:105D9000712C204661696C6564200D0A0D000000BD
+:105DA0000D0A0D2A2A2043524541544520434F4EA7
+:105DB0004E454354494F4E20544F2053455256456B
+:105DC00052202A2A20200D0A0D0000006C7AD8AC3F
+:105DD00057720000123456789ABCDEF012345678AE
+:105DE0009ABCDEF0FEDCBA0987654321FEDCBA0905
+:105DF0008765432100000000000000000000000053
+:105E000000000000000000004400080040050801F8
+:105E10003A799C00F4010000FFFFFFFF48010100F8
+:105E2000000000007047704710B5029C016042609E
+:105E30000021C1600161416181610381A107047793
+:105E400004D5008910B14FF0FF3010BD002010BD07
+:105E50002DE9F04F064685B030890C460027BB4639
+:105E600000287169DC460CBF4FF00208D84681B1AA
+:105E700068B930697768451CBD4228BFED1B37689B
+:105E8000385C7D5D00EB0527BF1CBFB203E0074611
+:105E900000E000B102463069F568A84223BF75688A
+:105EA000281AC01B0020154608EB050903FB09FE54
+:105EB000864532BF0020B0FBF9FA09FB1A00C0B2D8
+:105EC000804509DA96F81C905FEAC97A48BF844693
+:105ED0005FEA897048BFC446100000F0B480706863
+:105EE000714461448842C0F0AE8008EB020080B289
+:105EF0000390D946100AADF802000294ADF80020D4
+:105F0000049359E0800740D53089002840F09B80F9
+:105F10003268D018A34600F8024C200A32681A44AE
+:105F200002F8010C224630681844FBF7D5F9706975
+:105F300020187061B069019C401CB061200A316872
+:105F40000C70316848701CE08CB3307FC207D9D523
+:105F5000308940B931681944FF2001F8020C3168DA
+:105F6000194401F8010C4FF0000B7069241874619A
+:105F70002C463089002340B931680C70210A306802
+:105F8000417002237069801C706108EB04070021D6
+:105F9000BFB231615CB1DA44029800EB0A013068AB
+:105FA00022461844FBF798F970692418746109F1C6
+:105FB0000109B069401CB061049A7068316991456B
+:105FC00045D2791881422CBF081A08463061034631
+:105FD0003089A0B93068BDF80010C1545B1C7068EE
+:105FE0003168834228BF1B1ABDF80200C8545B1CED
+:105FF0007068834228BF1B1A7069801C706105FBA2
+:1060000009FA7468BDF80000E41A844288BF0446A7
+:10601000029800EB0A01281BAC42019003D093D2F6
+:10602000307F002890D137682246F818FBF754F9E2
+:10603000706920187061A346019C039F0023A9E7A3
+:106040003068404400E0002005B0BDE8F08F88448F
+:106050008045F5D3A8EB0008F2E778B50289002364
+:106060000B80002A44690CBF02250025002C4FD06C
+:10607000028952B9C2684668531CB34228BF9B1BB1
+:106080000668B25CF35C02EB03220A80027F02F036
+:106090000302012A25D10B884FF6FF72934204BFF9
+:1060A0000289002A09D0C36802699A4219D202897A
+:1060B000BAB14668F31A934213D24368C268E41A2D
+:1060C00014190022C260446102894AB90268147836
+:1060D000012B94BFC3F101030123D25C04EB022224
+:1060E0000A80C468426806682B19934228BF9B1A2D
+:1060F00033440E884169891B491B416105D034191D
+:106100002D19954228BFAD1AC5608169491E81616C
+:10611000184672BDF8B5028900230B80002A426937
+:106120000CBF02240024002A3BD0C56802892B46FC
+:106130004AB946686A1CB24228BF921B0668775D5E
+:10614000B25C07EB02220A80067F06F00306012EEE
+:1061500020D10F884FF6FF72974204BF0289002AB0
+:1061600007D142680023012A94BFC2F10102012233
+:106170000AE00269AA420DD202895AB14668751B2B
+:10618000954207D2002304E005682E78AA5C06EB4E
+:1061900002220A8041680068E4188C4228BF641A11
+:1061A00003191846F2BD0000C0680840884201D1BA
+:1061B0000120704700207047C0690840884201D123
+:1061C000012070470020704710B5664C0221204620
+:1061D000FFF7F2FF38B16068C043810703D5FFF7CE
+:1061E0009AF9022018E001212046FFF7E5FF38B1B7
+:1061F0006068C043C10703D5FFF753F901200BE0E6
+:1062000008212046FFF7D8FF38B16068C043010776
+:1062100003D5FFF7D4F90820A06010BD10B5514C8C
+:1062200000F033F818B96068C043810306D400F069
+:106230002CF830B96068C043810302D5BDE8104036
+:106240006EE0082100F022F870B96068C0430103D5
+:106250000AD56068444940F40020606008688047BF
+:106260004FF40020A06010BD202100F00FF858B9B5
+:106270006068C043810207D5606840F40010606028
+:10628000BDE81040FFF720B910BD022120468BE782
+:106290003648016841F4007101603548026842F4F3
+:1062A0000072026040BF20BF3248016841F40041E3
+:1062B0000160704780B53048016841F48011016089
+:1062C000006800F48010009000982648016841F0B2
+:1062D00001010160026842F4803202602C20FDF767
+:1062E000A0FEBDE802402D20FDF79BBE23480168BB
+:1062F000490849000160704721494FF48030086027
+:1063000070471E48016821F00201016070471B4878
+:106310004FF400314160016821F4003101607047A1
+:106320001648016841F400310160FFF7EEB838B556
+:1063300004460C4D08212846FFF736FF30B10A48C5
+:106340000460686820F40020686031BDA0474FF405
+:106350000021A96031BD0948016821F008010160F0
+:1063600070470000000C0058BC170020D4080058EB
+:10637000200800580C04005850000058040C005825
+:10638000080C0058006040607047EFF3108172B64F
+:10639000026882420CBF012000201CE0EFF3108253
+:1063A00072B603680B60486001600868416023E0D2
+:1063B000EFF3108272B6086043684B604160486832
+:1063C000016019E0EFF3108172B6436802681A6049
+:1063D00042680068426081F31088704710B5EFF39F
+:1063E000108472B602680A600068FFE7FFF7EAFFF0
+:1063F00084F3108810BD086082F310887047000095
+:106400000249016002490161704700BFCF54000892
+:10641000F75400087FB50C466D4D61686D4EE8611C
+:106420002962284600F0B8FF246805F12400FFF730
+:10643000A9FF746006F10800FFF7A4FF0120307087
+:10644000296829B10FF255100090029468468847D8
+:106450007FBD1FB55F4C04F10800FFF796FF00BB3E
+:106460002178F1B1694604F10800FFF7B7FF5848F9
+:10647000C16949B10098029001228DF8042001A859
+:1064800088479DF8040000E001202070207818B1B2
+:106490000098FFF76AF804E0009904F10800FFF79C
+:1064A0007DFF04F10800FFF770FF28B9207818B1CC
+:1064B00004F10800FFF76BFB1FBD2DE9F84306460A
+:1064C000002000F05FF874883088B268DFF800813F
+:1064D000C4F3090444EA8024F068A4B2C1B220469F
+:1064E00000F03CF8002748F2E8094846FFF756FB61
+:1064F00008E06888A04202D131692878087068787D
+:1065000000B1012708F12400FFF73FFFF0B9694609
+:1065100008F12400FFF762FF009800F10B05407AB4
+:106520000F28E6D0B5F80110A1420DD10098817A6C
+:10653000C81E7169C0B28842C8BF08467061024671
+:106540003069E91CFAF7C8FE2878D9E73800CCD0C2
+:10655000012000F017F80020BDE8F28310B51346C3
+:106560001C4A5468A4F80900E1720A46194604F16D
+:106570000C00FAF7B1FE164A1369BDE8104000217D
+:10658000002018471249096A82B008B921B101E018
+:1065900011B1012002B0084702B0704710B50146A2
+:1065A000487A0F2818BF0E2807D10B48FFF700FFC5
+:1065B000BDE810400020FFF7EEBA064C04F10800D9
+:1065C000FFF7F6FE04F10800BDE81040FFF7DFBA60
+:1065D0008C16002050170020B0160020FFF769F835
+:1065E0009DF80E0005B000BDF8B500F10C026B4639
+:1065F00021214FF66640F1E7234900200877002269
+:106600002248027100F044B820490A7941F822007A
+:106610000879401C0871704770B504466078FF28FF
+:1066200002BFB4F8031001F47F41B1F5406F1FD1F0
+:106630000025154E317FE8B2884222D2E9B256F8E1
+:10664000211020468847002808BF6D1CF2D018E0B2
+:10665000761C2979F0B288420AD2F1B255F821109D
+:10666000204688470100F3D002D0022805D006E07A
+:106670002046BDE87040FFF7AFB8002070BD012094
+:1066800070BD0026014DE4E700170020AC17002084
+:1066900080B500F08BFE00F08AFE00F089FE00F06D
+:1066A00088FE00F087FE00F086FE00F085FE00F018
+:1066B00084FE00F083FE00F082FE00F081FE00F018
+:1066C00080FE00F07FFE00F07EFE00F07DFEBDE863
+:1066D000014000F07ABE18B50C46C7B01146002242
+:1066E0008DF800208DF81C008DF81D4022460DF11C
+:1066F0001E0000F06BFE00F03BF83F200C21ADF8CF
+:106700000400ADF8061007A8012103900691A41C0F
+:10671000049400F043F800284CBFFF209DF80000CF
+:1067200048B010BD00B5C7B000F01BF80F2000F056
+:106730002AF800284CBFFF209DF8000047B000BD9C
+:1067400000B5C7B00021ADF81C0000F016F8182005
+:1067500000F019F800284CBFFF209DF8000047B05A
+:1067600000BD00228DF800208DF81C008DF81D1052
+:106770001822002101A800F02FBE8DF80010182269
+:1067800001A800F029BEADF8060007A90220049078
+:106790003F22012003910690ADF80420CDF814D0DB
+:1067A000002101A8FFF789BE80B50FF2B9220021B0
+:1067B0000420FEF766F80FF2792200210820FEF788
+:1067C00060F8CD4800210180C18081700121C17035
+:1067D0000021017101720FF24100FFF715FFBDE8C2
+:1067E00002400FF2243000F01DBB0278C24912B102
+:1067F000012A03D070474088C88070470020C880B5
+:10680000087A08B100220A720020FEF7AEBD00210E
+:106810000820FEF743B800002DE9F84F05466878D8
+:10682000FF2812D1B44CB5F80300618940F6044248
+:10683000801A00F08B80801E4DD0001F06D0401FB4
+:1068400000F0B780401E00F0DD80EBE0B5F8056099
+:10685000207A58B10846FFF792F8217A062908BF36
+:106860000028F2D120724FF6FF7060816681E879CE
+:10687000297A91FBF0F914285FFA89F9E5D14FF0F4
+:10688000100A00270FF29C284FF64066F8B24845E0
+:10689000DBDA05EB0A0B9BF809009BF80A1040EACB
+:1068A0000120B04211D16189404600F0BBFAABF142
+:1068B00007000178427841EA0221A1818178C078FD
+:1068C00041EA0021E181082121720AF106005FFA04
+:1068D00080FA7F1CDAE7B5F80500814202BF112675
+:1068E000E87915283CD1297A0FF2AC290FF2702BE8
+:1068F000481E28724FF6426A4FF64168287A0028EF
+:10690000A3D0A91905F10A02487A11F8057D925D14
+:10691000497840EA022047EA01276189404508D0CA
+:1069200050450CD1484600F07DFA0A202072A7821B
+:1069300005E0584600F076FA0920207227821536C5
+:10694000287AA0F115012972F6B2D7E7B5F805004B
+:10695000814201BF95F808B04FF00008E87901289E
+:1069600060D100270FF2742942F6021AF8B2B0EB98
+:106970009B0F57DA05EB080005F10A01C27A467A47
+:10698000007B11F8081042EA0022524546EA01262F
+:1069900009D16189484600F045FA207A0A2802D1D7
+:1069A000E6820B21217208F104005FFA80F87F1C57
+:1069B000DCE7B5F80500814202BFB5F80700A18AFF
+:1069C00088422FD1687A022802BFA87A6070012815
+:1069D00028D1E87AA07046A448B9FEF7C6FC0FF2A9
+:1069E000742000F01FFA204600F01CFA1AE00FF2A3
+:1069F000A42000F017FA204600F014FA0020FEF759
+:106A0000AAFC0FE00FF21C2000F00CFA39A000F0F5
+:106A100009FA6089B5F80510884203D100210420E5
+:106A2000FDF73CFF0020BDE8F28F3348007A704745
+:106A300010B50FF2A020304C00F0F4F92CA000F0BB
+:106A4000F1F92079401E8041C00F2071207A38B1C1
+:106A5000218A6089E31CBDE81040022200F0EDBAF3
+:106A600010BD00001CB50120ADF80000224C207ABA
+:106A700000283BD0C01F052838D8DFE800F0030805
+:106A80001218232F0FF28C2000F0CCF913BD0FF257
+:106A90009C2000F0C7F9E289A189608900F079FAA9
+:106AA00013BD0FF2B02000F0BDF9218A04E00FF20F
+:106AB000E02000F0B7F9A18A60898A1C92B200F048
+:106AC00079FA13BD0FF20C3000F0ACF900F016F8B3
+:106AD000062020720220FEF748FC13BD0FF21C3086
+:106AE00000F0A0F900F00AF80620207213BD0000A3
+:106AF000200A0D000A00000038170020E18A608992
+:106B00006B46022200F06CBA2D2D205032502043EB
+:106B10004C49454E5420494E495449414C495A45E7
+:106B200044200A002D2D2047415454203A20503251
+:106B3000505F534552564943455F55554944204699
+:106B40004F554E44202D20636F6E6E656374696FE0
+:106B50006E2068616E646C652030782578200A00AC
+:106B60002D2D2047415454203A2057524954455F17
+:106B70005555494420464F554E44202D20636F6E95
+:106B80006E656374696F6E2068616E646C65203039
+:106B90007825780A000000002D2D2047415454200C
+:106BA0003A204E4F54494649434154494F4E5F4362
+:106BB0004841525F5555494420464F554E44202088
+:106BC0002D20636F6E6E656374696F6E2068616EF1
+:106BD000646C6520307825780A0000002D2D204750
+:106BE000415454203A20434C49454E545F43484158
+:106BF000525F434F4E4649475F44455343524950C5
+:106C0000544F525F555549442D20636F6E6E656336
+:106C100074696F6E2068616E646C652030782578C9
+:106C20000A0000002D2D2047415454203A2045569B
+:106C3000545F424C55455F474154545F50524F4357
+:106C400045445552455F434F4D504C455445200AED
+:106C500000000000202D2D20503250204150504C7B
+:106C600049434154494F4E20434C49454E54203AE4
+:106C7000204E4F54494649434154494F4E205245B6
+:106C8000434549564544202D204C4544204F464617
+:106C9000200A0D00202D2D20503250204150504C04
+:106CA00049434154494F4E20434C49454E54203AA4
+:106CB000204E4F54494649434154494F4E20524576
+:106CC000434549564544202D204C4544204F4E0A0B
+:106CD0000D0000002D2D20503250204150504C49C5
+:106CE000434154494F4E20434C49454E5420203A8D
+:106CF00020425554544F4E20505553484544202D62
+:106D000020575249544520544F205345525645521E
+:106D1000200A20005032505F444953434F56455299
+:106D20005F53455256494345530A00002A204741C4
+:106D30005454203A20446973636F76657220503250
+:106D4000502043686172616374657269737469632A
+:106D5000730A00002A2047415454203A20446973A2
+:106D6000636F7665722044657363726970746F72C5
+:106D7000206F66205458202D205772697465204377
+:106D80006861726163746572697469630A00000006
+:106D90002A2047415454203A20446973636F766532
+:106DA000722044657363726970746F72206F66201D
+:106DB0005278202D204E6F74696669636174696F23
+:106DC0006E20436861726163746572697469630AF5
+:106DD000000000002A2047415454203A20456E61AB
+:106DE000626C6520536572766572204E6F746966B9
+:106DF00069636174696F6E0A000000002A204741D0
+:106E00005454203A2044697361626C652053657262
+:106E1000766572204E6F74696669636174696F6E1E
+:106E20000A0000000EB4C0B5024603A8002101907C
+:106E3000009101AB0121044878440C30F9F77EF948
+:106E400006BC5DF810FB00BF1F0E00002DE9F841E5
+:106E5000C7B04FF00008ADF81C00DDF838C14F9EF8
+:106E6000509F519D529C8DF8008007A84180ADF83D
+:106E70002020ADF82230A0F808C0ADF82660878148
+:106E80008DF82A508DF82B4000F015F84FF4C170A2
+:106E9000ADF8060007A9102004903F2201200391BD
+:106EA000069000F00DF800284CBFFF209DF8000070
+:106EB00048B0BDE8F0811822002101A800F08CBA8A
+:106EC000ADF80420CDF814D0002101A8FFF7F5BAE1
+:106ED00000B587B000208DF8000000F07CF840F28B
+:106EE0000110ADF806003F220120069000F0EDF8F9
+:106EF00000284CBFFF209DF8000007B000BD30B552
+:106F0000C7B01C464A9B00F0C7F800258DF800501A
+:106F10008DF82140224619460DF1220000F056FA64
+:106F200000F059F83F204FF4837100F0BCF8A41D25
+:106F3000049400F0CCF800284CBFFF209DF800001E
+:106F400047B030BD0023ADF81C008DF8003007A815
+:106F5000418082800021182201A800F03DBA00B5CE
+:106F6000C7B000F010F8FFF7F6FF0F2102914FF4C1
+:106F70008970022100F0A1F800284CBFFF209DF885
+:106F8000000047B000BD0021ADF81C008DF80010D6
+:106F9000704700B5C7B0FFF7D5FF0F21029140F24F
+:106FA000151000F089F800284CBFFF209DF8000064
+:106FB00047B000BD00B5C7B0FFF7C4FF0F21029175
+:106FC00040F2171000F078F800284CBFFF209DF821
+:106FD000000047B000BD1822002101A800F0FCB954
+:106FE00018B5C7B000F011F800F045F8FFF7F3FF4F
+:106FF00040F2211100F013F800F069F800284CBFAE
+:10700000FF209DF8000048B010BD1446ADF81C00EC
+:10701000002207A88DF80020418004717047ADF868
+:1070200006103F2007A9ADF8040003910F200121AD
+:1070300002900691641D0494704718B5C7B000F023
+:1070400010F8FFF7C8FF3F2040F2231100F019F8B5
+:1070500000F03DF800284CBFFF209DF8000048B02C
+:1070600010BD144600228DF80020ADF81C00ADF8CC
+:107070001E108DF82040224619460DF1210000F027
+:10708000A5B9ADF80400ADF8061007A801210390DA
+:107090000691641D04947047ADF81C00ADF81E10F5
+:1070A0008DF820207047ADF80400ADF8061007A851
+:1070B00001210390069170470621ADF80600049166
+:1070C00007A801213F2203900691ADF80420CDF8D6
+:1070D00014D0002101A8FFF7F0B900B587B000F087
+:1070E00010F8012003220690ADF80420ADF8062028
+:1070F00000F011F800284CBFFF209DF8000007B0F9
+:1071000000BD00208DF800001822002101A800F029
+:1071100063B903900691CDF814D0002101A8FFF7C0
+:10712000CCB900B5C7B000F00CF8852000F075F8B8
+:1071300000F014F900284CBFFF209DF8000047B074
+:1071400000BD00218DF81C008DF80010182201A848
+:1071500000F042B92DE9F841C7B04FF0000800F047
+:1071600026F80DF12300DDF844E14E9F4F9E509D1F
+:10717000529C8DF81F30C0F800E08DF800808DF82B
+:1071800020708DF821608DF822508DF8274000F096
+:1071900087F88620ADF8060007A90C2000F0DAF881
+:1071A00000284CBFFF209DF8000000F0F2B88DF8D9
+:1071B0001C0007A8417082707047F8B5C8B005463A
+:1071C0000E4617461C4600F023F808A84670877044
+:1071D0008DF8205000F0D8F88A21ADF80A103F2031
+:1071E000032100F0C4F8002848BFFF200ED49DF80A
+:1071F000000058B94F994E98BDF801202280BDF883
+:1072000003200280BDF805000880002049B0F0BDD1
+:1072100007220021684600F0DFB8ADF8060007A994
+:1072200001203F2203910490704700B587B000F021
+:1072300013F800F035F8922000F009F800F08EF80D
+:1072400000284CBFFF209DF8000007B000BDADF83E
+:1072500006003F220120704700208DF80000704793
+:1072600018B5C7B000F011F800F01AF80F2102911C
+:107270009720062100F065F800F071F800284CBF57
+:10728000FF209DF8000048B010BD0024ADF81C00A0
+:107290008DF8213007A8418002718DF800407047B9
+:1072A0001822002101A800F097B82DE9F04F0646FA
+:1072B000C7B000F020F800F012F8FFF7F1FF3F2010
+:1072C000ADF804009C2100F030F800F04AF80028E6
+:1072D0004CBFFF209DF8000047B0BDE8F08F8DF84F
+:1072E0002790B581ADF82AB03782ADF82E80B482F0
+:1072F000ADF832A0704708461946559CDDF840911C
+:10730000519DDDF848B1539FDDF85081DDF858A15B
+:10731000ADF81C60002307AE8DF80030708032712C
+:107320000DF12100062200F051B80F200290ADF8B7
+:1073300006101820049007A90120039106907047B9
+:107340000321ADF80600049107A801213F22039014
+:107350000691704704903F22012003910690ADF8FA
+:107360000420CDF814D0002101A8FFF7A6B8ADF88D
+:107370000800059108A8072104900791CDF818D0BE
+:10738000002102A8FFF799B81822002102A800F0F6
+:1073900023B848B0BDE8F0810249016002490161AB
+:1073A000704700BF655400088F540008704770474D
+:1073B0007047704770477047704770477047704715
+:1073C00070477047704770477047704710B5044664
+:1073D000F9F782FF204610BD10B5044610460A4654
+:1073E0000146204600F002F8204610BD62F30F224D
+:1073F00062F31F42401810F0030308D0C91A1FD3CC
+:10740000DB0748BF00F8012D28BF20F8022D13002C
+:1074100030B414461546103928BF20E93C00FAD88C
+:10742000490728BF20E90C0048BF40F8042D890017
+:1074300028BF20F8022D48BF00F8012D30BC70474E
+:10744000C91818BF00F8012DCB0728BF00F8012D7F
+:107450007047000010B50446AFF30080204600F0EE
+:1074600005F80446AFF30080204610BD7CB500F15E
+:107470000F06F608F600B04240D2082E04D20826C5
+:1074800002E0083000F047F8DFF804512C682100D2
+:1074900005D1002007E00268B24221D2011D086830
+:1074A0000028F8D12068291D0A68824222D013687A
+:1074B000B34238BF111DF7D312E093190B60801B44
+:1074C00054685C600B6818601660096800291DBF6D
+:1074D00048680028081D0020286002F1080076BDD9
+:1074E00061B10A681068A0F10803B342E5D25068A0
+:1074F0000860EAE700F04EF80028C2D1002076BD0F
+:1075000010B5040006D0AFF30080204600F003F869
+:10751000AFF3008010BD002800D1704750B4A0F137
+:1075200008021368072B2BD913F0070F28D1184C2A
+:10753000616809B18A4202D25160626013E0486812
+:1075400000B3904238BF0146F9D31BE0964203D105
+:107550001B180B600A4606E0486810B113449842B5
+:107560000ED350604A60506850B11368D118814200
+:1075700006D1002121600168CB181360406850607B
+:1075800050BC704708680E18B242DFD250BC70473A
+:10759000A41700200749086808B100207047064872
+:1075A000C008C00008600549C908C900091A01607F
+:1075B000704700BFC8170020D7270020D02B00201D
+:1075C0002DE9F04107468846387810F0030F16463B
+:1075D0001D4633D0384600F099F878BBB8F1000F5B
+:1075E0001CBFD8E900018619012D2ED13888C104AD
+:1075F00015D5396A07F14402384600F0A3F83A6B12
+:10760000044602B93A69F968384600F09BF8361B1F
+:10761000341A7A69F968384600F094F8261A1EB9C7
+:107620004DB916F1010F09D097F903002A463146EA
+:1076300000F08EF8064616F1010F09D12320AFF3B2
+:1076400000804FF0FF30BDE8F081022DE8D1EBE77C
+:10765000388810F4405F0ED07868F860386178613F
+:10766000B8617868F86107F14400386207F13000CA
+:10767000786200203863B8F1000F05D0D8E9020124
+:1076800007F13402C2E9000139884CF6FF6001407D
+:1076900039800020BDE8F08170B50546AFF3008069
+:1076A0002888810415D56E680024EA6895F90300DE
+:1076B0003146914212D2521AFDF7EAFD10F1010F44
+:1076C0001CBF00283618F0D10FE04DF6FF700140C6
+:1076D00029802846AFF30080002070BD00220021E1
+:1076E000FDF7D6FD10F1010F00D101246868E860B4
+:1076F000A861E861002C2988E7D041F40071298055
+:107700002846AFF300804FF0FF3070BDF8B5A0B948
+:10771000AFF3008000250A4E08244FF0FF37306891
+:1077200020B1FFF7B9FF002848BF3D46361D641E53
+:10773000F5D1AFF300802846F2BDBDE8F240ABE7DB
+:10774000D0110020914234BF511A002108467047E1
+:107750003EB504000D00012A02D100F063F807E0F5
+:10776000022A07D100940020019069460C20ABBE8C
+:107770002D1801E0002A0CD10094019569460A20D9
+:10778000ABBE002805D100222100280000F027F818
+:1077900001E00020C04303B030BD000010B4314A06
+:1077A000002113461C6884421EBF491C9C68844209
+:1077B0001EBF491C1C69844209D09C69491C844233
+:1077C00005D0491C20331029ECD310BC704700238E
+:1077D00042F8313002EBC1014B6010BC704778B405
+:1077E000204C002325462E688E421EBF5B1CAE68CF
+:1077F0008E421EBF5B1C2E698E4209D0AE695B1C97
+:107800008E4205D05B1C2035102BECD372BC704728
+:10781000054604EBC303012A04BF59684D195D6096
+:1078200072BC704710B40F4A002113461C68844292
+:107830001EBF491C9C6884421EBF491C1C698442AF
+:107840000AD09C69491C844206D0491C2033102967
+:10785000ECD310BC0020704702EBC100406810BCA4
+:1078600070470000AC14002010B50446E068A16920
+:10787000884251D3218849F202030B40022B08D0E1
+:1078800008044CBF4FF400704FF484400143218042
+:107890003BE001F4C042B2F5C04F06D1A168884276
+:1078A00003D32046FFF732FF78BB208810F4406FE7
+:1078B00002BF606804F14401884217D14FF40070A0
+:1078C000FFF7C8FD606030B904F144006060E0601B
+:1078D000401CA0600AE0218841F040012180E06066
+:1078E000606100F500726068A260E061606820611C
+:1078F000A068A061207841070AD502220021204615
+:1079000000F00CF810F1010F02D14FF0FF3010BD64
+:10791000208840F4C0402080002010BD70B504468F
+:107920000D461646AFF3008033462A460021204616
+:10793000FFF746FE05462046AFF30080284670BD9F
+:1079400038B504000ED0207810F0030F03D094F95E
+:107950000300002809D5AFF30080204600F030F87E
+:10796000AFF300804FF0FF3032BD2046FFF7CEFE70
+:107970000546AFF300802078410644BF606800F000
+:107980005DF80020606094F90300022804D900F03B
+:1079900057F808B14FF0FF35E06B48B100F05CF8E4
+:1079A00008B14FF0FF35E06B00F048F80020E063CD
+:1079B000204600F005F8AFF30080284632BD0000F5
+:1079C00001780A0626D51C4A13680021834203D198
+:1079D000002342F821301BE05368012183421EBF7F
+:1079E000022193688342F3D0D368032183421EBFF0
+:1079F000042113698342EBD05369052183421EBFE2
+:107A00000621936983421EBF0721D3698342DFD0D9
+:107A100000F014B8002101804FF0FF31C17000F177
+:107A200044014160C160016141618161C1610162E4
+:107A300000F1300141627047D0110020FFF760BDB6
+:107A40001CB50200009269460220ABBE0400100083
+:107A5000FFF7A4FE200016BDE0B50090F9F7EEFB9D
+:107A6000019069460E20ABBE03B000BD38B50C4690
+:107A7000C5B22046AFF30080E068A169884204D314
+:107A80002046FFF7F1FE00280FD4E068401CE060BC
+:107A900000F8015D2088010503D440050BD50A2DAF
+:107AA00009D12046FFF732FE28B12046AFF300800F
+:107AB0004FF0FF3032BD2046AFF30080284632BD84
+:107AC0007047FEE7FEE7FEE7FEE770477047704746
+:107AD00000F01EB80548FBF719BB0548FAF779BA5C
+:107AE0000448FAF776BA0448FBF710BB2C150020BF
+:107AF000A0130020141300208C1500201020FCF788
+:107B0000B2BBFDF70CBAFEF789BBFEF75DBB000008
+:107B100002490A68886882180A607047501000207D
+:107B200019E050F8042BD30744BFA9F101039A18B8
+:107B3000091F0023042942F8043BF9D25FEA817C43
+:107B4000134604D54FF0000CA2F800C09B1CC907D7
+:107B500044BF0021197050F8041B0029E1D170477F
+:107B600038B50D4D0824286800281CBF017811F095
+:107B7000030F05D090F90310002958BFFFF7E0FE6E
+:107B80002D1D641EEFD1BDE83840002200214FF0CA
+:107B9000FF30FDF77DBB00BFD011002010B50749B5
+:107BA00079441831064C7C44163404E00A68081DF8
+:107BB000114488470146A142F8D110BD2C000000B5
+:107BC000500000004EF68851CEF20001086840F4E3
+:107BD00070000860BFF34F8FBFF36F8F4FF00070DE
+:107BE000E1EE100A7047000039FFFFFFE0050000DA
+:107BF000F011002080080000240003200000000095
+:107C0000D394FFFF840100009601000004000020CF
+:107C10000000000000000000000000000000000064
+:107C2000010000000200000003000000040000004A
+:107C300000F00DF8002801D0FFF7B0FFAFF300808F
+:107C40000020AFF30080FCF74EF800F002F80120AE
+:107C5000704700F001B800000746FFF781FF384683
+:107C6000FAF71EF9FBE738B504460D46284600F042
+:107C700005F8A84218BF0024204632BD0149FFF78D
+:107C8000F5BE00BF40110020014880470148004771
+:107C9000F1420008997C0008AFF30080FFF792FFE3
+:107CA000FFF7C6FF00002E004300FFF7FEBFFFF7FF
+:107CB000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7F8
+:107CC000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7E8
+:107CD000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7D8
+:107CE000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7C8
+:107CF000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7B8
+:107D0000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7A7
+:107D1000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF797
+:107D2000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF787
+:107D3000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF777
+:107D4000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF767
+:107D5000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF757
+:107D6000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF747
+:107D7000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF737
+:107D8000FEBFFFF7FEBF0000F3FF010001F1FF019E
+:107D9000F1FF01F1FF01F1FF01F1FF01F1FF01F13D
+:107DA000FF01F1FF01F1FF01F1FF01F1FF01F1FF1F
+:107DB00001F1FF01F1FF01F1350152FF01ED3F102B
+:107DC0001210113D541070010400480412080452AE
+:107DD0000C04F00507093D00A47C0008046158F27A
+:107DE00000A61410010000A80C215CFC02177810FA
+:107DF0000020B71013ED117E110143DB113C21016E
+:107E00001007010400003C1100203D04523C0421F5
+:107E10001BA108F3112811641007020401013C168C
+:107E200000208C04523C0431405108128444F21367
+:107E300070484003080202EC154021082104213457
+:107E4000610812CC44F212B84816F818124028F211
+:037E500006882C75
+:0400000508007C99DA
:00000001FF
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/app_conf.h
index 67fa9c6d8..feea3d958 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/app_conf.h
@@ -59,7 +59,7 @@
#define CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT (0x03)
#define CFG_IO_CAPABILITY_KEYBOARD_DISPLAY (0x04)
-#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_DISPLAY_ONLY
+#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
/**
* Define MITM modes
@@ -90,6 +90,7 @@
/**< specific parameters */
/*****************************************************/
+
#define CFG_MAX_CONNECTION 1
#define UUID_128BIT_FORMAT 1
#define CFG_DEV_ID_P2P_SERVER1 (0x83)
@@ -342,7 +343,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
@@ -389,6 +390,7 @@ typedef enum
#define CFG_LPM_SUPPORTED 0
#define CFG_DEBUGGER_SUPPORTED 1
#endif
+
/**
* When CFG_DEBUG_TRACE_FULL is set to 1, the trace are output with the API name, the file name and the line number
* When CFG_DEBUG_TRACE_LIGHT is set to 1, only the debug message is output
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/stm32wbxx_hal_conf.h
index 31d63e37a..7f1537260 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Inc/stm32wbxx_hal_conf.h
@@ -276,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c
index 97a6a8b82..7046354ac 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/main.c
index 72d282bcf..7920b2d20 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/main.c
@@ -209,12 +209,15 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +358,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -404,6 +404,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/stm32wbxx_hal_msp.c
index 87614ca60..f22ad0f38 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/Core/Src/stm32wbxx_hal_msp.c
@@ -88,6 +88,7 @@ void HAL_MspInit(void)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
+ HAL_DMA_MuxSyncConfigTypeDef pSyncConfig;
if(huart->Instance==LPUART1)
{
/* USER CODE BEGIN LPUART1_MspInit 0 */
@@ -132,6 +133,16 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
Error_Handler();
}
+ pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT;
+ pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_NO_EVENT;
+ pSyncConfig.SyncEnable = DISABLE;
+ pSyncConfig.EventEnable = DISABLE;
+ pSyncConfig.RequestNumber = 1;
+ if (HAL_DMAEx_ConfigMuxSync(&hdma_lpuart1_tx, &pSyncConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
__HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
/* LPUART1 interrupt Init */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx
index 63e3d8103..536d327ec 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx
@@ -1,5 +1,26 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
<TargetName>BLE_p2pClient</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -55,7 +77,7 @@
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
- <CpuCode>0</CpuCode>
+ <CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,732 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_hal_msp.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_msp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/App</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/p2p_client_app.c</PathWithFileName>
+ <FilenameWithoutPath>p2p_client_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/Target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_hsem.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx
index d4f31eeaf..6d67a9f30 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx
@@ -1,41 +1,45 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
+ <Target>
<TargetName>BLE_p2pClient</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -50,23 +54,25 @@
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>BLE_p2pClient/List</ListingPath>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
@@ -75,13 +81,15 @@
<AfterMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +103,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +125,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +137,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +174,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +189,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +242,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +272,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +297,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +306,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +323,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls/>
+ <MiscControls></MiscControls>
<Define>USE_STM32WBXX_NUCLEO,USE_HAL_DRIVER,STM32WB55xx</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../Core/Inc;../STM32_WPAN/App;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Middlewares/ST/STM32_WPAN/ble;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/CMSIS/Include;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo</IncludePath>
</VariousControls>
</Cads>
@@ -371,11 +347,14 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
- <IncludePath/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
@@ -387,24 +366,20 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
- <Group>
+ <Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -712,10 +687,13 @@
</File>
</Files>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ </Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
@@ -728,4 +706,5 @@
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/app_ble.c
index d030bbd9d..eba8b08d0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/app_ble.c
@@ -572,7 +572,7 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
APP_DBG_MSG("--- ST MANUFACTURER ID --- \n");
switch (adv_report_data[k + 3])
{ /* Demo ID */
- case CFG_DEV_ID_P2P_SERVER1: /* (0End Device 1) */
+ case CFG_DEV_ID_P2P_SERVER1: /* End Device 1 */
APP_DBG_MSG("-- SERVER DETECTED -- VIA MAN ID\n");
BleApplicationContext.DeviceServerFound = 0x01;
SERVER_REMOTE_BDADDR[0] = le_advertising_event->Advertising_Report[0].Address[0];
@@ -849,13 +849,13 @@ static void Connect_Request( void )
/* USER CODE END Connect_Request_1 */
tBleStatus result;
-
+
APP_DBG_MSG("\r\n\r** CREATE CONNECTION TO SERVER ** \r\n\r");
if (BleApplicationContext.Device_Connection_Status != APP_BLE_CONNECTED_CLIENT)
{
result = aci_gap_create_connection(SCAN_P,
- SCAN_L,
+ SCAN_L,
PUBLIC_ADDR, SERVER_REMOTE_BDADDR,
PUBLIC_ADDR,
CONN_P1,
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/p2p_client_app.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/p2p_client_app.c
index 2e2db17cc..760498cde 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/p2p_client_app.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/App/p2p_client_app.c
@@ -290,8 +290,6 @@ static SVCCTL_EvtAckStatus_t Event_Handler(void *Event)
return_value = SVCCTL_EvtNotAck;
event_pckt = (hci_event_pckt *)(((hci_uart_pckt*)Event)->data);
-
-
switch(event_pckt->evt)
{
case EVT_VENDOR:
@@ -332,7 +330,6 @@ static SVCCTL_EvtAckStatus_t Event_Handler(void *Event)
{
aP2PClientContext[index].connHandle= handle;
-
numServ = (pr->Data_Length) / pr->Attribute_Data_Length;
/* the event data will be
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/BLE_p2pRouteur.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/BLE_p2pRouteur.ioc
index 74ca179df..5690381cf 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/BLE_p2pRouteur.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/BLE_p2pRouteur.ioc
@@ -94,12 +94,13 @@ Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -210,7 +211,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -232,7 +233,9 @@ RCC.RNGFreq_Value=32000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
@@ -260,7 +263,7 @@ STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO=3
STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO=0
STM32_WPAN.CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION=1
STM32_WPAN.CFG_HW_USART1_ENABLED=1
-STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_ONLY
+STM32_WPAN.CFG_IO_CAPABILITY=\ CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
STM32_WPAN.CFG_LPM_SUPPORTED=0
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=0xFA0
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA=0xfa0
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/app_conf.h
index 12ca2e31b..371281e6d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/app_conf.h
@@ -61,7 +61,7 @@
#define CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT (0x03)
#define CFG_IO_CAPABILITY_KEYBOARD_DISPLAY (0x04)
-#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_DISPLAY_ONLY
+#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
/**
* Define MITM modes
@@ -92,6 +92,7 @@
/**< specific parameters */
/*****************************************************/
+
#define CFG_MAX_CONNECTION 8
#define UUID_128BIT_FORMAT 1
@@ -354,7 +355,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/stm32wbxx_hal_conf.h
index 31d63e37a..7f1537260 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Inc/stm32wbxx_hal_conf.h
@@ -276,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c
index 97a6a8b82..7046354ac 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/main.c
index 72d282bcf..7920b2d20 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/main.c
@@ -209,12 +209,15 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +358,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -404,6 +404,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/stm32wbxx_hal_msp.c
index 87614ca60..f22ad0f38 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/Core/Src/stm32wbxx_hal_msp.c
@@ -88,6 +88,7 @@ void HAL_MspInit(void)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
+ HAL_DMA_MuxSyncConfigTypeDef pSyncConfig;
if(huart->Instance==LPUART1)
{
/* USER CODE BEGIN LPUART1_MspInit 0 */
@@ -132,6 +133,16 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
Error_Handler();
}
+ pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT;
+ pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_NO_EVENT;
+ pSyncConfig.SyncEnable = DISABLE;
+ pSyncConfig.EventEnable = DISABLE;
+ pSyncConfig.RequestNumber = 1;
+ if (HAL_DMAEx_ConfigMuxSync(&hdma_lpuart1_tx, &pSyncConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
__HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
/* LPUART1 interrupt Init */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/app_ble.c
index cdb60e38e..4d64b718e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/app_ble.c
@@ -480,6 +480,7 @@ void APP_BLE_Init( void )
BleApplicationContext.SmartPhone_Connection_Status = APP_BLE_IDLE;
BleApplicationContext.EndDevice_Connection_Status[0] = APP_BLE_IDLE;
BleApplicationContext.EndDevice1Found = 0x00;
+
#if (CFG_P2P_DEMO_MULTI != 0)
/* USER CODE BEGIN Connection_Status_Multi */
BleApplicationContext.EndDevice_Connection_Status[1] = APP_BLE_IDLE;
@@ -647,28 +648,28 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification(void *pckt)
/* USER CODE BEGIN EVT_DISCONN_COMPLETE */
/* USER CODE END EVT_DISCONN_COMPLETE */
- if (cc->Connection_Handle == BleApplicationContext.connectionHandleEndDevice1)
- {
- APP_DBG_MSG("\r\n\r** DISCONNECTION EVENT OF END DEVICE 1 \n");
- BleApplicationContext.EndDevice_Connection_Status[0] = APP_BLE_IDLE;
- BleApplicationContext.connectionHandleEndDevice1 = 0xFFFF;
- handleNotification.P2P_Evt_Opcode = P2P_SERVER1_DISCON_HANDLE_EVT;
- handleNotification.ConnectionHandle = connection_handle;
- Evt_Notification(&handleNotification);
- }
-
- if (cc->Connection_Handle == BleApplicationContext.connectionHandleCentral)
- {
- APP_DBG_MSG("\r\n\r** DISCONNECTION EVENT OF SMART PHONE \n");
- BleApplicationContext.connectionHandleCentral = APP_BLE_IDLE;
- handleNotification.P2P_Evt_Opcode = SMART_PHONE1_DISCON_HANDLE_EVT;
- handleNotification.ConnectionHandle = 0xFFFF;
- Evt_Notification(&handleNotification);
- }
-
+ if (cc->Connection_Handle == BleApplicationContext.connectionHandleEndDevice1)
+ {
+ APP_DBG_MSG("\r\n\r** DISCONNECTION EVENT OF END DEVICE 1 \n");
+ BleApplicationContext.EndDevice_Connection_Status[0] = APP_BLE_IDLE;
+ BleApplicationContext.connectionHandleEndDevice1 = 0xFFFF;
+ handleNotification.P2P_Evt_Opcode = P2P_SERVER1_DISCON_HANDLE_EVT;
+ handleNotification.ConnectionHandle = connection_handle;
+ Evt_Notification(&handleNotification);
+ }
+
+ if (cc->Connection_Handle == BleApplicationContext.connectionHandleCentral)
+ {
+ APP_DBG_MSG("\r\n\r** DISCONNECTION EVENT OF SMART PHONE \n");
+ BleApplicationContext.connectionHandleCentral = APP_BLE_IDLE;
+ handleNotification.P2P_Evt_Opcode = SMART_PHONE1_DISCON_HANDLE_EVT;
+ handleNotification.ConnectionHandle = 0xFFFF;
+ Evt_Notification(&handleNotification);
+ }
+
#if (CFG_P2P_DEMO_MULTI != 0)
- /* USER CODE BEGIN EVT_DISCONN_COMPLETE_Multi */
- if (cc->Connection_Handle == BleApplicationContext.connectionHandleEndDevice2)
+ /* USER CODE BEGIN EVT_DISCONN_COMPLETE_Multi */
+ if (cc->Connection_Handle == BleApplicationContext.connectionHandleEndDevice2)
{
APP_DBG_MSG("\r\n\r** DISCONNECTION EVENT OF END DEVICE 2 \n");
BleApplicationContext.EndDevice_Connection_Status[1] = APP_BLE_IDLE;
@@ -715,7 +716,7 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification(void *pckt)
}
- /* USER CODE END EVT_DISCONN_COMPLETE_Multi */
+ /* USER CODE END EVT_DISCONN_COMPLETE_Multi */
#endif
break; /* EVT_DISCONN_COMPLETE */
@@ -959,7 +960,7 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification(void *pckt)
break; /* HCI_EVT_LE_CONN_COMPLETE */
case EVT_LE_ADVERTISING_REPORT:
-
+
/* USER CODE BEGIN EVT_LE_ADVERTISING_REPORT */
/* USER CODE END EVT_LE_ADVERTISING_REPORT */
@@ -976,14 +977,14 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification(void *pckt)
*/
adv_report_data = (uint8_t*)(&le_advertising_event->Advertising_Report[0].Length_Data) + 1;
k = 0;
+
/* search AD TYPE 0x09 (Complete Local Name) */
/* search AD Type 0x02 (16 bits UUIDS) */
if (event_type == ADV_IND)
{
- /*ISOLATION OF BD ADDRESS AND LOCAL NAME*/
+ /* ISOLATION OF BD ADDRESS AND LOCAL NAME */
-
while(k < event_data_size)
{
adlength = adv_report_data[k];
@@ -1010,7 +1011,7 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification(void *pckt)
/* USER CODE END Tx_power_level */
break;
- case 0xFF: /* Manufactureur Specific */
+ case 0xFF: /* Manufacturer Specific */
/* USER CODE BEGIN Manufactureur_Specific */
/* USER CODE END Manufactureur_Specific */
@@ -1331,7 +1332,7 @@ static void Ble_Hci_Gap_Gatt_Init(void){
aci_gap_set_authentication_requirement(BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.bonding_mode,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.mitm_mode,
- 0,
+ 1,
0,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.encryptionKeySizeMin,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.encryptionKeySizeMax,
@@ -1719,7 +1720,7 @@ void Evt_Notification( P2P_ConnHandle_Not_evt_t *pNotification )
break;
case P2P_SERVER1_CONN_HANDLE_EVT:
- device_status.Device1_Status = 0x81; /* connected */
+ device_status.Device1_Status = 0x81; /* Connected */
P2PR_APP_End_Device_Mgt_Connection_Update(&device_status);
break;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/p2p_routeur_app.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/p2p_routeur_app.c
index 6414e560a..6b3c29e15 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/p2p_routeur_app.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/App/p2p_routeur_app.c
@@ -606,7 +606,6 @@ static SVCCTL_EvtAckStatus_t Client_Event_Handler(void *Event)
SVCCTL_EvtAckStatus_t return_value;
hci_event_pckt *event_pckt;
evt_blue_aci *blue_evt;
-
P2P_Client_App_Notification_evt_t Notification;
return_value = SVCCTL_EvtNotAck;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/BLE_p2pServer.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/BLE_p2pServer.ioc
index d2b0ef3f5..f6878099e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/BLE_p2pServer.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/BLE_p2pServer.ioc
@@ -94,12 +94,13 @@ Mcu.PinsNb=17
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DMA1_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DMA2_Channel4_IRQn=true\:15\:0\:true\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -210,7 +211,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=32000000
RCC.I2C3Freq_Value=32000000
-RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LCDFreq_Value=32768
RCC.LPTIM1Freq_Value=32000000
RCC.LPTIM2Freq_Value=32000000
@@ -232,7 +233,9 @@ RCC.RNGFreq_Value=32000
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
RCC.SAI1Freq_Value=64000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSDivider=4
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE
RCC.USART1Freq_Value=32000000
@@ -267,20 +270,18 @@ STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO=3
STM32_WPAN.CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO=0
STM32_WPAN.CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION=1
STM32_WPAN.CFG_HW_USART1_ENABLED=1
-STM32_WPAN.CFG_IO_CAPABILITY=CFG_IO_CAPABILITY_DISPLAY_ONLY
+STM32_WPAN.CFG_IO_CAPABILITY=\ CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
STM32_WPAN.CFG_LPM_SUPPORTED=1
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=0xFA0
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX=2500
STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA=0xfa0
-STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=0x640
+STM32_WPAN.CFG_LP_CONN_ADV_INTERVAL_MIN=1000
STM32_WPAN.CFG_MITM_PROTECTION=CFG_MITM_PROTECTION_REQUIRED
STM32_WPAN.CFG_RTCCLK_DIVIDER_CONF=0
STM32_WPAN.CUSTOM_P2P_SERVER=Enabled
STM32_WPAN.CUSTOM_TEMPLATE=Disabled
STM32_WPAN.DBG_TRACE_UART_CFG=hw_uart1
-STM32_WPAN.IPParameters=P2P_SERVER_NUMBER,CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_CONSOLE_MENU,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,BLE_DBG_P2P_STM_EN,LOCAL_NAME,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,L2CAP_REQUEST_NEW_CONN_PARAM,BLE_APPLICATION_TYPE,BT_SIG_BEACON,BT_SIG_BLOOD_PRESSURE_SENSOR,BT_SIG_HEALTH_THERMOMETER_SENSOR,BT_SIG_HEART_RATE_SENSOR,CUSTOM_P2P_SERVER,CUSTOM_TEMPLATE,BLE_CFG_SVC_MAX_NBR_CB,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_DEBUGGER_SUPPORTED,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART,BLE_DBG_APP_EN,CFG_DEBUG_TRACE_LIGHT
-STM32_WPAN.IPParametersWithoutCheck=CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN
+STM32_WPAN.IPParameters=P2P_SERVER_NUMBER,CFG_FAST_CONN_ADV_INTERVAL_MAX_HEXA,CFG_LP_CONN_ADV_INTERVAL_MAX_HEXA,LOCAL_NAME_FORMATTED,CFG_HW_LPUART1_ENABLED,CFG_DEBUG_BLE_TRACE,CFG_DEBUG_APP_TRACE,DBG_TRACE_UART_CFG,CFG_ADV_BD_ADDRESS,CFG_LP_CONN_ADV_INTERVAL_MAX,CFG_LP_CONN_ADV_INTERVAL_MIN,BLE_DBG_P2P_STM_EN,CFG_HW_USART1_ENABLED,CFG_LPM_SUPPORTED,L2CAP_REQUEST_NEW_CONN_PARAM,BLE_APPLICATION_TYPE,BT_SIG_BEACON,BT_SIG_BLOOD_PRESSURE_SENSOR,BT_SIG_HEALTH_THERMOMETER_SENSOR,BT_SIG_HEART_RATE_SENSOR,CUSTOM_P2P_SERVER,CUSTOM_TEMPLATE,BLE_CFG_SVC_MAX_NBR_CB,CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO,CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO,CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION,CFG_HW_RESET_BY_FW,CFG_DEBUGGER_SUPPORTED,CFG_FAST_CONN_ADV_INTERVAL_MIN,CFG_FAST_CONN_ADV_INTERVAL_MAX,CFG_IO_CAPABILITY,CFG_MITM_PROTECTION,CFG_RTCCLK_DIVIDER_CONF,CFG_DEBUG_TRACE_UART,BLE_DBG_APP_EN,CFG_DEBUG_TRACE_LIGHT,CFG_CONSOLE_MENU
STM32_WPAN.L2CAP_REQUEST_NEW_CONN_PARAM=1
-STM32_WPAN.LOCAL_NAME=P2PSRV1
STM32_WPAN.LOCAL_NAME_FORMATTED=,'P','2','P','S','R','V','1'
STM32_WPAN.P2P_SERVER_NUMBER=P2P_SERVER1
USART1.AutoBaudRateEnableParam=UART_ADVFEATURE_AUTOBAUDRATE_DISABLE
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex
index 2c941e775..5b861ca63 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex
@@ -1,2060 +1,2095 @@
:020000040800F2
-:10000000B8270020AD7E0008517C0008537C000812
-:10001000557C0008577C0008597C0008000000004F
-:100020000000000000000000000000005B7C0008F1
-:100030005D7C0008000000005F7C0008617C000817
-:10004000CF7E0008D37E0008D77E0008997C000888
-:10005000DB7E0008DF7E0008937C0008E37E00085A
-:10006000E77E0008EB7E00088D7C0008EF7E00082C
-:10007000F37E0008F77E0008657C0008FB7E000820
-:10008000FF7E0008037F0008077F00080B7F000841
-:100090000F7F0008137F0008177F00081B7F0008F0
-:1000A0001F7F0008237F0008277F00082B7F0008A0
-:1000B0002F7F0008337F0008377F00083B7F000850
-:1000C0003F7F0008437F0008477F00084B7F000800
-:1000D0006B7C0008717C00084F7F0008537F00088C
-:1000E000577F00085B7F00085F7F0008637F000880
-:1000F000A17C00089D7C0008677F00086B7F0008DA
-:100100006F7F0008737F0008777F00087B7F0008FF
-:100110007F7F0008837F0008877F00088B7F0008AF
-:100120008F7F0008937F0008777C0008977F000886
-:100130009B7F00089F7F0008A37F00082DE9F04FF8
-:100140000FF2A41CA1B0DCE90089CDE900892A9D49
-:10015000DFF8DC9B049100248DF843500D944FF0A0
-:10016000FF38824616461F460FE0B3462C461BF862
-:10017000011B0498D0470028049000F0A2800D983D
-:10018000401C641E0D90F2D176193078252808D1D4
-:10019000002100220791089209910A920B910C927A
-:1001A0000DE06A464146304600F0DAFF050001D115
-:1001B0000D98A1E0D9D50125E6E741F0010116F837
-:1001C000010F2028F9D023280CD02B2804D02D286B
-:1001D00005D0302809D076E041F00201EFE741F088
-:1001E0000401ECE741F00801E9E741F01001E6E71E
-:1001F0000F9209E00F98484505DA00EB800402EB06
-:100200004402303A0F92761C3278A2F130000A286C
-:10021000F0D330782E2818BFCDF8388022D116F8C8
-:10022000010F2A2807D138683860761C50F8042B53
-:1002300038600E9216E02D280CBF761C002000229C
-:100240000E920AE040B90E9A4A4505DA02EB8204A2
-:1002500003EB4403303B0E93761C3378A3F130025A
-:100260000A2AEFD3ADF8401021A0317800F082FFC8
-:1002700008B116F8010B8DF842009DF8420068287D
-:1002800004D1307868280AD1622105E06C2804BFC7
-:1002900030786C2803D171218DF84210761C12A899
-:1002A00006903A4616F8013B02A9504600F064F861
-:1002B00038B912AA02A9504600F0C8F900287FF503
-:1002C00064AF404618E02A2892D13A683A6052F862
-:1002D000040B3A6000280F9003D540420F9041F084
-:1002E0000401761C95E700000000000000000000FB
-:1002F000686A6C747A4C000021B0BDE8F08F622807
-:1003000020D0682811D06A2803D06C2827D0712803
-:1003100025D10868C01D20F007000860D0E900233F
-:1003200008300860194610467047002A0A680A60BB
-:10033000106803D0121D0A6000B217E0121D0A6097
-:1003400080B217E0002A0A680A60106803D0121D04
-:100350000A6040B20AE0121D0A60C0B20AE0002A38
-:100360000A680A60106803D0121D0A60C11770473E
-:10037000121D0A60002170477CB50D4611461C46CF
-:100380002E69B4F1250200F04F811C3A00F0848000
-:10039000121F022A40F280800E3A00F00981521F9B
-:1003A00059D0093A78D0921E16D0521E35D0521E1E
-:1003B000022A71D9121F30D0521F00F09880521EAD
-:1003C00049D0521E00F0E280D21E00F0FF80921E43
-:1003D00041D0D21E3FD02DE195F83A406C2C09D087
-:1003E0006869421C6A610A680A6052F8043B0A6044
-:1003F000335429E10A680A6052F8043B0A6000930A
-:10040000002201924FF0FF332B636A46294600F029
-:1004100098F9002840F1188103E195F83A0001228B
-:10042000FFF76DFFC5E90001002904D56869411C8B
-:1004300069612D220DE0288F810704D56869411C70
-:1004400069612B2205E0C00721D56869411C6961FB
-:10045000202232541BE095F83A000022FFF74FFFAC
-:10046000C5E9000195F83800010710D5D5E900234A
-:10047000002B08BF002A0AD044F02000782806D1BB
-:10048000686930213154401C421C6A613454214651
-:1004900068693044E86087E00868C01D20F0070004
-:1004A0000860D0E9002308300860C5E90023D5E9D9
-:1004B0000001C80F04D06869411C69612D220DE05C
-:1004C000288F810704D56869411C69612B2205E0EA
-:1004D000C00704D56869411C6961202232546869EB
-:1004E0003044E8602146284600F036FAACE005F1D9
-:1004F0003A02507820B14FF0FF340FF6043074E028
-:100500001078622808D0682824D06A2812D06C2875
-:100510002ED071280ED02BE00A680A6052F8040B26
-:100520000A6020B94FF0FF340FF6EC205DE0E96A75
-:10053000017089E00A680A6052F8040B0A6020B969
-:100540004FF0FF340FF6D0204FE0EA6AD317C0E92E
-:10055000002379E00A680A6052F8040B0A6020B9A7
-:100560004FF0FF340FF6B0203FE0E96A01806BE006
-:100570000A680A6052F8040B0A6020B94FF0FF3491
-:100580000FF6942031E0E96A01605DE00A680A60D4
-:1005900052F8040B0A60002120F0000221F0FF3322
-:1005A000C5E90023EE607821284600F02DF94BE0E4
-:1005B0006C2285F83A200B680B6053F8042B0B6013
-:1005C00052BB4FF0FF340FF684200EE095F83A202E
-:1005D0006C2AF0D00868086050F8044B0860EC60A2
-:1005E0003CB94FF0FF340FF6482000F0EBFD201A25
-:1005F00076BD2E6B002E04D5204600F003FE044687
-:1006000008E032460021204600F026FE002814BFF4
-:10061000041B3446AC6117E0294600F092F800282C
-:1006200012D54FF0FF3076BD6869411C6961252203
-:10063000325409E06969481C68612522725421001E
-:1006400002D0431C6B613454002076BD2DE9F0418B
-:100650000E4605469046726B7069316AB46A121A8A
-:10066000B069521A716A121AF069521A121A96F87F
-:100670003800141B41070DD4002C0BDD2746B06851
-:100680002021A8470028B06057D0F06A401C7F1E88
-:10069000F062F4D1736942463146284600F098FC76
-:1006A00000284AD1376A002F0ADDB0683021A847F8
-:1006B0000028B06041D0F06A401C7F1EF062F4D187
-:1006C000B369F2683146284600F082FCA8BB776A1D
-:1006D000002F09DDB0683021A847B06068B3F06A28
-:1006E000401C7F1EF062F5D1F068B169F3694218D1
-:1006F0003146284600F06CFCF8B9B76A002F09DDD6
-:10070000B0683021A847B060B8B1F06A401C7F1EC5
-:10071000F062F5D196F8380041070BD5002C09DDC1
-:10072000B0682021A847B06038B1F06A401C641E50
-:10073000F062F5D10020BDE8F0814FF0FF30BDE858
-:10074000F0812DE9F8470D46A3B02F6B002F064628
-:10075000904648BF6FF000470FF60C1400F0A8FD5C
-:10076000D4E90023696B4018CDE90123812828BF13
-:100770004FF0FF3042D20024002F33DDD8F80010B4
-:1007800001AA684600F0EEFC8146B9F1000F38D4AA
-:10079000D8F8000010B9B9F1010932D44F4521DB76
-:1007A0006869484481280AD30021696303AA29465D
-:1007B0003046FFF74BFF040014D40020686103AB00
-:1007C000D5F814A04A46694603EB0A0000F076FD0E
-:1007D000CA44C5F814A058F8040B002818BFA7EBAA
-:1007E0000907C9D14CB903AA29463046FFF72EFFA5
-:1007F000044614B9002068616863204624B0BDE84F
-:10080000F0874FF0FF34F8E72DE9FC4307466F29E6
-:100810003E6908BF082405D041F02000782814BFA5
-:100820000A2410243C25D7E90023642918BF69292C
-:100830009046994605D1002B03D5D8F1000869EB05
-:100840004909B9F1000F08BFB8F1000F1FD1386B8B
-:10085000E8B9082C4CD197F83800010748D530206A
-:100860003B2586F83B0043E000280ED597F838007A
-:1008700000F01400102808D17B6B7969386A5B1A84
-:100880001B1A9A1A002AC8BF3A62BDE8F3838DF892
-:100890000010404649462246E31700F01BFD303267
-:1008A000D0B26D1E3A28019504DB9DF80000A0F13E
-:1008B00051018A187255404649462246E31700F016
-:1008C00009FD80465FEA010908BFB8F1000F03D0B7
-:1008D000F86871198842DCD3082C09D197F83800E0
-:1008E000010705D5705D302802D06D1E302070558F
-:1008F000C5F13C02BA617119F960386B8242B3DA12
-:10090000821A3A624FF6EF70398F01403987BDE89D
-:10091000F3832DE9D04306460F4614464FF00008F6
-:10092000DFF8109412E0E00707D542464B46304608
-:10093000394600F053FD06460F46404649464246BA
-:100940004B4600F04BFD641080468946002CEAD1EE
-:1009500030463946BDE8D0832DE9F84F05468A4632
-:100960004AF020048EB0D5E90089612C02AE09D08E
-:10097000286B002848BF062003D408BF672C01D18C
-:1009800001202863D5E900014A005215521C0DD1FF
-:100990000B030BD0AAF1610103201A29A86102D22E
-:1009A0000FF2CC6110E00FF2CC610DE04A0052155D
-:1009B000521C0ED10B030CD1AAF1610103201A299C
-:1009C000A86116D30FF2B461E868032200F076FC48
-:1009D000C0E1CDE90C01DDE90C2323F00043B3F5C0
-:1009E000801F0DD20027002B08BF002A019703D1DA
-:1009F00011E00FF28461E7E701AA00F0C1FD0AE00F
-:100A0000CD48CE4900EB1350DDE90C2301900B409B
-:100A1000CB4910461943C5E90001612C0DD1E868A6
-:100A200030210170821CBAF1610FEA600CBF78219D
-:100A3000582141706869801C6861D5E90001CDE9E1
-:100A40000C01DDE90C2333F0004104BF0028002332
-:100A500000F04881612C40F0A080286B49460028B6
-:100A60004CBF4FF0210B00F1010B40460022002348
-:100A7000DDE90C8900F0BCFD01990BF1010738BFDD
-:100A800089F00049091F002F01918DF808200DF110
-:100A9000090040F33581A949009106464046494680
-:100AA0000022002300F0BCFD80F029814800400DA9
-:100AB00000F11C0211D0002A0FDD40F2FF739A42B0
-:100AC00005DBA04909F000400143002011E0009B34
-:100AD000194041EA025140460BE028F0000039F08D
-:100AE000004108BF00280FBF49461C22494600F0BC
-:100AF000AFFD8046894600F049FEFF1F002F0446E7
-:100B000009DD00F061FE02460B464046494600F012
-:100B10006DFE80468946F01D072104E004F00F02B7
-:100B200000F8012D2411002C01DD491EF6D5491EC7
-:100B30005CBF002200F8012DF9D5DCE00020194649
-:100B400002AA0A4400E05B1E12F80149491E8442D1
-:100B5000F9D00F2804D10DF10900425C521C425417
-:100B6000002904D50198001D02AE5B1C0190581E9F
-:100B70000CD43118AAF13A040A783032D7B23A2F9D
-:100B8000A8BFA218401E01F80129F5D5286B00283E
-:100B900040F1A780591E2963A3E001996A4A47F2F0
-:100BA0009750414391FBF2F2019229F00046D2F1B5
-:100BB000070204DD40463146FFF7ABFE0AE0524231
-:100BC00000206249FFF7A5FE02460B46404631462B
-:100BD00000F07EFE8046662C286B06BF019F0A3718
-:100BE00006273F18142FC8BF142730208DF808009F
-:100BF00089460DF1090000E03046002F34DD06463D
-:100C00004046494600F088FF01460A4606F10803BF
-:100C100004200A26B2FBF6F606EB860EA2EB4E0285
-:100C2000303203F8012C0A22B6FBF2F202EB820EFC
-:100C3000A6EB4E063036401E03F8026DE9D1083FA0
-:100C4000002F03F10806D7DD084600F079FF0246C1
-:100C50000B464046494600F0C9FD00223C4B00F0DF
-:100C6000BDFB80468946CBE70DF10901401A0DF125
-:100C7000090604E00199491E401E0191761C317855
-:100C80003029F7D0662C02D10199491C03E0652C6C
-:100C90000CBF012100212B6BCB189842B8BF431E1B
-:100CA000002B1ED4834204DAF05C3528A8BF39201B
-:100CB00000DA30201946721E02EB010800E05B1ECC
-:100CC00018F80199491E8145F9D0392802D1705C84
-:100CD000401C7054002904D50198401C16465B1C2A
-:100CE0000190019800B200901BB23246514628464E
-:100CF00000F034F82EE0C61D002F3FF7CFAE30468F
-:100D00000DF10901401A03465845C8BF5B46002B48
-:100D10000DF109063FF53AAF8342BFF60FAF0DF173
-:100D20000900C15C07297FF709AF0F2007E7000022
-:100D3000CBCCCC0C0000244002FCFFFFFFFF0F8057
-:100D40000000E03F0000F07FA08601000000F03FBF
-:100D500084D797410FB0BDE8F08F00002DE9F84728
-:100D600083B006468A461746984600F0FDF9B8F16A
-:100D7000000F406A356B90F8009002DC4FF00108DC
-:100D8000BFA74AF02000BDF93040662808BF641CA8
-:100D900015D0672840F0848014F1040FC0F28680DB
-:100DA000AC4280F2838096F83800641C010702D4BC
-:100DB000A845B8BF454620B22D1A48BF00250FFAF6
-:100DC00084FAF068B169BAF1000F25DC4A1C3023BF
-:100DD0004354002D03DC96F83800010703D5F06872
-:100DE00000F80290521C15EB0A0FB8BF6C4220B2FB
-:100DF000441941424445B8BFA046B26171620FFA3E
-:100E000088F5F561F068B3692A463946184400F060
-:100E100055FA641BB462C4E022B29045084417DA64
-:100E20004246394600F04AFAB0694044B061AAEB44
-:100E30000801002D716203DC96F838100A0705D509
-:100E4000F16801F80090F069401CF061B562A8E01B
-:100E5000394600F033FAB069002D5044A8EB04087D
-:100E600003DC96F838100A0703D5F16801F8009002
-:100E7000401CB0610FFA88F08542F368B069B8BFD2
-:100E8000A8460FFA88F207EB0A01184400F016FA98
-:100E9000B1690FFA88F00144B161281A706280E0EC
-:100EA000BAF1610F14D14FF0700A16E0A84504DAC8
-:100EB00096F838100A0758BF45466D1E48BF0025F2
-:100EC000BAF1670F14BF4FF0450A4FF0650A04E00E
-:100ED000BAF1410F08BF4FF0500AB169F368481CDE
-:100EE000B061002D17F8012B5A5403DC96F8381026
-:100EF0000A071BD5F168431CB36101F80090002D6F
-:100F000014DDA8F101080FFA88F039468542F76828
-:100F1000B8BFA8460FFA88F2F81800F0CFF9B06908
-:100F20000FFA88F108446D1AB0617562F068B16912
-:100F30000844002C80F800A003D42B224270811CAE
-:100F400003E02D2141706442811C00206A460AE0C2
-:100F500023460A2493FBF4F404EB8405A3EB450336
-:100F600002F8013B401C24B2002CF1DC012806DC15
-:100F70004AF02002652A04BF302201F8012B48B94B
-:100F8000302001F8010B07E0401E1DF8003030331F
-:100F900001F8013B0028F7DCF268B0691044091A37
-:100FA000F16196F8380000F0140010280DD1726934
-:100FB000B169706A8A18F1698218B06A8A18821851
-:100FC000706B8242BCBF821A326204B0BDE8F08707
-:100FD000F8B505460E4617461C46002074B117F8B2
-:100FE000011BB068A847B06030B1F06A401CF062E5
-:100FF0000020641EF3D1F2BD4FF0FF30F2BD0000BF
-:101000007072696E74665F733A20256E206469732E
-:10101000616C6C6F776564007072696E74663A20FB
-:1010200062616420256E20617267756D656E740063
-:101030007072696E74665F733A2062616420257312
-:1010400020617267756D656E740000007072696E64
-:1010500074665F733A2062616420256C732061724C
-:1010600067756D656E7400000000000000000000F0
-:101070006E616E004E414E00696E6600494E46003C
-:101080003000F0B40246106895681318506803EBFE
-:101090005004C0071DD54D441BE013F8017B05F833
-:1010A000017B491EF9D1A0B1B60813F8011B06F067
-:1010B0000306032E08BF13F8016B01EB062149421A
-:1010C000801C294405D011F8016B05F8016B401E06
-:1010D000F9D1A3420ED013F8016B16F0030104BF3F
-:1010E00013F8011BC91C30090F28DAD113F8010BC2
-:1010F0000F30D6E7F0BC02F10C0070471B48704778
-:1011000070B45368D418042B09DA41B1057804F897
-:10111000015B10F8016B16B15B1C491EF3E75360CD
-:1011200070BC704738B514461D4661B1FFF7E8FF43
-:1011300061686A6B204690476FF00102811A02D005
-:10114000491E01D001E003E005E00021616032BDED
-:101150006FF0010032BD4FF0FF3032BDDA6B104747
-:10116000024BDFE7014BF9E701487047D810002038
-:10117000A0100020C9B202788A421AB11CBF10F830
-:10118000012FF9E718BF0020704730B4002513E0A5
-:1011900050F8042BD30744BFA9F101039A18091F83
-:1011A000042942F8045BFAD213468C0744BF158029
-:1011B0009B1CC90748BF1D7050F8041B0029E7D1CC
-:1011C00030BC704780B500B906A005490B681BB15B
-:1011D00022220021984701E000F0BFFC222002BD3E
-:1011E000AC170020636F6E73747261696E7420684F
-:1011F000616E646C65723A20626164206D65737320
-:101200006167650000F10103810704D010F8011B3C
-:10121000820781B1FAD10268A2F10131914311F044
-:10122000803104BF50F8042FF6E709BAB1FA81F112
-:1012300000EBD100401CC01A7047B1F5807F02D38B
-:101240004FF0FF3070470170012070470078401E5A
-:101250008041C043C00F7047C9B2830706D0521EF9
-:1012600022D310F8013B9942F7D11FE0083A13D37B
-:1012700002F1040241EA012141EA014150F8043B34
-:10128000121F21BF4B40A3F1013C2CEA030C1CF0C0
-:10129000803FF3D0C9B2001F083210F8013B521E44
-:1012A00028BF91EA030FF8D818BF0120401E7047ED
-:1012B00080B5FFF723FF006C02BD00004AB10000BB
-:1012C00011F8013B521E00F8013B1CBF11F8013B15
-:1012D000F8E77047D3BBD9B1B2F5803F5BD2022AA1
-:1012E0001ED98C46B1FBF2F102FB11C31B0443EA89
-:1012F0001043B3FBF2FC02FB1C3380B240EA034311
-:10130000B3FBF2F002FB103240EA0C4000237047BE
-:10131000022A05D98446B0FBF2F002FB10C27047E6
-:101320004AB105D100F0010249085FEA3000704778
-:1013300000220023704700F013BC0B0002000021C4
-:1013400000207047F7D3002200237047904271EBD2
-:10135000030CF2D370B5B1FA81F4B3FA83F52C1B08
-:10136000A340C4F1200532FA05F63343A2405FF0F2
-:101370000046E64002E05B085FEA3202841A71EB45
-:10138000030524BF204629467641F4D302000B0012
-:101390003000002170BD70B5B1FA81F4B2FA82F567
-:1013A000C4F120046419B4F12006DAD3B2405FF02E
-:1013B0000044F440002502E052085FEA3303C61AF5
-:1013C00071EB020E24BF3046714664416D41F3D388
-:1013D00002000B002000290070BD0000B0B581EABA
-:1013E000030C0CF0004C40F2FF7515EA11541DBFC0
-:1013F00015EA1357AC42AF4239E0E41923EA4553EA
-:1014000043F48013C90241F0004141EA505EC70233
-:101410001100A7FB020200284FF00000EEFB0120A4
-:101420004FF00001E3FB072118BF42F00102401812
-:1014300000214941E3FB0E01A4F580640F0302D2B1
-:1014400052004041494154F101046CDD470872F1FA
-:10145000004250F1000051EB0451A1F580115CBF36
-:1014600041EA0C01B0BD4CEA05510020B0BD05EACF
-:101470001357AC4214BFAF4241E050EA410E1CBFCB
-:1014800052EA430E02E061460020B0BD24423C44D3
-:101490001BD15FEA070EF6D0090302BF0146002008
-:1014A000AEF1140EB1FA81F7AEEB070401FA07FEB4
-:1014B0000C37C7F1200100FA07F7C8404EEA000ECA
-:1014C00023EA455343F48013A2E733F00043B3FA11
-:1014D00083F704BFB2FA82FE77440B3FE41BB7F1F7
-:1014E000200E2FBF02FA0EF3BB40C7F1200E22FAE6
-:1014F0000EFE38BF43EA0E03BA40641C82E750EA8E
-:10150000410E14BF52EA430E6FF000014FF4001772
-:1015100017EB430F8ABF194617EB410FB5E74CEAAB
-:1015200005510020B0BDD4F10104B4F120070FDA59
-:10153000C4F12007520828BF42F0010210FA07F553
-:1015400001FA07F7E1BF2A43E0403843E1400FE0EA
-:10155000352C98DCC7F1200452EA400220FA07F249
-:1015600018BF42F0010231FA07F0A1400A430021FE
-:1015700072F1004250F1000051EB0C01B0BD0000CF
-:1015800010B5144600F002F8226010BDC1F30A53F2
-:1015900043B14A0012F5001F28D2A3F2FE32A1EB9C
-:1015A0000251704750EA410C20D001F0004C31EA62
-:1015B0000C01B1FA81F204BFB0FA80F3D2180B3AF1
-:1015C000B2F120032CBF00FA03F1914041EA0C0173
-:1015D0003EBFC2F1200C20FA0CF319439040524256
-:1015E00040F2FD33D21A01EB0351704700227047DD
-:1015F0004FF4001C1CEB410F94BF1CEB430F09E0A0
-:1016000041EA030C50EA4C0C52EA0C0C03D299420A
-:1016100008BF9042704714BF8B428242704700005F
-:101620004FF4001C1CEB410F94BF1CEB430F09E06F
-:1016300041EA030C50EA4C0C52EA0C0C03D28B42E8
-:1016400008BF8242704714BF994290427047000021
-:10165000124254D440F2FF7C1CEA11530FD0634570
-:1016600031D09B1863453CBF01EB0251704701F03C
-:10167000004141EA0C510020AFF30080704750EA6E
-:10168000410320D001F0004C91EA0C011CD0B1FACA
-:1016900081F30B3B9A420DD9D21A994051EA0C01C1
-:1016A000C3F1200C20FA0CFC61449840531C40F21A
-:1016B000FF7CD7E7914041EA0C01C2F1200C20FAEF
-:1016C0000CF3194390407047B0FA80F31533202B88
-:1016D000E0D3202AEED3203A203B9A4209D9D21AED
-:1016E00000FA03F141EA0C010020531C40F2FF7C98
-:1016F000B8E700FA02F141EA0C01002070475242BB
-:1017000040F2FF7C1CEA11530DD06345DBD0B2EBF5
-:10171000030C3CBFA1EB025170470CF1010221EA1E
-:10172000035141F4801150EA410CCCD001F0004C3F
-:10173000352A27DC30B481EA0C01B2F1200309DA42
-:10174000C2F12003044601FA03F5D0402843D140FA
-:101750009C400CE0C3F12002450020FA03F418BFBE
-:1017600044F0010421FA03F091400C43002174F18C
-:10177000004550F1000051EB0C01244230BC7FF4D5
-:101780007BAF70476146002076E70000C1F30A5343
-:1017900040F2FE329B1A14DDD3F120034FEAE172CE
-:1017A00008DDC90241EA505141F00040D84080189C
-:1017B0005040704703F2E13010B1D24382F0004054
-:1017C0007047002070470000C11768B14840401AB8
-:1017D000B0FA80F29040D21CC907C2F5846241EA97
-:1017E000025202EBD02140057047000070B44FF068
-:1017F000004591EA030F40F1B5816B40841A71EB0B
-:10180000030603D2001BB141121973414FF4001CAF
-:101810001CEB410F34BF7CEB430442E00C0DA4EB06
-:101820001356352E4FDC45EAC323DB0A45EAC121B6
-:10183000C912B6F120050DDD63FA05F6EB4086EA24
-:101840000305124218BF45F00105C01851F100010F
-:101850000CD213E062FA06F5F2405540F3415A40CB
-:10186000B340F3405A408018594107D349085FEA12
-:1018700030005FEA350528BF45F0010501F580110C
-:10188000420875F1004250F1000041EB04514E0056
-:1018900016F5001F70BC38BF70470020090D090500
-:1018A00070471CEB410F10D252EA43060BD0BCEB41
-:1018B000410F05D80C0DAB43661E342EB6DD02E099
-:1018C000AB438018594170BC704770BC7047000032
-:1018D000F0B540F2FF7581EA030C0CF0004C15EAFC
-:1018E00011541DBF15EA1357AC42AF42E5E0BC41AD
-:1018F000C1F31301C3F31303801A994143F4801316
-:1019000004D2641E4000494180185941C90241EA8D
-:101910005051B1FBF3F603FB1611A2FB0675D7EB92
-:10192000C020A94102D2761E80185941C90241EA5D
-:101930005051B1FBF3FE03FB1E11A2FB0E75D7EB5A
-:10194000C020A94103D2AEF1010E8018594189028D
-:1019500041EA9051760546EA8E2EB1FBF3F603FB81
-:101960001611A2FB0675D7EB8020A94102D2761E84
-:1019700080185941C90241EA50514EEA060EB1FBA6
-:10198000F3F603FB1611A2FB0675D7EBC020A941A5
-:1019900002D2761E80185941C90241EA5051B1FB6A
-:1019A000F3F703FB1711A2FB0735D3EBC020A941C6
-:1019B00067F100070CBF004247F0010766F3D52727
-:1019C0004FEA1E31B80814F5806412DDBD0775F1C9
-:1019D000004250EB0E5051EB045111F5801F5CBFDB
-:1019E00041EA0C01F0BD4CF07F6141F0E041002084
-:1019F000F0BDBD076D0840EA0E5041F48011D4F1EE
-:101A00000104B4F120060ADAC4F120060200E04025
-:101A100001FA06F3E1401843B24015430EE0342CBE
-:101A200013DCC6F1200445EA40056D0820FA06F2F1
-:101A3000154321FA06F0A1400D43002175F1004243
-:101A400050F1000051EB0C01F0BD00205FEA0C01E9
-:101A5000F0BDCFB992185B41B3FA83F704BFB2FA75
-:101A600082F6BF190B3FB7F120062FBF02FA06F32B
-:101A7000BB40C7F1200622FA06F638BF3343BA400E
-:101A80001CB1E419641E33E77F4231F00041B1FA22
-:101A900081F404BFB0FA80F6A4190B3CB4F120061F
-:101AA0002FBF00FA06F1A140C4F1200620FA06F685
-:101AB00038BF3143A0403C1B1AE7AC421ABF05EACD
-:101AC0001357AF4212E050EA41061CBF52EA4306E8
-:101AD000BFE750EA4107304661461CBF41EA055165
-:101AE000F0BD52EA430C08BFC143F0BD00204FF4E3
-:101AF000001616EB410F98BF16EB430F08BF16EB0D
-:101B0000410F24BFC14305E016EB430F0CBF6146F4
-:101B10004CEA0551F0BD0000400D491840EA812013
-:101B20000CD2490DA1F58061491C40F0004005DB55
-:101B3000D1F11F0154BFC840C01770470020704743
-:101B4000014648B1B0FA80F18840C91CC1F58461F2
-:101B5000090501EBD02140057047012000F0B8B81D
-:101B600070470000841A71EB030604D26E40001B1C
-:101B7000B141121973414FF4001C1CEB410F34BFEB
-:101B80007CEB430683E00C0DA4EB1356362E00F3DA
-:101B90007C80012E45EAC32341DC43EA525312BF45
-:101BA000D20292025B08240545EAC12141EA505164
-:101BB000D2EBC020994125D407D1B0FA80F610FAB3
-:101BC00006F162D00020203608E0B1FA81F6B1407B
-:101BD000C6F1200220FA02F21143B0404FEAF47439
-:101BE000B4EB465434F001064FEA74040AD8D6F533
-:101BF0000016760D04F00044F04061FA06F2504001
-:101C0000F1404840C00A40EA415021F0004128BF5D
-:101C10005FEA500550F1000044EBD12135E0DB0ACA
-:101C200045EAC121C90AB6F120050EDD42EA0242A9
-:101C3000120CC5F1200603FA06F6EB4042EA06054F
-:101C40006D42984161F100010DE062FA06F5F24043
-:101C5000554063FA06FC82EA0C02F3405A406D429A
-:101C6000904161EB030111F4801F05D1641E6205F0
-:101C700002D06D004041494121F48011430875F1C3
-:101C8000004350F1000041EB045170BC70471CEB65
-:101C9000410F15D223F0004352EA43060BD04FEA1E
-:101CA0004C0CBCEB410F04D80C0D661E342EB7DD76
-:101CB000EBE7801A994150EA410608BF0021E4E7AA
-:101CC00008BF1CEB430F28BF6FF00001DDE70000E9
-:101CD00080B5AFF30080024A11001820ABBEFBE7CD
-:101CE0002600020038B5040009D004F17C056968BB
-:101CF00009B900F01EF800F021F8012801D10120F7
-:101D000032BDA06A08B100F02AF800F00AF821F00C
-:101D10002A01FFE7816000F01BF8BDE8324000F0C7
-:101D20002EBE2068416821F490414160206881689E
-:101D3000704700202870204600F04FBF24216960C2
-:101D400020680268520852000260204600F040B944
-:101D50002068016841F0010101602046704720467B
-:101D600000F0AABD70B5044604F17C05134668680E
-:101D7000202836D149B3180027D02878012830D040
-:101D800001222A7004F154062165338073800020FB
-:101D9000E86021216960306AC8B1DFF82012C162B1
-:101DA000DFF81C02316A0863316ADFF81802486301
-:101DB0000020316A88632068216D00F12802306AB2
-:101DC00001F035F818B100F00EF8012070BD21685F
-:101DD0004020086200222A702068816841F080015A
-:101DE00008E0022070BD1020E86000212970202248
-:101DF0006A6070478160002070BD206881684A0673
-:101E00007047F8B5044640F60F002568E9692A686E
-:101E1000AB6808400DD1880602D5960602D4D800DA
-:101E200040F18980E16E00294FD02046BDE8F440A2
-:101E300008476548034204BF644E32427BD0CE0758
-:101E400009D5D70507D501262E62D4F8885045F06C
-:101E50000105C4F888508D070AD5DE0708D5276824
-:101E600002253D62D4F8885045F00405C4F8885036
-:101E70004D070AD5DE0708D5276804253D62D4F84A
-:101E8000885045F00205C4F888500D070CD5960619
-:101E900001D4034208D0256808202862D4F88800BD
-:101EA00040F00800C4F8880008050BD5550109D595
-:101EB00026684FF400603062D4F8880040F02000BB
-:101EC000C4F88800D4F88800002870D0880607D5A8
-:101ED000910601D4D80003D5E16E09B120468847A8
-:101EE000D4F8880021688A68510602D410F0280FBF
-:101EF0001AD0204600F0C5FDFFF77FFF0FD500F098
-:101F000057F860B1DFF890198163A06F00F0CEFF41
-:101F100000284CD0A06F816BBDE8F44008472046F4
-:101F2000BDE8F24001F0BAB8204601F0B7F8002051
-:101F3000C4F88800F1BDC80209D55E0207D54FF488
-:101F4000801028622046BDE8F24001F031B9080651
-:101F500009D5160601D4180205D5216F39B32046DC
-:101F6000BDE8F440084748060FD553060DD528684C
-:101F700020F0400028602021C4F880100020206755
-:101F80002046BDE8F24001F03EB9080206D55300F4
-:101F900004D52046BDE8F24001F050B9C80148BF61
-:101FA000002A04D52046BDE8F24001F048B9F1BD51
-:101FB000816821F040018160A06F7047D52A000838
-:101FC000032B0008092B0008010000102001000469
-:101FD0002DE9F84F0446DFF8C8182768DFF8C4B8C1
-:101FE0003A68A068DFF8C0A80A4021690243606926
-:101FF0000A43E1690243606E0A4302433A600026E5
-:102000007968E068DFF8942821F440510143796051
-:102010009742A1691CBF206A0143BA68DFF8840AAD
-:1020200002401143B960B046F96A606A090940EAA2
-:102030000111F9625F454FF400404FF480754FF491
-:1020400000714FF480624FF400634FF4805C4FF4F2
-:10205000005E4FF4804929D1DAF800B00BF0030B91
-:10206000BBF1030F3ED8DFE80BF00237343A4FF0F4
-:10207000010AD4F81CB05746BBF5004F4FF6F07A72
-:1020800040F01283012F09D0022F00F05582042F57
-:1020900000F08E82082F00F0C382F6E201F09DFC72
-:1020A0000146606A002840F01C8243E2DFF8ECB78A
-:1020B0005F4517D1DAF800A01AF4406A27D0BAF5C4
-:1020C000806F09D0BAF5006F03D0BAF5406F06D023
-:1020D00008E04FF0020A07E04FF0040A04E04FF076
-:1020E000080A01E04FF0100ADFF8B0B75F45C0D131
-:1020F000BAF1000F0BD0BAF1020F49D0BAF1040FB8
-:1021000000F08280BAF1080F00F0B180B7E301F06F
-:102110005CFC0146606A58B3012808BF022028D041
-:10212000022808BF042024D0032808BF062020D09E
-:10213000042808BF08201CD0052808BF0A2018D092
-:10214000062808BF0C2014D0072808BF102010D084
-:10215000082808BF20200CD0092808BF402008D03C
-:102160000A2808BF802004D00B2808BF284600D0CA
-:102170000120B1FBF0F0002800F08383626802EBDD
-:102180004201884203D31303834280F0A28076E3A6
-:10219000606AB0B3012808BFDFF80C09EED002284E
-:1021A00008BFDFF80809E9D0032808BFDFF80009F5
-:1021B000E4D0042808BFDFF8FC08DFD0052808BFFA
-:1021C000DFF8F408DAD0062808BFDFF8F008D5D029
-:1021D000072808BFDFF8E808D0D0082808BFDFF8D4
-:1021E000E408CBD0092808BFDFF8DC08C6D00A28ED
-:1021F00008BFDFF8D808C1D00B2808BF4FF2244031
-:10220000BCD0DFF8CC08B9E701F095FB0146606A65
-:102210000028ADD0012808BF0220AAD0022808BF9C
-:102220000420A6D0032808BF0620A2D0042808BF97
-:1022300008209ED0052808BF0A209AD0062808BF8B
-:102240000C2096D0072808BF102092D0082808BF7D
-:1022500020208ED0092808BF40208AD00A2808BF35
-:10226000802086D00B2808BF2846FAD080E7676A0E
-:10227000002FC8D0012F08BF484629D0022F08BF21
-:10228000704625D0032F08BF41F2555020D0042FAF
-:1022900008BF60461CD0052F08BF40F6CC4017D0C1
-:1022A000062F08BF40F6AA2012D0072F08BF1846F5
-:1022B0000ED0082F08BF10460AD0092F08BF0846C5
-:1022C00006D00A2F08BF284602D00B2F00D180204D
-:1022D00054E7BAF1000F0BD0BAF1020F38D0BAF1BF
-:1022E000040F00F07280BAF1080F00F0A780ECE054
-:1022F00001F06BFB0146606A40B3012808BF02256C
-:102300001ED0022808BF04251AD0032808BF0625BE
-:1023100016D0042808BF082512D0052808BF0A25B2
-:102320000ED0062808BF0C250AD0072808BF1025A4
-:1023300006D0082808BF202502D0092808BF40255C
-:1023400072D00A280CBF80250B286DD001256BE0C8
-:10235000606A002836D0012808BFDFF80C682BD04F
-:10236000022808BFDFF8046826D0032808BFDFF87A
-:10237000006821D0042808BFDFF8F8671CD00528C2
-:1023800008BFDFF8F46717D0062808BFDFF8EC674E
-:1023900012D0072808BFDFF8E8670DD0082808BF6B
-:1023A000DFF8E06708D0092808BFDFF8DC6703D052
-:1023B0000A2808BFDFF8D4677CD00B2808BFDFF8F5
-:1023C000106777D0DFF8C86774E001F0B4FA01460F
-:1023D000606A40B3012808BF022525D0022808BF43
-:1023E000042521D0032808BF06251DD0042808BFD6
-:1023F000082519D0052808BF0A2515D0062808BFCA
-:102400000C2511D0072808BF10250DD0082808BFBB
-:10241000202509D0092808BF402505D00A280CBF6F
-:1024200080250B2800D001256268B1FBF5F6500825
-:10243000002110EB062051EB166141E0606A002894
-:1024400036D0012808BF4FF4800633D0022808BFD9
-:102450004FF400162ED0032808BFDFF8386729D0C4
-:10246000042808BF4FF4801624D0052808BFDFF8E1
-:1024700028671FD0062808BFDFF820671AD0072872
-:1024800008BF4FF4002615D0082808BF4FF4802657
-:1024900010D0092808BF4FF400360BD00A2808BF17
-:1024A0004FF4803606D00B2808BF4FF4004601D009
-:1024B0004FF40006C246002116EB52004AEB010120
-:1024C0000023FEF707FF064601E04FF00108A6F5DE
-:1024D0004070DFF8CC16884280F0D1812268D66047
-:1024E000CFE1012808BF02251AD0022808BF042521
-:1024F00016D0032808BF062512D0042808BF0825D7
-:102500000ED0052808BF0A250AD0062808BF0C25CA
-:1025100006D0072808BF102502D0082808BF2025AC
-:1025200075D0092808BF402571D00A280CBF802526
-:102530000B286CD001256AE0606AB0B3012808BF9F
-:10254000DFF88C0521D0022808BFDFF85C051CD01D
-:10255000032808BFDFF84C0617D0042808BFDFF8AF
-:102560004C0512D0052808BFDFF83C060DD0062820
-:1025700008BFDFF83C0508D0072808BFDFF834059E
-:1025800003D0082808BFDFF838057AD0092808BF2B
-:10259000DFF8300575D00A2808BFDFF82C0570D0A9
-:1025A0000B2808BFDFF824056BD0DFF8E00568E0F2
-:1025B00001F0C1F90146606A40B3012808BF022555
-:1025C00025D0022808BF042521D0032808BF0625EE
-:1025D0001DD0042808BF082519D0052808BF0A25E2
-:1025E00015D0062808BF0C2511D0072808BF1025D4
-:1025F0000DD0082808BF202509D0092808BF40258C
-:1026000005D00A280CBF80250B2800D00125606862
-:10261000B1FBF5F1420802EB4102B2FBF0F632E009
-:10262000666A66B3012E2CD0022E08BF484628D019
-:10263000032E08BF42F6AA2023D0042E08BF7046FE
-:102640001FD0052E08BF41F698101AD0062E08BFDD
-:1026500041F2545015D0072E08BF604611D0082E05
-:1026600008BF18460DD0092E08BF104609D00A2E03
-:1026700008BF084605D00B2E08BF284601D04FF4EE
-:10268000803000F013F9B6B201E04FF00108A6F176
-:102690001000504580F0F3800AEA0601C6F34200BC
-:1026A00001432068C160ECE0012F07D0022F35D034
-:1026B000042F70D0082F00F0A580D7E001F08DF92D
-:1026C0000146606A40B3012808BF022516D00228DF
-:1026D00008BF042512D0032808BF06250ED0042801
-:1026E00008BF08250AD0052808BF0A2506D00628F5
-:1026F00008BF0C2502D0072808BF10257AD008286B
-:1027000008BF202576D0092808BF402572D00A28A6
-:102710000CBF80250B286DD001256BE0606AB0B33B
-:10272000012808BFDFF8801333D0022808BFDFF884
-:102730007C132ED0032808BFDFF8741329D0042897
-:1027400008BFDFF8701324D0052808BFDFF868132E
-:102750001FD0062808BFDFF864131AD0072808BF67
-:10276000DFF85C1315D0082808BFDFF8581310D025
-:10277000092808BFDFF850130BD00A2808BFDFF87C
-:102780004C1306D00B2808BF4FF2244101D0DFF8CC
-:102790004013606831E001F0CEF80146606A40B352
-:1027A000012808BF022525D0022808BF042521D012
-:1027B000032808BF06251DD0042808BF082519D006
-:1027C000052808BF0A2515D0062808BF0C2511D0FA
-:1027D000072808BF10250DD0082808BF202509D0DC
-:1027E000092808BF402505D00A280CBF80250B28E2
-:1027F00000D001256068B1FBF5F101EB5001B1FBA0
-:10280000F0F631E0666A6EB3012E08BF484629D063
-:10281000022E08BF704625D0032E08BF41F2555046
-:1028200020D0042E08BF60461CD0052E08BF40F6FD
-:10283000CC4017D0062E08BF40F6AA2012D0072E93
-:1028400008BF18460ED0082E08BF10460AD0092E21
-:1028500008BF084606D00A2E08BF284602D00B2E15
-:1028600008BF802000F022F8B6B201E04FF0010866
-:10287000A6F11000504502D22168CE6001E04FF071
-:10288000010804F1680001210023418001804360B8
-:1028900083604046BDE8F28F572B0008008000405F
-:1028A000F369FFCF0038014088000058616800EBF1
-:1028B0005100B0FBF1F6704790F82810CA0706D512
-:1028C00002685368C16A23F400330B43536090F8E5
-:1028D00028108A0706D502685368016B23F48033F9
-:1028E0000B43536090F828104A0706D502685368D6
-:1028F000416B23F480230B43536090F828100A07A0
-:1029000006D502685368816B23F400430B43536080
-:1029100090F82810CA0606D502689368C16B23F4A4
-:1029200080530B43936090F828108A0606D50268FE
-:102930009368016C23F400530B43936090F82810C4
-:102940004A0610D502685368416C23F480130B4388
-:102950005360436CB3F5801F05D15368816C23F439
-:10296000C0030B43536090F828100A0606D501688F
-:102970004A68C06C22F4002202434A607047F8B5EE
-:10298000044604F17C050020E8606FF07E4701F00A
-:10299000B1F80646206801680A0708D50097334653
-:1029A00000224FF40011204600F016F860B92068AC
-:1029B00001684A070AD50097334600224FF4800188
-:1029C000204600F009F808B10320F2BD202068601D
-:1029D000A86000202870F2BD2DE9F041069C054654
-:1029E0000E4690461F462868C1693140B1420CBF6F
-:1029F00001200020404528D114F1010FF3D001F04F
-:102A000079F8C01B844200D34CB92868016821F4CE
-:102A1000D071016000F01CF80021017013E02868FB
-:102A200001684A07DFD5C1690A05DCD54FF40061AA
-:102A300001622868026822F4D0720260002200F06D
-:102A400007F8C1600270032000E00020BDE8F081BB
-:102A50002868816849084900816005F17C002021CF
-:102A600041608160704701680A6822F0C0020A6014
-:102A700001688A6822F400028A602021C0F8801070
-:102A8000704701680A6822F490720A60DFF81C112E
-:102A9000026893680B4093602022C0F884200021D4
-:102AA000C1667047FFF4FF1100127A0000093D0073
-:102AB000AAB0280080841E00006A1800555814002F
-:102AC00040420F0020A1070090D0030048E8010019
-:102AD0000024F400816A00680268930644BF084637
-:102AE00000F091BB0020A1F856000868826822F02F
-:102AF000800282600868FFE7016841F040010160E0
-:102B00007047806A00F0FCBFF8B5846A04F1800564
-:102B100004F1560728686E6821688A68110606D590
-:102B2000212804D1002038802046FFF79CFF21682F
-:102B30008868410606D5222E04D10020388120461F
-:102B4000FFF79FFFA86840F01000A8602046BDE88E
-:102B5000F24000F0A3BA806A00F1560100220A8117
-:102B60000A8000F09BBA00000000127A0000093DC4
-:102B700000AAB0280080841E00006A18005558146E
-:102B80000040420F0020A1070090D0030048E80158
-:102B9000000024F40055150000CC0C0000AA0A0027
-:102BA00000FD0F005461510000D43000FEFFFFEF24
-:102BB000604981B00A6802430A600968084008E079
-:102BC0005D4881B0016841F400210160006800F4B3
-:102BD00000200090009801B0704738B586B00446D8
-:102BE0006846142100F08EFF2068544D5449A842D5
-:102BF00030D10868534D40F001000860096801F0C9
-:102C00000101059105980120FFF7D2FF02210191F2
-:102C1000002202920C2003210090039100F05AF848
-:102C2000002202920392402002210090019100F0C4
-:102C300051F845482860112100F053F808B101F01F
-:102C4000B3F86567AC6200220021252001F0C8F8C6
-:102C500025203BE03D4A90423AD148683C4D40F443
-:102C600080404860486800F4804005900598012045
-:102C7000FFF79EFF0220FFF79BFF002202920392C4
-:102C80004FF40060022100900191072200F023F828
-:102C90000221019101220292C020032100900391A0
-:102CA0000722049269462B4801F00EF92A48286051
-:102CB0000F2100F016F808B101F076F86567AC62F4
-:102CC00000220021242001F08BF8242001F0A5F837
-:102CD00007B030BD0822049269464FF0904001F0E1
-:102CE000F3B8696000201022E86080216861A86163
-:102CF000E8612862AA602961284600F033B810B55F
-:102D0000044616492068884213D101F0ABF901F05E
-:102D1000A9F91348016821F4407141F48071016000
-:102D2000026842F4004202602046BDE8104001F013
-:102D3000ACB910BD4C000058500000580080004055
-:102D40005C00005854150020440002400038014047
-:102D5000B41500200004004844040240002800404C
-:102D60009000005870B5040001D1012070BD2268A8
-:102D7000DFF800339A4204F124050BD2DFF8F802A1
-:102D800081181426B1FBF6F18900DFF8F0322962D0
-:102D9000EB610AE0DFF8E80281181423B1FBF3F1DC
-:102DA0008900DFF8E0022962E86102216970136896
-:102DB000A068E1686FF30E13034320690B43616958
-:102DC0000343A0690B43E1690343206A0B430343B8
-:102DD0001360204600F022F9A068B0F5804F04BFD0
-:102DE00000216160696A207900F01BF838B105287C
-:102DF00005D2204600F02FF900F00CF803E0002087
-:102E000028636863A8630021A961012068702970A4
-:102E1000002070BD296B00200860696BA86B4860BA
-:102E200070470860A96AE86A486060687047F8B54A
-:102E3000044604F1240600253078012801D102203F
-:102E4000F2BD012030707778012F2BD102207070F5
-:102E5000B561206807687F087F000760204600F0A2
-:102E6000C1F82168F06820B10A6842F00E020A60D9
-:102E700008E0086820F0040008602068016841F05C
-:102E80000A010160706A0168CA0301D500F044F8C4
-:102E9000306B08B100F040F82068016841F0010192
-:102EA000016001E0357002252846F2BD38B500F119
-:102EB000240200245178022903D0042090610124C7
-:102EC00028E001680B6823F00E030B6001680D68B1
-:102ED0006D086D000D60516A0B6823F480730B6000
-:102EE000012192F82030D56903F01C0399406960F4
-:102EF000936AD16A5960116B31B10B6823F4807306
-:102F00000B60536B916B59600121517014705169C2
-:102F100001B18847204632BD016841F480710160EB
-:102F20007047F8B500F124010423CA6914680268E7
-:102F3000156891F8206006F01C0603FA06F73C427B
-:102F400010D06F070ED51468A50603D4146824F0BA
-:102F50000404146000F03DF8C968002938D0BDE8C9
-:102F6000F4400847022303FA06F73C4213D0AF07A8
-:102F700011D51468A50605D4146824F00A04146059
-:102F800001224A7000F025F800220A708968F9B120
-:102F9000BDE8F4400847082303FA06F6344217D088
-:102FA0002B0715D5146824F00E041460012291F843
-:102FB0002030CC6903F01C039A40626001228A61D0
-:102FC0004A7000220A70096911B1BDE8F44008474F
-:102FD000F1BD91F82020CC6902F01C02934063609F
-:102FE0007047000070B5C56C046D6C60446D14B121
-:102FF000856DC46D6C60012490F84450066C05F03A
-:103000001C05AC407460046863608068102802D1BD
-:10301000A260E16070BDA160E26070BD10B5416C5E
-:103020000268144B89089A4239BF174C04EB81019E
-:10303000164B03EB8101816402F0FF02083A142170
-:10304000B2FBF1F1012301F01C01114AC26403FA41
-:1030500001F1016510BD01790E4A0F4B836502EB4A
-:1030600081024265491E012201F003018A40C265C6
-:103070007047000008040240F8FFFDBF0000024056
-:10308000F8FBFDBF00040240000802401C0802409B
-:1030900080080240FC0802404009024070470000DE
-:1030A00010B500F17C010A78012A01D1022010BD7F
-:1030B00001220A7024234B600268136814686408B4
-:1030C000640014600022426623F00053006803602D
-:1030D00020224A6000230B70002010BD70B500F064
-:1030E0001FF801D1022070BD00F020F822F06042EC
-:1030F00009E070B500F014F801D1022070BD00F0B5
-:1031000015F822F0606211438160204600F01CF83F
-:10311000206806602021696000222A70002070BDAE
-:10312000044604F17C0528780128704701202870A6
-:1031300024226A6020680668026852085200026011
-:103140002068826870470000FFB500BF14A200BF6E
-:1031500015A6D2E9003402A9C1E90034D6E900710C
-:10316000CDE90071416E11B90121012213E001681E
-:103170008A688968520E02F00702490F02AC655C4A
-:10318000A45C1DF801101DF80220ED00E40095FB81
-:10319000F1F194FBF2F2683041800280FFBD000043
-:1031A00001010103070100000804020408010101F4
-:1031B0007047000063601C481C4B704723601C482C
-:1031C0001C4B704770B51C46002300251A4E10B1E9
-:1031D000022804D00AE03460FFF7F1FF02E07460D7
-:1031E000FFF7E9FF0360FEF7BDFD0346012B05D0A5
-:1031F00007D3032B04D038BF022502E0012500E0ED
-:103200000325284670BD0068084A0B49904205D046
-:10321000084A904206D1086820B100474868002853
-:1032200018BF0047704700003C130020008000409A
-:10323000C813002000380140601700207047704715
-:103240004FF0B040006800F0F000B02888BFB02018
-:1032500070472DE9F041040062D0207881064FF0DC
-:10326000B04533D5A868E96810F00C0001F00301FF
-:1032700004D00C2808BF012940F07E80286881070F
-:1032800002D5E06900284BD0FFF7DAFF616A884277
-:1032900007D2084600F0B2FB002815D100F052FA20
-:1032A0000AE0286820F0F000014300F050FA606A5C
-:1032B00000F0A4FB002807D100F028FFDFF8D407B6
-:1032C000006800F073FF002840F08E812078C1076D
-:1032D00011D5A868E96800F00C00082801F0030186
-:1032E00003D00C2808BF032969D12868810302D5BF
-:1032F0006068002814D0217888071AD5A868E96882
-:1033000000F00C00042801F0030104D00C2808BFD1
-:10331000022940F08D802868410503D5E068002827
-:1033200000F062816868216920F0FE4040EA016097
-:1033300068602168DFF8606711F0180F00F076818F
-:103340006069002800F0AF80C806706840F19C807A
-:10335000800708D4716841F00101716000F0CAFB78
-:1033600007467068800700F1418100F0C3FBC01B75
-:103370000328F6D30320DEE1E06978B1296841F043
-:10338000010100F0CEFA06462868800700F13D8171
-:1033900000F0B0FB801B0328F6D3EBE72868400859
-:1033A0004000286000F0A6FB0646286800F0C6F939
-:1033B0008CD000F09FFB801B0328F6D3DAE760680F
-:1033C000B0F5803F04D1286840F48030286011E0D7
-:1033D000B0F5A02F286806D140F480202860296825
-:1033E00041F4803105E020F480302860296821F420
-:1033F00080212960606860B100F07CFB0646286887
-:1034000080033FF578AF00F075FB801B6528F6D38D
-:10341000B0E700F06FFB06462868400C10F0010092
-:103420003FF469AF00F066FB801B6528F4D3A1E789
-:10343000E06878B1296841F4807100F072FA0646BC
-:10344000286840053FF56EAF00F054FB801B032851
-:10345000F6D38FE7286820F48070286000F04AFBDC
-:1034600006462868800A10F001003FF462AF00F0C1
-:1034700041FB801B0328F4D37CE700F03BFBC01B1F
-:103480000328C0F0CF8075E740F0010000F070F92C
-:1034900007467068800700F1E08000F02BFBC01B3E
-:1034A0000328F6D366E7706820F0040000F060F9A6
-:1034B00007467068C00810F0010000F0DD8000F0E1
-:1034C00019FBC01B0428F4D354E70528306806D143
-:1034D00040F004003060316841F0010105E040082F
-:1034E00040003060316821F004013160A06841F291
-:1034F000893768B100F0FEFA80463068800700F135
-:10350000D08000F0F7FAA0EB0800B842F5D331E71D
-:1035100000F0F0FA8046306800F010F900F0C18049
-:1035200000F0E8FAA0EB0800B842F4D322E700F07C
-:10353000E1FAC01B0328C0F0C2801BE7400840002E
-:10354000B06000F0D7FA0746B06800F0F7F800F076
-:10355000BA8000F0CFFAC01B0328F5D30AE700F0C9
-:10356000C9FA801B0328C0F0C08003E700F0C2FA4C
-:10357000001B0328C0F0DA80FCE6E968DFF81C05D0
-:1035800089088900E960E9680140E96000F0B2FA61
-:10359000044600F0E5F825D000F0ACFA001B032843
-:1035A000F7D3E7E601281FD0E868226B00F003019B
-:1035B000914202BF00F07001626B914214D1A26B84
-:1035C000C0F30621914202BF00F47811E26B9142F0
-:1035D0000AD1226C00F06061914202BF00F06040AD
-:1035E000616C884200F0A6800120A4E0706840F081
-:1035F000040000F0BDF807467068000708D400F02A
-:1036000079FAC01B0428F7D3B4E600F09BF85DE616
-:103610007068A16920F4706040EA0120706000F0D9
-:10362000A4F8074600F089F87FF427AF2078410717
-:1036300037D5DFF86C743868C10529D400F012FD65
-:1036400000F058FA80463868C10521D400F052FADB
-:10365000A0EB08000328F6D38CE6706820F0040085
-:1036600070607068C00810F00100DFD000F042FA0E
-:10367000C01B0428F5D37DE600F077F8074600F07C
-:103680005CF8D3D000F036FAC01B0328F7D371E6FC
-:10369000A06801287FF419AF306840F00100306065
-:1036A00024E721784A060ED5A06A0028B0683FF4C6
-:1036B00045AF40F00100B06000F01CFA0746B0686A
-:1036C00080077FF534AFE06AA0B3A96801F00C0170
-:1036D0000C293FF467AF0228286820F0807028602A
-:1036E0007FF44BAF00F006FA064600F039F87FF49D
-:1036F00036AFEA68DFF8AC03216BA36B0240606B66
-:103700000A430243E16B206C42EA03220A43616CE4
-:1037100002430A43EA60286840F080702860E96844
-:1037200041F08051E96000F0E5F904462868800125
-:103730007FF51CAF0020BDE8F0817068400810F0F4
-:10374000010070472968606A21F0F0010143296097
-:103750006968206A21F47F4141EA0021696070476D
-:103760002868400E10F00100704770684008400063
-:10377000706000F0BFB92DE9F8430400884646D0D8
-:10378000DFF8246300F0C8F849D200F0CDF807460E
-:1037900000F0C2F843D000F0ADF9C01B0228F7D901
-:1037A0000320B7E000F0A6F9401B022845D9F7E74F
-:1037B00000F0A0F9A0EB090002284ED9F0E700F0D4
-:1037C00099F9A0EB0900022856D9E9E700F092F92F
-:1037D000401B02285FD9E3E700F08CF9401B022868
-:1037E00069D9DDE700F086F9401B41F28931884252
-:1037F00075D3D5E7032802D13968890103E0002891
-:10380000396802D1890762D401E049055FD40120FB
-:1038100080E000F06FF9C01B022870D9C0E7207863
-:1038200081074FF0B0470BD5BA68A06822F0F002CC
-:103830000243BA6000F05EF90546B868C003B1D52E
-:103840002178DFF84C5288060AD52968606921F092
-:10385000F001014300F065F8814628688003A7D590
-:10386000217848060BD52968A0690909090141EAB0
-:10387000101100F056F881462868C0039FD52178C2
-:1038800048070BD5B968E06821F4E0610143B960ED
-:1038900000F030F90546B868800397D5217808070D
-:1038A0000CD5B968206921F4605141EAC001B960C2
-:1038B00000F020F90546B86840038DD52178C80787
-:1038C00015D56068022895D1396889039FD5BA68F3
-:1038D000920840EA8200B86000F00CF90546B8682A
-:1038E000616800F00C00B0EB810F7FF47BAF3068B3
-:1038F00000F00700804505D200F016F8074600F0FA
-:103900000BF886D100F002FC00F086FCBDE8F24323
-:1039100000F04CBCBDE8F283306800F00700404581
-:103920007047296000F0E6B83168C90848EAC1016B
-:10393000316000F0DFB838B54FF0B0445C4DA1689D
-:1039400011F00C0106D1FFF77BFCC0F3031055F812
-:10395000200032BD0429574A05D00829564804D111
-:103960002168C90222D5104632BDE16801F0030189
-:10397000022904D0032904D12168C90207D51046C1
-:1039800005E0FFF75DFCC0F3031055F82000E16887
-:10399000E268E368C1F306214843C2F30211491CFF
-:1039A0005B0FB0FBF1F05B1CB0FBF3F032BD80B5F8
-:1039B000FFF7C1FF3D49FFE7404A0968C1F3031122
-:1039C00052F82110B0FBF1F002BD80B5FFF7EFFF18
-:1039D00000F010F8C1F3022106E080B5FFF7E7FF21
-:1039E00000F008F8C1F3C22112F8211001F01F0104
-:1039F000C84002BD2D49324A0968704770B52C494C
-:103A0000B1282EBFCC6AC0F3031051F820402048E3
-:103A1000056800F015FC294905F00F0551F825202F
-:103A20002849B4FBF2F20024B2FBF1F1B0F5007FBB
-:103A30002CA2204609D100BF23A353F820508D4269
-:103A400014D2401C0328F8D912E000BF22A353F877
-:103A500020508D420AD2401C0328F8D308E000F021
-:103A600049F8801B03280CD3032070BD52F8204076
-:103A70000D4D2868C00844EAC000286000F03AF8FC
-:103A80000646286800F00700A042E8D1002070BD7B
-:103A9000080100587C10002090000058FFFFFEEE47
-:103AA000000400588C80C1110040005808000058E4
-:103AB0000C7B00080024F4000048E801CC7A0008E0
-:103AC000347E000840420F00120000002400000075
-:103AD0003600000040000000060000000C0000005E
-:103AE00010000000000000000100000002000000C3
-:103AF0000400000001480068704700BF78100020F3
-:103B000070470000002200F0A3BB0000984900E0CD
-:103B1000984981B00A6802430A6009680840009029
-:103B2000009801B0704710B500F062FB924C6068DD
-:103B300040010ED56068C0000BD400F093FA00F08D
-:103B400091FA206840F480302060216821F48031AF
-:103B5000216000F0D3F8002000F094FB40B18079A0
-:103B60008649E160E26822F47C5242EA0022E26087
-:103B700000F048F88248834C016800220260036923
-:103B800003F0500303610120FFF7C2FF0220FFF79B
-:103B9000BFFF0420FFF7BAFF0120FFF7B7FF0220A5
-:103BA000FFF7B4FF00220F210E2000F019F90E20BC
-:103BB00000F033F900220F213A2000F011F93A20E9
-:103BC00000F02BF900210F226F484160826047F618
-:103BD000FF710022C16002618261C261046000F075
-:103BE00065FBCA20606253216162FF21A068C008A2
-:103BF000C000A060616200F0FFFB4FF0FF3000F0FA
-:103C00008DFCFAE710B5AEB0604C1CA821464822E6
-:103C1000FDF754FB01A81C21FFF774FF08A804F16D
-:103C200048015022FDF74AFB5348016821F0180172
-:103C300001604FF480335648026822F4C06242F4B7
-:103C4000007202600722006800F4C06000904FF428
-:103C5000807400991C9201211E91002240211D9325
-:103C6000209127921F941CA8FFF7F3FA6F200221DE
-:103C7000019002910022039204920592069207920B
-:103C8000012101A8FFF777FD43F603010022089107
-:103C90000E9200214FF4804202230F9119921A9341
-:103CA0001B91189408A800F01FFD2EB010BD10B590
-:103CB000384C394820604FF4E1310C20606100221B
-:103CC0004FF40040E06100F010F82046FEF70AF8DB
-:103CD00000212046FFF702FA00212046FFF709FAEB
-:103CE0002046BDE81040FFF7DBB96160A260E260EA
-:103CF0002261A26122626262A2627047274881B09B
-:103D0000016841F4801101603F21006800F48010D7
-:103D100000900098224841604161016841F47C11A3
-:103D20000160026942F47C120261016841F03F01C6
-:103D30000160026942F03F02026101B0704738B58C
-:103D40000446FFF7D7FE14F1010F054609D000F035
-:103D500066FA041905E01348016821F004010160C6
-:103D600030BFFFF7C7FE401BA042F4D331BD0000B7
-:103D7000480000584C00005890000058FECAFECA87
-:103D80008008005800280040E0160020187900083C
-:103D900000040058C81300200038014050000058AB
-:103DA000040C005810ED00E070470000090102000B
-:103DB00002D43C48815470473B4B02F00F021A4436
-:103DC00002F8041C7047394B19684FF6FF020002D5
-:103DD000114000F4E060084335490843186070471B
-:103DE00038B5324B1C68C4F30223C3F10704052C19
-:103DF00028BF04241D1D072D34BF0023DB1E012511
-:103E000005FA04F4641E2140994005FA03F35B1E91
-:103E10001A401143BDE83440C8E7010007D401222D
-:103E200000F01F01234B8A40400943F820207047CF
-:103E300001000BD4012200F01F011F4B8A404009F2
-:103E400043F82020BFF34F8FBFF36F8F704710B53B
-:103E5000401EB0F1807F01D3012010BD174C60607F
-:103E60000F214FF0FF30FFF7A1FF0021A1600720D5
-:103E70002060002010BD010007D4012200F01F01C6
-:103E80000F4B8A40400943F820207047010007D4B7
-:103E9000012200F01F010B4B8A40400943F820200B
-:103EA0007047000000E400E018ED00E00CED00E0D9
-:103EB0000000FA0500E100E080E100E010E000E031
-:103EC00000E200E080E200E02DE9F04106460A460B
-:103ED0004FF0000C4FF00F082CE05A4FBE4214BFB9
-:103EE0004FF0070E4FF0040E0EFA01F1294344F88B
-:103EF0002310C143544C236855680B40ED0348BF61
-:103F000003432360636855680B40AD0348BF034318
-:103F100063604E4C236855680B40ED0248BF034375
-:103F2000236063680B4051688D0248BF03436360A0
-:103F30000CF1010C106830FA0CF172D0012303FA75
-:103F40000CF31840F4D05468022C18BF122C4FEA1E
-:103F50008C010ED14FEADC0406EB840401F01C0E48
-:103F6000256A08FA0EF7BD43176907FA0EF73D43B5
-:103F700025624FEA4C0403253768A540ED4305EA66
-:103F8000070E177907F00307A74047EA0E073760C7
-:103F90005768012F18BF022F03D0112F18BF122FFF
-:103FA00011D1B76805EA070ED768A74047EA0E07A0
-:103FB000B760776827EA03035768C7F3001707FA63
-:103FC0000CF73B437360F3681D40936803FA04F4F5
-:103FD0002C43F4605468E300AAD51D4C4FEA9C03BF
-:103FE00054F8237001F00C0108FA01F5B6F1904F76
-:103FF00027EA050508BF4FF0000E11D0154FBE424D
-:1040000008BF4FF0010E0BD0134FBE4208BF4FF058
-:10401000020E05D0114FBE427FF45FAF4FF0030E8A
-:1040200062E7BDE8F0810AB1816170478162704743
-:104030000B4A136803421CBF106000F061BA70475E
-:1040400000000000001000488008005800080058D8
-:10405000080001400004004800080048000C004827
-:104060000C0800580248016841F4807101607047F3
-:10407000000400588A60FF210268516280F82130F4
-:10408000002180F820100020704790F820100129AE
-:1040900001D102207047012180F82010022280F80F
-:1040A0002120CA2103685962532201684A62012310
-:1040B00001688A6842F02002FFF7DCBF3249002025
-:1040C00008604FF0B0413148026842F4700202606B
-:1040D0004FF4E022086840F0010008608A600B6835
-:1040E0002B4803402B480B60026822F00502026057
-:1040F000002243685B085B0043602748C860086192
-:10410000086820F4802008608A61704710B54FF07D
-:10411000B04222491068C0F3031001EB8003186C11
-:10412000936803F00C03042B04D0082B04D00C2B51
-:1041300004D01CE01A481AE01A4818E0D368D46882
-:10414000C4F3021403F00303641C022B08BF1448D9
-:1041500002D0032B08BF1348B0FBF4F3D068D46837
-:10416000C0F30620640F4343641CB3FBF4F00E4B12
-:10417000186090681A68C0F3031051F82000B2FB71
-:10418000F0F0186010BD000008ED00E088ED00E0E0
-:10419000FBFEF6FA9400005800100422CC7A0008C6
-:1041A0000024F4000048E8019C10002070B50F4E78
-:1041B0000446B0680025A8B1FFF7F9FBB2684FF4D8
-:1041C0007A71B1FBF2F2B0FBF2F0FFF740FE48B9B2
-:1041D000102C07D2002221464FF0FF30FFF700FEDF
-:1041E000746000E00125284670BD00BF78100020F3
-:1041F000104810B5016841F4807101600320FFF799
-:10420000E2FD0020FFF7D2FF0024002814BF0124A4
-:10421000FEF7D6FC204610BD0748406870470648A8
-:10422000806870470548FFE7016841F001010160BF
-:10423000704700000040005878100020042004E07F
-:10424000DFF80800006800F4C06070470004005800
-:1042500000B500BF130096469446103928BFA0E869
-:104260000C50FAD85FEA417C28BF0CC048BF40F828
-:10427000042BC90728BF20F8022B48BF00F8012BE8
-:1042800000BD000020B501460648074DC2798A42AC
-:1042900018BFA84218BF0838F8D18A4218BF0020BA
-:1042A00020BD00BFF873FF1F0070FF1F70B5040032
-:1042B00049D094F8210028B9002184F82010204624
-:1042C000FEF71DFD00F04EF853202168486200F013
-:1042D00052F8FF2510B100F03FF834E02168DFF814
-:1042E000AC008A6802408A60226893686668216927
-:1042F000A0690E430643334393602068E16801617F
-:1043000020680169A26841EA024101612068C16830
-:1043100021F08001C1602068C16C89088900C164F6
-:104320002168CA6CE369606903431A43CA6421685F
-:104330008868810609D400F01CF830B12068456215
-:10434000042100F01DF8012070BD206845620121A4
-:1043500084F82110002070BD20684562042184F893
-:1043600021107047022084F82100CA21226851627E
-:10437000704720460CE0204623E02068C0F82480E7
-:1043800084F82110002084F820007047BFFF8FFFC1
-:1043900038B504462068C16821F0A001C160FFF76C
-:1043A000A9FB05462068C168880608D4FFF7A2FB70
-:1043B000401B40F2E9318842F4D3032032BD002093
-:1043C00032BD38B504462068C1684A0612D44FF0A1
-:1043D000FF31C160FFF78EFB05462068C1684806C3
-:1043E00008D4FFF787FB401B40F2E9318842F4D341
-:1043F000032032BD002032BD10B52A482A4C88B0B7
-:10440000016841F40041016000F0F2FA2749002000
-:1044100000F08BFCFFF706FF2548016841F480316E
-:104420000160026C42F48032026400F0D4FD01218C
-:10443000012000F0E2FA002000F016FE012000F05A
-:1044400013FE022000F010FE012000F031FE0121D9
-:10445000002000F047FE0121012000F043FE00F0A3
-:1044600099FE144A0021082000F0B8F804F23C51EB
-:10447000009169460FF241020FF24100019200F0F3
-:1044800077FF04F25471029104F5C96240F23C5185
-:1044900003920591049402A800F002FF00F078FE58
-:1044A00008B010BD0800005824000320E0160020CA
-:1044B00090080058B35300087047000080B500F022
-:1044C00026FF00F0F7FFBDE804400021012000F0C6
-:1044D00094BA70474FF0FF3000F020B80021082058
-:1044E00000F089B8022000F0A8B8022000F0ADB8B2
-:1044F000FFF7DDBB13460A4601460020FEF762BE09
-:10450000012805D0022805D0102805D101F011B9E5
-:1045100001F011B901F046B9704700002DE9F041F2
-:10452000544CDFF85481A5692840A06131E0491C52
-:1045300054F831000742FAD004EBC10718407968FB
-:104540001040014204BF4FF0FF327A607E68304075
-:1045500000F094F86062012101FA00F086437E6069
-:10456000EFF3108272B6606A23698140C9430B4041
-:104570002361022004EBC00353F8087C0F40401E67
-:1045800043F8087CF6D182F31088606A58F820104E
-:10459000884763692069A2691840104207D0E06922
-:1045A000216A084203D1002103EA0207C0E701F0B3
-:1045B00033FBEFF3108872B621696069A26901408C
-:1045C000114201BFE069216A0842FFF782FF88F3C8
-:1045D000108801F022FBA561BDE8F08138B51446D2
-:1045E000EFF3108572B600F049F8234941F82040F6
-:1045F00085F3108831BD30B5EFF3108272B61D4BD4
-:104600001C6904431C6153F83150284343F83100BE
-:1046100082F3108830BDEFF3108172B6154A5369EA
-:1046200023EA000005E0EFF3108172B6114A5369E6
-:104630001843506181F310887047EFF3108172B610
-:104640000C4AD3691843D061F4E770B5094C656A28
-:10465000266A2062012101FA05F502E02846FFF7EB
-:1046600039FF216AE0690842F8D088432662E06198
-:1046700070BD00005010002054140020024600209D
-:10468000110C090404BF1020120412F07F4F04BF64
-:104690000830120205A312F0704F04BF001D120172
-:1046A000120FC0F11F00995C401A70470403020208
-:1046B000010101010000000000000000DFF82C13E0
-:1046C0000A68030903F47F2300019A4300F47F2062
-:1046D00000F088B9DFF814231368010C23EA0143C2
-:1046E00043EA0043136070472DE9F8430546002470
-:1046F0002878DFF8F8624106A0464FF0B0472DD584
-:10470000286B70B1B0F5800F06D0B0F5000F18BF60
-:10471000B0F5400F17D01FE0F96841F48031F9601F
-:10472000F3E0386820F080603860FFF7E3F98146F5
-:104730003868000140F1D680FFF7DCF9A0EB0900F2
-:104740000228F5D90324DDE0FFF7D4F9A0EB090036
-:10475000022840F2CF80F5E70124A0462868010531
-:1047600031D5B06800F44078286C80452AD0FFF736
-:1047700079FCB8F1000FB16805D1286C21F44071C3
-:104780000143B1601EE0B06840F48030B06021F4B5
-:104790004071B06820F48030B060286C0143B16093
-:1047A000B068C0070ED5FFF7A5F98046B06880074E
-:1047B00008D4FFF79FF9A0EB080041F28931884245
-:1047C000F4D30324A0462878C10705D53268A86928
-:1047D000920840EA820232602978880705D531685C
-:1047E000E86921F44061014331602978C80644BF7B
-:1047F000A86AFFF76FFF2878810644BFE86AFFF7D1
-:1048000069FF2878410744BF286AFFF757FF2878D7
-:10481000010744BF686AFFF751FF2868C1051ED52C
-:104820003268686B22F0406202433260696BB1F11A
-:10483000006F00F0C9F8686BB0F1806F0FD1396874
-:1048400021F0806100F0CBF804463868000163D5A0
-:10485000FFF750F9001B0228F7D94FF0030870E06A
-:10486000FFF748F9001B022864D9F6E7316821F008
-:104870004041316020F08050326822F040621043A5
-:104880003060A86BB0F1C05F00F09EF82868410569
-:1048900076D53268E86B22F0405202433260E96B11
-:1048A000B1F1005F03D1F86840F48030F860E86B44
-:1048B000B0F1805F64D1396821F0806100F08FF839
-:1048C0000446386800014CD5FFF714F9001B022894
-:1048D000F7D94FF0030853E0FFF70CF9001B02284B
-:1048E00047D9F6E700F067F8A86821F4781100F0DE
-:1048F00071F88146386800017FF526AF396968692B
-:1049000001433961002C7FF428AF3168286B21F412
-:1049100040010143316021E73969686821F4FE41B3
-:1049200041EA002139613969E86821F0606100F0ED
-:1049300051F804463868000192D539696869014325
-:10494000396129688805A1D5A86BB0F1804F1CBFDB
-:10495000B0F1004F002889D1316821F0404108436F
-:104960008EE700F028F8286921F0604100F032F865
-:10497000044638680001AFD5396968690143396177
-:104980002968C80405D5F168686C21F440410143E9
-:10499000F160296888040BD5796AE86C21F0300150
-:1049A00001437962796AA86C890840EA81017962D9
-:1049B0004046BDE8F2833869696820F4FE4040EA69
-:1049C000012038613969704703D1F86840F0807080
-:1049D000F860704701433961396841F0806139609E
-:1049E000FFF788B81043086070470000880000583F
-:1049F0000C48002101604160704710B500F00CF8D0
-:104A00005C6819B1012904D1204301E024EA0000C7
-:104A1000586082F3108810BDEFF3108272B6014B1C
-:104A20007047000068170020DFF84C150A6892B242
-:104A300000E00246086880B28242FAD170472DE950
-:104A4000F041DFF83865DFF83885317804461825FD
-:104A50006843062908EB000708D13078707034707D
-:104A600079754FF0FF30706000203DE000F07BF87A
-:104A7000B9680918B96008F10803B96832786A435F
-:104A80009A589142327813D308F1150315FB02FCB2
-:104A900013F80C30062B29D008F108066B43F358A5
-:104AA000994222BF08F115036A439A5CECD21DE0DB
-:104AB0001146337869439A420FD008F1140C08F17B
-:104AC000150E1CF8013015FB03F50EF805407A753C
-:104AD0003B7508F11402545403E008F114037A758D
-:104AE0005C54317871703470BDE8F08111466943CF
-:104AF00008F115035B5C062B04D008F1140615FBC6
-:104B000003F574557B753A7508F115025454EBE7BB
-:104B1000F0B5DFF86834DFF868541E7818240246D0
-:104B20006243B0422A4404D118785870547D1C70F6
-:104B30000FE0167D507D92F815C005F1150766430C
-:104B4000062807F806C004D0167D143514FB00F4BF
-:104B50002E55012010731A78062A02BF00294FF043
-:104B6000FF305860F0BD10B5DFF81044606810F1F8
-:104B7000010F10D0FFF758FF6168DFF80824814269
-:104B80002FBF636861685388CB1851781278181A60
-:104B90004843D04000E0002080B210BD2DE9F84F1E
-:104BA000DFF8E053DFF8E0B3D5F80880D8F800006C
-:104BB000DBF800104A0500F0A2F9DFF8C063DFF867
-:104BC000C0A321F4806181604FF0180934780AF1A4
-:104BD000080019FB04F14758FFF7C5FF874211D2BF
-:104BE00000270121B170062C3FD019FB04F40AF113
-:104BF00008010A59824210D200230B510AEB04012A
-:104C00004C7DF0E7A9884118B94202D2AF88002153
-:104C1000E8E701223F1AB270E5E70A590AF10803F2
-:104C2000121A1A51EAE7022802DA2878012800D07D
-:104C30007F1ED8F80000C1684A07FAD500F052F983
-:104C4000DBF80C00000CBFB247EA0047CBF80C7051
-:104C5000FFF7EAFE7060A8680068816841F480612F
-:104C60008160AFF30080BDE8F18FB8B20028DAD1DF
-:104C7000FFF7DAFE70600320BDE8F24FFFF7FBB8E4
-:104C80002DE9F843EFF3108872B6BE4DBC4BA8680F
-:104C90000168CA224A625320486218208A6822F4B6
-:104CA00080628A60B54A1678374647431F44387B8E
-:104CB000022823D13C68D7F810909078D8B17A7B3D
-:104CC000012A0AD101213046FFF722FF88F310881C
-:104CD0007968304600F019F904E088F3108830460E
-:104CE00000F0C6F8A86800F01AF831462246484697
-:104CF00000F054F90DE0FFF751FF08E0C8684207E3
-:104D0000FCD500F086F84FF40020A049086088F335
-:104D10001088FF22A86801684A62BDE8F183006834
-:104D2000CA214162532242627047F8B5954CA16096
-:104D3000CA2209684A625323934A4B62156845F0B8
-:104D400020051560136803F00703C3F10403237003
-:104D500095682D0C05F07F056D1C6570EDB29268AD
-:104D6000C2F30E02521C628092B2521E6A43A2F536
-:104D7000A072DA404FF6FF739A422CBFA380A28044
-:104D8000834A136843F400231360824B1D6845F483
-:104D900000251D6048BB7948012383704FF0FF3523
-:104DA00045600023764D00260C355FFA83FC1827FA
-:104DB00017FB0CFC5B1CDFB205F80C60062FF4DB64
-:104DC00006230370886820F48060886000F021F872
-:104DD0004FF40021D1600320FFF758F8A068006865
-:104DE000816841F48041816005E0C868410544BFA5
-:104DF0000320FFF740F8A1680A68FF2050620022F4
-:104E000003210320FEF7ECFFBDE8F2400320FFF78B
-:104E100004B8C86800F0800060F49060C860704713
-:104E20002DE9F04104460025EFF3108672B61827ED
-:104E3000DFF84CC10CF10C0E07FB05F81EF808005A
-:104E400010B16D1C062DF5DB062D0CD06F430CEB5D
-:104E500007000127077386F310880461427303601B
-:104E60000D70002002E086F310880120BDE8F0817B
-:104E7000F8B50746EFF3108472B60320FEF7D8FFAB
-:104E8000404DAE683068FFF74BFF3B461820424963
-:104E90004343CA5C022A1BD100213846FFF738FE83
-:104EA0003648017806290ED1306837490A6853051B
-:104EB00000F025F821F480618160C1684A07FCD5C3
-:104EC00000F010F804E04078884218BFFFF766FE53
-:104ED000A9680A68FF2050620320FEF79EFF84F352
-:104EE0001088F1BDC16801F0800161F49061C1607A
-:104EF0004FF40020254908600320FEF7C7BF02D504
-:104F0000C1684A07FCD4816870472DE9F0418046AA
-:104F10000F46424618201A4942438C18237B022B25
-:104F200004BF4046FFF7A4FFEFF3108572B60320DD
-:104F3000FEF77EFF134EB068FFF7F1FE02202073EC
-:104F4000A76067604046FFF77AFD0C490A78497808
-:104F5000914202D0FFF722FE02E0A168081AA06089
-:104F6000FF20B1680A6850620320FEF756FF85F300
-:104F70001088BDE8F081000028280040A01700201C
-:104F8000AC12002048170020082800400C080058E8
-:104F90000008005880080058B81200201047000090
-:104FA00038B5EFF3108472B6274D6946281D00F01E
-:104FB00050FF6946281D00F0A6FF38B184F3108821
-:104FC000BDF80010214AFFF795FA31BD0120287085
-:104FD00084F3108831BD80B5FFF78AFA0221009171
-:104FE0000023194800F124014FF48052001D00F005
-:104FF00015FE01BD00BFF8B514460026EFF310857D
-:1050000010F1010F1ED001281CBF02284FF0FF36FF
-:1050100018D1BCB1264672B60B4F012392B2381D8F
-:1050200000F011FE00281CBF3978002908D00022AA
-:105030003A7085F31088A1B2044AFFF75BFA01E0E9
-:1050400085F310883046F2BD2C000020A14F0008E7
-:10505000464981B00A6802430A6009680840009026
-:10506000009801B07047000078B585B004466846E6
-:105070001421FEF747FD0220FFF7EAFF3FA13C4E57
-:1050800031F8145000950121019100220221029271
-:105090000391694656F82400FEF716FF00F002F867
-:1050A00006B070BD56F8240000222946FEF7BBBFAB
-:1050B00010B500F00FF8BDE810400122FEF7B3BFB5
-:1050C00010B500F007F8BDE810400022FEF7ABBFB6
-:1050D0000000000029A3264C33F8101054F82000DB
-:1050E0007047000030B585B004460D46684614216F
-:1050F000FEF708FD210008BF042004D0012C18BFD2
-:10510000022C02D10820FFF7A3FF2900DFF864205A
-:105110001CA00ED130F8141000910023019301213E
-:1051200002230291039300F01BF80120FEF707FE13
-:1051300014E0012D12D130F814000F4B00900295AD
-:10514000019300F00DF800BF10A0045D00220F21B4
-:1051500060B2FEF745FE60B2FEF75FFE05B030BDFF
-:10516000694652F82400FEF7AFBE00004C0000581C
-:105170008410002090100020000021102000010069
-:105180000200000010000100020000000A060700F3
-:1051900000F07ABF6C486D49016001F12002426065
-:1051A00001F13003836001F13C02026201F144032A
-:1051B000C36001F14C02026101F16803436101F136
-:1051C0006C0282617831C16100F066BF38B5044677
-:1051D0005F4D05F1100000F0C3FF5B494868A1680E
-:1051E000016005F11001E268C2608160456000F075
-:1051F0006FFF58482DE080B553494A681368012075
-:10520000187200F06BFF002002BD38B5514C504DB4
-:1052100007E0694605F1100000F0CEFF0098216814
-:10522000884705F1100000F09EFF0028F1D031BD45
-:1052300048484168084738B50446474D284600F0BD
-:105240008FFF4149C868A1680160456000F04BFFCD
-:1052500042482168016062684260002032BD80B52A
-:105260003949CA6813681020187200F042FF002004
-:1052700002BD3549CA68394910680B68184738B506
-:10528000364C354D06E06946284600F095FF0098FB
-:1052900061688847284600F066FF0028F3D031BDDA
-:1052A00038B504462E4D284600F05AFF2D4800F030
-:1052B00057FF25480069A1688160E268C260056106
-:1052C00021680160626842602169416162698261AE
-:1052D00031BD80B50146234800F058FFBDE80240CB
-:1052E0000FF2050000F015BF38B5174C1D4D08E052
-:1052F0006946284600F060FF00992069006900F0C7
-:1053000045FF284600F02FFF0028F1D031BD10B531
-:10531000154C204600F024FF0B4948690460BDE8A5
-:10532000104000F00ABF1CB50F4C06E0694620464D
-:1053300000F042FF009800F019F8204600F013FF3B
-:105340000028F3D013BD000000000320B0090320A3
-:1053500084080320781700209C0803208017002071
-:10536000340A0320701700203C0A03207047000015
-:105370007FB50C464C4D61684C4EE8612962284669
-:1053800000F02CFF2468746006F1080000F0E8FECD
-:10539000012000F065F801203070296841B10FF25A
-:1053A000E5020FF2E90300920193029468468847F0
-:1053B0007FBD1FB53D4C04F1080000F0D4FEE8B9F4
-:1053C0002078D8B1694604F1080000F0F5FE01200C
-:1053D00035492070C96941B10098029001A88847F9
-:1053E0009DF804102170080003D00098FFF771FFAA
-:1053F00004E0009904F1080000F0BEFE04F108008A
-:1054000000F0B1FE28B9207818B104F10800FFF7C8
-:1054100065F81FBD2DE9F04105460E4690461C4635
-:10542000002000F01DF8214F7868A0F80950C672DE
-:10543000324641460C30FBF741FF1B4A13690021FD
-:105440000020984748F2E800FFF74FF879688A781B
-:10545000D21C04F10800FBF731FFBDE8F041012048
-:1054600010B51149124C096A20B901B188470021D1
-:10547000217010BD0120207011B1BDE81040084717
-:1054800010BD00000020FFF72DB8000010B5014648
-:10549000064C04F1080000F079FE04F10800BDE8B4
-:1054A0001040FFF71BB80000041700203817002039
-:1054B0005D17002038B58EB002A8DFF84415DFF87C
-:1054C00044450FF2B1553022FBF7F8FE00940195E8
-:1054D00069460FF28950DFF8304500F089FE01215E
-:1054E0000220FFF78AFADFF8242500210420FFF7C5
-:1054F00075F802A800F060FF00F056F900F064FFB4
-:1055000004F1260500204FF6FF7184F890002980F1
-:1055100001200FF2B5420021FFF760F8062000F0ED
-:10552000DFFFDFF8EC04002101220170427001F07E
-:1055300075F80FF20553002204F191010020FFF7E6
-:105540006FFC0FF2FD43002204F192010020FFF7EF
-:1055500067FC002068808022DFF8B804A021028068
-:105560004180012000F0C6F90FB030BD2DE9FC41AB
-:105570000646DFF894447078DFF89454DFF8988496
-:10558000052804F1900704D03E2811D0FF285ED0F2
-:10559000CCE0B188E08C814205D10021E1843970F2
-:1055A000404601F07BF8012000F0A4F9012047E01B
-:1055B000F07801282BD0032802D00C2803D0B5E0C6
-:1055C00008F12800A8E00FF2C04001F067F8307938
-:1055D00000280CBF08F1540008F17C0001F05EF8CF
-:1055E000E08C6A460DF1010101F0A8F860B90FF2F4
-:1055F000B44001F053F89DF800209DF801100FF21F
-:10560000B84001F04BF891E00FF2C84084E07878A0
-:10561000FFF72EFCB6F8051008F1A40001F03EF8E3
-:10562000387804280CBF0620052038700021B6F811
-:105630000500E084E8802971281D00F0E9FF0020C2
-:105640002871281DE18CE98000F0E2FF6EE0B6F8D9
-:105650000300001F63D04FF47F71401A1AD0401E20
-:105660004BD0401E19D0401E1ED0401E1FD0401EE1
-:1056700020D0401E28D0401E4CD0401E24D0401EBA
-:1056800028D0401E23D040F2F631401A04BF01203A
-:1056900068704BE008F1D8003EE008F5827000F039
-:1056A000FDFF0FF24C4037E008F5967034E008F546
-:1056B000AC7031E00FF2584000F0F0FFE08C01F0E8
-:1056C000B4F90FF26C4027E008F5C47024E008F547
-:1056D000D67021E0D6F807100FF2704000F0DEFF20
-:1056E000D6F807100FF27C4000F0D8FFE08C0121C3
-:1056F00001F0E8F908F5EC700EE0F17908F50670B4
-:1057000000F0CCFFF079002814BF0FF280400FF2B8
-:10571000684001E008F51C7000F0C0FF06E00120C1
-:10572000FFF7C6FCB8780A21FFF7EFFB0120BDE8C0
-:10573000F68100F08BBF7CB5B34C94F89000012843
-:1057400018BF00282DD0B2484178012929D1002264
-:105750000178B24D4270491C01EBD1725210A1EB9D
-:1057600042010170F7EE040A017800EB81004FF46A
-:10577000FA7690ED020AE08C0096C0EE200AFDEE6B
-:10578000E00A10EE902A92B20023114601F0AEF921
-:1057900000280CBF284605F13000BDE8764000F037
-:1057A0007DBF73BD7047000078B589B00020ADF8AB
-:1057B0001A0000F087FF9A4D9A4E286810F1010FE9
-:1057C0000ED069683074090A020A000CB074727451
-:1057D00006F1100468683175F074090A717506E005
-:1057E0000020FEF74FFD040008BF0FF2FC342246F4
-:1057F0000621002000F045FE607930724EF66E52B0
-:1058000021797172E078B072A178F17260783073AA
-:1058100021787173089207AA28687B4C07900621AB
-:105820002E2000F02EFE0FF2C8321021182000F0BA
-:1058300028FE0FF2CC321021082000F022FE1821A1
-:10584000012000F03FFE01F084F90DF1160006A9D9
-:105850000190009105AB07220021012001F065F8BD
-:10586000CFA0BDF8181000900723BDF81400002247
-:1058700001F02CFA0DF11A0000900223BDF8161069
-:10588000BDF81400002201F021FA022202210020BA
-:1058900000F087FF0020207001F004F80120607004
-:1058A0000021E170082060751021A175012020758C
-:1058B000A07000205C49A161C1B221440871401C64
-:1058C000C1B21029F8DB002004900023A169207DDB
-:1058D000039102900122A17D607D01910090617889
-:1058E000A07800F0F3FFA07808B101F085F80AB0C5
-:1058F00070BD00002DE9F043012887B0044603D1B4
-:1059000044480588478803E04FF4C8654FF47A6738
-:10591000DFF8F490DFF8148109F190067078FFF752
-:10592000A7FA3178A0A000F0B9FE022C10D130788F
-:10593000012818BF02280BD100F050FF010003D14D
-:10594000404600F0ABFE03E008F1240000F0A6FEA4
-:1059500000200690059009F1290204925FF00802E8
-:1059600099F82800AAA103900291019200230093C4
-:1059700034703A462946002000F043FF29490E20A2
-:1059800001F002F8010013D1012C0AD108F14C00FA
-:1059900000F084FE7078264907B0BDE8F043FFF7B9
-:1059A000B4BA08F1740007B0BDE8F04300F076BE69
-:1059B000012C0CBF08F1A00008F1D00007B0BDE831
-:1059C000F04300F06BBE000010B50120FFF778FB3C
-:1059D0000D4C94F89000052811D000F0FFFE002136
-:1059E00084F8901030B900BF76A000F057FE00BFD9
-:1059F00076A000E00F48BDE8104000F04FBE10BD9B
-:105A0000447D0008A4080320181200202F6200081B
-:105A10001C000020B4170020886F0008F87B0008E5
-:105A20008075FF1F0400002007B201009474000875
-:105A300046E00100C47D000800210120FEF7DBBD27
-:105A40000120FFF73DBB00210420FEF7D4BD01205B
-:105A5000FEF7F3BD0120FEF7F8BD000010B50446C7
-:105A6000616801F1080000F0BDFC00B10120207068
-:105A700010BD000010B1012803D070470720FEF7C9
-:105A8000CABD0720FEF7CFBD4556545F555044416F
-:105A900054455F5048595F434F4D504C4554452045
-:105AA0000A000000526561645F50485920737563B5
-:105AB00063657373200A0000504859205061726179
-:105AC0006D202054583D2025642C2052583D20251F
-:105AD00064200A005265616420636F6E66206E6FF9
-:105AE00074207375636365657373200A000000009A
-:105AF0000D0A0D2A2A206163695F6761705F70611A
-:105B000073735F6B65795F72657370200A000000C4
-:105B10000D0A0D2A2A204556545F424C55455F47D1
-:105B200041505F424F4E445F4C4F5354200A000097
-:105B30000D0A0D2A2A2053656E6420616C6C6F7704
-:105B4000207265626F6E64200A0000006E756D65DC
-:105B50007269635F76616C7565203D20256C640A0F
-:105B6000000000004865785F76616C7565203D2017
-:105B7000256C780A000000000D0A0D2A2A205061C9
-:105B80006972696E67204F4B200A00000D0A0D2ACA
-:105B90002A2050616972696E67204B4F200A00000D
-:105BA00053544D3332574200466972737420696E04
-:105BB00064657820696E20256420737461746520A3
-:105BC0000A00000020200D0A0D0000002A2A2053A0
-:105BD000544F50204144564552544953494E472052
-:105BE0002A2A20200D0A0D006C7AD8AC57720000CA
-:105BF000123456789ABCDEF0123456789ABCDEF035
-:105C0000FEDCBA0987654321FEDCBA0987654321BA
-:105C100009503250535256317047704730B5039C8B
-:105C2000016000250021C16041610561A107856116
-:105C300042600381047704D5008910B14FF0FF3032
-:105C400030BD002030BD2DE9F84F064684B03089C4
-:105C50000C460025002700287169BC460CBF4FF098
-:105C60000208B84699B180B93069756800F1010B36
-:105C7000AB4528BFABEB050B3568285C15F80BB0BE
-:105C800000EB0B25AD1CADB203E0054600E000B112
-:105C900002463069D6F80CB05845934623BFD6F873
-:105CA00004E0AEEB0000401B002008EB0B0903FBF7
-:105CB00009FE864532BF0020B0FBF9FA09FB1A0045
-:105CC000C0B2804509DA96F81C905FEAC97A48BFED
-:105CD00084465FEA897048BFC446100000F0AF8078
-:105CE0007068714461448842C0F0A980B94602944A
-:105CF000ADF80020039357E082073CD53089002897
-:105D000040F09D8032681A44270A02F8024C22466D
-:105D1000D6F800C09C440CF8017C27463068184433
-:105D2000FBF7CCFA7169B06961187161401C019C84
-:105D3000B06117E09CB3307FC207DDD5308948B928
-:105D400030681844FF2100F8021CFF223168194412
-:105D500001F8012C00277069241874615C463089B1
-:105D6000002340B931680C70200A32685070022359
-:105D70007069801C706108EB04050020ADB23061D1
-:105D80006CB1BA440298D6F800C000EB0A01224672
-:105D90000CEB0300FBF792FA70692418746109F1A7
-:105DA0000109B069401CB061039A7068316991457E
-:105DB00049D2691881422CBF081A0846306103464F
-:105DC0003089A8B93168BDF80000C8545B1C706800
-:105DD0003168834228BF1B1ABDF80000000AC8546E
-:105DE0005B1C7068834228BF1B1A7069801C70613D
-:105DF0000BFB09FA7468BDF800000299E41A8442AA
-:105E000088BF0446ABEB04025C455144019203D0C9
-:105E100090D2307F00288DD137682246F818FBF7E2
-:105E20004DFA7069201870612746BDF80050019C3A
-:105E300045440023ADB2A3E73068404400E00020B1
-:105E400005B0BDE8F08F88448045F5D3A8EB000885
-:105E5000F2E770B5028900230B80002A44690CBF69
-:105E600002250025002C4CD0028952B9C268466830
-:105E7000531CB34228BF9B1B0668B25CF35C02EB69
-:105E8000032200F086F825D10A884FF6FF739A4264
-:105E900004BF0289002A09D0C36802699A4219D254
-:105EA0000289BAB14668F31A934213D24368C268B2
-:105EB000E41A1419446100240289C4604AB90268D2
-:105EC0001478012B94BFC3F101030123D25C04EBCE
-:105ED00002220A80C468426806682B19934228BFD0
-:105EE0009B1A33440E884169891B491B416105D0C7
-:105EF00034192D19954228BFAD1AC5608169491E14
-:105F00008161184670BDF0B5028900230B80002A1C
-:105F100042690CBF02240024002A38D0C5680289D7
-:105F20002B464AB946686A1CB24228BF921B0668D3
-:105F3000775DB25C07EB022200F02BF820D10A88D3
-:105F40004FF6FF76B24204BF0289002A07D14268A9
-:105F50000023012A94BFC2F1010201220AE0026972
-:105F6000AA420DD202895AB14668751B954207D2E2
-:105F7000002304E005682E78AA5C06EB02220A8062
-:105F800041680068E4188C4228BF641A0319184657
-:105F9000F0BD0A80027F02F00302012A7047000070
-:105FA000C0680840884201D1012070470020704736
-:105FB000C0690840884201D1012070470020704725
-:105FC00010B5614C02212046FFF7F2FF38B160683E
-:105FD000C043810703D5FFF752F9022018E00121E1
-:105FE0002046FFF7E5FF38B16068C043C10703D51D
-:105FF000FFF70BF901200BE008212046FFF7D8FF3F
-:1060000038B16068C043010703D5FFF78CF9082059
-:10601000A06010BD10B54C4C00F033F818B96068A2
-:10602000C043810306D400F02CF830B96068C04347
-:10603000810302D5BDE8104064E0082100F022F899
-:1060400070B96068C04301030AD560683F4940F4F5
-:1060500000206060086880474FF40022A26010BDF5
-:10606000202100F00FF858B96068C043810207D5BD
-:10607000606840F400106060BDE81040FFF7D8B8D9
-:1060800010BD022120468BE740BF20BF3048016889
-:1060900041F400410160704780B52E48016841F429
-:1060A00080110160006800F480100090009826487C
-:1060B000016841F001010160026842F4803202602F
-:1060C0002C20FDF7AAFEBDE802402D20FDF7A5BE5D
-:1060D0002148016849084900016070471F494FF491
-:1060E0008030086070471C48016821F0020101609F
-:1060F000704719484FF400314160026822F40032C1
-:10610000026070471448016841F400310160FFF7F4
-:10611000B0B838B504460C4D08212846FFF740FFBB
-:1061200030B10A480460696821F40021696031BD1A
-:10613000A0474FF40020A86031BD0748016821F056
-:106140000801016070470000000C0058A8170020EB
-:106150000C04005850000058040C0058080C00585B
-:10616000006040607047EFF3108172B602688242AF
-:106170000CBF012000201CE0EFF3108272B6036810
-:106180000B60486001600868416023E0EFF3108213
-:1061900072B6086043684B6041604868016019E06E
-:1061A000EFF3108172B6436802681A6042680068B3
-:1061B000426081F31088704710B5EFF3108472B617
-:1061C00002680A600068FFE7FFF7EAFF84F31088BF
-:1061D00010BD086082F31088704700000249034A2E
-:1061E00001600261704700BF375200085F5200082B
-:1061F0007FB50C466A4D61686A4EE861296228469F
-:1062000000F0B2FD246805F12400FFF7A9FF7460D7
-:1062100006F10800FFF7A4FF01203070296829B1BA
-:106220000FF2491200920294684688477FBD1FB55D
-:106230005C4C04F10800FFF796FFE8B92078D8B16C
-:10624000694604F10800FFF7B7FF012054492070A8
-:10625000C96941B10098029001A888479DF80410CF
-:106260002170080003D00098FFF733F804E000998C
-:1062700004F10800FFF780FF04F10800FFF773FF47
-:1062800028B9207818B104F10800FFF7DCFB1FBD26
-:106290002DE9FC410446002000F05EF86688208865
-:1062A000A268DFF8FC80C6F3090646EA8026E068AB
-:1062B000B6B2C1B2304600F03BF8002548F2E80023
-:1062C000FFF7C8FB08E07888B04202D1226939782C
-:1062D0001170787800B1012508F12400FFF743FF21
-:1062E000F0B9694608F12400FFF766FF00980146FF
-:1062F00000F10B07487A0F28E5D0B7F80100B0424B
-:106300000CD1887A6169C01EC0B28842C8BF0846F5
-:10631000606102462069F91CFAF7D0FF3878D9E7A6
-:106320002800CBD0012000F017F80020BDE8F6814E
-:1063300010B513461B4A5468A4F80900E1720A46D6
-:10634000194604F10C00FAF7B9FF154A1369BDE8C4
-:1063500010400021002018471149096A08B921B1ED
-:10636000084700291CBF01200847704710B50146A7
-:10637000487A0F2818BF0E2807D10B48FFF706FFF1
-:10638000BDE810400020FFF762BB064C04F1080096
-:10639000FFF7FCFE04F10800BDE81040FFF753BB17
-:1063A000B416002028170020D8160020FFF732F876
-:1063B0009DF80E0005B000BDF8B500F10C026B466B
-:1063C00021214FF66640F1E71B480021017101725F
-:1063D00000F034B818490A7941F822000879401CC5
-:1063E0000871704770B504466078FF2802BFB4F8A2
-:1063F000030000F47F40B0F5406F12D100260E4D2F
-:1064000000E0761C2979F0B288420AD2F1B255F840
-:106410002120204690470100F3D002D0022805D069
-:1064200006E02046BDE87040FFF7A0B8002070BD30
-:10643000012070BD000000005417002080B500F05E
-:106440009DFC00F09CFC00F09BFC00F09AFC00F02E
-:1064500099FC00F098FC00F097FC00F096FC00F02E
-:1064600095FC00F094FC00F093FC00F0C8FC00F0F8
-:106470006DFD00F06CFD00F06BFDBDE8014000F02B
-:1064800068BD18B50C46C7B0114600F04EF88DF83F
-:106490001D4022460DF11E0000F05CFD00F03AF8B0
-:1064A0003F21ADF804100C2200F039F8A41C06922C
-:1064B000049400F04BF800284CBFFF209DF800002A
-:1064C00048B010BD00B5C7B000F01DF80F2200F0B5
-:1064D00032F800284CBFFF209DF8000047B000BDF7
-:1064E00000B5C7B000228DF80020ADF81C0000F008
-:1064F00011F8182200F01FF800284CBFFF209DF86B
-:10650000000047B000BD00238DF81C008DF81D1061
-:106510008DF800301822002101A800F021BDADF84F
-:10652000062007A903910122704700228DF8002060
-:106530008DF81C007047ADF806203F21ADF804101F
-:106540000222049207A9039101220692CDF814D0E9
-:10655000002101A8FFF79CBEF8B507464B4C3978DF
-:106560004DA54B4E21B1012906D003290FD0F1BD15
-:1065700001202070304603E00020207006F1340036
-:1065800000F08CF82846BDE8F24000F087B8796842
-:106590000878D0B9487801280AD10020FEF788FD94
-:1065A00006F1680000F07AF800F02FF80120A070E2
-:1065B0007968487848B9FEF783FD06F1900000F04D
-:1065C0006DF800F022F80020A070786801780129A9
-:1065D0001AD1407801280AD10020FEF769FD06F1A2
-:1065E000B80000F05BF800F010F80120A0707968A6
-:1065F000487848B9FEF764FD06F1E00000F04EF877
-:1066000000F003F80020A070F1BD284600F046B865
-:106610000078012808BF00F00DB8704780B50FF270
-:10662000350200210220FDF7D9FF18480021017032
-:10663000BDE8014080B50020FEF742FD134801216E
-:10664000002241708270C170027101BD00210220E0
-:10665000FDF7D1BF10B50D4C20792178401E804147
-:10666000C00F20710B4859B100F018F80AA000F0D3
-:1066700015F8E11CBDE810404FF6426000F04FBC39
-:10668000BDE81040403000F009B80000901700202D
-:106690008C730008B0790008200A0D000EB4C0B554
-:1066A000024603A800210190009101AB012104489A
-:1066B00078440C30F9F742FD06BC5DF810FB00BFD2
-:1066C000CB17000000B587B000F013F800F020F8F9
-:1066D000032100F009F800F013F800284CBFFF2058
-:1066E0009DF8000007B000BDADF80410ADF806102D
-:1066F000704700208DF800007047049207A90391AD
-:1067000001220692CDF814D0002101A8FFF7C0BDE8
-:106710001822002101A800F023BCADF806200821B2
-:10672000ADF804100322704709220021684600F0EA
-:1067300017BC1822002102A800F012BC70B5C8B026
-:1067400006460C4615460522FFF7EFFFADF8206020
-:10675000FFF7EFFF302200F013F8052200F01AF8DF
-:10676000002848BFFF2009D49DF8000030B99DF8EB
-:106770000300207000209DF80410297048B070BDFF
-:10678000ADF80A200821ADF808100222059208A9E8
-:10679000049170470792CDF818D0002102A8FFF7A6
-:1067A00077BD18B5C7B000F00CF83122FFF7B5FF80
-:1067B000FFF7A3FF00284CBFFF209DF8000048B062
-:1067C00010BD00248DF81C008DF8004007A8417012
-:1067D00082700021182201A800F0C2BB00B587B06A
-:1067E00000208DF8000000F03DF9812200F017F93B
-:1067F00000F046F900284CBFFF209DF8000007B0CC
-:1068000000BD2DE9F84DC7B09446DDF840E1519A3E
-:10681000559D569EDDF84CA1ADF81D108DF81C005D
-:106820004FF0000BADF81FC08DF821308DF822E03D
-:1068300000F02CF800F01FF824F8095F668000F0E3
-:1068400011F93F20ADF8040083210120ADF80610B6
-:1068500000F00AF800F016F900284CBFFF209DF860
-:10686000000048B0BDE8F08D07AA57440690039297
-:106870000D370497704788F800A007AC5499E419C5
-:10688000524608F10100544400F064BB8DF8232007
-:10689000174652998DF800B00DF1240809A8B844A4
-:1068A00000F058BB00B5C7B000F08CF800F0DAF883
-:1068B00000F0CDF8852200F08BF800F0E2F8002817
-:1068C0004CBFFF209DF8000047B000BD2DE9F0430C
-:1068D000C7B0DDF838814F9E509D519F529C8DF876
-:1068E0001C004FF0000907A88DF8009041708270DD
-:1068F0000DF123018DF81F308DF820808DF8216077
-:106900008DF822500F608DF8274000F0ABF88622FA
-:1069100000F085F80C2200F0B0F800284CBFFF20F2
-:106920009DF8000047B0BDE8F083F8B5C8B0054653
-:106930000E4617461C4600F022F808A846708770DD
-:106940008DF8205000F0B5F88A2200F0A1F803225B
-:1069500000F0A4F8002848BFFF200ED49DF80000E6
-:1069600058B94F994E98BDF801202280BDF80330E8
-:106970000380BDF805000880002049B0F0BD072263
-:106980000021684600F0ECBA18B5C7B000230446F1
-:106990008DF800308DF81C40224600F08FF800F092
-:1069A00061F800F054F88E2200F09AF8641C069208
-:1069B000049400F067F800284CBFFF209DF8000009
-:1069C00048B010BD00228DF800208DF81C007047E3
-:1069D000ADF8062007A90391012204927047002216
-:1069E0008DF80020ADF81C007047ADF806203F215F
-:1069F000ADF804100222704700B587B000208DF872
-:106A0000000000F02FF8922200F009F800F038F8AA
-:106A100000284CBFFF209DF8000007B000BDADF876
-:106A200006203F21ADF80410704700B5C7B0FFF74E
-:106A3000D6FF00F017F89522FFF7D7FF00F01DF8FA
-:106A400000284CBFFF209DF8000047B000BD3F214B
-:106A5000ADF8041070470023ADF81C008DF81E102F
-:106A60008DF800301822002101A800F079BAADF8A5
-:106A700006203F21ADF804100322049207A90391D8
-:106A800001220692CDF814D0002101A8FFF700BC26
-:106A9000ADF80A203F21ADF808107047059208A90B
-:106AA000049107220792CDF818D0002102A8FFF721
-:106AB000EFBB1822002102A800F052BA0DF11D0010
-:106AC00000F048BA00B5C7B0FFF7C5FFA522FFF731
-:106AD000CEFF00284CBFFF209DF8000047B000BD4E
-:106AE000ADF8062007A90391012270475CB5C7B035
-:106AF0000026ADF81C0007A84C9C41808280ADF8B0
-:106B0000223004818DF8006000F018F83F21ADF8C4
-:106B1000041040F281120F210291ADF806200A21E3
-:106B2000049107AA01210691039200F00CF80028B5
-:106B30004CBFFF209DF8000049B050BD1822002135
-:106B400001A800F00DBACDF814D0002101A8FFF77C
-:106B50009FBB00B587B000208DF8000000F0E3F87F
-:106B600040F2011200F0F9F80122069200F0E2F87A
-:106B700000284CBFFF209DF8000007B000BD2DE9A4
-:106B8000F84104460128C7B0884616461F4608BF8C
-:106B9000022003D002280CBF102000200DF11D039D
-:106BA0001D1800F035F8012C8DF81C4002D0022C85
-:106BB0001AD01BE00224224641460DF11D0000F0D0
-:106BC000C9F92E706F7000F0AEF800F0A6F84FF41F
-:106BD000817200F017F8E41C0692049400F0AAF801
-:106BE000002805D5FF2009E01024E4E7472005E050
-:106BF0009DF8000010B94E9800F063F8FFE748B028
-:106C0000BDE8F081ADF8062007A903910322704783
-:106C100003220021684600F0A3B92DE9F64F0C4687
-:106C20000546012CC7B09B4608BF022003D0022CAA
-:106C30000CBF102000200DF11F031E18FFF7E8FF06
-:106C4000012CADF81C508DF81E4002D0022C2BD028
-:106C50002CE00227569C559DDDF85091DDF84CA1A3
-:106C6000DDF8488148993A4600F053F8A6F800B09C
-:106C700086F8028086F803A086F804907571B471D6
-:106C800000F051F800F049F84FF4827207A9ADF80E
-:106C9000062003910A3703220497069200F04AF86F
-:106CA000002805D5FF2009E01027D3E7472005E09D
-:106CB0009DF8000010B9579800F003F849B0BDE8FE
-:106CC000F08FBDF8011001800020704778B5C7B083
-:106CD0001D464C9B00F034F800268DF800608DF8BE
-:106CE00021502A4619460DF1220000F033F900F038
-:106CF0001AF800F012F84FF4837200F028F8AD1D76
-:106D000000F016F800284CBFFF209DF8000049B0A5
-:106D100060BD0DF11F0000F01DB93F21ADF804105A
-:106D200070478DF800301822002101A800F018B932
-:106D300006920495CDF814D0002101A8FFF7A8BA57
-:106D4000ADF81C00ADF81E108DF820207047ADF88E
-:106D5000062007A9039101227047ADF806203F21C4
-:106D6000ADF80410704700000249034A0160026157
-:106D7000704700BFCD510008F751000870477047B9
-:106D8000704770477047704770477047704770474B
-:106D90007047000038B5054684B068780024FF28A5
-:106DA00002BFB5F8030040F60141884224D164498E
-:106DB0008A88B5F80700921C904209D1687B0124AB
-:106DC000C10752BF8DF8004000228DF8002010E06E
-:106DD0004988491C88420FD15A48FFF75FFC0320BD
-:106DE0008DF8000005F10D02B5F80B108DF80810B4
-:106DF00001926846FFF7B0FB204605B030BD10B5E4
-:106E00008AB051484E4CFFF7E5FA8F218DF81810E3
-:106E1000E522B3218DF819208DF81A10D5222E21E4
-:106E20008DF81B208DF81C107F224A218DF81D2023
-:106E30008DF81E1098222A218DF81F208DF8201021
-:106E400048227A218DF821208DF82210CC22402171
-:106E50008DF823208DF82410FE2200218DF82520A6
-:106E6000ADF8261000940823012206A90220FFF79E
-:106E700086FE00F034F8412100F026F8A01C00F056
-:106E800018F8062100F00DF800F029F8422100F072
-:106E90001BF8201D00F00DF8102100F002F80AB0D8
-:106EA00010BD039200910223208806AA0221FFF759
-:106EB000B4BEFE22059001218DF825200491029197
-:106EC00000200A22019070478DF821208DF82410AF
-:106ED0008E2200218DF82320ADF82610704719214D
-:106EE0008DF81810ED2282218DF81A108DF81920D6
-:106EF000ED218DF81C10AE224C218DF81B208DF851
-:106F00001E10212241218DF81D208DF820109D2278
-:106F100022218DF81F208DF82210452270471CB5C4
-:106F200042224FF64264A04208D105480091022354
-:106F3000818800880022FFF7C9FE0246104616BD70
-:106F400098170020747D0008956D00087047704701
-:106F50007047704710B50446FAF7B0F9204610BDE7
-:106F600010B5044610460A460146204600F002F8D5
-:106F7000204610BD4018491C1CBFB1F1010100F8AA
-:106F8000012DF9D1704700000D0A0D2A2A2044492D
-:106F900053434F4E4E454354494F4E204556454E60
-:106FA00054205749544820434C49454E54200A0028
-:106FB0000D0A0D2A2A20434F4E4E454354494F4E49
-:106FC00020555044415445204556454E542057497C
-:106FD000544820434C49454E54200A004556545FBE
-:106FE0005550444154455F5048595F434F4D504CB4
-:106FF0004554452C20737461747573206F6B200A9F
-:10700000000000004556545F5550444154455F50C0
-:1070100048595F434F4D504C4554452C2073746183
-:10702000747573206E6F6B200A0000004556545F24
-:107030004C455F434F4E4E5F434F4D504C4554457A
-:1070400020666F7220636F6E6E656374696F6E2069
-:1070500068616E646C6520307825780A0000000055
-:107060000D0A0D2A2A204556545F424C55455F476C
-:1070700041505F4C494D495445445F444953434F47
-:1070800056455241424C45200A0000000D0A0D2A87
-:107090002A204556545F424C55455F4741505F504A
-:1070A0004153535F4B45595F524551554553542009
-:1070B0000A0000000D0A0D2A2A204556545F424C52
-:1070C00055455F4741505F415554484F52495A41D9
-:1070D00054494F4E5F52455155455354200A0000C4
-:1070E0000D0A0D2A2A204556545F424C55455F47EC
-:1070F00041505F534C4156455F53454355524954A7
-:10710000595F494E49544941544544200A00000002
-:107110000D0A0D2A2A204556545F424C55455F47BB
-:1071200041505F4445564943455F464F554E4420C4
-:107130000A0000000D0A0D2A2A204556545F424CD1
-:1071400055455F4741505F4B455950524553535F3A
-:107150004E4F54494649434154494F4E200A00007E
-:107160000D0A0D2A2A206163695F6761705F6E7581
-:107170006D657269635F636F6D70617269736F6E65
-:107180005F76616C75655F636F6E6669726D5F795E
-:1071900065736E6F2D2D3E594553200A0000000087
-:1071A000424C455F4354524C5F4170705F4E6F7468
-:1071B000696669636174696F6E3A204556545F422F
-:1071C0004C55455F4741505F50414952494E475FDA
-:1071D000434D504C542C2070616972696E675F6337
-:1071E0006F6D706C6574652D3E537461747573209A
-:1071F0003D2025640A0000000D0A0D2A2A2045566C
-:10720000545F424C55455F4741505F50524F434594
-:10721000445552455F434F4D504C455445200A005C
-:1072200010B50446AFF30080204600F005F8044690
-:10723000AFF30080204610BD70B500F10F06F608D0
-:10724000F600B04240D2082E04D2082602E00830F0
-:1072500000F047F8DFF804512C68210005D1002028
-:1072600007E00268B24221D2011D08680028F8D167
-:107270002068291D0A68824222D01368B34238BFB1
-:10728000111DF7D312E093190B60801B54685C60EA
-:107290000B6818601660096800291DBF486800283F
-:1072A000081D0020286002F1080070BD61B10A6865
-:1072B0001068A0F10803B342E5D250680860EAE71D
-:1072C00000F04EF80028C2D1002070BD10B50400B7
-:1072D00006D0AFF30080204600F003F8AFF3008043
-:1072E00010BD002800D1704770B4A0F108021368E7
-:1072F000072B2BD913F0070F28D1184C616809B15F
-:107300008A4202D25160626013E0486800B3904242
-:1073100038BF0146F9D31BE0964203D11B180B601E
-:107320000A4606E0486810B1134498420ED35060F4
-:107330004A60506850B11368D518854206D10026BE
-:1073400026600168CB1813604068506070BC7047BD
-:1073500008680E18B242DFD270BC70478817002050
-:107360000749086808B1002070470648C008C000F7
-:1073700008600549C908C900091A0160704700BFC3
-:10738000B0170020BF270020B82B00202D2D205043
-:107390003250204150504C49434154494F4E2053A4
-:1073A0004552564552203A204E4F54494649434192
-:1073B00054494F4E20454E41424C45440A0000007E
-:1073C0002D2D20503250204150504C4943415449BA
-:1073D0004F4E20534552564552203A204E4F544965
-:1073E0004649434154494F4E2044495341424C453C
-:1073F000440A00002D2D20503250204150504C495D
-:10740000434154494F4E2053455256455220203A4D
-:10741000204C454431204F4E0A0000002D2D2050B5
-:107420003250204150504C49434154494F4E205313
-:10743000455256455220203A204C454431204F4673
-:10744000460A00002D2D20503250204150504C490A
-:10745000434154494F4E2053455256455220312006
-:107460003A204C454431204F4E0A00002D2D20502B
-:107470003250204150504C49434154494F4E2053C3
-:1074800045525645522031203A204C454431204F38
-:1074900046460A005375636365737366756C6C7951
-:1074A0002053746F707065642041647665727469EE
-:1074B00073696E67200A000053746F702041647610
-:1074C0006572746973696E67204661696C656420D2
-:1074D0002C20726573756C743A202564200A0000B4
-:1074E0005375636365737366756C6C79205374614F
-:1074F0007274204661737420416476657274697396
-:10750000696E67200A0000005375636365737366D4
-:10751000756C6C79205374617274204C6F772050B5
-:107520006F776572204164766572746973696E67FE
-:10753000200A000053746172742046617374204104
-:1075400064766572746973696E67204661696C65FB
-:1075500064202C20726573756C743A202564200AAF
-:10756000000000005374617274204C6F7720506FDC
-:10757000776572204164766572746973696E6720FD
-:107580004661696C6564202C20726573756C743A71
-:10759000202564200A0000002DE9F04107468846B6
-:1075A000387810F0030F16461D4633D0384600F0E9
-:1075B00099F878BBB8F1000F1CBFD8E90001861913
-:1075C000012D2ED13888C10415D5396A07F144023E
-:1075D000384600F0A3F83A6B044602B93A69F968F4
-:1075E000384600F09BF8361B341A7A69F968384639
-:1075F00000F094F8261A1EB94DB916F1010F09D002
-:1076000097F903002A46314600F08EF8064616F137
-:10761000010F09D12320AFF300804FF0FF30BDE808
-:10762000F081022DE8D1EBE7388810F4405F0ED0EE
-:107630007868F86038617861B86107F1440178686A
-:10764000F861396207F13000002178623963B8F1DE
-:10765000000F05D0D8E9020107F13402C2E90001A8
-:107660003B884CF6FF6003403B800020BDE8F08182
-:1076700070B50546AFF300802888810415D56E6883
-:107680000024EA6895F903003146914212D2521A59
-:10769000FDF7B0FC10F1010F1CBF00283618F0D127
-:1076A0000FE04DF6FF70014029802846AFF30080BF
-:1076B000002070BD00220021FDF79CFC10F1010F9D
-:1076C00000D101246868E860A861E861002C29887D
-:1076D000E7D041F4007129802846AFF300804FF0D5
-:1076E000FF3070BDF8B5A0B9AFF3008000250A4E99
-:1076F00008244FF0FF37306820B1FFF7B9FF0028AA
-:1077000048BF3D46361D641EF5D1AFF300802846C4
-:10771000F2BDBDE8F240ABE7F8110020914234BF62
-:10772000511A0021084670473EB504000D00012A99
-:1077300002D100F063F807E0022A07D1009400208C
-:10774000019069460C20ABBE2D1801E0002A0CD137
-:107750000094019569460A20ABBE002805D100229D
-:107760002100280000F027F801E00020C04303B00A
-:1077700030BD000010B4314A002113461C68844219
-:107780001EBF491C9C6884421EBF491C1C69844260
-:1077900009D09C69491C844205D0491C203310291A
-:1077A000ECD310BC7047002342F8313002EBC1012A
-:1077B0004B6010BC704770B4204C002325462E68E7
-:1077C0008E421EBF5B1CAE688E421EBF5B1C2E69C4
-:1077D0008E4209D0AE695B1C8E4205D05B1C203501
-:1077E000102BECD370BC7047054604EBC303012A91
-:1077F00004BF59684D195D6070BC704710B40F4AE2
-:10780000002113461C6884421EBF491C9C688442A8
-:107810001EBF491C1C6984420AD09C69491C8442D1
-:1078200006D0491C20331029ECD310BC002070472F
-:1078300002EBC100406810BC70470000D414002067
-:1078400010B50446E068A169884251D3218849F205
-:1078500002030B40022B08D008044CBF4FF4007009
-:107860004FF48440014321803BE001F4C042B2F573
-:10787000C04F06D1A168884203D32046FFF732FFEC
-:1078800078BB208810F4406F02BF606804F14401A7
-:10789000884217D14FF40070FFF7C2FC606030B926
-:1078A00004F144006060E060401CA0600AE02188B0
-:1078B00041F040012180E060606100F50072606885
-:1078C000A260E0616068A1682061A1612078410741
-:1078D0000AD502220021204600F00CF810F1010F19
-:1078E00002D14FF0FF3010BD208840F4C04020800E
-:1078F000002010BD70B504460D461646AFF300805B
-:1079000033462A4600212046FFF746FE054620461C
-:10791000AFF30080284670BD0000000000000000AA
-:107920000000000000000000000000000000000057
-:107930000000000000000000000000000000000047
-:107940000000000000000000000000000000000037
-:107950000000000000000000000000000000000027
-:107960000000000000000000000000000000000017
-:107970000000000000000000000000000000000007
-:1079800000000000000000000000000000000000F7
-:1079900000000000000000000000000000000000E7
-:1079A00000000000000000000000000000000000D7
-:1079B0002D2D20503250204150504C4943415449C4
-:1079C0004F4E2053455256455220203A20494E46AC
-:1079D0004F524D20434C49454E5420425554544F2C
-:1079E0004E203120505553484544200A20000000C5
-:1079F0002D2D20503250204150504C494341544984
-:107A00004F4E20534552564552203A2043414E276F
-:107A10005420494E464F524D20434C49454E542028
-:107A20002D20204E4F54494649434154494F4E2042
-:107A300044495341424C45440A20000018B401789F
-:107A40000A0627D51F4A13680021834203D1002468
-:107A500042F821401BE05368012183421EBF0221EE
-:107A600093688342F3D0D368032183421EBF04216D
-:107A700013698342EBD05369052183421EBF06215F
-:107A8000936983421EBF0721D3698342DFD012BCB2
-:107A900000F01AB8002101804FF0FF3200F14401DC
-:107AA000C270C1604161C16100F1440300F1440250
-:107AB00000F130014360026182610262416211BCE7
-:107AC00070470000F8110020FFF700BC0100000023
-:107AD000030000000500000001000000010000009C
-:107AE000060000000A000000200000000200000064
-:107AF000040000000800000010000000400000002A
-:107B0000800000000001000000020000A0860100CB
-:107B1000400D0300801A060000350C0040420F00A3
-:107B200080841E0000093D0000127A000024F40049
-:107B300000366E010048E801006CDC020000000025
-:107B400000000000000000000000000038B5040044
-:107B50000ED0207810F0030F03D094F90300002812
-:107B600009D5AFF300802046FFF768FFAFF3008030
-:107B70004FF0FF3032BD2046FFF7B4FD0546AFF3AE
-:107B800000802078410644BF6068FFF79DFF002019
-:107B9000606094F90300022804D900F016F808B1D7
-:107BA0004FF0FF35E06B48B100F01BF808B14FF023
-:107BB000FF35E06BFFF788FF0020E0632046FFF70A
-:107BC0003DFFAFF30080284632BD1CB50200009295
-:107BD00069460220ABBE04001000FFF7CBFD200079
-:107BE00016BDE0B50090F9F70DFB019069460E2037
-:107BF000ABBE03B000BD0000424C455F5356435F2F
-:107C00004C324341505F436F6E6E5F5570646174D8
-:107C10006528292C205375636365737366756C6CD6
-:107C200079200D0A0D000000424C455F5356435F1A
-:107C30004C324341505F436F6E6E5F5570646174A8
-:107C40006528292C204661696C6564200D0A0D00A9
-:107C50007047FEE7FEE7FEE7FEE7704770477047B4
-:107C600000F020B80548FBF75CB90548FAF7C9B839
-:107C70000448FAF7C6B80448FBF753B95415002076
-:107C8000C81300203C130020B41500201020FCF77E
-:107C9000CFB90120FCF7CCB9FCF7F2BFFEF7BAB9B7
-:107CA000FEF78EB902490A68886882180A60704730
-:107CB0007810002038B50C46C5B22046AFF30080DE
-:107CC000E068A169884204D32046FFF7B9FD002887
-:107CD0000FD4E068401CE06000F8015D20880105D9
-:107CE00003D440050BD50A2D09D12046FFF7FAFC35
-:107CF00028B12046AFF300804FF0FF3032BD204660
-:107D0000AFF30080284632BD38B50D4D08242868F1
-:107D100000281CBF017811F0030F05D090F9031063
-:107D2000002958BFFFF712FF2D1D641EEFD1BDE8DB
-:107D30003840002200214FF0FF30FDF75BB900BF53
-:107D4000F81100200000000000000000000000000A
-:107D50000000000000000000440008004005080189
-:107D60003A799C00F4010000FFFFFFFF4801010089
-:107D7000000000002D2D2047415454203A204C454E
-:107D80004420434F4E46494755524154494F4E2097
-:107D900052454345495645440A00000010B507497D
-:107DA00079441831064C7C44163404E00A68081DF6
-:107DB000114488470146A142F8D110BD500000008F
-:107DC000740000002A2A2053544F50204144564545
-:107DD00052544953494E47202A2A20204661696C53
-:107DE0006564200D0A0D00004EF68851CEF20001A8
-:107DF000086840F470000860BFF34F8FBFF36F8FC7
-:107E00004FF00070E1EE100A704700007F93FFFF13
-:107E1000A0050000181200208008000024000320A4
-:107E2000000000005F92FFFF80010000B20100002F
-:107E3000040000200000000000000000000000001E
-:107E4000000000000100000002000000030000002C
-:107E50000400000000F00DF8002801D0FFF79EFF9D
-:107E6000AFF300800020AFF30080FBF75CFE00F072
-:107E700002F80120704700F001B800000746FFF744
-:107E800043FF3846F9F724FFFBE738B504460D46B3
-:107E9000284600F005F8A84218BF0024204632BD4D
-:107EA0000149FFF707BF00BF681100200148804764
-:107EB00001480047BD400008BD7E0008AFF30080C8
-:107EC000FFF792FFFFF7C6FF00002E004300FFF709
-:107ED000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7D6
-:107EE000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7C6
-:107EF000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7B6
-:107F0000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7A5
-:107F1000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF795
-:107F2000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF785
-:107F3000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF775
-:107F4000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF765
-:107F5000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF755
-:107F6000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF745
-:107F7000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF735
-:107F8000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF725
-:107F9000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF715
-:107FA000FEBFFFF7FEBF0000F0030C0DFF018300D2
-:107FB00001F006FF484200007A44010001F1FF0190
-:107FC000F1FF01F1FF01F1FF01F1FF01F1FF01F10B
-:107FD000FF01F1FF01F1FF01F1FF01F1FF01F1FFED
-:107FE00001F1FF01F1FF01F1350152FF01ED3F10F9
-:107FF0001210113D5410700104004804120804527C
-:108000000C04F00507093D00C87E0008046158F221
-:1080100000CA1410010000CC0C215CFC0217A01057
-:108020000020B710134D127E1101433B123C210179
-:10803000100701040000641100206504526404214B
-:108040001BA108F31150116410070204010164160A
-:108050000020B4045264043140510812AC44F213BD
-:108060009848500208020214405214042134610856
-:1080700012F444F212E048122024126804F206B00E
-:018080002CD3
-:0400000508007EBDB4
+:10000000B8270020E9800008C97E0008CB7E0008E0
+:10001000CD7E0008CF7E0008D17E000800000000E1
+:10002000000000000000000000000000D37E000877
+:10003000D57E000800000000D77E0008D97E0008A9
+:100040000B8100080F81000813810008117F000850
+:10005000178100081B8100080B7F00081F81000822
+:100060002381000827810008057F00082B810008F4
+:100070002F81000833810008DD7E000837810008E9
+:100080003B8100083F810008438100084781000848
+:100090004B8100084F8100085381000857810008F8
+:1000A0005B8100085F8100086381000867810008A8
+:1000B0006B8100086F810008738100087781000858
+:1000C0007B8100087F810008838100088781000808
+:1000D000E37E0008E97E00088B8100088F8100081C
+:1000E00093810008978100089B8100089F81000888
+:1000F000197F0008157F0008A3810008A781000868
+:10010000AB810008AF810008B3810008B781000807
+:10011000BB810008BF810008C3810008C7810008B7
+:10012000CB810008CF810008EF7E0008D381000852
+:10013000D7810008DB810008DF8100082DE9F84F36
+:100140000FF2D017A2B0D7E90045CDE900452C9EAB
+:10015000DFF82C7C04918DF8436000210FF2BC1471
+:100160000D9112944FF0FF368246904699460FE06B
+:10017000C3462C461BF8011B0498D0470028049066
+:1001800000F0B2800D98401C641E0D90F2D1A8447E
+:1001900098F80000252807D10021079108910991BE
+:1001A0000A910B910C910DE06A463146404600F0F1
+:1001B000FDFF050001D10D98B4E0D9D50125E6E792
+:1001C00041F0010118F8010F2028F9D023280CD0A4
+:1001D0002B2804D02D2805D0302809D086E041F006
+:1001E0000201EFE741F00401ECE741F00801E9E723
+:1001F00041F01001E6E700200F900AE00F98B842A6
+:1002000005DA00EB800302EB4302303A0F9208F16B
+:10021000010898F80020A2F130000A28EED398F8DF
+:1002200000002E2818BF0E9629D118F8010F2A2891
+:100230000BD1D9F80000C9F8000008F1010850F806
+:10024000042BC9F800000E9219E02D280CBF18F8F5
+:10025000010B002000220E920BE040B90E9ABA4228
+:1002600005DA02EB820403EB4403303B0E9308F102
+:10027000010898F80030A3F130020A2AEDD3ADF856
+:100280004010129898F8001000F09CFF08B118F880
+:10029000010B8DF842009DF84200682804BF98F8D1
+:1002A0000010682903D162208DF8420008E06C2814
+:1002B00004BF98F800006C2804D171218DF8421019
+:1002C00008F1010813A806904A4618F8013B02A954
+:1002D000504600F067F838B913AA02A9504600F05A
+:1002E000C9F900287FF554AF30461BE02A2882D197
+:1002F000D9F80020C9F8002052F8040BC9F80020F2
+:1003000000280F9003D540420F9041F0040108F1FE
+:10031000010884E70000000000000000686A6C74B7
+:100320007A4C000023B0BDE8F08F622820D0682806
+:1003300011D06A2803D06C2827D0712825D10868ED
+:10034000C01D20F007000860D0E9002308300860D5
+:10035000194610467047002A0A680A60106803D0E0
+:10036000121D0A6000B217E0121D0A6080B217E089
+:10037000002A0A680A60106803D0121D0A6040B2A1
+:100380000AE0121D0A60C0B20AE0002A0A680A6088
+:10039000106803D0121D0A60C1177047121D0A6051
+:1003A000002170477CB50D4611461C462E69B4F1FC
+:1003B000250200F04D811C3A00F08680121F022AAF
+:1003C00040F282800E3A00F00781521F5AD0093A5B
+:1003D0007AD0921E16D0521E35D0521E022A73D9E0
+:1003E000121F30D0521F00F09A80521E4AD0521E67
+:1003F00000F0E480D21E00F0FD80921E42D0D21E9A
+:1004000040D02BE195F83A206C2A09D06869421C4B
+:100410006A610A680A6052F8043B0A60335427E1B3
+:100420000A680A6052F8043B0A60002100930191B7
+:100430004FF0FF322A6329466A4600F096F90028F9
+:1004400040F1168101E195F83A000122FFF76DFFB6
+:10045000C5E900010023994204DA6869411C696119
+:100460002D210DE0288F810704D56869411C696141
+:100470002B2105E0C00722D56869411C6961202154
+:1004800031541CE095F83A000022FFF74EFFC5E911
+:10049000000195F83800010711D5D5E900230020A7
+:1004A000834208BF82420AD044F02000782806D157
+:1004B000686930213154401C411C69613454214623
+:1004C00068693044E86083E00868C01D20F00700D8
+:1004D0000860D0E9002308300860C5E90023D5E9A9
+:1004E0000001C80F04D06869411C69612D210DE02D
+:1004F000288F810704D56869411C69612B2105E0BB
+:10050000C00704D56869411C6961202131546869BC
+:100510003044E8602146284600F032FAA8E005F1B0
+:100520003A02507820B14FF0FF340FF6243070E0DB
+:100530001078622808D0682824D06A2812D06C2845
+:100540002ED071280ED02BE00A680A6052F8040BF6
+:100550000A6020B94FF0FF340FF60C3059E0E96A19
+:10056000017085E00A680A6052F8040B0A6020B93D
+:100570004FF0FF340FF6F0204BE0EA6AD317C0E9E2
+:10058000002375E00A680A6052F8040B0A6020B97B
+:100590004FF0FF340FF6D0203BE0E96A018067E0BE
+:1005A0000A680A6052F8040B0A6020B94FF0FF3461
+:1005B0000FF6B4202DE0E96A016059E00A680A608C
+:1005C00052F8040B0A600021C5E90001EE607821B1
+:1005D000284600F029F94BE06C2285F83A200B6898
+:1005E0000B6053F8042B0B6052BB4FF0FF340FF637
+:1005F000AC200EE095F83A206C2AF0D0086808602C
+:1006000050F8044B0860EC603CB94FF0FF340FF633
+:10061000702000F0F1FD201A76BD2E6B002E04D55F
+:10062000204600F00BFE044608E03246002120463A
+:1006300000F020FE002814BF041B3446AC6117E014
+:10064000294600F092F8002812D54FF0FF3076BD11
+:100650006869411C69612521315409E06969481CB8
+:10066000686125227254210002D0411C6961345412
+:10067000002076BD2DE9F0410E460546716B70698C
+:10068000B46A091A306A091AB069091A706A091A33
+:10069000F069091A96F838000C1B410790460DD4F2
+:1006A000002C0BDD2746B0682021A8470028B06049
+:1006B00057D0F06A401C7F1EF062F4D17369424645
+:1006C0003146284600F0ACFC00284AD1376A002F9A
+:1006D0000ADDB0683021A8470028B06041D0F06A38
+:1006E000401C7F1EF062F4D1B369F268314628469F
+:1006F00000F096FCA8BB776A002F09DDB0683021B6
+:10070000A847B06068B3F06A401C7F1EF062F5D164
+:10071000F068B169F36942183146284600F080FC60
+:10072000F8B9B76A002F09DDB0683021A847B0607A
+:10073000B8B1F06A401C7F1EF062F5D196F838001F
+:1007400041070BD5002C09DDB0682021A847B06017
+:1007500038B1F06A401C641EF062F5D10020BDE89B
+:10076000F0814FF0FF30BDE8F0812DE9F8470D46EC
+:10077000A3B02F6B002F8146904648BF6FF0004713
+:1007800000F0A4FD696B40180FF62C118128D1E907
+:100790000023CDE9012328BF4FF0FF303ED20024D3
+:1007A000002F2FDDD8F8001001AA684600F000FDE8
+:1007B0000646002E35D4D8F8000008B9761E30D48D
+:1007C000B7421FDB6869301881280AD300206863AC
+:1007D00003AA29464846FFF74DFF040012D4002023
+:1007E000686103A8D5F814A032466946504400F069
+:1007F00073FDB244C5F814A058F8040B002818BFC4
+:10080000BF1BCDD12CB903AA29464846FFF732FFBA
+:10081000044614B9002068616863204624B0BDE82E
+:10082000F0874FF0FF34F8E72DE9FC4707468A468A
+:100830003E69BAF16F0F08BF082405D04AF02001C5
+:10084000782914BF0A2410243C25D7E90023BAF1E3
+:10085000640F18BFBAF1690F9046994606D100217E
+:100860008B4203DAD8F1000869EB49090020814581
+:1008700008BF80451FD1386BE8B9082C4CD197F8D8
+:100880003800010748D530203B2586F83B0043E07F
+:1008900000280ED597F8380000F01400102808D171
+:1008A0007A6B7869121A386A121A511A0029C8BF6D
+:1008B0003962BDE8F3878DF800A0404649462246DC
+:1008C000E31700F05DFD3032D0B26D1E3A2801957D
+:1008D00004DB9DF80000A0F151018A1872554046D2
+:1008E00049462246E31700F04BFD8046894600202A
+:1008F000814508BF804503D0F86871198842DCD370
+:10090000082C09D197F83800010705D5715D302909
+:1009100002D06D1E30207055C5F13C01B9617019CF
+:10092000F860386B8142B3DA411A39624FF6EF70E2
+:10093000398F01403987BDE8F3872DE9D04306465A
+:100940000F4614464FF00008DFF8389412E0E00735
+:1009500007D542464B463046394600F029FE06464A
+:100960000F464046494642464B4600F021FE641081
+:1009700080468946002CEAD130463946BDE8D0830E
+:100980002DE9F34F054641F020048DB0D5E90089EB
+:10099000612C02AE09D0286B002848BF062003D482
+:1009A00008BF672C01D101202863D5E90023580036
+:1009B0004015401C0ED119030CD00320A8619DF8EE
+:1009C000380061381A2802D20FF2F46111E00FF2F8
+:1009D000F4610EE058004015401C0FD119030DD1F1
+:1009E0000320A8619DF8380061381A2814D30FF24B
+:1009F000DC61E868032200F06FFCD3E1194621F0C6
+:100A00000043B3F5801F10460DD20027BB4208BF3C
+:100A1000BA42019703D111E00FF2AC61E9E701AAF4
+:100A200000F098FE0AE0DFF8607307EB1352DFF87E
+:100A30005C3301921940DFF858331943C5E90001CE
+:100A4000612C0ED1E86830210170811CE9609DF8AD
+:100A5000381061290CBF7821582141706869801CC9
+:100A60006861D5E900AB2BF0004300202AF00002BA
+:100A7000834204BF8242002300F05A81612C40F07F
+:100A8000A980286B00284CBF2120401C00904046C4
+:100A9000009F7F1C49460022002300F093FED946A8
+:100AA00001988DF8082038BF89F00049001F019097
+:100AB000002FD0460DF1090040F3498140F2FF714B
+:100AC000DFF8D0B20C91064640464946002200238A
+:100AD00000F090FE80F03A814800400D00F11C02C9
+:100AE00010D0002A0EDD0C98824205DB09F0004090
+:100AF00040EA0B01002013E0A448084040EA0251FC
+:100B000040460DE029F00043002028F00002834217
+:100B100008BF82420FBF40461C22404600F082FEC2
+:100B20008046894600F01CFFFF1F002F044609DDA8
+:100B300000F034FF02460B464046494600F040FFB5
+:100B400080468946F01D072104E004F00F0200F8FA
+:100B5000012D2411002C01DD491EF6D5491E5CBF74
+:100B6000002200F8012DF9D5ECE00020194602AA78
+:100B70000A4400E05B1E12F80149491E8442F9D084
+:100B80000F2804D10DF10900425C521C4254002987
+:100B900004D50198001D02AE5B1C0190591E12D4B1
+:100BA0009DF838007218147804F130085FFA88F460
+:100BB000392CC4BFA0F13A04A044491E02F80189AF
+:100BC000F1D58DF83800286B002840F1B080591E0F
+:100BD0002963ACE0404649460022002300F0F2FDC4
+:100BE000019938BF89F0004947F2975041436A4A5A
+:100BF00091FBF2F20192D2F1070204DD4046494630
+:100C0000FFF79BFE0AE0524200206449FFF795FE81
+:100C100002460B464046494600F044FF8046662C9B
+:100C2000286BDFF87CB106BF019F0A3706273F1803
+:100C3000142FC8BF142730208DF8080089460DF105
+:100C4000090000E03046002F34DD064640464946A4
+:100C500001F04CF801460A4606F1080304200A2672
+:100C6000B2FBF6F606EB860EA2EB4E02303203F82C
+:100C7000012C0A22B6FBF2F202EB820EA6EB4E0624
+:100C80003036401E03F8026DE9D1083F002F03F112
+:100C90000806D7DD084601F03DF802460B464046FF
+:100CA000494600F08DFE00225B4600F081FC804644
+:100CB0008946CBE70DF10901401A0DF1090604E060
+:100CC0000199491E401E0191761C31783029F7D0D8
+:100CD000662C02D10199491C03E0652C0CBF01214F
+:100CE00000212B6BCB189842B8BF431E002B1ED49B
+:100CF000834204DAF05C3528A8BF392000DA3020BE
+:100D00001946721E02EB010800E05B1E18F80199FB
+:100D1000491E8145F9D0392802D1705C401C7054BD
+:100D2000002904D50198401C16465B1C01900198CF
+:100D300000B200901BB29DF838103246284600F0F1
+:100D400034F82FE0C61D002F3FF7BEAE30460DF140
+:100D50000901401A009903468842C8BF0B46002B80
+:100D60000DF109063FF52FAF8342BFF6FEAE0DF140
+:100D70000900C05C07287FF7F8AE0F20F6E60000F8
+:100D8000CBCCCC0C0000244002FCFFFFFFFF0F8007
+:100D90000000E03F0000F07FA08601000000F03F6F
+:100DA00084D797410FB0BDE8F08F2DE9F84783B0A5
+:100DB00006468A461746984600F0FCF9B8F1000F3F
+:100DC000406A356B90F8009003DC4FF001080FF299
+:100DD0000037BDF930404AF02000662808BF641C87
+:100DE00015D0672840F0848014F1040FC0F286808B
+:100DF000AC4280F2838096F83800641C010702D46C
+:100E0000A845B8BF454620B22D1A48BF00250FFAA5
+:100E100084FAF068B169BAF1000F25DC4A1C30236E
+:100E20004354002D03DC96F83800010703D5F06821
+:100E300000F80290521C15EB0A0FB8BF6C4220B2AA
+:100E4000441941424445B8BFA046B26171620FFAED
+:100E500088F5F561F068B3692A463946184400F010
+:100E60003BFA641BB462C4E022B29045084417DA2E
+:100E70004246394600F030FAB0694044B061AAEB0E
+:100E80000801002D716203DC96F838100A0705D5B9
+:100E9000F16801F80090F069401CF061B562A8E0CB
+:100EA000394600F019FAB069002D5044A8EB040847
+:100EB00003DC96F838100A0703D5F16801F80090B2
+:100EC000401CB0610FFA88F08542F068B369B8BF82
+:100ED000A8460FFA88F207EB0A01184400F0FCF963
+:100EE000B0690FFA88F10844B061681A706280E056
+:100EF000BAF1610F14D14FF0700A16E0A84504DA78
+:100F000096F838100A0758BF45466D1E48BF0025A1
+:100F1000BAF1670F14BF4FF0450A4FF0650A04E0BD
+:100F2000BAF1410F08BF4FF0500AB169F368481C8D
+:100F3000B061002D17F8012B5A5403DC96F83810D5
+:100F40000A071BD5F168431CB36101F80090002D1E
+:100F500014DDA8F101080FFA88F08542F068B8BFE7
+:100F6000A8460FFA88F23946184400F0B5F9B0697E
+:100F70000FFA88F108446D1AB0617562F068B169C2
+:100F80000844002C80F800A003D42B214170811C60
+:100F900003E02D2141706442811C00206A460AE072
+:100FA00023460A2493FBF4F404EB8405A3EB4503E6
+:100FB00002F8013B401C24B2002CF1DC012806DCC5
+:100FC0004AF02002652A04BF302201F8012B48B9FB
+:100FD000302001F8010B07E0401E1DF800203032E0
+:100FE00001F8012B0028F7DCF068B2691044091AF7
+:100FF000F16196F8380000F0140010280DD17169E5
+:10100000B0694118706A4118F0694118B06A411816
+:10101000706B8142BCBF411A316204B0BDE8F087F9
+:10102000F8B505460E4617461C46002074B117F861
+:10103000011BB068A847B06030B1F06A401CF06294
+:101040000020641EF3D1F2BD4FF0FF30F2BD00006E
+:101050007072696E74665F733A20256E20646973DE
+:10106000616C6C6F776564007072696E74663A20AB
+:1010700062616420256E20617267756D656E740013
+:101080007072696E74665F733A20626164202573C2
+:1010900020617267756D656E740000007072696E14
+:1010A00074665F733A2062616420256C73206172FC
+:1010B00067756D656E7400000000000000000000A0
+:1010C0006E616E004E414E00696E6600494E4600EC
+:1010D0003000F0B40246106895681318506803EBAE
+:1010E0005004C00721D54D441FE0F0BC02F10C00B4
+:1010F000704713F8017B05F8017B491EF9D1A0B1B7
+:10110000B60813F8011B06F00306032E08BF13F8F8
+:10111000016B01EB06214942801C294405D011F8DE
+:10112000016B05F8016B401EF9D1A342DDD013F825
+:10113000016B16F0030104BF13F8011BC91C300931
+:101140000F28DAD113F8010B0F30D6E71B48704790
+:1011500030B45368D418042B09DA41B1057804F887
+:10116000015B10F8015B15B15B1C491EF3E753608E
+:1011700030BC704738B514461D4661B1FFF7E8FF33
+:1011800061686A6B204690476FF00102811A02D0B5
+:10119000491E03D005E06FF0010032BD4FF0FF3073
+:1011A00032BD0021616032BDDA6B1047034BE1E7CD
+:1011B000024BF9E70248704700000000D8100020F9
+:1011C000A01000200278C9B28A421AB11CBF10F8E0
+:1011D000012FF9E718BF00207047B1F5807F02D3D7
+:1011E0004FF0FF3070470170012070470078401EBB
+:1011F0008041C043C00F704780B508B90FF21C0092
+:1012000005490B681BB122220021984701E000F03C
+:101210008EFD222002BD0000AC170020636F6E73AC
+:10122000747261696E742068616E646C65723A20D4
+:10123000626164206D6573736167650000F101038D
+:10124000810704D010F8011B89B18107FAD1026827
+:10125000B2F10131914311F0803F04BF50F8042FE7
+:10126000F6E710F8011B11B110F8011BFBE7C01ADB
+:1012700070470000C9B2830706D0521E22D310F86F
+:10128000013B9942F7D11FE0083A13D302F104025F
+:1012900041EA012141EA014150F8043B121F21BFFC
+:1012A0004B40A3F1013C2CEA030C1CF0803FF3D02F
+:1012B000C9B2001F083210F8013B521E28BF91EA44
+:1012C000030FF8D818BF0120401E704780B5FFF704
+:1012D0003DFF006C02BD000062B38B0708D0521EB8
+:1012E00011F8013B00F8013B00F024808B07F6D198
+:1012F000830740F0208000BF103A07D330B4B1E834
+:101300003810103AA0E83810F9D230BC530724BF87
+:10131000B1E80810A0E8081044BF51F8043B40F8B9
+:10132000043BD20724BF31F8022B20F8022B44BF24
+:101330000B7803707047121F17D35B0009D151F867
+:10134000043B20F8023B1B0C121F20F8023BF6D294
+:101350000BE051F8043B00F8013B1B0A20F8023B6C
+:101360001B0C121F00F8013BF3D238BF121D521E96
+:1013700024BF11F8013B00F8013BF8D8704700008A
+:10138000B3BBD9B1B2F5803F7DD2022A1ED98C46BB
+:10139000B1FBF2F102FB11C31B0443EA1043B3FBA0
+:1013A000F2FC02FB1C3380B240EA0343B3FBF2F0D1
+:1013B00002FB103240EA0C4000237047022A05D994
+:1013C0008446B0FBF2F002FB10C270474AB105D16F
+:1013D00000F0010249085FEA300070470022002354
+:1013E000704700F0A7BC0B000200002100207047EE
+:1013F000904271EB030CF6D3B3F5803F2FD2F0B5DA
+:10140000B3FA83F7B1FA81F4A7F10F0E3D1B5340F5
+:10141000CEF1200602FA0EF2F3415340B5F10F0768
+:1014200046D80F3C2C444140C4F12006A040F14175
+:101430004140B1FBF3F603FB1611A2FB0645001B6E
+:10144000A94102D2761E8018594180EA010221FA90
+:101450000EF362FA0EF200215A403046F0BD30B46D
+:10146000B1FBF3FC03FB1C11A2FB0C45001BA941C3
+:1014700003D2ACF1010C8018594130BC02460B4636
+:10148000604600217047B2F1807F65D3F0B5B2FAB3
+:1014900082F7B1FA81F4C7F10F063D1B22FA06F379
+:1014A00007F1110EF24120355A40B5F10F07B8D9B6
+:1014B0004140C4F12006A040F1414140B1FBF3FCA2
+:1014C00003FB1C11A2FB0C45001BA94103D2BCF17C
+:1014D000010C801859410F2F12D30F3FC90341EA65
+:1014E0005041B1FBF3F603FB1611A2FB0645D4EB0A
+:1014F000C030A94102D2761E8018594146EACC3C40
+:1015000007B34140C7F12006B840F1414140B1FB6B
+:10151000F3F603FB1611A2FB0645001BA94102D2FC
+:10152000761E8018594180EA010221FA0EF3C7F1B4
+:10153000200462FA0EF20CFA07F05A402CFA04F179
+:101540003043F0BD80EA010221FA0EF3002162FA75
+:101550000EF260465A40F0BD8C46B1FBF2F102FB40
+:1015600011C31B0243EA1063B3FBF2FC02FB1C3302
+:101570001B024CEA002043EA1063B3FBF2FC02FBBF
+:101580001C331B024CEA002043EA1063B3FBF2FC5D
+:1015900002FB1C331B024CEA002043EA1063B3FB3E
+:1015A000F2FC02FB1C324CEA0020002370470000D2
+:1015B000B0B581EA030C0CF0004C40F2FF7515EA5F
+:1015C00011541DBF15EA1357AC42AF4239E0E4197C
+:1015D00023EA455343F48013C90241F0004141EA34
+:1015E000505EC7021100A7FB020200284FF0000066
+:1015F000EEFB01204FF00001E3FB072118BF42F092
+:101600000102401800214941E3FB0E01A4F580646A
+:101610000F0302D252004041494154F101046CDDF4
+:10162000470872F1004250F1000051EB0451A1F55E
+:1016300080115CBF41EA0C01B0BD4CEA05510020AD
+:10164000B0BD05EA1357AC4214BFAF4241E050EAC7
+:10165000410E1CBF52EA430E02E061460020B0BDBD
+:1016600024423C441BD15FEA070EF6D0090302BFB7
+:1016700001460020AEF1140EB1FA81F7AEEB07047B
+:1016800001FA07FE0C37C7F1200100FA07F7C8403E
+:101690004EEA000E23EA455343F48013A2E733F0E9
+:1016A0000043B3FA83F704BFB2FA82FE77440B3FDC
+:1016B000E41BB7F1200E2FBF02FA0EF3BB40C7F1B7
+:1016C000200E22FA0EFE38BF43EA0E03BA40641C15
+:1016D00082E750EA410E14BF52EA430E6FF0000158
+:1016E0004FF4001717EB430F8ABF194617EB410F52
+:1016F000B5E74CEA05510020B0BDD4F10104B4F1C6
+:1017000020070FDAC4F12007520828BF42F0010277
+:1017100010FA07F501FA07F7E1BF2A43E040384322
+:10172000E1400FE0352C98DCC7F1200452EA40027A
+:1017300020FA07F218BF42F0010231FA07F0A14087
+:101740000A43002172F1004250F1000051EB0C01FC
+:10175000B0BD000010B5144600F002F8226010BDC4
+:10176000C1F30A5343B14A0012F5001F28D2A3F275
+:10177000FE32A1EB0251704750EA410C20D001F03B
+:10178000004C31EA0C01B1FA81F204BFB0FA80F3E7
+:10179000D2180B3AB2F120032CBF00FA03F19140AA
+:1017A00041EA0C013EBFC2F1200C20FA0CF31943B0
+:1017B0009040524240F2FD33D21A01EB0351704780
+:1017C000002270474FF4001C1CEB410F94BF1CEB30
+:1017D000430F09E041EA030C50EA4C0C52EA0C0CAE
+:1017E00003D2994208BF9042704714BF8B42824295
+:1017F000704700004FF4001C1CEB410F94BF1CEB22
+:10180000430F09E041EA030C50EA4C0C52EA0C0C7D
+:1018100003D28B4208BF8242704714BF9942904264
+:1018200070470000124254D440F2FF7C1CEA11536E
+:101830000FD0634531D09B1863453CBF01EB02518B
+:10184000704701F0004141EA0C510020AFF30080E5
+:10185000704750EA410320D001F0004C91EA0C019E
+:101860001CD0B1FA81F30B3B9A420DD9D21A9940A0
+:1018700051EA0C01C3F1200C20FA0CFC61449840A1
+:10188000531C40F2FF7CD7E7914041EA0C01C2F1C2
+:10189000200C20FA0CF3194390407047B0FA80F303
+:1018A0001533202BE0D3202AEED3203A203B9A4256
+:1018B00009D9D21A00FA03F141EA0C010020531CA5
+:1018C00040F2FF7CB8E700FA02F141EA0C01002087
+:1018D0007047524240F2FF7C1CEA11530DD0634521
+:1018E000DBD0B2EB030C3CBFA1EB025170470CF113
+:1018F000010221EA035141F4801150EA410CCCD09D
+:1019000001F0004C352A27DC30B481EA0C01B2F139
+:10191000200309DAC2F12003044601FA03F5D0409E
+:101920002843D1409C400CE0C3F12002450020FA3E
+:1019300003F418BF44F0010421FA03F091400C4372
+:10194000002174F1004550F1000051EB0C012442DC
+:1019500030BC7FF47BAF70476146002076E7000023
+:10196000C1F30A5340F2FE329B1A14DDD3F1200377
+:101970004FEAE17208DDC90241EA505141F00040EE
+:10198000D84080185040704703F2E13010B1D24384
+:1019900082F000407047002070470000C11768B116
+:1019A0004840401AB0FA80F29040D21CC907C2F5F4
+:1019B000846241EA025202EBD021400570470000E8
+:1019C00070B44FF0004591EA030F40F1B5816B40D0
+:1019D000841A71EB030603D2001BB1411219734143
+:1019E0004FF4001C1CEB410F34BF7CEB430442E07E
+:1019F0000C0DA4EB1356352E4FDC45EAC323DB0A4E
+:101A000045EAC121C912B6F120050DDD63FA05F6DC
+:101A1000EB4086EA0305124218BF45F00105C018E5
+:101A200051F100010CD213E062FA06F5F240554084
+:101A3000F3415A40B340F3405A408018594107D30C
+:101A400049085FEA30005FEA350528BF45F0010527
+:101A500001F58011420875F1004250F1000041EBA0
+:101A600004514E0016F5001F70BC38BF70470020AF
+:101A7000090D090570471CEB410F10D252EA4306CD
+:101A80000BD0BCEB410F05D80C0DAB43661E342EBA
+:101A9000B6DD02E0AB438018594170BC704770BCA2
+:101AA00070470000F0B540F2FF7581EA030C0CF0BE
+:101AB000004C15EA11541DBF15EA1357AC42AF4252
+:101AC000E5E0BC41C1F31301C3F31303801A99414C
+:101AD00043F4801304D2641E4000494180185941E8
+:101AE000C90241EA5051B1FBF3F603FB1611A2FB08
+:101AF0000675D7EBC020A94102D2761E8018594145
+:101B0000C90241EA5051B1FBF3FE03FB1E11A2FBD7
+:101B10000E75D7EBC020A94103D2AEF1010E80189B
+:101B20005941890241EA9051760546EA8E2EB1FB71
+:101B3000F3F603FB1611A2FB0675D7EB8020A94133
+:101B400002D2761E80185941C90241EA50514EEA2C
+:101B5000060EB1FBF3F603FB1611A2FB0675D7EBDD
+:101B6000C020A94102D2761E80185941C90241EA1B
+:101B70005051B1FBF3F703FB1711A2FB0735D3EB71
+:101B8000C020A94167F100070CBF004247F00107E0
+:101B900066F3D5274FEA1E31B80814F5806412DDCC
+:101BA000BD0775F1004250EB0E5051EB045111F599
+:101BB000801F5CBF41EA0C01F0BD4CF07F6141F039
+:101BC000E0410020F0BDBD076D0840EA0E5041F431
+:101BD0008011D4F10104B4F120060ADAC4F1200620
+:101BE0000200E04001FA06F3E1401843B240154319
+:101BF0000EE0342C13DCC6F1200445EA40056D08E4
+:101C000020FA06F2154321FA06F0A1400D43002107
+:101C100075F1004250F1000051EB0C01F0BD0020C5
+:101C20005FEA0C01F0BDCFB992185B41B3FA83F7BC
+:101C300004BFB2FA82F6BF190B3FB7F120062FBFDF
+:101C400002FA06F3BB40C7F1200622FA06F638BFB7
+:101C50003343BA401CB1E419641E33E77F4231F0CC
+:101C60000041B1FA81F404BFB0FA80F6A4190B3C2C
+:101C7000B4F120062FBF00FA06F1A140C4F12006FE
+:101C800020FA06F638BF3143A0403C1B1AE7AC42AD
+:101C90001ABF05EA1357AF4212E050EA41061CBFD3
+:101CA00052EA4306BFE750EA4107304661461CBF8F
+:101CB00041EA0551F0BD52EA430C08BFC143F0BDF3
+:101CC00000204FF4001616EB410F98BF16EB430FA0
+:101CD00008BF16EB410F24BFC14305E016EB430FCD
+:101CE0000CBF61464CEA0551F0BD0000400D49189B
+:101CF00040EA81200CD2490DA1F58061491C40F0D9
+:101D0000004005DBD1F11F0154BFC840C017704728
+:101D100000207047014648B1B0FA80F18840C91CE4
+:101D2000C1F58461090501EBD02140057047012010
+:101D300000F0B6B870470000841A71EB030604D2B5
+:101D40006E40001BB141121973414FF4001C1CEB93
+:101D5000410F34BF7CEB430682E00C0DA4EB13561D
+:101D6000362E7BDC012E45EAC32341DC43EA525385
+:101D700012BFD20292025B08240545EAC12141EA62
+:101D80005051D2EBC020994125D407D1B0FA80F64A
+:101D900010FA06F162D00020203608E0B1FA81F690
+:101DA000B140C6F1200220FA02F21143B0404FEADE
+:101DB000F474B4EB465434F001064FEA74040AD8C4
+:101DC000D6F50016760D04F00044F04061FA06F2F4
+:101DD0005040F1404840C00A40EA415021F00041E3
+:101DE00028BF5FEA500550F1000044EBD12135E0F7
+:101DF000DB0A45EAC121C90AB6F120050EDD42EA37
+:101E00000242120CC5F1200603FA06F6EB4042EA44
+:101E100006056D42984161F100010DE062FA06F598
+:101E2000F240554063FA06FC82EA0C02F3405A4045
+:101E30006D42904161EB030111F4801F05D1641ED6
+:101E4000620502D06D004041494121F480114308F0
+:101E500075F1004350F1000041EB045170BC704734
+:101E60001CEB410F15D223F0004352EA43060BD07E
+:101E70004FEA4C0CBCEB410F04D80C0D661E342EFF
+:101E8000B7DDEBE7801A994150EA410608BF00210F
+:101E9000E4E708BF1CEB430F28BF6FF00001DDE74C
+:101EA00080B5AFF30080024A11001820ABBEFBE7FB
+:101EB0002600020038B5040009D004F17C056868EA
+:101EC00008B900F01EF800F021F8012801D1012026
+:101ED00032BDA06A08B100F02AF800F00AF821F03B
+:101EE0002A01FFE7816000F01BF8BDE8324000F0F6
+:101EF0002EBE2068416821F49041416020688168CD
+:101F0000704700212970204600F049BF24206860F6
+:101F100020680168490849000160204600F040B986
+:101F20002068016841F001010160204670472046A9
+:101F300000F0AABD70B5044604F17C05134668683C
+:101F4000202836D149B3180027D02878012830D06E
+:101F500001222A7004F15406216533807380002029
+:101F6000E86021206860306AC8B1DFF82012C162E1
+:101F7000DFF81C02316A0863316ADFF8180248632F
+:101F80000020316A88632068216D00F12802306AE0
+:101F900001F043F818B100F00EF8012070BD21687F
+:101FA00040200862002028702068816841F080018C
+:101FB00008E0022070BD1020E8600020287020207A
+:101FC000686070478160002070BD206881684A06A3
+:101FD0007047F8B5044640F60F002568E9692A689D
+:101FE000AB6808400DD1880602D5900602D4D8000F
+:101FF00040F18980E16E00294FD02046BDE8F440D1
+:1020000008476548034204BF644E32427BD0CF0785
+:1020100009D5D60507D501262E62D4F8885045F09B
+:102020000105C4F888508D070AD5DD0708D5266854
+:1020300002253562D4F8885045F00405C4F888506C
+:102040004D070AD5DD0708D5266804253562D4F882
+:10205000885045F00205C4F888500D070CD5950648
+:1020600001D4034208D0256808202862D4F88800EB
+:1020700040F00800C4F8880008050BD5500109D5C8
+:1020800025684FF400602862D4F8880040F02000F2
+:10209000C4F88800D4F88800002870D0890607D5D5
+:1020A000900601D4D80003D5E16E09B120468847D7
+:1020B000D4F8880021688A68510602D410F0280FED
+:1020C0001AD0204600F0BEFDFFF77FFF0FD500F0CD
+:1020D00057F860B1DFF890198163A06F00F0E0FF5E
+:1020E00000284CD0A06F816BBDE8F4400847204623
+:1020F000BDE8F24001F0C4B8204601F0C1F800206C
+:10210000C4F88800F1BDC80209D5580207D54FF4BC
+:10211000801028622046BDE8F24001F039B9080677
+:1021200009D5100601D4180205D5216F39B3204610
+:10213000BDE8F440084748060FD550060DD528687D
+:1021400020F0400028602021C4F880100020206783
+:102150002046BDE8F24001F046B9080206D550001D
+:1021600004D52046BDE8F24001F05AB9C80148BF85
+:10217000002A04D52046BDE8F24001F052B9F1BD75
+:10218000816821F040018160A06F7047992C0008A0
+:10219000C72C0008CD2C000801000010200100040D
+:1021A0002DE9F84F0446DFF8C8082768DFF8C4B8FF
+:1021B0003968DFF8C4A80140A068014320690143E1
+:1021C00060690143E0690143606E014339600026A4
+:1021D0007968E06821F4405101437960B046A16913
+:1021E000DFF8880887421CBF206A0143BA68DFF81D
+:1021F000780A02401143B9604FF48075F96A606A49
+:10220000090940EA0111F9625F454FF400404FF4BB
+:1022100000714FF480624FF400634FF4805C4FF420
+:10222000005E4FF4804929D1DAF800B00BF0030BBF
+:10223000BBF1030F3ED8DFE80BF00237343A4FF022
+:10224000010AD4F81CB05746BBF5004F4FF6F07AA0
+:1022500040F01183012F09D0022F00F05482042F87
+:1022600000F08D82082F00F0C282F5E201F0B2FC8E
+:102270000146606A002840F01B8242E2DFF8ECB7BA
+:102280005F4517D1DAF800A01AF4406A27D0BAF5F2
+:10229000806F09D0BAF5006F03D0BAF5406F06D051
+:1022A00008E04FF0020A07E04FF0040A04E04FF0A4
+:1022B000080A01E04FF0100ADFF8B0B75F45C0D15F
+:1022C000BAF1000F0BD0BAF1020F49D0BAF1040FE6
+:1022D00000F08280BAF1080F00F0B080B6E301F0A0
+:1022E00071FC0146606A58B3012808BF022028D05B
+:1022F000022808BF042024D0032808BF062020D0CD
+:10230000042808BF08201CD0052808BF0A2018D0C0
+:10231000062808BF0C2014D0072808BF102010D0B2
+:10232000082808BF20200CD0092808BF402008D06A
+:102330000A2808BF802004D00B2808BF284600D0F8
+:102340000120B1FBF0F0002800F08283626802EB0C
+:102350004201884203D31103814280F0A18075E3DA
+:10236000606AB0B3012808BFDFF80009EED0022888
+:1023700008BFDFF8FC08E9D0032808BFDFF8F4083D
+:10238000E4D0042808BFDFF8F008DFD0052808BF34
+:10239000DFF8E808DAD0062808BFDFF8E408D5D06F
+:1023A000072808BFDFF8DC08D0D0082808BFDFF80E
+:1023B000D808CBD0092808BFDFF8D008C6D00A2833
+:1023C00008BFDFF8CC08C1D00B2808BF4FF224406B
+:1023D000BCD0DFF8C008B9E701F0AAFB0146606A8B
+:1023E00058B3012808BF0220ABD0022808BF042040
+:1023F000A7D0032808BF0620A3D0042808BF0820C0
+:102400009FD0052808BF0A209BD0062808BF0C20B3
+:1024100097D0072808BF102093D0082808BF202095
+:102420008FD0092808BF40208BD00A2808BF802001
+:1024300087D00B2808BF284683D081E7676A002F22
+:1024400084D0012F08BF4846FAD0022F08BF70463B
+:10245000F6D0032F08BF41F25550F1D0042F08BF2A
+:102460006046EDD0052F08BF40F6CC40E8D0062FDF
+:1024700008BF40F6AA2012D0072F08BF18460ED07A
+:10248000082F08BF10460AD0092F08BF084606D0FB
+:102490000A2F08BF284602D00B2F00D1802055E715
+:1024A000BAF1000F0BD0BAF1020F38D0BAF1040F15
+:1024B00000F07280BAF1080F00F0A780ECE001F0A4
+:1024C00081FB0146606A40B3012808BF02251ED087
+:1024D000022808BF04251AD0032808BF062516D0F5
+:1024E000042808BF082512D0052808BF0A250ED0E9
+:1024F000062808BF0C250AD0072808BF102506D0DB
+:10250000082808BF202502D0092808BF402572D01E
+:102510000A280CBF80250B286DD001256BE0606A6E
+:10252000002836D0012808BFDFF800682BD0022829
+:1025300008BFDFF8FC6726D0032808BFDFF8F46780
+:1025400021D0042808BFDFF8F0671CD0052808BF99
+:10255000DFF8E86717D0062808BFDFF8E46712D075
+:10256000072808BFDFF8DC670DD0082808BFDFF8B0
+:10257000D86708D0092808BFDFF8D06703D00A2839
+:1025800008BFDFF8CC677CD00B2808BFDFF80467F2
+:1025900077D0DFF8C06774E001F0CAFA0146606ADC
+:1025A00040B3012808BF022525D0022808BF042512
+:1025B00021D0032808BF06251DD0042808BF082500
+:1025C00019D0052808BF0A2515D0062808BF0C25F4
+:1025D00011D0072808BF10250DD0082808BF2025D6
+:1025E00009D0092808BF402505D00A280CBF80253E
+:1025F0000B2800D001256268B1FBF5F650080021D8
+:1026000010EB062051EB166141E0606A002836D0DD
+:10261000012808BF4FF4800633D0022808BF4FF4CA
+:1026200000162ED0032808BFDFF82C6729D0042815
+:1026300008BF4FF4801624D0052808BFDFF81C67B8
+:102640001FD0062808BFDFF818671AD0072808BF70
+:102650004FF4002615D0082808BF4FF4802610D06C
+:10266000092808BF4FF400360BD00A2808BF4FF4E2
+:10267000803606D00B2808BF4FF4004601D04FF437
+:102680000006C246002116EB52004AEB010100236E
+:10269000FEF776FE064601E04FF00108A6F5407011
+:1026A000DFF8C016884280F0D1812168CE60CFE18A
+:1026B000012808BF02251AD0022808BF042516D019
+:1026C000032808BF062512D0042808BF08250ED00D
+:1026D000052808BF0A250AD0062808BF0C2506D001
+:1026E000072808BF102502D0082808BF202575D06C
+:1026F000092808BF402571D00A280CBF80250B2867
+:102700006CD001256AE0606AB0B3012808BFDFF829
+:10271000840521D0022808BFDFF850051CD003280B
+:1027200008BFDFF8440617D0042808BFDFF84005CB
+:1027300012D0052808BFDFF834060DD0062808BFE0
+:10274000DFF8300508D0072808BFDFF82C0503D0D4
+:10275000082808BFDFF82C057AD0092808BFDFF861
+:10276000280575D00A2808BFDFF8200570D00B288F
+:1027700008BFDFF81C056BD0DFF8D40568E001F076
+:10278000D7F90146606A40B3012808BF022525D069
+:10279000022808BF042521D0032808BF06251DD024
+:1027A000042808BF082519D0052808BF0A2515D018
+:1027B000062808BF0C2511D0072808BF10250DD00A
+:1027C000082808BF202509D0092808BF402505D0C2
+:1027D0000A280CBF80250B2800D001256068B1FBBA
+:1027E000F5F1420802EB4102B2FBF0F632E0666A14
+:1027F00066B3012E2CD0022E08BF484628D0032EE7
+:1028000008BF42F6AA2023D0042E08BF70461FD06E
+:10281000052E08BF41F698101AD0062E08BF41F2C7
+:10282000545015D0072E08BF604611D0082E08BF9F
+:1028300018460DD0092E08BF104609D00A2E08BF31
+:10284000084605D00B2E08BF284601D04FF4803033
+:1028500000F014F9B6B201E04FF00108A6F1100043
+:10286000504580F0F3800AEA0601C6F342000143B6
+:102870002068C160ECE0012F07D0022F35D0042F73
+:1028800070D0082F00F0A580D7E001F0A3F9014631
+:10289000606A40B3012808BF022516D0022808BF8D
+:1028A000042512D0032808BF06250ED0042808BF2F
+:1028B00008250AD0052808BF0A2506D0062808BF23
+:1028C0000C2502D0072808BF10257AD0082808BF99
+:1028D000202576D0092808BF402572D00A280CBFD1
+:1028E00080250B286DD001256BE0606AB0B301280C
+:1028F00008BFDFF8781333D0022808BFDFF8701361
+:102900002ED0032808BFDFF86C1329D0042808BF95
+:10291000DFF8641324D0052808BFDFF860131FD048
+:10292000062808BFDFF858131AD0072808BFDFF8B9
+:10293000541315D0082808BFDFF84C1310D009280D
+:1029400008BFDFF848130BD00A2808BFDFF8401390
+:1029500006D00B2808BF4FF2244101D0DFF8341312
+:10296000606831E001F0E4F80146606A40B3012894
+:1029700008BF022525D0022808BF042521D003283E
+:1029800008BF06251DD0042808BF082519D0052832
+:1029900008BF0A2515D0062808BF0C2511D0072826
+:1029A00008BF10250DD0082808BF202509D0092808
+:1029B00008BF402505D00A280CBF80250B2800D071
+:1029C00001256068B1FBF5F101EB5001B1FBF0F6B8
+:1029D00031E0666A6EB3012E08BF484629D0022E48
+:1029E00008BF704625D0032E08BF41F2555020D0B5
+:1029F000042E08BF60461CD0052E08BF40F6CC4010
+:102A000017D0062E08BF40F6AA2012D0072E08BF06
+:102A100018460ED0082E08BF10460AD0092E08BF4F
+:102A2000084606D00A2E08BF284602D00B2E08BF43
+:102A3000802000F023F8B6B201E04FF00108A6F1C3
+:102A40001000504502D22068C66001E04FF0010836
+:102A500004F1680001214180018000214160816012
+:102A60004046BDE8F28F00001B2D000800800040AA
+:102A7000F369FFCF0038014088000058616800EB1F
+:102A80005100B0FBF1F6704790F82810CA0706D540
+:102A900002685368C16A23F400330B43536090F813
+:102AA00028108A0706D502685368016B23F4803327
+:102AB0000B43536090F828104A0706D50268536804
+:102AC000416B23F480230B43536090F828100A07CE
+:102AD00006D502685368816B23F400430B435360AF
+:102AE00090F82810CA0606D502689368C16B23F4D3
+:102AF00080530B43936090F828108A0606D502682D
+:102B00009368016C23F400530B43936090F82810F2
+:102B10004A0610D502685368416C23F480130B43B6
+:102B20005360416CB1F5801F05D15368816C23F46B
+:102B3000C0030B43536090F828100A0606D50168BD
+:102B40004A68C06C22F4002202434A607047F8B51C
+:102B5000044604F17C050020E8606FF07E4701F038
+:102B6000C7F80646206801680A0708D5009733466B
+:102B700000224FF40011204600F016F860B92068DA
+:102B800001684A070AD50097334600224FF48001B6
+:102B9000204600F009F808B10320F2BD202068604B
+:102BA000A86000202870F2BD2DE9F041069C054682
+:102BB0000E4690461F462868C1693140B1420CBF9D
+:102BC0000120002040451CD114F1010FF3D001F089
+:102BD0008FF8C01B844200D314B900F015F80CE044
+:102BE000286801684A07E6D5C1690A05E3D54FF4AC
+:102BF0000062026200F008F8C16000210170032049
+:102C000000E00020BDE8F0812868016821F4D0715F
+:102C100001602868816849084900816005F17C00ED
+:102C2000202141608160704701680A6822F0C0027B
+:102C30000A6001688A6822F400028A602021C0F8D4
+:102C40008010704701680A6822F490720A60DFF809
+:102C50002011026893680B4093602021C0F8841013
+:102C60000021C16670470000FFF4FF1100127A00D6
+:102C700000093D00AAB0280080841E00006A1800E8
+:102C80005558140040420F0020A1070090D00300C7
+:102C900048E801000024F400816A00680268930695
+:102CA00044BF084600F09FBB0020A1F8560008680A
+:102CB000826822F0800282600868FFE7016841F0C4
+:102CC000400101607047806A01F018B8F8B5846A65
+:102CD00004F1800504F1560728686E6821688A6847
+:102CE000110606D5212804D1002038802046FFF7A0
+:102CF0009BFF20688168480606D5222E04D100205B
+:102D000038812046FFF79EFFA86840F01000A860B9
+:102D10002046BDE8F24000F0B3BA806A00F15601E7
+:102D200000220A810A8000F0ABBA00000000127A8B
+:102D30000000093D00AAB0280080841E00006A1827
+:102D4000005558140040420F0020A1070090D00306
+:102D50000048E801000024F40055150000CC0C00E8
+:102D600000AA0A0000FD0F005461510000D4300099
+:102D7000FEFFFFEF694981B00A6802430A600968F3
+:102D8000084008E0664881B0016841F40021016014
+:102D9000006800F400200090009801B0704738B53A
+:102DA0008AB004466846142100F0AAFF20685D4AF4
+:102DB0005D4990423ED108685C4D40F001000860DA
+:102DC000096801F00101059105980120FFF7D2FF84
+:102DD0000C20009002210020019102900321082084
+:102DE000039100F06AF8402000F060F8082000F03D
+:102DF00064F84F482860112000F065F808B101F030
+:102E0000CDF84FF088500690002101200791ADF8D1
+:102E10002010099006A9284601F0C2F808B101F077
+:102E2000BDF86567AC6200220021252001F0FAF8A8
+:102E3000252037E03F4A904236D148683E4D40F465
+:102E400080404860486800F4804005900598012063
+:102E5000FFF790FF0220FFF78DFF4FF4006000F0B6
+:102E600025F8072000F029F8C02000900221012059
+:102E700001910290032107200391049069462F4895
+:102E800001F044F92E4828600F2000F01CF808B12A
+:102E900001F084F86567AC6200220021242001F073
+:102EA000C1F8242001F0DBF80BB030BD0090022106
+:102EB00000200290039001917047049069464FF002
+:102EC000904001F023B968601020A8600020E860FD
+:102ED0008020286100206861A861E8612862284696
+:102EE00000F034B810B5044616492068884213D162
+:102EF00001F0F0F901F0EEF91348016821F4407196
+:102F000041F480710160026842F400420260204690
+:102F1000BDE8104001F0F2B910BD00004C000058AF
+:102F200050000058008000405C00005854150020FC
+:102F30004400024000380140B4150020000400485D
+:102F400044040240002800409000005838B50400B6
+:102F500001D1012032BD2168DFF8FC02814204F179
+:102F6000240500F042F8022068700A68A0686FF338
+:102F70000E120243E0680243206902436069024383
+:102F8000A0690243E0690243206A02430A602046C6
+:102F900000F039F9A068B0F5804F04BF00216160EE
+:102FA000696A207900F014F838B1052805D2204666
+:102FB00000F043F900F012F803E000202863686392
+:102FC000A8630020A861012068700020287032BD2D
+:102FD0000860A96AE86A486060687047296B002049
+:102FE0000860696BA86B486070470AD2DFF86C0212
+:102FF00042181423B2FBF3F292002A62DFF8600257
+:1030000009E0DFF8600242181423B2FBF3F29200E9
+:103010002A62DFF85402E8617047F8B5044604F10B
+:10302000240600253078012801D10220F2BD0127B5
+:103030003770707801282FD102277770B56120682A
+:1030400007687F087F000760204600F0C0F821680D
+:10305000F06820B10A6842F00E020A6008E00868D1
+:1030600020F0040008602068016841F00A01016056
+:10307000706A0168CA0303D5026842F48072026074
+:10308000306B18B1016841F48071016020680268FA
+:1030900042F00102026001E0357002252846F2BDCF
+:1030A00038B500F1240200245178022903D004200D
+:1030B0009061012428E001680B6823F00E030B6087
+:1030C00001680D686D086D000D60516A0B6823F48E
+:1030D00080730B60012192F82030D56903F01C0346
+:1030E00099406960936AD16A5960116B31B10B687C
+:1030F00023F480730B60536B916B59600121517005
+:103100001470516901B18847204632BDF8B500F10D
+:1031100024010423CA6914680268156891F82060C4
+:1031200006F01C0603FA06F73C4210D06F070ED5D6
+:103130001468A50603D4156825F00405156000F091
+:103140003DF8C968002938D0BDE8F440084702239B
+:1031500003FA06F73C4213D0AF0711D51468A50651
+:1031600005D4156825F00A05156001224A7000F0A3
+:1031700025F800220A708968F9B1BDE8F4400847D3
+:10318000082303FA06F6344217D02B0715D5136827
+:1031900023F00E031360012291F82030CC6903F074
+:1031A0001C039A40626001228A614A7000220A7000
+:1031B000096911B1BDE8F4400847F1BD91F820203C
+:1031C000CC6902F01C02934063607047000078B540
+:1031D000C56C046D6C60446D14B1846DC56D656023
+:1031E000012590F84440066C04F01C04A54075606D
+:1031F000046863608068102802D1A260E16071BD3C
+:10320000A160E26071BD416C0268134B89089A426B
+:1032100034BF164B164B03EB8101816402F0FF02B1
+:10322000083A1421B2FBF1F1124AC26401F01C0108
+:10323000012202FA01F10165704701790E4A02EBA1
+:1032400081024265491E0D4A826501F00301012297
+:103250008A40C2657047000008040240F8FFFDBFC5
+:1032600000000240F8FBFDBF0004024000080240DD
+:103270001C08024080080240FC080240400902404D
+:103280007047000010B500F17C010A78012A01D1D5
+:10329000022010BD01230B7024224A6002681368CB
+:1032A00014686408640014600022426623F000532E
+:1032B00000680360202048600020087010BD70B5D1
+:1032C00000F01EF801D1022070BD00F01FF822F0BE
+:1032D000604209E070B500F013F801D1022070BD22
+:1032E00000F014F822F0606211438160204600F083
+:1032F0001AF820680660202068600020287070BDE1
+:10330000044604F17C0528780128704701222A70C0
+:103310002420686020680668026852085200026033
+:10332000206882687047FFB50FF254020FF258060A
+:10333000D2E9003402A9C1E90034D6E90071CDE92F
+:103340000071416E11B90121012213E001688A6800
+:103350008968520E02F00702490F02AC655CA45C5A
+:103360001DF801101DF80220ED00E40095FBF1F1BD
+:1033700094FBF2F2683041800280FFBD0000000043
+:103380000101010307010000080402040801010112
+:103390007047000063601D481D4B704723601D4847
+:1033A0001D4B704770B51C46002300251B4E10B105
+:1033B000022804D00AE03460FFF7F1FF02E07460F5
+:1033C000FFF7E9FF0360FEF7B5FD0346012B05D0CB
+:1033D00007D3032B04D038BF022502E0012500E00B
+:1033E0000325284670BD82B00068094A0B49904207
+:1033F00006D0094A904207D1086828B102B00047B8
+:10340000486808B102B0004702B070473C13002082
+:1034100000800040C81300200038014060170020E1
+:10342000704770474FF0B040006800F0F000B028DF
+:1034300088BFB02070472DE9F041040068D02078A3
+:1034400081064FF0B04539D5A868E96810F00C0046
+:1034500001F0030104D00C2808BF012940F083804B
+:103460002868800702D5E069002851D0FFF7DAFF0D
+:10347000616A884207D2084600F0BDFB00281BD1D4
+:1034800000F05AFA10E0286820F0F00001432960AB
+:103490006968206A21F47F4141EA00216960606A1D
+:1034A00000F0A9FB002807D100F068FFDFF8E00773
+:1034B000006800F0F1FF002840F088812078C10703
+:1034C00011D5A868E96800F00C00082801F0030194
+:1034D00003D00C2808BF032967D12868800302D5D0
+:1034E0006068002814D0217888071AD5A868E96890
+:1034F00000F00C00042801F0030104D00C2808BFE0
+:10350000022940F087802868400503D5E06800283C
+:1035100000F05C816968206921F0FE4141EA0061A8
+:1035200069602168DFF86C6711F0180F00F078818E
+:103530006069002800F0A880C906706840F1958095
+:10354000800707D4706840F0010000F00EFA0746CB
+:103550007068800700F13C8100F0CAFBC01B0328A3
+:10356000F6D30320E1E1E06978B1296841F0010177
+:1035700000F0D4FA06462868800700F1388100F090
+:10358000B7FB801B0328F6D3EBE728684008400010
+:1035900000F0E5F90646286800F0CAF98ED000F080
+:1035A000A7FB801B0328F6D3DBE76068B0F5803FFC
+:1035B00006D0B0F5A02F296807D141F480212960F9
+:1035C000286840F48030286006E021F480312960CA
+:1035D0002A6822F480222A60606860B100F088FBCB
+:1035E0000646286880033FF57EAF00F081FB801B14
+:1035F0006528F6D3B5E700F07BFB06462868400C4B
+:1036000010F001003FF46FAF00F072FB801B6528E3
+:10361000F4D3A6E7E06878B1296841F4807100F03E
+:103620007DFA06462868400500F1E48000F060FB62
+:10363000801B0328F6D394E7286820F4807000F0FC
+:103640008EF906462868800A10F001003FF469AF41
+:1036500000F04EFB801B0328F4D382E700F048FB08
+:10366000C01B0328C0F0D8807BE740F0010000F0C9
+:103670007CF907467068800700F1E98000F038FBAC
+:10368000C01B0328F6D36CE7706820F0040000F03C
+:103690006CF907467068C00810F0010000F0E68081
+:1036A00000F026FBC01B0428F4D35AE70528306835
+:1036B00006D140F004003060316841F0010105E0BE
+:1036C000400840003060316821F004013160A0689A
+:1036D00041F2893768B100F00BFB80463068800703
+:1036E00000F1D98000F004FBA0EB0800B842F5D34C
+:1036F00037E700F0FDFA8046306800F019F900F075
+:10370000CA8000F0F5FAA0EB0800B842F4D328E72D
+:1037100000F0EEFAC01B0328C0F0CB8021E7B068B0
+:1037200040084000B06000F0E3FA0746B06800F0DF
+:10373000FFF800F0C28000F0DBFAC01B0328F5D3CD
+:103740000FE700F0D5FA801B0328C0F0C88008E717
+:1037500000F0CEFA001B0328C0F0E28001E7E96820
+:10376000DFF8340589088900E960E9680140E9600B
+:1037700000F0BEFA044600F0EDF825D000F0B8FAEB
+:10378000001B0328F7D3ECE601281FD0E868226B62
+:1037900000F00301914202BF00F07001626B9142A0
+:1037A00014D1A26BC0F30621914202BF00F478113C
+:1037B000E26B91420AD1226C00F06061914202BF3B
+:1037C00000F06040616C884200F0AE800120ACE007
+:1037D000706840F0040000F0C8F807467068000701
+:1037E00010D400F085FAC01B0428F7D3B9E600F026
+:1037F000A3F863E66868216920F0FE4040EA0160B2
+:1038000068608EE67068A16920F4706040EA01206B
+:10381000706000F0A7F8074600F089F87FF41EAF4B
+:103820002078410737D5DFF874743868C10529D48A
+:1038300000F050FD00F05CFA80463868C10521D4E4
+:1038400000F056FAA0EB08000328F6D389E670686A
+:1038500020F0040070607068C00810F00100DFD034
+:1038600000F046FAC01B0428F5D37AE600F07AF897
+:10387000074600F05CF8D3D000F03AFAC01B0328EA
+:10388000F7D36EE6A06801287FF410AF306840F0EF
+:10389000010030601BE7217848060ED5A06A002899
+:1038A0003FF43DAFB16841F00101B16000F020FA92
+:1038B0000746B06880077FF52BAFE06AA0B3A96820
+:1038C00001F00C010C293FF45FAF0228286820F0BA
+:1038D000807028607FF443AF00F00AFA064600F0DB
+:1038E00039F87FF42EAFE968DFF8B403A26B01402A
+:1038F000206B0143606B0143E06B41EA022101430D
+:10390000206C0143606C0143E960286840F08070DE
+:103910002860E96841F08051E96000F0E9F9044667
+:10392000286880017FF514AF0020BDE8F081706841
+:10393000400810F0010070472968606A21F0F0012A
+:10394000014329606868216A20F47F4040EA012031
+:10395000686070472868400E10F0010070472860CA
+:1039600000F0C6B9706840084000706000F0C0B94F
+:103970002DE9F8430400884644D0DFF8286300F0BE
+:10398000C8F847D200F0CDF8074600F0C2F841D0A1
+:1039900000F0AEF9C01B0228F7D90320B7E000F011
+:1039A000A7F9401B022843D9F7E700F0A1F9A0EBE3
+:1039B000090002284CD9F0E700F09AF9A0EB0900C1
+:1039C000022854D9E9E700F093F9401B02285DD999
+:1039D000E3E700F08DF9401B022867D9DDE700F02E
+:1039E00087F9401B484577D3D7E7032802D13968C8
+:1039F000890103E00028396802D1890762D401E017
+:103A000049055FD4012082E000F072F9C01B022852
+:103A100072D9C2E7207881074FF0B0470BD5B9685B
+:103A2000A06821F0F0010143B96000F061F905469A
+:103A3000B868C003B3D52078DFF8505281060AD5A4
+:103A40002968606921F0F001014300F067F88146C0
+:103A500028688003A9D5207841060BD52968A0697C
+:103A60000909090141EA101100F058F88146286857
+:103A7000C003A1D5207841070BD5B968E06821F4CF
+:103A8000E0610143B96000F033F90546B86880038E
+:103A900099D5207801070CD5B868216920F46050C9
+:103AA00040EAC100B86000F023F90546B868400359
+:103AB0008FD52078C10717D56068022895D139685D
+:103AC00089039FD5B968890840EA8100B86041F24E
+:103AD000893900F00DF90546B868616800F00C00FE
+:103AE000B0EB810F7FF47BAF306800F007008045BA
+:103AF00005D200F016F8074600F00BF884D100F06C
+:103B00003DFC00F0FFFCBDE8F24300F0C5BCBDE8A1
+:103B1000F283306800F0070040457047296000F0EC
+:103B2000E7B83168C90848EAC101316000F0E0B87F
+:103B300038B54FF0B0445D4DA16811F00C0106D1CD
+:103B4000FFF770FCC0F3031055F8200032BD0429C4
+:103B5000574A05D00829574804D12168C90222D5FF
+:103B6000104632BDE16801F00301022904D00329A7
+:103B700004D12168C90207D5104605E0FFF752FCC1
+:103B8000C0F3031055F82000E168E268E368C1F370
+:103B900006214843C2F30211491C5B0FB0FBF1F050
+:103BA0005B1CB0FBF3F032BD80B5FFF7C1FF3E49AF
+:103BB000FFE7414A0968C1F3031152F82110B0FB35
+:103BC000F1F002BD80B5FFF7EFFF00F010F8C1F390
+:103BD000022106E080B5FFF7E7FF00F008F8C1F327
+:103BE000C22112F8211001F01F01C84002BD2E4968
+:103BF000324A0968704770B52C49B1282EBFCC6A8B
+:103C0000C0F3031051F820402048056800F08EFCF6
+:103C100029492B4A05F00F0551F82510B4FBF1F1A5
+:103C20000024B1FBF2F1B0F5007F0FF2B4022046A0
+:103C300009D10FF2900353F820508D4214D2401C4A
+:103C40000328F8D912E00FF28C0353F820508D426C
+:103C50000AD2401C0328F8D308E000F049F8801B82
+:103C600003280BD3032070BD52F820400D4D286867
+:103C7000C00844EAC000FFF772FE0646296801F05A
+:103C80000701A142E9D1002070BD000008010058E1
+:103C90007C10002090000058FFFFFEEE000400584A
+:103CA0008C80C1110040005808000058584400089A
+:103CB0000024F4000048E80118440008708000085F
+:103CC00040420F00120000002400000036000000F7
+:103CD00040000000060000000C0000001000000082
+:103CE00000000000010000000200000003000000CE
+:103CF00001480068704700BF78100020704700003E
+:103D0000002200F01BBC0000974900E0974981B0F9
+:103D10000A6802430A60096808400090009801B0F0
+:103D2000704710B500F0DAFB914C606840010ED589
+:103D30006068C0000BD400F0CDFA00F0CBFA206828
+:103D400040F480302060216821F48031216000F04F
+:103D5000D0F8002000F00CFC40B180798549E1608A
+:103D6000E16821F47C5141EA0021E16000F047F86C
+:103D70008148824C016800220260026902F0500210
+:103D800002610420FFF7C2FF0120FFF7BFFF0220FE
+:103D9000FFF7BCFF0420FFF7B7FF0120FFF7B4FFD8
+:103DA0000220FFF7B1FF00220F210E2000F03AF9A8
+:103DB0000E2000F054F900220F213A2000F032F9D1
+:103DC0003A2000F04CF900216D4841600F218160DC
+:103DD000046047F6FF71C16000F0DCFBCA2060623E
+:103DE000FF2153206062A068C008C000A06061622B
+:103DF00000F074FC4FF0FF3000F002FDFAE710B560
+:103E0000AEB01CA84821FFF77BFF01A81C21FFF7DB
+:103E100077FF08A85021FFF773FF5548016821F08C
+:103E20001801016007215748026822F4C06242F479
+:103E3000007202604FF48032006800F4C0600090AD
+:103E40004FF4807400981C9101201E9000214020A6
+:103E500020901D9227911F941CA8FFF7ECFA6F2069
+:103E60000190022100200291039004900590069099
+:103E70000790012101A8FFF77BFD43F6030008909E
+:103E800000214FF4804019900E910F9110200221D3
+:103E90001B901A91189408A800F0A4FD2EB010BD34
+:103EA00010B5394C394800F017F84FF40040E06184
+:103EB000002020626062A0622046FDF7FBFF002127
+:103EC0002046FFF7FCF900212046FFF703FA2046C1
+:103ED000BDE81040FFF7D6B920604FF4E1306060D4
+:103EE0000020A060E06020610C2060610020A061E3
+:103EF0007047274881B0016841F4801101603F217B
+:103F0000006800F4801000900098224841604161F0
+:103F1000016841F47C110160026942F47C12026183
+:103F2000016841F03F010160026942F03F02026115
+:103F300001B0704738B50446FFF7DAFE14F1010FFF
+:103F4000054609D000F0E1FA041905E012480168BD
+:103F500021F00401016030BFFFF7CAFE401BA04200
+:103F6000F4D331BD00000000480000584C00005858
+:103F700090000058FECAFECA800800580028004081
+:103F8000E016002000040058C8130020003801404B
+:103F900050000058040C005810ED00E0704700007D
+:103FA00018B500F12402507801281BD11378012B99
+:103FB00001D1022012BD536A10701C680A480440E7
+:103FC00008680443C868401E44EAC0444868044383
+:103FD000087A497A44EA004444EA41241C600020FB
+:103FE000107012BD012012BDFFFD00E009010200AA
+:103FF00081B002D43C48815405E03C4802F00F02F5
+:10400000104400F8041C01B07047394A13684FF699
+:10401000FF0100020B4000F4E060184335490843FB
+:104020001060704738B5324B1C68C4F30223C3F1EB
+:104030000704052C28BF04241D1D072D34BF0023B1
+:10404000DB1E012505FA04F4641E2140994005FA9F
+:1040500003F35B1E1A401143BDE83440C6E701007C
+:1040600007D4012200F01F01234B8A40400943F886
+:104070002020704701000BD4012200F01F011F4BCC
+:104080008A40400943F82020BFF34F8FBFF36F8F62
+:10409000704710B5401EB0F1807F01D3012010BDE4
+:1040A000174C60600F214FF0FF30FFF79FFF002299
+:1040B000A26007202060002010BD010007D401226B
+:1040C00000F01F010F4B8A40400943F82020704741
+:1040D000010007D4012200F01F010B4B8A40400968
+:1040E00043F820207047000000E400E018ED00E0F5
+:1040F0000CED00E00000FA0500E100E080E100E0E6
+:1041000010E000E000E200E080E200E02DE9F84F7E
+:104110004FF0000C674A684BDFF8A0814FF00F09A1
+:1041200082460F4633E0664DAA4514BF0725042595
+:104130008D40254348F82E50C1431C6801EA040E07
+:104140007C68E50348BF40EA0E0EC3F800E05C68F7
+:1041500001EA040E7C68A50348BF40EA0E0EC3F8CE
+:1041600004E0146801EA040E7C68E50248BF40EAF6
+:104170000E0EC2F800E0546801EA040E79688C0261
+:1041800048BF40EA0E0EC2F804E00CF1010C396899
+:1041900031FA0CF000F07C80012000FA0CFE1EEADF
+:1041A0000100F2D07C68022C18BF122C4FEA8C015F
+:1041B00010D14FEADC040AEB840401F01C05266AE6
+:1041C00009FA05FB26EA0B06D7F810B00BFA05F53D
+:1041D000354325624FEA4C040325DAF8006097F86E
+:1041E00004B0A540ED430BF0030B2E400BFA04FB8B
+:1041F0004BEA0606CAF800607E68012E18BF022E40
+:1042000003D0112E18BF122E17D1DAF80860D7F894
+:104210000CB02E400BFA04FB4BEA0606CAF8086005
+:10422000DAF8046026EA0E0E7E68C6F3001606FA77
+:104230000CF646EA0E06CAF80460DAF80C6035405F
+:10424000BE6806FA04F42C43CAF80C407C68E4000B
+:104250009BD54FEA9C0E58F82E5001F00C0109FA3C
+:1042600001F425EA0404BAF1904F08BF00250ED0EE
+:10427000144DAA4508BF012509D0134DAA4508BF12
+:10428000022504D0114DAA457FF44DAF03254FE719
+:10429000BDE8F18F81B0002A14BF8161816201B055
+:1042A00070470B4A136803421CBF106000F09ABAB3
+:1042B00070470000000800588008005808000140BE
+:1042C000001000480004004800080048000C0048A6
+:1042D0000C0800580248016841F480710160704781
+:1042E000000400588A60FF2102685162012180F8B1
+:1042F0002110002180F820100020704790F8201035
+:10430000012901D102207047012280F820200221DA
+:1043100080F82110CA210268516253210368596252
+:1043200001688A6842F02002FFF7DCBF32490020B2
+:1043300008604FF4E0223148016841F470010160E7
+:104340004FF0B041086840F0010008608A602C48D6
+:104350000A6802402B480A60036823F005030360E3
+:10436000426852085200426000222748C860086133
+:10437000086820F4802008608A6170474FF0B041DF
+:104380000FF2D4000A68C2F3031250F822008A68C0
+:1043900002F00C02042A04D0082A04D00C2A04D00B
+:1043A0001CE01A481AE01A4818E0CA68CB68C3F340
+:1043B000021302F003025B1C022A08BF134802D05A
+:1043C000032A08BF1248B0FBF3F2C868CB68C0F3F9
+:1043D00006205B0F42435B1CB2FBF3F00D4A0FF269
+:1043E0003803106088681168C0F3031053F8200088
+:1043F000B1FBF0F01060704708ED00E088ED00E0E0
+:10440000FBFEF6FA94000058001004220024F40089
+:104410000048E8019C10002001000000030000009B
+:10442000050000000100000001000000060000007F
+:104430000A0000002000000002000000040000004C
+:104440000800000010000000400000008000000094
+:104450000001000000020000A0860100400D0300E2
+:10446000801A060000350C0040420F0080841E00B8
+:1044700000093D0000127A000024F40000366E01AD
+:104480000048E801006CDC020000000000000000B1
+:10449000000000000000000070B50F4E0446B06838
+:1044A0000025A8B1FFF780FBB2684FF47A71B1FB29
+:1044B000F2F1B0FBF1F0FFF7ECFD48B9102C07D298
+:1044C000002221464FF0FF30FFF7ACFD746000E0A2
+:1044D0000125284670BD00BF78100020104810B597
+:1044E000016841F4807101600320FFF78EFD002018
+:1044F000FFF7D2FF0024002814BF0124FEF742FC7E
+:10450000204610BD074840687047064880687047DD
+:104510000548FFE7016841F00101016070470000B4
+:104520000040005878100020042004E0DFF8080064
+:10453000006800F4C06070470004005800B500BF78
+:10454000130096469446103928BFA0E80C50FAD8BC
+:104550005FEA417C28BF0CC048BF40F8042BC90764
+:1045600028BF20F8022B48BF00F8012B00BD000037
+:1045700001460648064AC3798B4218BF904218BFCD
+:104580000838F8D18B4218BF00207047F873FF1F1E
+:104590000070FF1F38B5040044D094F8210028B9FA
+:1045A000002184F820102046FEF79CFC00F049F81A
+:1045B000FF2510B100F03FF834E02168DFF8B000CB
+:1045C0008A6802408A6021688A68636820690343B8
+:1045D000A06903431A438A602168E0680861206883
+:1045E0000169A26841EA024101612068C16821F0C5
+:1045F0008001C1602068C16C89088900C16421689C
+:10460000CA6CE369606903431A43CA64206881681D
+:10461000880609D400F020F830B1206845620421F2
+:1046200000F01FF8012032BD20684562012184F8A6
+:104630002110002032BD20684562042184F8211039
+:104640007047022084F82100CA2021684862532064
+:1046500022685062204626E020460BE02068C0F821
+:10466000248084F82110002084F820007047000086
+:10467000BFFF8FFF70B5044640F2E9362068C1687D
+:1046800021F0A001C160FFF733FB05462068C16837
+:10469000880606D4FFF72CFB401BB042F6D303205C
+:1046A00070BD002070BD70B504462068C1684A0620
+:1046B00012D44FF0FF32C26040F2E936FFF718FB28
+:1046C00005462068C168480606D4FFF711FB401B69
+:1046D000B042F6D3032070BD002070BD10B52A484B
+:1046E0002A4C88B0016841F40041016000F0F8FAFA
+:1046F0002749002000F085FCFFF70AFF25480168E4
+:1047000041F480310160026C42F48032026400F0B6
+:10471000D2FD0121012000F0E8FA002000F015FE92
+:10472000012000F012FE022000F00FFE012000F038
+:1047300034FE0121002000F044FE0121012000F0A0
+:1047400040FE00F095FE144A0021082000F0BBF85E
+:1047500004F23C500FF245010090019169460FF2BE
+:10476000410000F073FF04F25470029004F5C96137
+:1047700040F23C5005900391049402A800F0FEFE24
+:1047800000F074FE08B010BD08000058240003209B
+:10479000E0160020900800588F560008704700006F
+:1047A00080B500F022FF00F0F5FFBDE804400021D5
+:1047B000012000F09ABA70474FF0FF3000F020B8A7
+:1047C0000021082000F08CB8022000F0ABB80220D5
+:1047D00000F0B0B8FFF764BB13460A46014600205C
+:1047E000FEF7E0BD012805D0022805D0102805D12C
+:1047F00001F00CB901F00CB901F041B970470000AB
+:104800002DE9FC47594CDFF86891A5692840A06163
+:104810004FF0010A4FF0FF3830E0491C54F83100E6
+:104820000642FAD004EBC1071840796810400142F3
+:1048300008BFC7F804807E68304000F09BF86062D3
+:104840000AFA00F086437E60EFF3108172B6626A66
+:1048500020690AFA02F2D24310402061022004EBE0
+:10486000C00353F8086C1640401E43F8086CF6D19C
+:1048700081F31088606A59F82010884763692069BD
+:10488000A2691840104207D0E069216A084203D1AA
+:10489000002103EA0206C1E701F046FDEFF31089AB
+:1048A00072B6216960690140A069014201BFE169F6
+:1048B000206A0142FFF77FFF89F3108801F035FD80
+:1048C000A561BDE8F38738B51446EFF3108572B6DD
+:1048D00000F050F8264941F8204085F3108831BD9A
+:1048E00010B5EFF3108272B6204B1C6904431C61B3
+:1048F00053F83140204343F8310082F3108810BD53
+:10490000EFF3108172B6194A536923EA000005E0FB
+:10491000EFF3108172B6154A53691843506181F361
+:1049200010887047EFF3108172B6104AD3691843AC
+:10493000D061F4E72DE9F0410C4C626A266A2062EE
+:10494000012101FA02F803E039464046FFF734FF3F
+:10495000276AE5693D42F7D0404600F00BF825EAAA
+:104960000707E76126626062BDE8F0815010002011
+:104970005414002002460020110C090404BF10202A
+:10498000120412F07F4F04BF083012020FF2180118
+:1049900012F0704F04BF001D1201120FC0F11F0072
+:1049A000895C401A70470000040302020101010102
+:1049B0000000000000000000DFF820130A6803096F
+:1049C00003F47F2300019A4300F47F2000F082B9B2
+:1049D000DFF808231368010C23EA014343EA00438C
+:1049E000136070472DE9F843054600242878DFF866
+:1049F000EC624106A0464FF0B0472DD5286B70B150
+:104A0000B0F5800F06D0B0F5000F18BFB0F5400F1D
+:104A100017D01FE0F86840F48030F860EDE03868A7
+:104A200020F080603860FFF763F981463868000144
+:104A300040F1D080FFF75CF9A0EB09000228F5D91E
+:104A40000324D7E0FFF754F9A0EB0900022840F255
+:104A5000C980F5E70124A0462868010531D5B06872
+:104A600000F44078286C80452AD0FFF733FCB8F179
+:104A7000000FB16805D1286C21F440710143B16089
+:104A80001EE0B06840F48030B06021F44071B0683E
+:104A900020F48030B060286C0143B160B068C0077A
+:104AA0000ED5FFF725F9804641F28939B0688007B5
+:104AB00006D4FFF71DF9A0EB08004845F6D3032400
+:104AC000A0462878C10705D53168A869890840EA59
+:104AD000810131602878810705D53168E86921F4C2
+:104AE0004061014331602878C10644BFA86AFFF7DE
+:104AF0006FFF2878810644BFE86AFFF769FF2878CE
+:104B0000410744BF286AFFF757FF2878010744BFD1
+:104B1000686AFFF751FF2868C1051BD53168686BCB
+:104B200021F0406101433160686BB0F1006F00F02B
+:104B3000BDF8686BB0F1806F75D100F0BDF8044628
+:104B40003868000160D5FFF7D3F8001B0228F7D9B9
+:104B50004FF0030867E0FFF7CBF8001B02285BD992
+:104B6000F6E7316821F04041316020F08050326832
+:104B700022F0406210433060A86BB0F1C05F00F0DB
+:104B800095F8286841056DD53168E86B21F04051F2
+:104B900001433160E86BB0F1005F03D1F96841F483
+:104BA0008031F960E86BB0F1805F5BD100F084F890
+:104BB00004463868000146D5FFF79AF8001B022822
+:104BC000F7D94FF003084DE0FFF792F8001B0228D9
+:104BD00041D9F6E700F061F8A86821F4781100F0F7
+:104BE00071F88146386800017FF52CAF3969686932
+:104BF00001433961002C7FF42EAF3168286B21F41A
+:104C000040010143316027E700F047F8E86821F0F0
+:104C1000606100F057F80446386800019BD5396997
+:104C200068690143396128688105AAD5A86BB0F18C
+:104C3000804F1CBFB0F1004F002892D1316821F0A5
+:104C40004041084397E700F028F8286921F06041C7
+:104C500000F038F8044638680001B5D5396968694C
+:104C6000014339612868C10405D5F168686C21F4F5
+:104C700040410143F160286881040BD5796AE86CF2
+:104C800021F0300101437962796AA86C890840EA11
+:104C9000810179624046BDE8F2833869696820F491
+:104CA000FE4040EA012038613969704703D1F96854
+:104CB00041F08071F9607047396821F08061396096
+:104CC000FFF716B801433961386840F080603860FA
+:104CD000FFF70EB8104308607047000088000058C6
+:104CE0000C48002101604160704710B500F00CF8DD
+:104CF0005C6819B1012904D1204301E024EA0000D5
+:104D0000586082F3108810BDEFF3108272B6014B29
+:104D10007047000068170020DFF83C150A6892B25F
+:104D200000E00246086880B28242FAD170472DE95D
+:104D3000FC4104461825DFF82485DFF82465684324
+:104D400008EB00073078062808D13178717034708C
+:104D500078754FF0FF307060002039E000F077F890
+:104D6000B9680918B96008F10803B96832786A436C
+:104D70009A589142327813D308F1150315FB02FCBF
+:104D800013F80C30062B25D008F108066B43F358B6
+:104D9000994222BF08F115036A439A5CEED219E0EA
+:104DA0001146337869439A420BD008F1140308F195
+:104DB000150C5B5C15FB03F50CF805407A753B752B
+:104DC00000E07A7508F1140254543178717034702F
+:104DD000BDE8F6811146694308F115035B5C062BBB
+:104DE00004D008F1140615FB03F574557B753A756C
+:104DF00008F115025454EBE7F8B5DFF86434DFF836
+:104E00005C541E78182402466243B0422A4404D1FE
+:104E100018785870507D18700FE0167D507D92F80C
+:104E200015C005F115076643062807F806C004D02B
+:104E3000167D143514FB00F42E55012010731878DC
+:104E4000062802BF00294FF0FF315960F1BD10B5AF
+:104E5000DFF80C44606810F1010F0FD0FFF75CFF22
+:104E60006168DFF80024814261683CBF5388C9183B
+:104E7000081A517848431178C84000E0002080B2F9
+:104E800010BD2DE9F84FDFF8DC53DFF8DCB3D5F8BF
+:104E90000880D8F80000DBF800104A0500F090F90F
+:104EA000DFF8BC63DFF8B4A321F4806181604FF0C8
+:104EB000180934780AF1080019FB04F14758FFF784
+:104EC000C6FF874217D200270121B170062C3DD0C2
+:104ED00019FB04F40AF108010AF108020959814298
+:104EE00023BF0AF108010959091A002111510AEBDF
+:104EF00004014C7DEAE7A9884118B94202D2AF8883
+:104F00000021E2E73F1ADFE7022802DA28780128C9
+:104F100000D07F1ED8F80000C1684A07FAD500F01B
+:104F200055F9DBF80C00000CBFB247EA0047CBF89C
+:104F30000C70FFF7F1FE7060A8680068816841F4AA
+:104F400080618160AFF30080BDE8F18FB8B20028C6
+:104F5000DAD1FFF7E1FE70600320BDE8F24FFFF702
+:104F6000ACB82DE9F843EFF3108872B6BD4DBB4BDA
+:104F7000A8680168CA224A6253204862B84A886811
+:104F800020F48060886018201678374647431F4415
+:104F9000387B022826D13C68D7F810909078F0B181
+:104FA0007A7B012A0AD101213046FFF725FF88F3D9
+:104FB00010887968304600F016F904E088F310880C
+:104FC000304600F0C1F8A8680068CA214162224654
+:104FD000532141624846314600F050F90BE0FFF79B
+:104FE00050FF06E0C8684207FCD500F07EF89F49F4
+:104FF000086088F31088FF21A86802685162BDE844
+:10500000F183F8B5974CA160CA2209684A6253221D
+:105010004A62954A136843F020031360136803F053
+:105020000703C3F10403237095682D0C05F07F0579
+:105030006D1C6570EDB29268C2F30E02521C628064
+:1050400092B2521E6A43A2F5A072DA404FF6FF7385
+:105050009A422CBFA380A280854A136843F40023A0
+:105060001360844B1D6845F400251D6048BB7C48D7
+:105070007A4E0123837018254FF0FF3343600023DD
+:105080005FFA83FC06F10C0715FB0CFC4FF0000ED9
+:1050900007F80CE05B1CDFB2062FF1DB0623037080
+:1050A000886820F48060886000F01FF8D0600320DA
+:1050B000FFF70EF8A1680868826842F480428260B7
+:1050C00005E0C868410544BF0320FEF7F6FFA1686C
+:1050D0000A68FF205062002203210320FEF7A2FF8E
+:1050E000BDE8F2400320FEF7BABFC86800F08000B8
+:1050F00060F49060C8604FF400207047F0B504463B
+:105100000025EFF3108672B61827DFF850C10CF1B6
+:105110000C0007FB05FE10F80E0010B16D1C062DEB
+:10512000F5DB062D0CD06F430CEB0700012707734E
+:1051300086F310880461427303600D700020F0BD97
+:1051400086F310880120F0BDF8B50746EFF3108410
+:1051500072B60320FEF78EFF424DAE683068CA215A
+:1051600041623A4653214162182043494243895CD7
+:1051700002291BD100213846FFF73EFE384801784E
+:1051800006290ED1306838490A68530500F018F82E
+:1051900021F480618160C1684A07FCD500F016F8EF
+:1051A00004E04078884218BFFFF76BFEA9680A68E0
+:1051B000FF2050620320FEF752FF84F31088F1BDF8
+:1051C00002D5C1684A07FCD481687047C16801F004
+:1051D000800161F49061C1604FF4002023490860B0
+:1051E0000320FEF775BF2DE9F04180460F46424689
+:1051F00018201A4942438C18207B022804BF4046DD
+:10520000FFF7A2FFEFF3108572B60320FEF732FF1F
+:10521000144EB0680068CA214162532141620220E5
+:105220002073A76067604046FFF781FD0C490A784C
+:105230004978914202D0FFF724FE02E0A168081AE3
+:10524000A060FF20B1680A6850620320FEF707FFE4
+:1052500085F31088BDE8F08128280040AC120020BA
+:10526000A017002048170020082800400C0800580C
+:105270000008005880080058B812002010470000AD
+:1052800038B5EFF3108472B6284D6946281D01F039
+:1052900066F96946281D01F0BFF938B184F310881A
+:1052A000BDF80010224AFFF797FA31BD012028709F
+:1052B00084F3108831BD80B5FFF78CFA022100918C
+:1052C00000231A4800F124014FF48052001D01F020
+:1052D0002DF801BD00BFF8B514460026EFF3108588
+:1052E00010F1010F1ED001281CBF02284FF0FF361D
+:1052F00018D1BCB1264672B60C4F012392B2381DAC
+:1053000001F028F800281CBF3978002908D00022B5
+:105310003A7085F31088A1B2054AFFF75DFA01E003
+:1053200085F310883046F2BD000000002C000020FC
+:1053300081520008444981B00A6802430A60096842
+:1053400008400090009801B0704778B585B00446D9
+:1053500068461421FEF7D4FC0220FFF7EBFF00F0B3
+:1053600010F8009501200190002102200390029185
+:10537000694656F82400FEF7C9FE00F008F806B0AA
+:1053800070BD0FF2D400314E30F81450704756F80B
+:10539000240000222946FEF77DBF0FF2BC012B4BF3
+:1053A00031F8101053F820000122FEF773BF0FF2FE
+:1053B000A801264B31F8101053F820000022FEF708
+:1053C00069BFF0B585B005460C4668461421FEF766
+:1053D00097FC0DB9042004E0012D18BF022D02D165
+:1053E0000820FFF7A7FF2000194E0FF274070DD118
+:1053F00037F8150000900021019101200290022150
+:10540000039100F01BF80120FEF794FD012C13D14D
+:1054100037F81500009001210E480190029100F02C
+:105420000DF80FF24400445D00220F2160B2FEF738
+:10543000F9FD60B2FEF713FE05B0F0BD694656F8FF
+:105440002500FEF763BE00004C00005884100020C9
+:105450009010002000002110200001000200000038
+:1054600010000100020000000A06070001F092B9D6
+:105470006C486D49016001F12002426001F1300287
+:10548000826001F13C02026201F14402C26001F15A
+:105490004C02026101F16802426101F16C02826119
+:1054A0007831C16101F088B938B504465F4D05F126
+:1054B000100001F0E9F95B494868A1680160E16802
+:1054C000C160456005F11001816001F091F9584813
+:1054D0002DE080B553494A6813680120187201F025
+:1054E0008DF9002002BD38B5514C504D07E069469A
+:1054F00005F1100001F0F4F900982168884705F1E2
+:10550000100001F0C4F90028F1D031BD48484168CD
+:10551000084738B50446474D284601F0B5F94148DB
+:10552000C068A1680160456001F06DF942482168DA
+:10553000016061684160002032BD80B53949CA68A8
+:1055400013681020187201F064F9002002BD35497B
+:10555000CA68394910680B68184738B5364C354D5C
+:1055600006E06946284601F0BBF900986168884763
+:10557000284601F08CF90028F3D031BD38B5044637
+:105580002E4D284601F080F92D4801F07DF925487F
+:105590000069A1688160E168C160056121680160FE
+:1055A00061684160216941616169816131BD80B596
+:1055B0000146234801F07EF9BDE802400FF20500E4
+:1055C00001F037B938B5174C1D4D08E0694628463B
+:1055D00001F086F900992069006901F06BF928460D
+:1055E00001F055F90028F1D031BD10B5154C204619
+:1055F00001F04AF90B4841690C60BDE8104001F028
+:105600002CB91CB50F4C06E06946204601F068F93C
+:10561000009800F019F8204601F039F90028F3D07D
+:1056200013BD000000000320B009032084080320FC
+:10563000781700209C08032080170020340A0320DC
+:10564000701700203C0A0320704700007FB50C460D
+:105650004D4D61684D4EE8612962284601F052F9CE
+:105660002468746006F1080001F00EF9012000F0D2
+:1056700068F801203070296841B10FF2E9000FF29B
+:10568000ED02009001920294684688477FBD1FB5E5
+:105690003E4C04F1080001F0FAF800BB2178F1B1AA
+:1056A000694604F1080001F01BF93748C16949B1A6
+:1056B0000098029001228DF8042001A888479DF8E7
+:1056C000040000E001202070207818B10098FFF756
+:1056D0006EFF04E0009904F1080001F0E1F804F124
+:1056E000080001F0D4F828B9207818B104F10800B6
+:1056F000FFF766F81FBD2DE9F04105460E469046BE
+:105700001C46002000F01DF8204F7868A0F80950D2
+:10571000C672324641460C30FBF7DEFD1A4A136969
+:1057200000210020984748F2E800FFF750F8796818
+:105730008A78D21C04F10800FBF7CEFDBDE8F041E9
+:1057400001201CB51049124C096A20B901B18847E3
+:105750000020207013BD0120207011B1BDE81C4055
+:10576000084713BD0020FFF72FB8000010B5014611
+:10577000064C04F1080001F09DF804F10800BDE8B2
+:105780001040FFF71DB80000041700203817002054
+:105790005D17002038B58EB002A80FF65C31DFF837
+:1057A0003C453022FBF7A8FD0FF291500190009488
+:1057B00069460FF27150DFF8284501F0ADF801217C
+:1057C0000220FFF792FADFF81C2500210420FFF7E2
+:1057D0007AF802A801F08AF900F052F901F08EF986
+:1057E000002084F8900004F126054FF6FF70288011
+:1057F00000210FF2AD420120FFF765F8062001F00D
+:105800000FFADFF8E404002101700121417001F07A
+:105810009CFA0FF2ED43002204F191010020FFF702
+:105820006DFC0FF2E543002204F192010020FFF726
+:1058300065FC002068808021DFF8B0040180A02191
+:105840004180012000F0C3F90FB030BDF8B5074624
+:10585000DFF88C447878DFF89054052804F190063E
+:1058600004D03E2812D0FF285FD0CDE0B888E18C6C
+:10587000884206D10020E08430700FF2D44001F05D
+:105880006FFB012000F0A3F9012047E0F878012820
+:105890002BD0032802D00C2803D0B5E00FF2D8405B
+:1058A000A8E00FF2005001F05BFB387900280CBF34
+:1058B0000FF20C500FF2305001F052FBE08C6A46B0
+:1058C0000DF1010101F08AFB60B90FF2445001F0C3
+:1058D00047FB9DF800209DF801100FF2485001F0A1
+:1058E0003FFB91E00FF2585084E07078FFF72CFCFA
+:1058F000B7F805100FF2645001F032FB307804283D
+:105900000CBF0620052030700021B7F80500E084A8
+:10591000E8802971281D01F012FA00202871E08C1E
+:10592000E880281D01F00BFA6EE0B7F80300001FB5
+:1059300063D04FF47F71401A1AD0401E4BD0401EE6
+:1059400019D0401E1ED0401E1FD0401E20D0401E29
+:1059500028D0401E4CD0401E24D0401E28D0401ECF
+:1059600023D040F2F631401A04BF012068704BE0AA
+:105970000FF21C503EE00FF2445001F0F1FA0FF22A
+:10598000645037E00FF27C5034E00FF2A45031E065
+:105990000FF2CC5001F0E4FAE08C01F09CFC0FF225
+:1059A000E05027E00FF2F45024E00FF2146021E001
+:1059B000D7F807100FF2346001F0D2FAD7F80710C9
+:1059C0000FF2406001F0CCFAE08C012101F0D1FC33
+:1059D0000FF244600EE0F9790FF27C6001F0C0FA3A
+:1059E000F879002814BF0FF2DC600FF2C46001E008
+:1059F0000FF2E46001F0B4FA06E00120FFF7CDFCFD
+:105A0000B0780A21FFF7EFFB0120F2BD01F0B7B932
+:105A10001CB5B34C94F89000012818BF00282DD075
+:105A2000B1484178012929D1002201784270491CEE
+:105A300001EBD1725210A1EB42010170F7EE040AA2
+:105A4000017800EB81004FF4FA7190ED020AE08CCE
+:105A50000091C0EE200AFDEEE00A10EE902A92B20C
+:105A60000023114601F09FFCBDE8164000280CBF42
+:105A70000FF2FC700FF6280001F072BA13BD7047E8
+:105A800078B589B00020ADF81A0001F07DFA984D84
+:105A9000984E286810F1010F0ED069683074090A19
+:105AA000020A000CB074727406F110046868317553
+:105AB000F074090A717506E00020FEF759FD040034
+:105AC00008BF0FF6040422460621002001F073F8F7
+:105AD0006079307207AA207970720621E078B0727E
+:105AE000A078F0726078307320787D4C70734EF639
+:105AF0006E500890286807902E2001F05CF80FF295
+:105B0000D0721021182001F056F80FF2D472102133
+:105B1000082001F050F81821012001F073F801F07D
+:105B200075FC0DF1160006A90190009105AB072246
+:105B30000021012001F05CFB0FF2C450BDF81810E9
+:105B400000900723BDF81400002201F01FFD0DF1A5
+:105B50001A0000900223BDF81610BDF814000022B0
+:105B600001F014FD02220221002001F06AFA032054
+:105B7000207001F0F1FA012060700020E070082030
+:105B800060751020A075012020755B48A061012080
+:105B9000A0700020C1B221440871401CC1B210297C
+:105BA000F8DB002004900023A069617803900122B3
+:105BB000207D0290A07D0190607D0090A07801F092
+:105BC000E4FAA07808B101F06BFB0AB070BD2DE9D2
+:105BD000F8410446012C87B003D144480588478822
+:105BE00003E04FF4C8654FF47A67DFF8F48008F1FA
+:105BF00090067078FFF7A8FA31780FF20C5001F098
+:105C0000AFF9022C11D13078012818BF02280CD12D
+:105C100001F047FA010004D10FF2085001F0A0F999
+:105C200003E00FF2245001F09BF93470002006903D
+:105C3000059008F129010491082298F828000FF234
+:105C4000B061039002910192002300933A462946E5
+:105C5000002001F038FA27490E2001F0F9FA01007E
+:105C600013D1012C0AD10FF2085001F079F97078A4
+:105C7000224908B0BDE8F041FFF7B5BA08B0BDE869
+:105C8000F0410FF2145001F06BB908B0012CBDE8DF
+:105C9000F0410CBF0FF22C500FF2585001F060B9D8
+:105CA00010B50120FFF783FB0D4C94F890000528F8
+:105CB00012D001F0F6F9002184F8901030B90FF2FB
+:105CC000685001F04DF90FF2685001E00FF27C507E
+:105CD000BDE8104001F044B910BD0000A408032045
+:105CE00018120020576900081C000020B41700207B
+:105CF0008075FF1F0400002007B2010046E001008C
+:105D000000210120FEF7ECBD0120FFF750BB002170
+:105D10000420FEF7E5BD0120FEF704BE0120FEF7DA
+:105D200009BE000010B50446616801F1080000F0EA
+:105D3000F3FE00B10120207010BD000010B1012859
+:105D400003D070470720FEF7DBBD0720FEF7E0BD5C
+:105D50000D0A0D2A2A20444953434F4E4E454354C1
+:105D6000494F4E204556454E5420574954482043EC
+:105D70004C49454E54200A000D0A0D2A2A20434F53
+:105D80004E4E454354494F4E2055504441544520B2
+:105D90004556454E54205749544820434C49454E9A
+:105DA00054200A004556545F5550444154455F50B5
+:105DB00048595F434F4D504C455445200A00000060
+:105DC0004556545F5550444154455F5048595F43D0
+:105DD0004F4D504C4554452C20737461747573209D
+:105DE0006F6B200A000000004556545F5550444137
+:105DF00054455F5048595F434F4D504C4554452CD6
+:105E000020737461747573206E6F6B200A0000003C
+:105E1000526561645F50485920737563636573739D
+:105E2000200A000050485920506172616D202054B2
+:105E3000583D2025642C2052583D202564200A001E
+:105E40005265616420636F6E66206E6F7420737597
+:105E5000636365657373200A000000004556545F54
+:105E60004C455F434F4E4E5F434F4D504C4554455C
+:105E700020666F7220636F6E6E656374696F6E204B
+:105E800068616E646C6520307825780A0000000037
+:105E90000D0A0D2A2A204556545F424C55455F474E
+:105EA00041505F4C494D495445445F444953434F29
+:105EB00056455241424C45200A0000000D0A0D2A69
+:105EC0002A204556545F424C55455F4741505F502C
+:105ED0004153535F4B45595F5245515545535420EB
+:105EE0000A0000000D0A0D2A2A206163695F6761BC
+:105EF000705F706173735F6B65795F72657370203B
+:105F00000A0000000D0A0D2A2A204556545F424C13
+:105F100055455F4741505F415554484F52495A419A
+:105F200054494F4E5F52455155455354200A000085
+:105F30000D0A0D2A2A204556545F424C55455F47AD
+:105F400041505F534C4156455F5345435552495468
+:105F5000595F494E49544941544544200A000000C4
+:105F60000D0A0D2A2A204556545F424C55455F477D
+:105F700041505F424F4E445F4C4F5354200A000043
+:105F80000D0A0D2A2A2053656E6420616C6C6F77B0
+:105F9000207265626F6E64200A0000000D0A0D2AEF
+:105FA0002A204556545F424C55455F4741505F4457
+:105FB00045564943455F464F554E44200A00000070
+:105FC0000D0A0D2A2A204556545F424C55455F471D
+:105FD00041505F4B455950524553535F4E4F5449C2
+:105FE0004649434154494F4E200A00006E756D6585
+:105FF0007269635F76616C7565203D20256C640A6B
+:10600000000000004865785F76616C7565203D2072
+:10601000256C780A000000000D0A0D2A2A20616311
+:10602000695F6761705F6E756D657269635F636FED
+:106030006D70617269736F6E5F76616C75655F63B9
+:106040006F6E6669726D5F7965736E6F2D2D3E5947
+:106050004553200A00000000424C455F4354524C17
+:106060005F4170705F4E6F74696669636174696FD8
+:106070006E3A204556545F424C55455F4741505F4C
+:1060800050414952494E475F434D504C542C20706B
+:10609000616972696E675F636F6D706C6574652DA1
+:1060A0003E537461747573203D2025640A0000001E
+:1060B0000D0A0D2A2A2050616972696E67204F4BC4
+:1060C000200A00000D0A0D2A2A2050616972696EAB
+:1060D00067204B4F200A00000D0A0D2A2A20455642
+:1060E000545F424C55455F4741505F50524F4345C6
+:1060F000445552455F434F4D504C455445200A008E
+:106100005032505352563100466972737420696E92
+:1061100064657820696E202564207374617465203D
+:106120000A0000005375636365737366756C6C7960
+:106130002053746F70706564204164766572746971
+:1061400073696E67200A000053746F702041647693
+:106150006572746973696E67204661696C65642055
+:106160002C20726573756C743A202564200A000037
+:106170005375636365737366756C6C7920537461D2
+:106180007274204661737420416476657274697319
+:10619000696E67200A000000537563636573736658
+:1061A000756C6C79205374617274204C6F77205039
+:1061B0006F776572204164766572746973696E6782
+:1061C000200A000053746172742046617374204188
+:1061D00064766572746973696E67204661696C657F
+:1061E00064202C20726573756C743A202564200A33
+:1061F000000000005374617274204C6F7720506F60
+:10620000776572204164766572746973696E672080
+:106210004661696C6564202C20726573756C743AF4
+:10622000202564200A00000020200D0A0D00000037
+:106230002A2A2053544F5020414456455254495322
+:10624000494E47202A2A20200D0A0D002A2A2053D1
+:10625000544F50204144564552544953494E4720CB
+:106260002A2A20204661696C6564200D0A0D000011
+:10627000424C455F5356435F4C324341505F436F3E
+:106280006E6E5F55706461746528292C20537563A8
+:106290006365737366756C6C79200D0A0D000000E0
+:1062A000424C455F5356435F4C324341505F436F0E
+:1062B0006E6E5F55706461746528292C2046616993
+:1062C0006C6564200D0A0D006C7AD8AC5772000022
+:1062D000123456789ABCDEF0123456789ABCDEF04E
+:1062E000FEDCBA0987654321FEDCBA0987654321D4
+:1062F0000950325053525631000000000000000097
+:106300000000000000000000000000004400080041
+:10631000400508013A799C00F4010000FFFFFFFFEF
+:1063200048010100000000007047704710B5029C52
+:10633000016042600021C1600161416181610381AE
+:10634000A107047704D5008910B14FF0FF3010BDCC
+:10635000002010BD2DE9F04F064685B030890C466F
+:106360000027BB4600287169DC460CBF4FF00208CD
+:10637000D84681B168B930697768451CBD4228BFED
+:10638000ED1B3768385C7D5D00EB0527BF1CBFB295
+:1063900003E0074600E000B102463069F568A84214
+:1063A00023BF7568281AC01B0020154608EB050995
+:1063B00003FB09FE864532BF0020B0FBF9FA09FB5A
+:1063C0001A00C0B2804509DA96F81C905FEAC97AD3
+:1063D00048BF84465FEA897048BFC446100000F099
+:1063E000B4807068714461448842C0F0AE8008EBAC
+:1063F000020080B20390D946100AADF80200029460
+:10640000ADF80020049359E0800740D5308900287A
+:1064100040F09B803268D018A34600F8024C200A56
+:1064200032681A4402F8010C224630681844FAF720
+:1064300053FF706920187061B069019C401CB06105
+:10644000200A31680C70316848701CE08CB3307FD2
+:10645000C207D9D5308940B931681944FF2001F805
+:10646000020C3168194401F8010C4FF0000B7069FF
+:10647000241874612C463089002340B931680C70AF
+:10648000210A3068417002237069801C706108EB3A
+:1064900004070021BFB231615CB1DA44029800EB1D
+:1064A0000A01306822461844FAF716FF706924186A
+:1064B000746109F10109B069401CB061049A706807
+:1064C0003169914545D2791881422CBF081A084696
+:1064D000306103463089A0B93068BDF80010C1545E
+:1064E0005B1C70683168834228BF1B1ABDF802002C
+:1064F000C8545B1C7068834228BF1B1A7069801CDB
+:10650000706105FB09FA7468BDF80000E41A844262
+:1065100088BF0446029800EB0A01281BAC42019098
+:1065200003D093D2307F002890D137682246F818E4
+:10653000FAF7D2FE706920187061A346019C039F90
+:106540000023A9E73068404400E0002005B0BDE822
+:10655000F08F88448045F5D3A8EB0008F2E778B5C2
+:10656000028900230B80002A44690CBF0225002504
+:10657000002C4FD0028952B9C2684668531CB342FE
+:1065800028BF9B1B0668B25CF35C02EB03220A8007
+:10659000027F02F00302012A25D10B884FF6FF7219
+:1065A000934204BF0289002A09D0C36802699A4253
+:1065B00019D20289BAB14668F31A934213D24368DA
+:1065C000C268E41A14190022C260446102894AB9FF
+:1065D00002681478012B94BFC3F101030123D25C3C
+:1065E00004EB02220A80C468426806682B199342B1
+:1065F00028BF9B1A33440E884169891B491B41619E
+:1066000005D034192D19954228BFAD1AC56081698E
+:10661000491E8161184672BDF8B5028900230B80BE
+:10662000002A42690CBF02240024002A3BD0C5681E
+:1066300002892B464AB946686A1CB24228BF921B9F
+:106640000668775DB25C07EB02220A80067F06F0DF
+:106650000306012E20D10F884FF6FF72974204BF28
+:106660000289002A07D142680023012A94BFC2F19F
+:10667000010201220AE00269AA420DD202895AB13E
+:106680004668751B954207D2002304E005682E7802
+:10669000AA5C06EB02220A8041680068E4188C427A
+:1066A00028BF641A03191846F2BD0000C0680840EC
+:1066B000884201D10120704700207047C06908401E
+:1066C000884201D1012070470020704710B5664C08
+:1066D00002212046FFF7F2FF38B16068C04381070E
+:1066E00003D5FEF73AFF022018E001212046FFF70C
+:1066F000E5FF38B16068C043C10703D5FEF7F3FE7C
+:1067000001200BE008212046FFF7D8FF38B1606870
+:10671000C043010703D5FEF774FF0820A06010BD39
+:1067200010B5514C00F033F818B96068C0438103CC
+:1067300006D400F02CF830B96068C043810302D55C
+:10674000BDE810406EE0082100F022F870B96068E2
+:10675000C04301030AD56068444940F400206060EA
+:10676000086880474FF40020A06010BD202100F091
+:106770000FF858B96068C043810207D5606840F4DB
+:1067800000106060BDE81040FEF7C0BE10BD0221E1
+:1067900020468BE73648016841F4007101603548B6
+:1067A000026842F40072026040BF20BF32480168B4
+:1067B00041F400410160704780B53048016841F400
+:1067C00080110160006800F4801000900098264855
+:1067D000016841F001010160026842F48032026008
+:1067E0002C20FDF73CFCBDE802402D20FDF737BC16
+:1067F00023480168490849000160704721494FF466
+:106800008030086070471E48016821F00201016075
+:1068100070471B484FF400314160016821F400319A
+:10682000016070471648016841F400310160FEF7CD
+:106830008EBE38B504460C4D08212846FFF736FFBA
+:1068400030B10A480460686820F40020686031BDF7
+:10685000A0474FF40021A96031BD0948016821F02B
+:106860000801016070470000000C0058A8170020C4
+:10687000D4080058200800580C0400585000005854
+:10688000040C0058080C0058006040607047EFF39B
+:10689000108172B6026882420CBF012000201CE009
+:1068A000EFF3108272B603680B60486001600868FD
+:1068B000416023E0EFF3108272B6086043684B60DA
+:1068C00041604868016019E0EFF3108172B64368D7
+:1068D00002681A6042680068426081F3108870475D
+:1068E00010B5EFF3108472B602680A600068FFE723
+:1068F000FFF7EAFF84F3108810BD086082F3108868
+:10690000704700000249016002490161704700BF01
+:10691000135500083B5500087FB50C466D4D616866
+:106920006D4EE8612962284600F074FE246805F186
+:106930002400FFF7A9FF746006F10800FFF7A4FF29
+:1069400001203070296829B10FF25510009002948F
+:10695000684688477FBD1FB55F4C04F10800FFF70C
+:1069600096FF00BB2178F1B1694604F10800FFF7FA
+:10697000B7FF5848C16949B10098029001228DF8CB
+:10698000042001A888479DF8040000E00120207041
+:10699000207818B10098FEF70AFE04E0009904F18F
+:1069A0000800FFF77DFF04F10800FFF770FF28B92A
+:1069B000207818B104F10800FFF7A9F91FBD2DE9EF
+:1069C000F8430646002000F05FF874883088B2680B
+:1069D000DFF80081C4F3090444EA8024F068A4B21B
+:1069E000C1B2204600F03CF8002748F2E8094846CA
+:1069F000FFF794F908E06888A04202D1316928784D
+:106A00000870687800B1012708F12400FFF73FFF04
+:106A1000F0B9694608F12400FFF762FF009800F121
+:106A20000B05407A0F28E6D0B5F80110A1420DD130
+:106A30000098817AC81E7169C0B28842C8BF0846F2
+:106A4000706102463069E91CFAF746FC2878D9E7FC
+:106A50003800CCD0012000F017F80020BDE8F28308
+:106A600010B513461C4A5468A4F80900E1720A469E
+:106A7000194604F10C00FAF72FFC164A1369BDE819
+:106A800010400021002018471249096A82B008B955
+:106A900021B101E011B1012002B0084702B07047F6
+:106AA00010B50146487A0F2818BF0E2807D10B48A9
+:106AB000FFF700FFBDE810400020FFF72CB9064C9F
+:106AC00004F10800FFF7F6FE04F10800BDE81040ED
+:106AD000FFF71DB9B416002028170020D816002093
+:106AE000FEF709FE9DF80E0005B000BDF8B500F1F7
+:106AF0000C026B4621214FF66640F1E71B4800214E
+:106B00000171017200F034B818490A7941F8220085
+:106B10000879401C0871704770B504466078FF28FA
+:106B200002BFB4F8031001F47F41B1F5406F12D1F8
+:106B300000260E4D00E0761C2979F0B288420AD278
+:106B4000F1B255F82110204688470100F3D002D059
+:106B5000022805D006E02046BDE87040FEF776BE6C
+:106B6000002070BD012070BD0000000054170020FF
+:106B700080B500F059FD00F058FD00F057FD00F021
+:106B800056FD00F055FD00F054FD00F053FD00F0FF
+:106B900052FD00F051FD00F050FD00F04FFD00F0FF
+:106BA00085FD00F03DFE00F03CFE00F03BFEBDE840
+:106BB000014000F038BE18B50C46C7B0114600229F
+:106BC0008DF800208DF81C008DF81D4022460DF137
+:106BD0001E0000F029FE00F03BF83F200C21ADF82C
+:106BE0000400ADF8061007A8012103900691A41C2B
+:106BF000049400F043F800284CBFFF209DF80000EB
+:106C000048B010BD00B5C7B000F01BF80F2000F071
+:106C10002AF800284CBFFF209DF8000047B000BDB7
+:106C200000B5C7B00021ADF81C0000F016F8182020
+:106C300000F019F800284CBFFF209DF8000047B075
+:106C400000BD00228DF800208DF81C008DF81D106D
+:106C50001822002101A800F0EDBD8DF800101822C7
+:106C600001A800F0E7BDADF8060007A902200490D6
+:106C70003F22012003910690ADF80420CDF814D0F6
+:106C8000002101A8FFF79BBE70B506464E4C307838
+:106C90004CA520B1012807D0032810D070BD0120D9
+:106CA00020700FF2281003E0002121700FF2501025
+:106CB00000F056F92846BDE8704000F051B97168FF
+:106CC0000878C8B94978012909D1FEF766FB0FF2A7
+:106CD000641000F045F900F02FF80120A0707168F1
+:106CE000487848B9FEF763FB0FF2701000F038F9EE
+:106CF00000F022F80020A0707068017801291AD1F4
+:106D0000407801280AD10020FEF747FB0FF27410EB
+:106D100000F026F900F010F80120A07071684878A2
+:106D200048B9FEF744FB0FF2841000F019F900F0A7
+:106D300003F80020A07070BD284600F011B900785B
+:106D4000012808BF00F00DB8704780B50FF2390276
+:106D500000210220FDF7B7FD1B4900220A70BDE8A3
+:106D6000014080B50020FEF722FB17480121417049
+:106D7000002181700121C1700021017101BD00213C
+:106D80000220FDF7ADBD000010B50F4C2079401E6C
+:106D90008041C00F2071207868B10FF2381000F0E8
+:106DA000DFF808A000F0DCF8E11CBDE810404FF669
+:106DB000426000F00BBDBDE810400FF2581000F02B
+:106DC000CFB80000200A0D00901700202D2D205074
+:106DD0003250204150504C49434154494F4E20536A
+:106DE0004552564552203A204E4F54494649434158
+:106DF00054494F4E20454E41424C45440A00000044
+:106E00002D2D20503250204150504C49434154497F
+:106E10004F4E20534552564552203A204E4F54492A
+:106E20004649434154494F4E2044495341424C4501
+:106E3000440A00002D2D20503250204150504C4922
+:106E4000434154494F4E2053455256455220203A13
+:106E5000204C454431204F4E0A0000002D2D20507B
+:106E60003250204150504C49434154494F4E2053D9
+:106E7000455256455220203A204C454431204F4639
+:106E8000460A00002D2D20503250204150504C49D0
+:106E9000434154494F4E20534552564552203120CC
+:106EA0003A204C454431204F4E0A00002D2D2050F1
+:106EB0003250204150504C49434154494F4E205389
+:106EC00045525645522031203A204C454431204FFE
+:106ED00046460A002D2D20503250204150504C493A
+:106EE000434154494F4E2053455256455220203A73
+:106EF00020494E464F524D20434C49454E54204266
+:106F00005554544F4E203120505553484544200A83
+:106F1000200000002D2D20503250204150504C496F
+:106F2000434154494F4E20534552564552203A2032
+:106F300043414E275420494E464F524D20434C4921
+:106F4000454E54202D20204E4F544946494341542C
+:106F5000494F4E2044495341424C45440A200000C9
+:106F60000EB4C0B5024603A800210190009101AB08
+:106F70000121044878440C30F9F7E0F806BC5DF8CC
+:106F800010FB00BF4311000000B587B000F010F8FF
+:106F9000012003220690ADF80420ADF8062000F091
+:106FA0007AF800284CBFFF209DF8000007B000BD14
+:106FB00000208DF800001822002101A800F03ABC42
+:106FC00009220021684600F035BC1822002102A8E1
+:106FD00000F030BC182201A800F02CBC70B5C8B07D
+:106FE00006460C4615460522FFF7EBFFADF820607C
+:106FF000FFF7EBFF302100F014F80521049000F0BA
+:1070000019F8002848BFFF2009D49DF8000030B9C6
+:107010009DF8030020709DF804002870002048B0FF
+:1070200070BDADF80A1008200221ADF808000591E6
+:1070300008A870470791CDF818D0002102A8FFF7E3
+:10704000BEBC00B5C7B000F00EF8FFF7C3FF31209B
+:1070500000F013F800F01FF800284CBFFF209DF847
+:10706000000047B000BD00238DF81C008DF80030F3
+:1070700007A84170827000217047ADF8060007A98B
+:10708000032004900822012003910690ADF804200B
+:10709000704703900691CDF814D0002101A8FFF7A6
+:1070A0008EBC00B587B000F012F900F02EF98120F7
+:1070B00000F008F900F036F900284CBFFF209DF8D9
+:1070C000000007B000BD2DE9F84DC7B09446DDF8CB
+:1070D00040E1519A559D569EDDF84CA1ADF81D102A
+:1070E0008DF81C004FF0000BADF81FC08DF821305B
+:1070F0008DF822E000F024F800F017F824F8095F7A
+:10710000668000F002F93F20832100F026F9574401
+:1071100006910D37049700F008F900284CBFFF20B6
+:107120009DF8000048B0BDE8F08D88F800A007ACDD
+:107130005499E419524608F10100544400F074BB1C
+:107140008DF82320174652998DF800B00DF12408D0
+:1071500009A8B84400F068BB00B5C7B000F00CF84F
+:10716000852000F090F800F0DDF800284CBFFF20EB
+:107170009DF8000047B000BD00218DF81C008DF87F
+:107180000010182201A800F055BB2DE9F841C7B046
+:107190004FF0000800F026F80DF12300DDF844E17F
+:1071A0004E9F4F9E509D529C8DF81F30C0F800E0BE
+:1071B0008DF800808DF820708DF821608DF82250B8
+:1071C0008DF8274000F0A1F88620ADF8060007A949
+:1071D0000C2000F0A3F800284CBFFF209DF8000011
+:1071E00000F0D5B88DF81C0007A841708270704778
+:1071F000F8B5C8B005460E4617461C4600F023F801
+:1072000008A8467087708DF8205000F0A1F88A21F8
+:10721000ADF80A103F20032100F08DF8002848BF88
+:10722000FF200ED49DF8000058B94F994E98BDF834
+:1072300001202280BDF803200280BDF805000880EF
+:10724000002049B0F0BD07220021684600F0F2BAE4
+:1072500018B5C7B0044600F03AF88DF81C40224635
+:1072600000F083F800F051F83F208E2100F092F8F2
+:10727000641C049400F059F800284CBFFF209DF8CE
+:10728000000048B010BDADF8060007A901203F225C
+:10729000039104907047ADF8060007A902207047DB
+:1072A00000B587B000F013F800F02FF8922000F03E
+:1072B00009F800F037F800284CBFFF209DF80000C7
+:1072C00007B000BDADF806003F2201207047002046
+:1072D0008DF80000704700B5C7B00021ADF81C0064
+:1072E000FFF74DFF9520FFF7D6FF00F017F80028B5
+:1072F0004CBFFF209DF8000047B000BD00228DF874
+:107300000020ADF81C008DF81E101822002101A8E5
+:1073100000F090BAADF8060007A9032004903F22C0
+:10732000012003910690ADF80420CDF814D000217F
+:1073300001A8FFF744BBADF80800059108A8072194
+:1073400004900791CDF818D0002102A8FFF737BBB1
+:107350001822002102A800F06DBAADF80400ADF8C3
+:10736000061007A80121039070470DF11D0000F0E1
+:107370005BBA00B5C7B0FFF7C1FFA520FFF7CAFF92
+:1073800000284CBFFF209DF8000047B000BD48B06A
+:10739000BDE8F081ADF80400ADF8061007A80121A2
+:1073A00003900691704730B5C7B00025ADF81C00BA
+:1073B00007A84A9C41808280ADF8223004818DF874
+:1073C000005000F016F80F21029140F281100A21BE
+:1073D000ADF80600049107A801213F220390069111
+:1073E00000F00CF800284CBFFF209DF8000047B0CB
+:1073F00030BD1822002101A800F01CBAADF804200D
+:10740000CDF814D0002101A8FFF7D9BA00B587B094
+:1074100000208DF8000000F0E0F840F20110ADF817
+:1074200006003F220120069000F0ECF800284CBF37
+:10743000FF209DF8000007B000BD2DE9F841074688
+:107440000128C7B0884615461E4608BF022003D053
+:1074500002280CBF102000200DF11D010C1800F0B7
+:1074600036F8012F8DF81C7002D0022F18D019E0C9
+:1074700002273A4641460DF11D0000F0D5F925706E
+:10748000667000F0AAF83F204FF4817100F016F802
+:10749000FF1C049700F0B8F8002805D5FF2009E08C
+:1074A0001027E6E7472005E09DF8000010B94E9848
+:1074B00000F067F8FFE748B0BDE8F081ADF80400E0
+:1074C000ADF8061007A80321039006917047032228
+:1074D0000021684600F0AEB92DE9F64F0C4605468E
+:1074E000012CC7B09B4608BF022003D0022C0CBF62
+:1074F000102000200DF11F010E18FFF7E8FF012CEE
+:10750000ADF81C508DF81E4002D0022C2CD02DE07E
+:107510000227569C559DDDF85091DDF84CA1DDF811
+:10752000488148993A4600F054F8A6F800B086F829
+:10753000028086F803A086F804907571B47100F09B
+:107540004CF83F20ADF804004FF4827107A8ADF865
+:107550000610039003210A370497069100F054F8AF
+:10756000002805D5FF2009E01027D2E7472005E0D5
+:107570009DF8000010B9579800F003F849B0BDE835
+:10758000F08FBDF8011001800020704730B5C7B002
+:107590001C464A9B00F026F800258DF800508DF817
+:1075A0002140224619460DF1220000F03DF900F07D
+:1075B00014F83F204FF4837100F01BF8A41D0494CD
+:1075C00000F022F800284CBFFF209DF8000047B0D3
+:1075D00030BD0DF11F0000F027B91822002101A8CD
+:1075E00000F028B9ADF81C00ADF81E108DF8202071
+:1075F0007047ADF80400ADF8061007A8012103900C
+:1076000006917047ADF80420CDF814D0002101A8F0
+:10761000FFF7D5B90249016002490161704700BF17
+:10762000A9540008D354000870477047704770474A
+:107630007047704770477047704770477047000049
+:1076400038B5054684B068780024FF2802BFB5F835
+:10765000031040F60140814225D165498A88B5F87A
+:107660000700921C904209D1687B0124C10752BFD8
+:107670008DF8004000218DF8001011E04988491C68
+:10768000884210D10FF27010FFF76AFC03208DF8CA
+:10769000000005F10D00B5F80B108DF808100190F1
+:1076A0006846FFF7F1FA204605B030BD10B58AB044
+:1076B00050484F4CFFF728FA8F218DF81810E5201D
+:1076C000B3218DF819008DF81A10D5202E218DF8D0
+:1076D0001B008DF81C107F204A218DF81D008DF8AD
+:1076E0001E1098202A218DF81F008DF820104820A8
+:1076F0007A218DF821008DF82210CC2040218DF8C0
+:1077000023008DF82410FE2000218DF82500ADF80F
+:10771000261000940823012206A90220FFF78DFEFF
+:1077200000F032F8412000F023F8A01C00F010F81F
+:10773000062100F015F800F027F8422000F018F8B4
+:10774000201D00F005F8102100F00AF80AB010BD65
+:10775000059001210491029100200A2201907047B6
+:10776000039200910223208806AA0221FFF7B4BEEB
+:107770008E218DF824008DF823100020FE21ADF815
+:1077800026008DF82510704719208DF81800ED217E
+:1077900082208DF81A008DF81910ED20AE218DF899
+:1077A0001C008DF81B104C2021218DF81E008DF837
+:1077B0001D1041209D218DF820008DF81F102220E2
+:1077C00045218DF822008DF82110704780B54222A6
+:1077D0004FF64263984208D1054800910223818800
+:1077E00000880022FFF7D2FE0246104602BD0000CC
+:1077F00098170020417600082D2D20474154542031
+:107800003A204C454420434F4E4649475552415437
+:10781000494F4E2052454345495645440A00000011
+:10782000704770477047704710B50446F9F754FD2C
+:10783000204610BD10B5044610460A4601462046B3
+:1078400000F002F8204610BD62F30F2262F31F42DF
+:10785000401810F0030308D0C91A1FD3DB0748BF34
+:1078600000F8012D28BF20F8022D130030B4144673
+:107870001546103928BF20E93C00FAD8490728BF2F
+:1078800020E90C0048BF40F8042D890028BF20F8EB
+:10789000022D48BF00F8012D30BC7047C91818BF31
+:1078A00000F8012DCB0728BF00F8012D704700001C
+:1078B00010B50446AFF30080204600F005F80446FA
+:1078C000AFF30080204610BD7CB500F10F06F6082E
+:1078D000F600B04240D2082E04D2082602E008305A
+:1078E00000F047F8DFF804512C68210005D1002092
+:1078F00007E00268B24221D2011D08680028F8D1D1
+:107900002068291D0A68824222D01368B34238BF1A
+:10791000111DF7D312E093190B60801B54685C6053
+:107920000B6818601660096800291DBF48680028A8
+:10793000081D0020286002F1080076BD61B10A68C8
+:107940001068A0F10803B342E5D250680860EAE786
+:1079500000F04EF80028C2D1002076BD10B504001A
+:1079600006D0AFF30080204600F003F8AFF30080AC
+:1079700010BD002800D1704750B4A0F10802136870
+:10798000072B2BD913F0070F28D1184C616809B1C8
+:107990008A4202D25160626013E0486800B39042AC
+:1079A00038BF0146F9D31BE0964203D11B180B6088
+:1079B0000A4606E0486810B1134498420ED350605E
+:1079C0004A60506850B11368D118814206D1002135
+:1079D00021600168CB1813604068506050BC70474C
+:1079E00008680E18B242DFD250BC704788170020DA
+:1079F0000749086808B1002070470648C008C00061
+:107A000008600549C908C900091A0160704700BF2C
+:107A1000B0170020BF270020B82B00202DE9F0412F
+:107A200007468846387810F0030F16461D4633D0B7
+:107A3000384600F099F878BBB8F1000F1CBFD8E9C0
+:107A400000018619012D2ED13888C10415D5396A57
+:107A500007F14402384600F0A3F83A6B044602B935
+:107A60003A69F968384600F09BF8361B341A7A698F
+:107A7000F968384600F094F8261A1EB94DB916F187
+:107A8000010F09D097F903002A46314600F08EF81D
+:107A9000064616F1010F09D12320AFF300804FF005
+:107AA000FF30BDE8F081022DE8D1EBE7388810F413
+:107AB000405F0ED07868F86038617861B8617868A6
+:107AC000F86107F14400386207F130007862002065
+:107AD0003863B8F1000F05D0D8E9020107F134028C
+:107AE000C2E9000139884CF6FF600140398000206E
+:107AF000BDE8F08170B50546AFF3008028888104A9
+:107B000015D56E680024EA6895F903003146914264
+:107B100012D2521AFDF7DEFB10F1010F1CBF002834
+:107B20003618F0D10FE04DF6FF700140298028464D
+:107B3000AFF30080002070BD00220021FDF7CAFBDA
+:107B400010F1010F00D101246868E860A861E861C4
+:107B5000002C2988E7D041F4007129802846AFF332
+:107B600000804FF0FF3070BDF8B5A0B9AFF30080D2
+:107B700000250A4E08244FF0FF37306820B1FFF788
+:107B8000B9FF002848BF3D46361D641EF5D1AFF34E
+:107B900000802846F2BDBDE8F240ABE7F8110020B6
+:107BA000914234BF511A0021084670473EB5040087
+:107BB0000D00012A02D100F063F807E0022A07D184
+:107BC00000940020019069460C20ABBE2D1801E006
+:107BD000002A0CD10094019569460A20ABBE00280A
+:107BE00005D100222100280000F027F801E0002044
+:107BF000C04303B030BD000010B4314A0021134629
+:107C00001C6884421EBF491C9C6884421EBF491CDC
+:107C10001C69844209D09C69491C844205D0491CD6
+:107C200020331029ECD310BC7047002342F83130C8
+:107C300002EBC1014B6010BC704778B4204C0023AC
+:107C400025462E688E421EBF5B1CAE688E421EBF4C
+:107C50005B1C2E698E4209D0AE695B1C8E4205D03A
+:107C60005B1C2035102BECD372BC7047054604EB2F
+:107C7000C303012A04BF59684D195D6072BC704787
+:107C800010B40F4A002113461C6884421EBF491CD1
+:107C90009C6884421EBF491C1C6984420AD09C69AE
+:107CA000491C844206D0491C20331029ECD310BC57
+:107CB0000020704702EBC100406810BC7047000014
+:107CC000D414002010B50446E068A169884251D35D
+:107CD000218849F202030B40022B08D008044CBF54
+:107CE0004FF400704FF48440014321803BE001F4E5
+:107CF000C042B2F5C04F06D1A168884203D32046E6
+:107D0000FFF732FF78BB208810F4406F02BF606835
+:107D100004F14401884217D14FF40070FFF7C8FD09
+:107D2000606030B904F144006060E060401CA06015
+:107D30000AE0218841F040012180E060606100F5A7
+:107D400000726068A260E06160682061A068A06164
+:107D5000207841070AD502220021204600F00CF8C5
+:107D600010F1010F02D14FF0FF3010BD208840F418
+:107D7000C0402080002010BD70B504460D46164658
+:107D8000AFF3008033462A4600212046FFF746FE27
+:107D900005462046AFF30080284670BD38B5040084
+:107DA0000ED0207810F0030F03D094F903000028C0
+:107DB00009D5AFF30080204600F030F8AFF3008023
+:107DC0004FF0FF3032BD2046FFF7CEFE0546AFF341
+:107DD00000802078410644BF606800F05DF8002014
+:107DE000606094F90300022804D900F057F808B144
+:107DF0004FF0FF35E06B48B100F05CF808B14FF090
+:107E0000FF35E06B00F048F80020E063204600F00A
+:107E100005F8AFF30080284632BD000001780A065D
+:107E200026D51C4A13680021834203D1002342F85F
+:107E300021301BE05368012183421EBF0221936859
+:107E40008342F3D0D368032183421EBF0421136908
+:107E50008342EBD05369052183421EBF06219369FB
+:107E600083421EBF0721D3698342DFD000F014B8DC
+:107E7000002101804FF0FF31C17000F144014160E9
+:107E8000C160016141618161C161016200F1300144
+:107E900041627047F8110020FFF760BD1CB5020079
+:107EA000009269460220ABBE04001000FFF7A4FE5A
+:107EB000200016BDE0B50090F9F7C0F901906946C1
+:107EC0000E20ABBE03B000BD7047FEE7FEE7FEE745
+:107ED000FEE770477047704700F020B80548FBF791
+:107EE00015B90548FAF775B80448FAF772B80448A6
+:107EF000FBF70CB954150020C81300203C130020D8
+:107F0000B41500201020FCF7CCB90120FCF7C9B94A
+:107F1000FDF727B8FEF704BCFEF7D8BB02490A6894
+:107F2000886882180A6070477810002038B50C46BF
+:107F3000C5B22046AFF30080E068A169884204D34F
+:107F40002046FFF7BFFE00280FD4E068401CE06029
+:107F500000F8015D2088010503D440050BD50A2DEA
+:107F600009D12046FFF700FE28B12046AFF300807C
+:107F70004FF0FF3032BD2046AFF30080284632BDBF
+:107F800019E050F8042BD30744BFA9F101039A1854
+:107F9000091F0023042942F8043BF9D25FEA817CDF
+:107FA000134604D54FF0000CA2F800C09B1CC90773
+:107FB00044BF0021197050F8041B0029E1D170471B
+:107FC00038B50D4D0824286800281CBF017811F031
+:107FD000030F05D090F90310002958BFFFF7DEFE0C
+:107FE0002D1D641EEFD1BDE83840002200214FF066
+:107FF000FF30FDF76FB900BFF811002010B5074939
+:1080000079441831064C7C44163404E00A68081D93
+:10801000114488470146A142F8D110BD2C00000050
+:10802000500000004EF68851CEF20001086840F47E
+:1080300070000860BFF34F8FBFF36F8F4FF0007079
+:10804000E1EE100A7047000039FFFFFFA0050000B5
+:108050001812002080080000240003200000000007
+:108060007390FFFF80010000B201000004000020B7
+:108070000000000000000000000000000000000000
+:1080800001000000020000000300000004000000E6
+:1080900000F00DF8002801D0FFF7B0FFAFF300802B
+:1080A0000020AFF30080FBF73CFE00F002F8012057
+:1080B000704700F001B800000746FFF781FF38461F
+:1080C000F9F7EEFEFBE738B504460D46284600F00A
+:1080D00005F8A84218BF0024204632BD0149FFF729
+:1080E00025BF00BF681100200148804701480047B4
+:1080F0002D430008F9800008AFF30080FFF792FFDE
+:10810000FFF7C6FF00002E004300FFF7FEBFFFF79A
+:10811000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF793
+:10812000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF783
+:10813000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF773
+:10814000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF763
+:10815000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF753
+:10816000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF743
+:10817000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF733
+:10818000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF723
+:10819000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF713
+:1081A000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF703
+:1081B000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7F3
+:1081C000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7E3
+:1081D000FEBFFFF7FEBFFFF7FEBFFFF7FEBFFFF7D3
+:1081E000FEBF0000F0030C0DFF01830001F006FF4D
+:1081F000484200007A44010001F1FF01F1FF01F162
+:10820000FF01F1FF01F1FF01F1FF01F1FF01F1FFBA
+:1082100001F1FF01F1FF01F1FF01F1FF01F1FF01A8
+:10822000F1FF01F1350152FF01ED3F101210113D38
+:108230005410700104004804120804520C04F005A4
+:1082400007093D0004810008046158F2000614107B
+:10825000010000080C215CFC0217A0100020B710E0
+:1082600013ED117E110143DB113C210110070104C4
+:108270000000641100206504526404211BA108F36E
+:108280001150116410070204010164160020B404A7
+:108290005264043140510812AC44F2139848500221
+:1082A00008020214405214042134610812F444F20A
+:0D82B00012E048122024126804F206B02CDF
+:04000005080080F976
:00000001FF
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/app_conf.h
index 1a0ea468e..735accff8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/app_conf.h
@@ -63,7 +63,7 @@
#define CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT (0x03)
#define CFG_IO_CAPABILITY_KEYBOARD_DISPLAY (0x04)
-#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_DISPLAY_ONLY
+#define CFG_IO_CAPABILITY CFG_IO_CAPABILITY_NO_INPUT_NO_OUTPUT
/**
* Define MITM modes
@@ -105,6 +105,7 @@
/**< specific parameters */
/*****************************************************/
+
#define PUSH_BUTTON_SW1_EXTI_IRQHandler EXTI4_IRQHandler
#define PUSH_BUTTON_SW2_EXTI_IRQHandler EXTI0_IRQHandler
@@ -383,7 +384,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
@@ -488,6 +489,9 @@ typedef enum
{
CFG_TASK_ADV_CANCEL_ID,
CFG_TASK_SW1_BUTTON_PUSHED_ID,
+#if (L2CAP_REQUEST_NEW_CONN_PARAM != 0 )
+ CFG_TASK_CONN_UPDATE_REG_ID,
+#endif
CFG_TASK_HCI_ASYNCH_EVT_ID,
/* USER CODE BEGIN CFG_Task_Id_With_HCI_Cmd_t */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/stm32wbxx_hal_conf.h
index 31d63e37a..7f1537260 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Inc/stm32wbxx_hal_conf.h
@@ -276,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c
index 37c4b3b21..1ebbc4af4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/main.c
index 4741fe7f1..93e6f5cb3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/main.c
@@ -209,12 +209,15 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +358,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -404,6 +404,7 @@ static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/stm32wbxx_hal_msp.c
index 87614ca60..f22ad0f38 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/Core/Src/stm32wbxx_hal_msp.c
@@ -88,6 +88,7 @@ void HAL_MspInit(void)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
+ HAL_DMA_MuxSyncConfigTypeDef pSyncConfig;
if(huart->Instance==LPUART1)
{
/* USER CODE BEGIN LPUART1_MspInit 0 */
@@ -132,6 +133,16 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
Error_Handler();
}
+ pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT;
+ pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_NO_EVENT;
+ pSyncConfig.SyncEnable = DISABLE;
+ pSyncConfig.EventEnable = DISABLE;
+ pSyncConfig.RequestNumber = 1;
+ if (HAL_DMAEx_ConfigMuxSync(&hdma_lpuart1_tx, &pSyncConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
__HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
/* LPUART1 interrupt Init */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/App/app_ble.c
index cd27fff1b..0f111e5fb 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/App/app_ble.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/App/app_ble.c
@@ -370,6 +370,7 @@ static void Adv_Cancel_Req( void );
static void Switch_OFF_GPIO( void );
#if(L2CAP_REQUEST_NEW_CONN_PARAM != 0)
static void BLE_SVC_L2CAP_Conn_Update(uint16_t Connection_Handle);
+static void Connection_Interval_Update_Req( void );
#endif
/* USER CODE BEGIN PFP */
@@ -444,6 +445,10 @@ void APP_BLE_Init( void )
* From here, all initialization are BLE application specific
*/
UTIL_SEQ_RegTask( 1<<CFG_TASK_ADV_CANCEL_ID, UTIL_SEQ_RFU, Adv_Cancel);
+#if (L2CAP_REQUEST_NEW_CONN_PARAM != 0 )
+ UTIL_SEQ_RegTask( 1<<CFG_TASK_CONN_UPDATE_REG_ID, UTIL_SEQ_RFU, Connection_Interval_Update_Req);
+#endif
+
/**
* Initialization of ADV - Ad Manufacturer Element - Support OTA Bit Mask
*/
@@ -560,10 +565,12 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
{
APP_DBG_MSG("EVT_UPDATE_PHY_COMPLETE, status nok \n");
}
+
ret = hci_le_read_phy(BleApplicationContext.BleApplicationContext_legacy.connectionHandle,&TX_PHY,&RX_PHY);
if (ret == BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("Read_PHY success \n");
+
if ((TX_PHY == TX_2M) && (RX_PHY == RX_2M))
{
APP_DBG_MSG("PHY Param TX= %d, RX= %d \n", TX_PHY, RX_PHY);
@@ -582,30 +589,28 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE END EVT_LE_PHY_UPDATE_COMPLETE */
break;
case EVT_LE_CONN_COMPLETE:
- {
+ {
hci_le_connection_complete_event_rp0 *connection_complete_event;
/**
* The connection is done, there is no need anymore to schedule the LP ADV
*/
connection_complete_event = (hci_le_connection_complete_event_rp0 *) meta_evt->data;
-
+
HW_TS_Stop(BleApplicationContext.Advertising_mgr_timer_Id);
- APP_DBG_MSG("EVT_LE_CONN_COMPLETE for connection handle 0x%x\n",
- connection_complete_event->Connection_Handle);
- if (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_CONNECTING)
- {
- /* Connection as client */
- BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_CLIENT;
- }
- else
- {
- /* Connection as server */
- BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_SERVER;
- }
- BleApplicationContext.BleApplicationContext_legacy.connectionHandle =
- connection_complete_event->Connection_Handle;
+ APP_DBG_MSG("EVT_LE_CONN_COMPLETE for connection handle 0x%x\n", connection_complete_event->Connection_Handle);
+ if (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_CONNECTING)
+ {
+ /* Connection as client */
+ BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_CLIENT;
+ }
+ else
+ {
+ /* Connection as server */
+ BleApplicationContext.Device_Connection_Status = APP_BLE_CONNECTED_SERVER;
+ }
+ BleApplicationContext.BleApplicationContext_legacy.connectionHandle = connection_complete_event->Connection_Handle;
/*
* SPECIFIC to P2P Server APP
*/
@@ -621,7 +626,7 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
P2PS_APP_Notification(&handleNotification);
/**/
/* USER CODE END HCI_EVT_LE_CONN_COMPLETE */
- }
+ }
break; /* HCI_EVT_LE_CONN_COMPLETE */
default:
@@ -715,23 +720,23 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification( void *pckt )
/* USER CODE BEGIN EVT_BLUE_GAP_PROCEDURE_COMPLETE */
/* USER CODE END EVT_BLUE_GAP_PROCEDURE_COMPLETE */
- break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
+ break; /* EVT_BLUE_GAP_PROCEDURE_COMPLETE */
#if(RADIO_ACTIVITY_EVENT != 0)
- case 0x0004:
+ case ACI_HAL_END_OF_RADIO_ACTIVITY_VSEVT_CODE:
/* USER CODE BEGIN RADIO_ACTIVITY_EVENT*/
BSP_LED_On(LED_GREEN);
HW_TS_Start(BleApplicationContext.SwitchOffGPIO_timer_Id, (uint32_t)LED_ON_TIMEOUT);
/* USER CODE END RADIO_ACTIVITY_EVENT*/
- break; /* RADIO_ACTIVITY_EVENT */
+ break; /* RADIO_ACTIVITY_EVENT */
#endif
}
break; /* EVT_VENDOR */
- default:
- /* USER CODE BEGIN ECODE_DEFAULT*/
+ default:
+ /* USER CODE BEGIN ECODE_DEFAULT*/
- /* USER CODE END ECODE_DEFAULT*/
- break;
+ /* USER CODE END ECODE_DEFAULT*/
+ break;
}
return (SVCCTL_UserEvtFlowEnable);
@@ -751,13 +756,10 @@ void APP_BLE_Key_Button1_Action(void)
void APP_BLE_Key_Button2_Action(void)
{
#if (L2CAP_REQUEST_NEW_CONN_PARAM != 0 )
- if (BleApplicationContext.Device_Connection_Status != APP_BLE_FAST_ADV && BleApplicationContext.Device_Connection_Status != APP_BLE_IDLE)
- {
- BLE_SVC_L2CAP_Conn_Update(BleApplicationContext.BleApplicationContext_legacy.connectionHandle);
-
- }
+ UTIL_SEQ_SetTask( 1<<CFG_TASK_CONN_UPDATE_REG_ID, CFG_SCH_PRIO_0);
+#endif
+
return;
-#endif
}
void APP_BLE_Key_Button3_Action(void)
@@ -781,7 +783,7 @@ static void Ble_Tl_Init( void )
return;
}
- static void Ble_Hci_Gap_Gatt_Init(void){
+static void Ble_Hci_Gap_Gatt_Init(void){
uint8_t role;
uint8_t index;
@@ -858,7 +860,7 @@ static void Ble_Tl_Init( void )
if (role > 0)
{
- const char *name = "STM32WB";
+ const char *name = "P2PSRV1";
aci_gap_init(role, 0,
APPBLE_GAP_DEVICE_NAME_LENGTH,
&gap_service_handle, &gap_dev_name_char_handle, &gap_appearance_char_handle);
@@ -911,8 +913,8 @@ static void Ble_Tl_Init( void )
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.encryptionKeySizeMax,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.Use_Fixed_Pin,
BleApplicationContext.BleApplicationContext_legacy.bleSecurityParam.Fixed_Pin,
-0
- );
+ 0
+ );
/**
* Initialize whitelist
@@ -927,7 +929,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
{
tBleStatus ret = BLE_STATUS_INVALID_PARAMS;
uint16_t Min_Inter, Max_Inter;
-
+
if (New_Status == APP_BLE_FAST_ADV)
{
Min_Inter = AdvIntervalMin;
@@ -946,6 +948,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
HW_TS_Stop(BleApplicationContext.Advertising_mgr_timer_Id);
APP_DBG_MSG("First index in %d state \n", BleApplicationContext.Device_Connection_Status);
+
if ((New_Status == APP_BLE_LP_ADV)
&& ((BleApplicationContext.Device_Connection_Status == APP_BLE_FAST_ADV)
|| (BleApplicationContext.Device_Connection_Status == APP_BLE_LP_ADV)))
@@ -955,7 +958,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
if (ret == BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("Successfully Stopped Advertising \n");
- }
+ }
else
{
APP_DBG_MSG("Stop Advertising Failed , result: %d \n", ret);
@@ -979,7 +982,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
/* Update Advertising data */
ret = aci_gap_update_adv_data(sizeof(manuf_data), (uint8_t*) manuf_data);
- if (ret == BLE_STATUS_SUCCESS)
+ if (ret == BLE_STATUS_SUCCESS)
{
if (New_Status == APP_BLE_FAST_ADV)
{
@@ -990,7 +993,7 @@ static void Adv_Request(APP_BLE_ConnStatus_t New_Status)
else
{
APP_DBG_MSG("Successfully Start Low Power Advertising \n");
- }
+ }
}
else
{
@@ -1141,6 +1144,18 @@ void BLE_SVC_L2CAP_Conn_Update(uint16_t Connection_Handle)
}
#endif
+#if (L2CAP_REQUEST_NEW_CONN_PARAM != 0 )
+static void Connection_Interval_Update_Req( void )
+{
+ if (BleApplicationContext.Device_Connection_Status != APP_BLE_FAST_ADV && BleApplicationContext.Device_Connection_Status != APP_BLE_IDLE)
+ {
+ BLE_SVC_L2CAP_Conn_Update(BleApplicationContext.BleApplicationContext_legacy.connectionHandle);
+ }
+ return;
+}
+#endif
+
+
/* USER CODE BEGIN FD_SPECIFIC_FUNCTIONS */
/* USER CODE END FD_SPECIFIC_FUNCTIONS */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Binary/BLE_p2pServer_ota_reference.bin b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Binary/BLE_p2pServer_ota_reference.bin
index c1a65ff03..795d2f443 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Binary/BLE_p2pServer_ota_reference.bin
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Binary/BLE_p2pServer_ota_reference.bin
Binary files differ
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Core/Src/app_entry.c
index 37c4b3b21..1ebbc4af4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/Core/Src/app_entry.c
@@ -226,6 +226,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewd
index 6ce585d63..dde5e64c2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>BLE_p2pServer</name>
+ <name>BLE_p2pServer_ota</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewp
index d82f9fea4..bf2387add 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/EWARM/BLE_p2pServer_ota.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>BLE_p2pServer</name>
+ <name>BLE_p2pServer_ota</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>1</debug>
<option>
<name>ExePath</name>
- <state>BLE_p2pServer/Exe</state>
+ <state>BLE_p2pServer_ota/Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>BLE_p2pServer/Obj</state>
+ <state>BLE_p2pServer_ota/Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>BLE_p2pServer/List</state>
+ <state>BLE_p2pServer_ota/List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -355,12 +355,12 @@
<state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl</state>
<state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci</state>
<state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/utilities</state>
- <state>$PROJ_DIR$/../../../../../../Utilities/lpm/tiny_lpm</state>
- <state>$PROJ_DIR$/../../../../../../Utilities/sequencer</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/lpm/tiny_lpm</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/sequencer</state>
<state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/ble</state>
<state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template</state>
<state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/ble/core</state>
- <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include</state>
<state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Include</state>
<state>$PROJ_DIR$/../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo</state>
</option>
@@ -713,7 +713,7 @@
</option>
<option>
<name>IlinkOutputFile</name>
- <state>BLE_p2pServer.out</state>
+ <state>BLE_p2pServer_ota.out</state>
</option>
<option>
<name>IlinkDebugInfoEnable</name>
@@ -1053,9 +1053,6 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
@@ -1065,6 +1062,9 @@
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_hal_msp.c</name>
</file>
<file>
@@ -1201,6 +1201,9 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\core\template\osal.c</name>
</file>
<file>
@@ -1216,6 +1219,9 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_list.c</name>
</file>
<file>
@@ -1225,12 +1231,6 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\ble\svc\Src\svc_ctl.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
- </file>
- <file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\tl_mbox.c</name>
</file>
</group>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvoptx
index 498901fec..060706b6b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvoptx
@@ -22,7 +22,7 @@
</DaveTm>
<Target>
- <TargetName>BLE_p2pServer</TargetName>
+ <TargetName>BLE_p2pServer_ota</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -73,7 +73,7 @@
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
@@ -93,7 +93,7 @@
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
- <tRfunc>1</tRfunc>
+ <tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
@@ -103,7 +103,7 @@
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
- <nTsel>6</nTsel>
+ <nTsel>1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@@ -114,7 +114,7 @@
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
- <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+ <pMon>BIN\UL2CM3.DLL</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
@@ -122,11 +122,6 @@
<Key>UL2CM3</Key>
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
</SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Tracepoint>
@@ -134,7 +129,7 @@
</Tracepoint>
<DebugFlag>
<trace>0</trace>
- <periodic>1</periodic>
+ <periodic>0</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
@@ -176,7 +171,7 @@
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@@ -219,8 +214,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
- <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -231,8 +226,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
- <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -243,8 +238,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
- <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -255,8 +250,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../Core/Src/main.c</PathWithFileName>
- <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -340,7 +335,7 @@
<Group>
<GroupName>Doc</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@@ -731,8 +726,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
- <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -743,8 +738,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
- <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -755,8 +750,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/p2p_stm.c</PathWithFileName>
- <FilenameWithoutPath>p2p_stm.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -767,8 +762,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
- <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/p2p_stm.c</PathWithFileName>
+ <FilenameWithoutPath>p2p_stm.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -779,8 +774,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
- <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -791,8 +786,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
- <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -803,8 +798,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
- <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -815,8 +810,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
- <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -827,8 +822,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
- <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -839,8 +834,8 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
- <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
- <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
@@ -890,12 +885,4 @@
</File>
</Group>
- <Group>
- <GroupName>::CMSIS</GroupName>
- <tvExp>0</tvExp>
- <tvExpOptDlg>0</tvExpOptDlg>
- <cbSel>0</cbSel>
- <RteFlg>1</RteFlg>
- </Group>
-
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvprojx
index 8b2bc4371..592d3a819 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/BLE_p2pServer_ota.uvprojx
@@ -7,7 +7,7 @@
<Targets>
<Target>
- <TargetName>BLE_p2pServer</TargetName>
+ <TargetName>BLE_p2pServer_ota</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
@@ -16,7 +16,7 @@
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
- <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackID>Keil.STM32WBxx_DFP.1.1.0</PackID>
<PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08007000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@@ -33,7 +33,7 @@
<SLE66CMisc></SLE66CMisc>
<SLE66AMisc></SLE66AMisc>
<SLE66LinkerMisc></SLE66LinkerMisc>
- <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB55_CM4.svd</SFDFile>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
<BinPath></BinPath>
@@ -48,8 +48,8 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>BLE_p2pServer\Exe\</OutputDirectory>
- <OutputName>BLE_p2pServer</OutputName>
+ <OutputDirectory>BLE_p2pServer_ota\Exe\</OutputDirectory>
+ <OutputName>BLE_p2pServer_ota</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>0</CreateHexFile>
@@ -82,7 +82,7 @@
<AfterMake>
<RunUserProg1>1</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bincombined --output=$L@L.bin</UserProg1Name>
+ <UserProg1Name>fromelf #L --bincombined --output=$L@L.bin</UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -106,7 +106,7 @@
<StopOnExitCode>3</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
- <ComprImg>0</ComprImg>
+ <ComprImg>1</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -137,8 +137,8 @@
<DriverSelection>4107</DriverSelection>
</Flash1>
<bUseTDR>1</bUseTDR>
- <Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3></Flash3>
+ <Flash2>BIN\UL2CM3.DLL</Flash2>
+ <Flash3>"" ()</Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
@@ -334,7 +334,7 @@
<v6WtE>0</v6WtE>
<v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls>--diag_suppress 1296 </MiscControls>
+ <MiscControls>--diag_suppress 1296 </MiscControls>
<Define>USE_STM32WBXX_NUCLEO,USE_HAL_DRIVER,STM32WB55xx</Define>
<Undefine></Undefine>
<IncludePath>../Core/Inc;../STM32_WPAN/App;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Middlewares/ST/STM32_WPAN/ble;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/CMSIS/Include;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo</IncludePath>
@@ -368,7 +368,7 @@
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
<pXoBase></pXoBase>
- <ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
+ <ScatterFile>stm32wb55xx_flash_cm4.sct</ScatterFile>
<IncludeLibs></IncludeLibs>
<IncludeLibsPath></IncludeLibsPath>
<Misc>--keep *.o(TAG_OTA_START)
@@ -398,11 +398,6 @@
<FilePath>../Core/Src/app_entry.c</FilePath>
</File>
<File>
- <FileName>stm32_lpm_if.c</FileName>
- <FileType>1</FileType>
- <FilePath>../Core/Src/stm32_lpm_if.c</FilePath>
- </File>
- <File>
<FileName>hw_timerserver.c</FileName>
<FileType>1</FileType>
<FilePath>../Core/Src/hw_timerserver.c</FilePath>
@@ -418,6 +413,11 @@
<FilePath>../Core/Src/main.c</FilePath>
</File>
<File>
+ <FileName>stm32_lpm_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32_lpm_if.c</FilePath>
+ </File>
+ <File>
<FileName>stm32wbxx_hal_msp.c</FileName>
<FileType>1</FileType>
<FilePath>../Core/Src/stm32wbxx_hal_msp.c</FilePath>
@@ -623,6 +623,11 @@
<FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</FilePath>
</File>
<File>
+ <FileName>hci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</FilePath>
+ </File>
+ <File>
<FileName>osal.c</FileName>
<FileType>1</FileType>
<FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</FilePath>
@@ -648,6 +653,11 @@
<FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</FilePath>
</File>
<File>
+ <FileName>shci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</FilePath>
+ </File>
+ <File>
<FileName>stm_list.c</FileName>
<FileType>1</FileType>
<FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</FilePath>
@@ -663,16 +673,6 @@
<FilePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</FilePath>
</File>
<File>
- <FileName>hci_tl_if.c</FileName>
- <FileType>1</FileType>
- <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</FilePath>
- </File>
- <File>
- <FileName>shci_tl_if.c</FileName>
- <FileType>1</FileType>
- <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</FilePath>
- </File>
- <File>
<FileName>tl_mbox.c</FileName>
<FileType>1</FileType>
<FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</FilePath>
@@ -694,23 +694,13 @@
</File>
</Files>
</Group>
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
</Groups>
</Target>
</Targets>
<RTE>
<apis/>
- <components>
- <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
- <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
- <targetInfos>
- <targetInfo name="BLE_p2pServer"/>
- </targetInfos>
- </component>
- </components>
+ <components/>
<files/>
</RTE>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/startup_stm32wb55xx_cm4.s
index e05e3c5ca..5b201de88 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/startup_stm32wb55xx_cm4.s
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/startup_stm32wb55xx_cm4.s
@@ -14,7 +14,8 @@
;******************************************************************************
;* @attention
;*
-;* Copyright (c) 2019 STMicroelectronics. All rights reserved.
+;* <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
+;* All rights reserved.</center></h2>
;*
;* This software component is licensed by ST under BSD 3-Clause license,
;* the "License"; You may not use this file except in compliance with the
@@ -50,12 +51,11 @@ __heap_limit
PRESERVE8
THUMB
-
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
- EXPORT __Vectors
- EXPORT __Vectors_End
- EXPORT __Vectors_Size
+ ; EXPORT __Vectors
+ ; EXPORT __Vectors_End
+ ;EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
@@ -138,9 +138,14 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+ DCD 0 ; Reserved
__Vectors_End
+ AREA INFO, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
__Vectors_Size EQU __Vectors_End - __Vectors
AREA |.text|, CODE, READONLY
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
index f9094bb6a..1e9eca026 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -2,25 +2,26 @@
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
-LR_IROM1 0x08007000 0x184 { ; load region size_region
- ER_IROM1_LOW 0x08007000 0x184 { ; load address = execution address
- *.o(RESET, +First)
- *.o(TAG_OTA_START)
+LR_IROM1 0x08007000 0x260 { ; load region size_region
+ ER_IROM1_LOW 0x08007000 0x260 { ; load address = execution address
+ *.o(RESET, +First)
+ *.o (TAG_OTA_START)
}
- RW_IRAM1 0x20000004 0x2FFFC { ; RW data
- .ANY (+RW +ZI)
+
+ RW_IRAM1 0x20000004 0x0002FFFC { ; RW data
+ .ANY (+RW +ZI)
}
- RW_RAM_SHARED 0x20030000 0x2800 { ; RW data
- *(MAPPING_TABLE)
- *(MB_MEM1)
- *(MB_MEM2)
- }
- }
-LR_IROM3 0x08007184 0x78E7C {
- ER_IROM1_HIGH 0x08007184 0x78E7C { ; load address = execution address
+ RW_RAM2aRet_SHARED 0x20030000 0x2800 { ; RW data
+ *(MAPPING_TABLE)
+ *(MB_MEM1)
+ *(MB_MEM2)
+ }
+}
- *(InRoot$$Sections)
- .ANY (+RO)
- *.o(TAG_OTA_END)
- }
+LR_IROM3 0x08007260 0x78DA0 {
+ ER_IROM1_HIGH 0x08007260 0x78DA0 { ; load address = execution address
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ *.o (TAG_OTA_END)
}
+ } \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/.cproject
index 4129818e4..ab426f3ea 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/.cproject
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
- <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1659718268">
- <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1659718268" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1196886161">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1196886161" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
@@ -14,29 +14,29 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1659718268" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
- <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1659718268." name="/" resourcePath="">
- <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.406951002" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
- <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.2135607581" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.496464612" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.board.1727879160" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1196886161" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1196886161." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.899747452" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.920969031" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.444258786" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.86104181" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
<listOptionValue builtIn="false" value="ARM Cortex-M4"/>
<listOptionValue builtIn="false" value="CM4"/>
</option>
- <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.647034060" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.841773100" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
- <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1095891420" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
- <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1429814302" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/BLE_p2pServer}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1717193695" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.505963130" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1655645834" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.522856550" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.907931868" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+ <builder buildPath="${workspace_loc:/BLE_p2pServer_ota}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.886898386" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
</builder>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1046275299" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
- <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1970835706" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.debugging.level.1457038939" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.include.paths.1531592559" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1607663509" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.2012789543" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.289753155" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.include.paths.1937047398" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../../../Core/Inc"/>
<listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
@@ -55,19 +55,19 @@
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
</option>
- <option id="gnu.c.compiler.option.preprocessor.def.symbols.1703879364" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.81520429" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32WB55xx"/>
</option>
- <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1347625926" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.2061330616" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.538596407" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1996000401" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1180871873" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1727765268" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.2054260800" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
- <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.418678254" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.debugging.level.1600655309" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.include.paths.1377265608" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1432642692" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.2052359892" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1001879634" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.include.paths.296006015" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../../../Core/Inc"/>
<listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
@@ -86,42 +86,42 @@
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
<listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
</option>
- <option id="gnu.cpp.compiler.option.preprocessor.def.1845427833" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <option id="gnu.cpp.compiler.option.preprocessor.def.1062574467" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32WB55xx"/>
</option>
- <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.1029722844" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1213894747" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1213968827" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.1866974752" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1477666540" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1468288716" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.1681249797" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
- <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.814458621" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
- <option id="gnu.c.link.option.libs.914460381" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
- <option id="gnu.c.link.option.paths.1203703780" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
- <option id="gnu.c.link.option.ldflags.381288314" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
- <option id="gnu.c.link.option.other.1386837732" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
- <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.77996196" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.726999459" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1795824933" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.c.link.option.libs.1238347245" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
+ <option id="gnu.c.link.option.paths.547525459" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
+ <option id="gnu.c.link.option.ldflags.883941669" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.c.link.option.other.917976404" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1234885745" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1358627365" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
- <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1547595677" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
- <option id="gnu.cpp.link.option.libs.2097889393" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
- <option id="gnu.cpp.link.option.paths.1781302412" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
- <option id="gnu.cpp.link.option.flags.432650447" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
- <option id="gnu.cpp.link.option.other.1833345074" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
- <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.723755656" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.675631863" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.842016388" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.cpp.link.option.libs.593591764" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+ <option id="gnu.cpp.link.option.paths.1575359172" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
+ <option id="gnu.cpp.link.option.flags.1964585430" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.cpp.link.option.other.161915612" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.622092989" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
- <tool id="fr.ac6.managedbuild.tool.gnu.archiver.734210950" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
- <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.638618287" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
- <option id="gnu.both.asm.option.include.paths.506536128" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
- <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1208112111" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
- <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.68051862" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1944235660" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.2033226059" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+ <option id="gnu.both.asm.option.include.paths.394649321" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1628231446" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1773883809" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
@@ -134,18 +134,18 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="BLE_p2pServer.fr.ac6.managedbuild.target.gnu.cross.exe.942285691" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_p2pServer_ota.fr.ac6.managedbuild.target.gnu.cross.exe.1113183095" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
- <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1659718268;fr.ac6.managedbuild.config.gnu.cross.exe.debug.1659718268.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1046275299;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.2061330616">
+ <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1196886161;fr.ac6.managedbuild.config.gnu.cross.exe.debug.1196886161.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1607663509;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1180871873">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="BLE_p2pServer"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_p2pServer_ota"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/.project
index 4b614828d..36914e4d6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>BLE_p2pServer</name>
+ <name>BLE_p2pServer_ota</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/stm32wb55xx_flash_cm4.ld
new file mode 100644
index 000000000..b2b102458
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer_ota/stm32wb55xx_flash_cm4.ld
@@ -0,0 +1,202 @@
+/**
+*****************************************************************************
+**
+** File : stm32wb55xx_flash_cm4.ld
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 Ac6</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of Ac6 nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20030000; /* end of RAM */
+/* Generate a link error if heap and stack don't fit into RAM */
+_Min_Heap_Size = 0x400; /* required amount of heap */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
+
+/* Specify the memory areas */
+MEMORY
+{
+FLASH (rx) : ORIGIN = 0x08007000, LENGTH = 484k
+RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 191k
+RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K
+}
+
+/* Define output sections */
+SECTIONS
+{
+ /* The startup code goes first into FLASH */
+ .isr_vector :
+ {
+ . = ALIGN(4);
+ KEEP(*(.isr_vector)) /* Startup code */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ota_region 0x08007140:
+ {
+ KEEP(*(TAG_OTA_START))
+ . = ALIGN(4);
+ } >FLASH
+
+ /* The program code and other data goes into FLASH */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* Constant data goes into FLASH */
+ .rodata :
+ {
+ . = ALIGN(4);
+ *(.rodata) /* .rodata sections (constants, strings, etc.) */
+ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+ .ARM : {
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ } >FLASH
+
+ .preinit_array :
+ {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array*))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } >FLASH
+ .init_array :
+ {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array*))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } >FLASH
+ .fini_array :
+ {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(SORT(.fini_array.*)))
+ KEEP (*(.fini_array*))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } >FLASH
+
+ .ota_region_end :
+ {
+ . = ALIGN(4);
+ KEEP(*(TAG_OTA_END))
+ . = ALIGN(4);
+ } >FLASH
+
+ /* used by the startup to initialize data */
+ _sidata = LOADADDR(.data);
+
+ /* Initialized data sections goes into RAM, load LMA copy after code */
+ .data :
+ {
+ . = ALIGN(4);
+ _sdata = .; /* create a global symbol at data start */
+ *(.data) /* .data sections */
+ *(.data*) /* .data* sections */
+
+ . = ALIGN(4);
+ _edata = .; /* define a global symbol at data end */
+ } >RAM1 AT> FLASH
+
+
+ /* Uninitialized data section */
+ . = ALIGN(4);
+ .bss :
+ {
+ /* This is used by the startup in order to initialize the .bss secion */
+ _sbss = .; /* define a global symbol at bss start */
+ __bss_start__ = _sbss;
+ *(.bss)
+ *(.bss*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ _ebss = .; /* define a global symbol at bss end */
+ __bss_end__ = _ebss;
+ } >RAM1
+
+ /* User_heap_stack section, used to check that there is enough RAM left */
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE ( end = . );
+ PROVIDE ( _end = . );
+ . = . + _Min_Heap_Size;
+ . = . + _Min_Stack_Size;
+ . = ALIGN(8);
+ } >RAM1
+
+
+
+ /* Remove information from the standard libraries */
+ /DISCARD/ :
+ {
+ libc.a ( * )
+ libm.a ( * )
+ libgcc.a ( * )
+ }
+
+ .ARM.attributes 0 : { *(.ARM.attributes) }
+ MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM_SHARED
+ MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM_SHARED
+ MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM_SHARED
+ TAG_OTA_END(NOLOAD) : { KEEP (*(TAG_OTA_END)) } >FLASH
+
+}
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/startup_stm32wb55xx_cm4.s
index 023c1b016..f79eec117 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/startup_stm32wb55xx_cm4.s
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/startup_stm32wb55xx_cm4.s
@@ -44,21 +44,29 @@ defined in linker script */
.word _sbss
/* end address for the .bss section. defined in linker script */
.word _ebss
-
- .section .text.Reset_Handler
- .weak Reset_Handler
- .type Reset_Handler, %function
-Reset_Handler:
- ldr r0, =_estack
- mov sp, r0 /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
- ldr r0, =_sdata
- ldr r1, =_edata
- ldr r2, =_sidata
+/* start address for the .MB_MEM2 section. defined in linker script */
+.word _sMB_MEM2
+/* end address for the .MB_MEM2 section. defined in linker script */
+.word _eMB_MEM2
+
+/* INIT_BSS macro is used to fill the specified region [start : end] with zeros */
+.macro INIT_BSS start, end
+ ldr r0, =\start
+ ldr r1, =\end
movs r3, #0
- b LoopCopyDataInit
+ bl LoopFillZerobss
+.endm
+
+/* INIT_DATA macro is used to copy data in the region [start : end] starting from 'src' */
+.macro INIT_DATA start, end, src
+ ldr r0, =\start
+ ldr r1, =\end
+ ldr r2, =\src
+ movs r3, #0
+ bl LoopCopyDataInit
+.endm
+.section .text.data_initializers
CopyDataInit:
ldr r4, [r2, r3]
str r4, [r0, r3]
@@ -67,21 +75,31 @@ CopyDataInit:
LoopCopyDataInit:
adds r4, r0, r3
cmp r4, r1
- bcc CopyDataInit
-
-/* Zero fill the bss segment. */
- ldr r2, =_sbss
- ldr r4, =_ebss
- movs r3, #0
- b LoopFillZerobss
+ bcc CopyDataInit
+ bx lr
FillZerobss:
- str r3, [r2]
- adds r2, r2, #4
+ str r3, [r0]
+ adds r0, r0, #4
LoopFillZerobss:
- cmp r2, r4
+ cmp r0, r1
bcc FillZerobss
+ bx lr
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr r0, =_estack
+ mov sp, r0 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ INIT_DATA _sdata, _edata, _sidata
+
+/* Zero fill the bss segments. */
+ INIT_BSS _sbss, _ebss
+ INIT_BSS _sMB_MEM2, _eMB_MEM2
/* Call the clock system intitialization function.*/
bl SystemInit
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/syscalls.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/syscalls.c
index e266506b6..9b7c4071a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/syscalls.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/syscalls.c
@@ -3,20 +3,23 @@
**
** File : syscalls.c
**
+** Author : Auto-generated by System workbench for STM32
+**
** Abstract : System Workbench Minimal System calls file
**
** For more information about which c-functions
** need which of these lowlevel functions
** please consult the Newlib libc-manual
**
-** Environment : System Workbench for MCU
+** Target : STMicroelectronics STM32
**
** Distribution: The file is distributed as is, without any warranty
** of any kind.
**
*****************************************************************************
+** @attention
**
-** <h2><center>&copy; COPYRIGHT(c) 2019 Ac6</center></h2>
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
**
** Redistribution and use in source and binary forms, with or without modification,
** are permitted provided that the following conditions are met:
@@ -25,7 +28,7 @@
** 2. Redistributions in binary form must reproduce the above copyright notice,
** this list of conditions and the following disclaimer in the documentation
** and/or other materials provided with the distribution.
-** 3. Neither the name of Ac6 nor the names of its contributors
+** 3. Neither the name of STMicroelectronics nor the names of its contributors
** may be used to endorse or promote products derived from this software
** without specific prior written permission.
**
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/Core/Src/app_entry.c
index 2f36d772b..9f7000491 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/Core/Src/app_entry.c
@@ -278,6 +278,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
UNUSED(pPayload);
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Thread/Ble_Thread_Static/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/Keys/Store_keys.bat b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/Keys/Store_keys.bat
deleted file mode 100644
index d17dea8af..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/Keys/Store_keys.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-echo off
-REM Set CubeProgrammer path release 2.1 and above
-SET PROG="C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer2\bin\STM32_Programmer_CLI.exe"
-
-REM Next commands use bootloader with USB connection
-REM Store 128 bits key in clear format
-%PROG% -c port=usb1 -wusrkey Simple_128.bin
-
-REM Store 256 bits key in clear format
-%PROG% -c port=usb1 -wusrkey Simple_256.bin
-
-REM Store 128 bits master key in clear format
-REM Index reported is 0x0: OK or 0xFF: Master key already here
-%PROG% -c port=usb1 -wusrkey Master.bin
-
-REM Store 128 bits key encrypted with master key
-%PROG% -c port=usb1 -wusrkey Encrypted_128.bin
-
-REM Store 128 bits key encrypted with master key
-%PROG% -c port=usb1 -wusrkey Encrypted_256.bin
-pause
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvoptx
index 12cb617b2..d3503cefe 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvoptx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvoptx
@@ -73,7 +73,7 @@
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
- <tvExp>1</tvExp>
+ <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
@@ -93,7 +93,7 @@
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
- <tRfunc>1</tRfunc>
+ <tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
@@ -103,7 +103,7 @@
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
- <nTsel>6</nTsel>
+ <nTsel>0</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@@ -114,7 +114,7 @@
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
- <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+ <pMon>BIN\UL2CM3.DLL</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
@@ -122,11 +122,6 @@
<Key>UL2CM3</Key>
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
</SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Tracepoint>
@@ -134,7 +129,7 @@
</Tracepoint>
<DebugFlag>
<trace>0</trace>
- <periodic>1</periodic>
+ <periodic>0</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvprojx
index 693b7bced..d92e5be68 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvprojx
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/MDK-ARM/CKS_Crypt.uvprojx
@@ -16,7 +16,7 @@
<TargetCommonOption>
<Device>STM32WB55RGVx</Device>
<Vendor>STMicroelectronics</Vendor>
- <PackID>Keil.STM32WBxx.0.0.7</PackID>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
<PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@@ -54,7 +54,7 @@
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
- <BrowseInformation>1</BrowseInformation>
+ <BrowseInformation>0</BrowseInformation>
<ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
@@ -137,7 +137,7 @@
<DriverSelection>4107</DriverSelection>
</Flash1>
<bUseTDR>1</bUseTDR>
- <Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
+ <Flash2>BIN\UL2CM3.DLL</Flash2>
<Flash3></Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/.cproject
index 21987440c..6edb8ee46 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.312687132" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.324366631" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.174599597" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1129034344" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/CKS_Crypt}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1129034344" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -133,7 +133,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.20595449" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="CKS_Crypt.fr.ac6.managedbuild.target.gnu.cross.exe.20595449" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -144,7 +144,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="CKS_Crypt"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/.project
index 78b6f7351..dc67bdc60 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>CKS_Crypt</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/stm32wb55xx_flash_cm4.ld
index 8e77d9ee5..8e77d9ee5 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/CKS/CKS_Crypt/SW4STM32/CKS_Crypt/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Src/stm32wbxx_it.c
index d453f4ed0..481b39fe8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FatFs/FatFs_uSD_Standalone/Core/Src/stm32wbxx_it.c
@@ -58,8 +58,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Src/stm32wbxx_it.c
index 22a565b31..a129b774f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/Src/stm32wbxx_it.c
@@ -60,8 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Src/stm32wbxx_it.c
index 5eeb3ecae..c616a2902 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/Src/stm32wbxx_it.c
@@ -61,8 +61,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Src/stm32wbxx_it.c
index 5cfac252c..5ed0abb21 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/Src/stm32wbxx_it.c
@@ -61,8 +61,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Src/stm32wbxx_it.c
index 02e126ae6..c0f97c6ec 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/Src/stm32wbxx_it.c
@@ -61,8 +61,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Src/stm32wbxx_it.c
index 4dd2b5e48..ed7ad50b2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/Src/stm32wbxx_it.c
@@ -61,8 +61,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Src/stm32wbxx_it.c
index 39993d29f..0cb078d40 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/Src/stm32wbxx_it.c
@@ -61,8 +61,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Src/stm32wbxx_it.c
index 82fd92cf4..9587d35d1 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/Src/stm32wbxx_it.c
@@ -61,8 +61,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Src/stm32wbxx_it.c
index ebaf6ded8..50857f597 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Src/stm32wbxx_it.c
@@ -61,8 +61,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Src/stm32wbxx_it.c
index 35c8f4372..edd12d17b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/Src/stm32wbxx_it.c
@@ -61,8 +61,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/Core/Src/app_entry.c
index 38acd99a5..7f893e6e0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/Core/Src/app_entry.c
@@ -164,7 +164,15 @@ void APP_ENTRY_Init_FFD(void)
{
}
-
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_UserEvtRx( void * pPayload )
{
/* Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/Mac_802_15_4_FFD_Demo.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/Mac_802_15_4_FFD_Demo.uvoptx
new file mode 100644
index 000000000..9ae606228
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/Mac_802_15_4_FFD_Demo.uvoptx
@@ -0,0 +1,809 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>8000000</CLKADS>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>0</RunSim>
+ <RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath></ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>18</CpuCode>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>1</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>0</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/Core/src</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm_logging.c</PathWithFileName>
+ <FilenameWithoutPath>stm_logging.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/app_ffd_mac_802_15_4.c</PathWithFileName>
+ <FilenameWithoutPath>app_ffd_mac_802_15_4.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/app_ffd_mac_802_15_4_process.c</PathWithFileName>
+ <FilenameWithoutPath>app_ffd_mac_802_15_4_process.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/mac_802_15_4/inc</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_config.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_config.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_core.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_core.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_errors.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_errors.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_sap.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_sap.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_types.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_types.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/mac_802_15_4/src</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c</PathWithFileName>
+ <FilenameWithoutPath>mac_802_15_4_core_wb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/Mac_802_15_4_FFD_Demo.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/Mac_802_15_4_FFD_Demo.uvprojx
new file mode 100644
index 000000000..f45aab5f5
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/Mac_802_15_4_FFD_Demo.uvprojx
@@ -0,0 +1,676 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+ <SchemaVersion>2.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>STM32WB55RGVx</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
+ <Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20020000-0x2002FFFF) IRAM2aRet_SHARED(0x20030000-0x20033FFF) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>P-NUCLEO-WB55.Nucleo\Exe\</OutputDirectory>
+ <OutputName>Mac_802_15_4_FFD_Demo</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>0</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath></ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments>-REMAP -MPU</SimDllArguments>
+ <SimDlgDll>DCM.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments>-MPU</TargetDllArguments>
+ <TargetDlgDll>TCM.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>4107</DriverSelection>
+ </Flash1>
+ <bUseTDR>1</bUseTDR>
+ <Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
+ <Flash3>"" ()</Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>1</AdsALst>
+ <AdsACrf>1</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>"Cortex-M4"</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>2</RvdsVP>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>1</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>0</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x20020000</StartAddress>
+ <Size>0x10000</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x20020000</StartAddress>
+ <Size>0x10000</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>1</interw>
+ <Optim>4</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>1</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <uSurpInc>0</uSurpInc>
+ <uC99>0</uC99>
+ <uGnu>0</uGnu>
+ <useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
+ <VariousControls>
+ <MiscControls>--C99</MiscControls>
+ <Define>CORE_CM4,USE_HAL_DRIVER,USE_STM32WBXX_NUCLEO,STM32WB55xx,MAC_802_15_4_WB</Define>
+ <Undefine></Undefine>
+ <IncludePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/CMSIS/Include;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/;../Core/Inc;../STM32_WPAN/app;../STM32_WPAN/Target;../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>0</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x08000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
+ <pXoBase></pXoBase>
+ <ScatterFile>stm32wb55xx_flash_cm4.sct</ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc>--diag_suppress=L6329</Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <Files>
+ <File>
+ <FileName>startup_stm32wb55xx_cm4.s</FileName>
+ <FileType>2</FileType>
+ <FilePath>startup_stm32wb55xx_cm4.s</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/Core/src</GroupName>
+ <Files>
+ <File>
+ <FileName>app_entry.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/app_entry.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_lpm_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32_lpm_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/hw_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>main.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/main.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_it.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32wbxx_it.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_logging.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm_logging.c</FilePath>
+ </File>
+ <File>
+ <FileName>system_stm32wbxx.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/system_stm32wbxx.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/app</GroupName>
+ <Files>
+ <File>
+ <FileName>app_ffd_mac_802_15_4.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/app/app_ffd_mac_802_15_4.c</FilePath>
+ </File>
+ <File>
+ <FileName>app_ffd_mac_802_15_4_process.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/app/app_ffd_mac_802_15_4_process.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/target</GroupName>
+ <Files>
+ <File>
+ <FileName>hw_ipcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/Target/hw_ipcc.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Doc</GroupName>
+ <Files>
+ <File>
+ <FileName>readme.txt</FileName>
+ <FileType>5</FileType>
+ <FilePath>../readme.txt</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_nucleo.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_hal.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_adc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_adc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_cortex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_gpio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_ipcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <Files>
+ <File>
+ <FileName>shci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <Files>
+ <File>
+ <FileName>shci_tl.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_mbox.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/mac_802_15_4/inc</GroupName>
+ <Files>
+ <File>
+ <FileName>802_15_4_mac_config.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_config.h</FilePath>
+ </File>
+ <File>
+ <FileName>802_15_4_mac_core.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_core.h</FilePath>
+ </File>
+ <File>
+ <FileName>802_15_4_mac_errors.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_errors.h</FilePath>
+ </File>
+ <File>
+ <FileName>802_15_4_mac_sap.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_sap.h</FilePath>
+ </File>
+ <File>
+ <FileName>802_15_4_mac_types.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_types.h</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/mac_802_15_4/src</GroupName>
+ <Files>
+ <File>
+ <FileName>mac_802_15_4_core_wb.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <Files>
+ <File>
+ <FileName>dbg_trace.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</FilePath>
+ </File>
+ <File>
+ <FileName>otp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_list.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_queue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32_lpm.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_seq.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/sequencer/stm32_seq.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+ <RTE>
+ <apis/>
+ <components/>
+ <files/>
+ </RTE>
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..e05e3c5ca
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,368 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : STM32WB55xx devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the CortexM4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;******************************************************************************
+;* @attention
+;*
+;* Copyright (c) 2019 STMicroelectronics. All rights reserved.
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; <h> Stack Configuration
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size EQU 0x1000
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size EQU 0x400
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM detector
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper and TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_PVM_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_LSECSS_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_IRQHandler [WEAK]
+ EXPORT USB_HP_IRQHandler [WEAK]
+ EXPORT USB_LP_IRQHandler [WEAK]
+ EXPORT C2SEV_PWR_C2H_IRQHandler [WEAK]
+ EXPORT COMP_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_IRQHandler [WEAK]
+ EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_TIM17_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT PKA_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT TSC_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+ EXPORT PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler [WEAK]
+ EXPORT IPCC_C1_RX_IRQHandler [WEAK]
+ EXPORT IPCC_C1_TX_IRQHandler [WEAK]
+ EXPORT HSEM_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT LCD_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT AES1_IRQHandler [WEAK]
+ EXPORT AES2_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT DMA2_Channel1_IRQHandler [WEAK]
+ EXPORT DMA2_Channel2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel3_IRQHandler [WEAK]
+ EXPORT DMA2_Channel4_IRQHandler [WEAK]
+ EXPORT DMA2_Channel5_IRQHandler [WEAK]
+ EXPORT DMA2_Channel6_IRQHandler [WEAK]
+ EXPORT DMA2_Channel7_IRQHandler [WEAK]
+ EXPORT DMAMUX1_OVR_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_PVM_IRQHandler
+TAMP_STAMP_LSECSS_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_IRQHandler
+USB_HP_IRQHandler
+USB_LP_IRQHandler
+C2SEV_PWR_C2H_IRQHandler
+COMP_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_IRQHandler
+TIM1_UP_TIM16_IRQHandler
+TIM1_TRG_COM_TIM17_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+PKA_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+LPUART1_IRQHandler
+SAI1_IRQHandler
+TSC_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+CRS_IRQHandler
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+IPCC_C1_RX_IRQHandler
+IPCC_C1_TX_IRQHandler
+HSEM_IRQHandler
+LPTIM1_IRQHandler
+LPTIM2_IRQHandler
+LCD_IRQHandler
+QUADSPI_IRQHandler
+AES1_IRQHandler
+AES2_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_IRQHandler
+DMA2_Channel5_IRQHandler
+DMA2_Channel6_IRQHandler
+DMA2_Channel7_IRQHandler
+DMAMUX1_OVR_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/stm32wb55xx_flash_cm4.sct
new file mode 100644
index 000000000..ac4cf4639
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -0,0 +1,21 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x08000000 0x00080000 { ; load region size_region
+ ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ }
+ RW_IRAM1 0x20020000 0x10000{ ; RW data
+ .ANY (+RW +ZI)
+ }
+ RW_RAM_SHARED 0x20030000 0x4000 { ; RW data
+ *(MAPPING_TABLE)
+ *(MB_MEM1)
+ *(MB_MEM2)
+ }
+ }
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/.cproject
new file mode 100644
index 000000000..4eb65fc37
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/.cproject
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1317651858">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1317651858" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <externalSettings/>
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1317651858" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1317651858." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.1102336699" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.335521053" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.449875111" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" useByScannerDiscovery="false" value="STM32WB55RGVx" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.939231428" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" useByScannerDiscovery="false" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" useByScannerDiscovery="false" valueType="stringList">
+ <listOptionValue builtIn="false" value="ARM Cortex-M4"/>
+ <listOptionValue builtIn="false" value="CM4"/>
+ </option>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1390503915" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1293373829" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.2128808653" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.452781858" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+ <builder buildPath="${workspace_loc:/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1866395428" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <outputEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
+ </outputEntries>
+ </builder>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.539311" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1789421063" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.430503795" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.include.paths.222713594" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/"/>
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/Target"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.1354767947" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="CORE_CM4"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="MAC_802_15_4_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1128286053" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.352431168" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.2032737437" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.2108189822" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.582676746" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.434988888" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.include.paths.331342441" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/"/>
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/app"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/Target"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.236792131" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="CORE_CM4"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="MAC_802_15_4_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.1296183883" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.948924753" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.434882714" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.178360789" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.833236861" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" useByScannerDiscovery="false" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.c.link.option.libs.711384676" name="Libraries (-l)" superClass="gnu.c.link.option.libs" useByScannerDiscovery="false"/>
+ <option id="gnu.c.link.option.paths.995620891" name="Library search path (-L)" superClass="gnu.c.link.option.paths" useByScannerDiscovery="false"/>
+ <option id="gnu.c.link.option.ldflags.1581316625" name="Linker flags" superClass="gnu.c.link.option.ldflags" useByScannerDiscovery="false" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.c.link.option.other.233856742" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.2094448303" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1357198266" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.554773745" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.cpp.link.option.libs.1903154813" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+ <option id="gnu.cpp.link.option.paths.1554508628" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
+ <option id="gnu.cpp.link.option.flags.1090213116" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.cpp.link.option.other.123300133" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1510319197" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1544072412" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.357072059" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+ <option id="gnu.both.asm.option.include.paths.1249241342" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.156190923" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.993751858" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+ </tool>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo.fr.ac6.managedbuild.target.gnu.cross.exe.566124179" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1317651858;fr.ac6.managedbuild.config.gnu.cross.exe.debug.1317651858.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.539311;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.352431168">
+ <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="refreshScope" versionNumber="2">
+ <configuration artifactName="${ProjName}" configurationName="Debug">
+ <resource resourceType="PROJECT" workspacePath="P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo"/>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/.project
new file mode 100644
index 000000000..c3c33b0f4
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/.project
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
+ <name>P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo</name>
+ <comment/>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>Application/SW4STM32/syscalls.c</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/syscalls.c</location>
+ </link><link>
+ <name>Application/SW4STM32/startup_stm32wb55xx_cm4.s</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/startup_stm32wb55xx_cm4.s</location>
+ </link>
+
+ <link>
+ <name>Application/User/Core/src/app_entry.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/app_entry.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/stm32_lpm_if.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32_lpm_if.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/hw_uart.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/hw_uart.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/main.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/main.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/stm32wbxx_it.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_it.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/stm_logging.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm_logging.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/system_stm32wbxx.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/system_stm32wbxx.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/app/app_ffd_mac_802_15_4.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/app/app_ffd_mac_802_15_4.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/app/app_ffd_mac_802_15_4_process.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/app/app_ffd_mac_802_15_4_process.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/target/hw_ipcc.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/Target/hw_ipcc.c</location>
+ </link>
+ <link>
+ <name>Doc/readme.txt</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/readme.txt</location>
+ </link>
+ <link>
+ <name>Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_adc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_adc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_cortex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_gpio.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_ipcc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_config.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_config.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_core.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_core.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_errors.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_errors.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_sap.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_sap.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_types.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_types.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/src/mac_802_15_4_core_wb.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/dbg_trace.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/otp.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/otp.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/stm_list.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_list.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/stm_queue.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</location>
+ </link>
+ <link>
+ <name>Utilities/stm32_lpm.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Utilities/lpm/tiny_lpm/stm32_lpm.c</location>
+ </link>
+ <link>
+ <name>Utilities/stm32_seq.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Utilities/sequencer/stm32_seq.c</location>
+ </link>
+ </linkedResources>
+</projectDescription> \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/stm32wb55xx_flash_cm4.ld
new file mode 100644
index 000000000..ff9b87ca9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_FFD_Demo/stm32wb55xx_flash_cm4.ld
@@ -0,0 +1,187 @@
+/**
+*****************************************************************************
+**
+** File : stm32wb55xx_flash_cm4.ld
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+*****************************************************************************
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 Ac6</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of Ac6 nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20030000; /* end of RAM */
+/* Generate a link error if heap and stack don't fit into RAM */
+_Min_Heap_Size = 0x400; /* required amount of heap */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
+
+/* Specify the memory areas */
+MEMORY
+{
+FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
+RAM1 (xrw) : ORIGIN = 0x20020000, LENGTH = 64k
+RAM2aRet_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 16K
+}
+
+/* Define output sections */
+SECTIONS
+{
+ /* The startup code goes first into FLASH */
+ .isr_vector :
+ {
+ . = ALIGN(4);
+ KEEP(*(.isr_vector)) /* Startup code */
+ . = ALIGN(4);
+ } >FLASH
+
+ /* The program code and other data goes into FLASH */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* Constant data goes into FLASH */
+ .rodata :
+ {
+ . = ALIGN(4);
+ *(.rodata) /* .rodata sections (constants, strings, etc.) */
+ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+ .ARM : {
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ } >FLASH
+
+ .preinit_array :
+ {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array*))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } >FLASH
+ .init_array :
+ {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array*))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } >FLASH
+ .fini_array :
+ {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(SORT(.fini_array.*)))
+ KEEP (*(.fini_array*))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } >FLASH
+
+ /* used by the startup to initialize data */
+ _sidata = LOADADDR(.data);
+
+ /* Initialized data sections goes into RAM, load LMA copy after code */
+ .data :
+ {
+ . = ALIGN(4);
+ _sdata = .; /* create a global symbol at data start */
+ *(.data) /* .data sections */
+ *(.data*) /* .data* sections */
+
+ . = ALIGN(4);
+ _edata = .; /* define a global symbol at data end */
+ } >RAM1 AT> FLASH
+
+
+ /* Uninitialized data section */
+ . = ALIGN(4);
+ .bss :
+ {
+ /* This is used by the startup in order to initialize the .bss secion */
+ _sbss = .; /* define a global symbol at bss start */
+ __bss_start__ = _sbss;
+ *(.bss)
+ *(.bss*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ _ebss = .; /* define a global symbol at bss end */
+ __bss_end__ = _ebss;
+ } >RAM1
+
+ /* User_heap_stack section, used to check that there is enough RAM left */
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE ( end = . );
+ PROVIDE ( _end = . );
+ . = . + _Min_Heap_Size;
+ . = . + _Min_Stack_Size;
+ . = ALIGN(8);
+ } >RAM1
+
+
+
+ /* Remove information from the standard libraries */
+ /DISCARD/ :
+ {
+ libc.a ( * )
+ libm.a ( * )
+ libgcc.a ( * )
+ }
+
+ .ARM.attributes 0 : { *(.ARM.attributes) }
+ MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM2aRet_SHARED
+ MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM2aRet_SHARED
+ MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM2aRet_SHARED
+}
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..f79eec117
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,445 @@
+/**
+ ******************************************************************************
+ * @file startup_stm32wb55xx_cm4.s
+ * @author MCD Application Team
+ * @brief STM32WB55xx devices vector table GCC toolchain.
+ * This module performs:
+ * - Set the initial SP
+ * - Set the initial PC == Reset_Handler,
+ * - Set the vector table entries with the exceptions ISR address
+ * - Branches to main in the C library (which eventually
+ * calls main()).
+ * After Reset the Cortex-M4 processor is in Thread mode,
+ * priority is Privileged, and the Stack is set to Main.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+ .syntax unified
+ .cpu cortex-m4
+ .fpu softvfp
+ .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+/* start address for the .MB_MEM2 section. defined in linker script */
+.word _sMB_MEM2
+/* end address for the .MB_MEM2 section. defined in linker script */
+.word _eMB_MEM2
+
+/* INIT_BSS macro is used to fill the specified region [start : end] with zeros */
+.macro INIT_BSS start, end
+ ldr r0, =\start
+ ldr r1, =\end
+ movs r3, #0
+ bl LoopFillZerobss
+.endm
+
+/* INIT_DATA macro is used to copy data in the region [start : end] starting from 'src' */
+.macro INIT_DATA start, end, src
+ ldr r0, =\start
+ ldr r1, =\end
+ ldr r2, =\src
+ movs r3, #0
+ bl LoopCopyDataInit
+.endm
+
+.section .text.data_initializers
+CopyDataInit:
+ ldr r4, [r2, r3]
+ str r4, [r0, r3]
+ adds r3, r3, #4
+
+LoopCopyDataInit:
+ adds r4, r0, r3
+ cmp r4, r1
+ bcc CopyDataInit
+ bx lr
+
+FillZerobss:
+ str r3, [r0]
+ adds r0, r0, #4
+
+LoopFillZerobss:
+ cmp r0, r1
+ bcc FillZerobss
+ bx lr
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr r0, =_estack
+ mov sp, r0 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ INIT_DATA _sdata, _edata, _sidata
+
+/* Zero fill the bss segments. */
+ INIT_BSS _sbss, _ebss
+ INIT_BSS _sMB_MEM2, _eMB_MEM2
+
+/* Call the clock system intitialization function.*/
+ bl SystemInit
+/* Call static constructors */
+ bl __libc_init_array
+/* Call the application s entry point.*/
+ bl main
+
+LoopForever:
+ b LoopForever
+
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief This is the code that gets called when the processor receives an
+ * unexpected interrupt. This simply enters an infinite loop, preserving
+ * the system state for examination by a debugger.
+ *
+ * @param None
+ * @retval None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex-M4. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+ .section .isr_vector,"a",%progbits
+ .type g_pfnVectors, %object
+ .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+ .word _estack
+ .word Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0
+ .word PendSV_Handler
+ .word SysTick_Handler
+ .word WWDG_IRQHandler
+ .word PVD_PVM_IRQHandler
+ .word TAMP_STAMP_LSECSS_IRQHandler
+ .word RTC_WKUP_IRQHandler
+ .word FLASH_IRQHandler
+ .word RCC_IRQHandler
+ .word EXTI0_IRQHandler
+ .word EXTI1_IRQHandler
+ .word EXTI2_IRQHandler
+ .word EXTI3_IRQHandler
+ .word EXTI4_IRQHandler
+ .word DMA1_Channel1_IRQHandler
+ .word DMA1_Channel2_IRQHandler
+ .word DMA1_Channel3_IRQHandler
+ .word DMA1_Channel4_IRQHandler
+ .word DMA1_Channel5_IRQHandler
+ .word DMA1_Channel6_IRQHandler
+ .word DMA1_Channel7_IRQHandler
+ .word ADC1_IRQHandler
+ .word USB_HP_IRQHandler
+ .word USB_LP_IRQHandler
+ .word C2SEV_PWR_C2H_IRQHandler
+ .word COMP_IRQHandler
+ .word EXTI9_5_IRQHandler
+ .word TIM1_BRK_IRQHandler
+ .word TIM1_UP_TIM16_IRQHandler
+ .word TIM1_TRG_COM_TIM17_IRQHandler
+ .word TIM1_CC_IRQHandler
+ .word TIM2_IRQHandler
+ .word PKA_IRQHandler
+ .word I2C1_EV_IRQHandler
+ .word I2C1_ER_IRQHandler
+ .word I2C3_EV_IRQHandler
+ .word I2C3_ER_IRQHandler
+ .word SPI1_IRQHandler
+ .word SPI2_IRQHandler
+ .word USART1_IRQHandler
+ .word LPUART1_IRQHandler
+ .word SAI1_IRQHandler
+ .word TSC_IRQHandler
+ .word EXTI15_10_IRQHandler
+ .word RTC_Alarm_IRQHandler
+ .word CRS_IRQHandler
+ .word PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .word IPCC_C1_RX_IRQHandler
+ .word IPCC_C1_TX_IRQHandler
+ .word HSEM_IRQHandler
+ .word LPTIM1_IRQHandler
+ .word LPTIM2_IRQHandler
+ .word LCD_IRQHandler
+ .word QUADSPI_IRQHandler
+ .word AES1_IRQHandler
+ .word AES2_IRQHandler
+ .word RNG_IRQHandler
+ .word FPU_IRQHandler
+ .word DMA2_Channel1_IRQHandler
+ .word DMA2_Channel2_IRQHandler
+ .word DMA2_Channel3_IRQHandler
+ .word DMA2_Channel4_IRQHandler
+ .word DMA2_Channel5_IRQHandler
+ .word DMA2_Channel6_IRQHandler
+ .word DMA2_Channel7_IRQHandler
+ .word DMAMUX1_OVR_IRQHandler
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+ .weak NMI_Handler
+ .thumb_set NMI_Handler,Default_Handler
+
+ .weak HardFault_Handler
+ .thumb_set HardFault_Handler,Default_Handler
+
+ .weak MemManage_Handler
+ .thumb_set MemManage_Handler,Default_Handler
+
+ .weak BusFault_Handler
+ .thumb_set BusFault_Handler,Default_Handler
+
+ .weak UsageFault_Handler
+ .thumb_set UsageFault_Handler,Default_Handler
+
+ .weak SVC_Handler
+ .thumb_set SVC_Handler,Default_Handler
+
+ .weak DebugMon_Handler
+ .thumb_set DebugMon_Handler,Default_Handler
+
+ .weak PendSV_Handler
+ .thumb_set PendSV_Handler,Default_Handler
+
+ .weak SysTick_Handler
+ .thumb_set SysTick_Handler,Default_Handler
+
+ .weak WWDG_IRQHandler
+ .thumb_set WWDG_IRQHandler,Default_Handler
+
+ .weak PVD_PVM_IRQHandler
+ .thumb_set PVD_PVM_IRQHandler,Default_Handler
+
+ .weak TAMP_STAMP_LSECSS_IRQHandler
+ .thumb_set TAMP_STAMP_LSECSS_IRQHandler,Default_Handler
+
+ .weak RTC_WKUP_IRQHandler
+ .thumb_set RTC_WKUP_IRQHandler,Default_Handler
+
+ .weak FLASH_IRQHandler
+ .thumb_set FLASH_IRQHandler,Default_Handler
+
+ .weak RCC_IRQHandler
+ .thumb_set RCC_IRQHandler,Default_Handler
+
+ .weak EXTI0_IRQHandler
+ .thumb_set EXTI0_IRQHandler,Default_Handler
+
+ .weak EXTI1_IRQHandler
+ .thumb_set EXTI1_IRQHandler,Default_Handler
+
+ .weak EXTI2_IRQHandler
+ .thumb_set EXTI2_IRQHandler,Default_Handler
+
+ .weak EXTI3_IRQHandler
+ .thumb_set EXTI3_IRQHandler,Default_Handler
+
+ .weak EXTI4_IRQHandler
+ .thumb_set EXTI4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel1_IRQHandler
+ .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel2_IRQHandler
+ .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel3_IRQHandler
+ .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel4_IRQHandler
+ .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel5_IRQHandler
+ .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel6_IRQHandler
+ .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel7_IRQHandler
+ .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
+
+ .weak ADC1_IRQHandler
+ .thumb_set ADC1_IRQHandler,Default_Handler
+
+ .weak USB_HP_IRQHandler
+ .thumb_set USB_HP_IRQHandler,Default_Handler
+
+ .weak USB_LP_IRQHandler
+ .thumb_set USB_LP_IRQHandler,Default_Handler
+
+ .weak C2SEV_PWR_C2H_IRQHandler
+ .thumb_set C2SEV_PWR_C2H_IRQHandler,Default_Handler
+
+ .weak COMP_IRQHandler
+ .thumb_set COMP_IRQHandler,Default_Handler
+
+ .weak EXTI9_5_IRQHandler
+ .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+ .weak TIM1_BRK_IRQHandler
+ .thumb_set TIM1_BRK_IRQHandler,Default_Handler
+
+ .weak TIM1_UP_TIM16_IRQHandler
+ .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler
+
+ .weak TIM1_TRG_COM_TIM17_IRQHandler
+ .thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler
+
+ .weak TIM1_CC_IRQHandler
+ .thumb_set TIM1_CC_IRQHandler,Default_Handler
+
+ .weak TIM2_IRQHandler
+ .thumb_set TIM2_IRQHandler,Default_Handler
+
+ .weak PKA_IRQHandler
+ .thumb_set PKA_IRQHandler,Default_Handler
+
+ .weak I2C1_EV_IRQHandler
+ .thumb_set I2C1_EV_IRQHandler,Default_Handler
+
+ .weak I2C1_ER_IRQHandler
+ .thumb_set I2C1_ER_IRQHandler,Default_Handler
+
+ .weak I2C3_EV_IRQHandler
+ .thumb_set I2C3_EV_IRQHandler,Default_Handler
+
+ .weak I2C3_ER_IRQHandler
+ .thumb_set I2C3_ER_IRQHandler,Default_Handler
+
+ .weak SPI1_IRQHandler
+ .thumb_set SPI1_IRQHandler,Default_Handler
+
+ .weak SPI2_IRQHandler
+ .thumb_set SPI2_IRQHandler,Default_Handler
+
+ .weak USART1_IRQHandler
+ .thumb_set USART1_IRQHandler,Default_Handler
+
+ .weak LPUART1_IRQHandler
+ .thumb_set LPUART1_IRQHandler,Default_Handler
+
+ .weak SAI1_IRQHandler
+ .thumb_set SAI1_IRQHandler,Default_Handler
+
+ .weak TSC_IRQHandler
+ .thumb_set TSC_IRQHandler,Default_Handler
+
+ .weak EXTI15_10_IRQHandler
+ .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+ .weak RTC_Alarm_IRQHandler
+ .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+ .weak CRS_IRQHandler
+ .thumb_set CRS_IRQHandler,Default_Handler
+
+ .weak PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .thumb_set PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_RX_IRQHandler
+ .thumb_set IPCC_C1_RX_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_TX_IRQHandler
+ .thumb_set IPCC_C1_TX_IRQHandler,Default_Handler
+
+ .weak HSEM_IRQHandler
+ .thumb_set HSEM_IRQHandler,Default_Handler
+
+ .weak LPTIM1_IRQHandler
+ .thumb_set LPTIM1_IRQHandler,Default_Handler
+
+ .weak LPTIM2_IRQHandler
+ .thumb_set LPTIM2_IRQHandler,Default_Handler
+
+ .weak LCD_IRQHandler
+ .thumb_set LCD_IRQHandler,Default_Handler
+
+ .weak QUADSPI_IRQHandler
+ .thumb_set QUADSPI_IRQHandler,Default_Handler
+
+ .weak AES1_IRQHandler
+ .thumb_set AES1_IRQHandler,Default_Handler
+
+ .weak AES2_IRQHandler
+ .thumb_set AES2_IRQHandler,Default_Handler
+
+ .weak RNG_IRQHandler
+ .thumb_set RNG_IRQHandler,Default_Handler
+
+ .weak FPU_IRQHandler
+ .thumb_set FPU_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel1_IRQHandler
+ .thumb_set DMA2_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel2_IRQHandler
+ .thumb_set DMA2_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel3_IRQHandler
+ .thumb_set DMA2_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel4_IRQHandler
+ .thumb_set DMA2_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel5_IRQHandler
+ .thumb_set DMA2_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel6_IRQHandler
+ .thumb_set DMA2_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel7_IRQHandler
+ .thumb_set DMA2_Channel7_IRQHandler,Default_Handler
+
+ .weak DMAMUX1_OVR_IRQHandler
+ .thumb_set DMAMUX1_OVR_IRQHandler,Default_Handler
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/syscalls.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/syscalls.c
new file mode 100644
index 000000000..9b7c4071a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/SW4STM32/syscalls.c
@@ -0,0 +1,207 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Author : Auto-generated by System workbench for STM32
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Target : STMicroelectronics STM32
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+** @attention
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of STMicroelectronics nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+#include <signal.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/times.h>
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/readme.txt
index ee626bb2b..2d823956d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_FFD/readme.txt
@@ -25,7 +25,7 @@ How to use MAC 802.15.4 Association and Data exchange.
This application requires two STM32WB55xx-Nucleo boards. One device will act as
802.15.4 coordinator ensuring association response and network establishment.
-The other device will act as a MAC 802.15.4 EFD - Node. The Node request
+The other device will act as a MAC 802.15.4 RFD - Node. The Node request
association on startup and send data to the coordinator.
Below example implements the FFD Devices.
@@ -103,8 +103,8 @@ Minimum requirements for the demo:
- 1 STM32WB55xx-Nucleo board in MAC 802.15.4 FFD mode
using current generated binary.
(This device will be referred as COORDINATOR )
-- 1 STM32WB55xx-Nucleo board in MAC 802.15.4 Node - EFD
-(see MAC 802.14.4 EFD example)
+- 1 STM32WB55xx-Nucleo board in MAC 802.15.4 Node - RFD
+(see MAC 802.14.4 RFD example)
(This device will be referred as NODE )
In order to make the program work, you must do the following:
@@ -117,7 +117,7 @@ In order to make the program work, you must do the following:
- The example run on Reset
NODE :
- - Refers to MAC 802.14.4 EFD example to build
+ - Refers to MAC 802.14.4 RFD example to build
and load generated image
if you want to get the traces in real time, you can connects an HyperTerminal
@@ -142,7 +142,7 @@ By default, after a reset, both board starts. Coordinator must be started firstl
to the node association request.
This MAC 802.15.4 example is to demonstrate Point-to-Point communication using MAC components between
-a FFD (ie.: the COORDINATOR) and an EFD (ie.: the NODE).
+a FFD (ie.: the COORDINATOR) and an RFD (ie.: the NODE).
Upon COORDINATOR start, the device initializes the MAC 802.15.4 and associates resources in non-beaconned
enable mode.
@@ -158,7 +158,7 @@ the coordinator is started.
On NODE side, the MAC layer is initialized on startup. In this state, blue LED (ID 1) is switch on.
-EFD issues an association request to the COORDINATOR to retrieve its short address.
+RFD issues an association request to the COORDINATOR to retrieve its short address.
On in coming association request FFD's green LED (ID 2) blinks.
Once the association between two devices is completed, RFD's green LED (ID 2) is switch on to indicate the node
@@ -167,7 +167,7 @@ is associated to the coordinator.
The NODE sends data to the coordinator that issues a Data Indication.
On both devices side, on data transmission red led (ID 3) blinked.
-User can issue data from EFD to FFD, by pressing the button 1 (SW1). Data transmission can be then observe using OTA sniffer,
+User can issue data from RFD to FFD, by pressing the button 1 (SW1). Data transmission can be then observe using OTA sniffer,
UART logs and LED status.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/Core/Src/app_entry.c
index fcd4fdde9..57fb920dc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/Core/Src/app_entry.c
@@ -163,7 +163,15 @@ void APP_ENTRY_Init_RFD(void)
{
}
-
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_UserEvtRx( void * pPayload )
{
/* Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/Mac_802_15_4_RFD_Demo.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/Mac_802_15_4_RFD_Demo.uvoptx
new file mode 100644
index 000000000..ef7a08062
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/Mac_802_15_4_RFD_Demo.uvoptx
@@ -0,0 +1,809 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>8000000</CLKADS>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>0</RunSim>
+ <RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath></ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>18</CpuCode>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>1</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>0</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/Core/src</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm_logging.c</PathWithFileName>
+ <FilenameWithoutPath>stm_logging.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/app_rfd_mac_802_15_4.c</PathWithFileName>
+ <FilenameWithoutPath>app_rfd_mac_802_15_4.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/app_rfd_mac_802_15_4_process.c</PathWithFileName>
+ <FilenameWithoutPath>app_rfd_mac_802_15_4_process.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_adc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/mac_802_15_4/inc</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_config.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_config.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_core.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_core.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_errors.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_errors.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_sap.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_sap.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_types.h</PathWithFileName>
+ <FilenameWithoutPath>802_15_4_mac_types.h</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/mac_802_15_4/src</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c</PathWithFileName>
+ <FilenameWithoutPath>mac_802_15_4_core_wb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/Mac_802_15_4_RFD_Demo.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/Mac_802_15_4_RFD_Demo.uvprojx
new file mode 100644
index 000000000..47babdba2
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/Mac_802_15_4_RFD_Demo.uvprojx
@@ -0,0 +1,676 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+ <SchemaVersion>2.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>STM32WB55RGVx</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
+ <Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20020000-0x2002FFFF) IRAM2aRet_SHARED(0x20030000-0x20033FFF) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>P-NUCLEO-WB55.Nucleo\Exe\</OutputDirectory>
+ <OutputName>Mac_802_15_4_RFD_Demo</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>0</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath></ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments>-REMAP -MPU</SimDllArguments>
+ <SimDlgDll>DCM.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments>-MPU</TargetDllArguments>
+ <TargetDlgDll>TCM.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>4101</DriverSelection>
+ </Flash1>
+ <bUseTDR>1</bUseTDR>
+ <Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
+ <Flash3>"" ()</Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>1</AdsALst>
+ <AdsACrf>1</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>"Cortex-M4"</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>2</RvdsVP>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>1</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>0</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x20020000</StartAddress>
+ <Size>0x10000</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x20020000</StartAddress>
+ <Size>0x10000</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>1</interw>
+ <Optim>4</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>1</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <uSurpInc>0</uSurpInc>
+ <uC99>0</uC99>
+ <uGnu>0</uGnu>
+ <useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
+ <VariousControls>
+ <MiscControls>--C99</MiscControls>
+ <Define>CORE_CM4,USE_HAL_DRIVER,USE_STM32WBXX_NUCLEO,STM32WB55xx,MAC_802_15_4_WB</Define>
+ <Undefine></Undefine>
+ <IncludePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/CMSIS/Include;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/;../Core/Inc;../STM32_WPAN/app;../STM32_WPAN/Target;../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>0</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x08000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
+ <pXoBase></pXoBase>
+ <ScatterFile>stm32wb55xx_flash_cm4.sct</ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc>--diag_suppress=L6329</Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <Files>
+ <File>
+ <FileName>startup_stm32wb55xx_cm4.s</FileName>
+ <FileType>2</FileType>
+ <FilePath>startup_stm32wb55xx_cm4.s</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/Core/src</GroupName>
+ <Files>
+ <File>
+ <FileName>app_entry.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/app_entry.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_lpm_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32_lpm_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/hw_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>main.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/main.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_it.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32wbxx_it.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_logging.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm_logging.c</FilePath>
+ </File>
+ <File>
+ <FileName>system_stm32wbxx.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/system_stm32wbxx.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/app</GroupName>
+ <Files>
+ <File>
+ <FileName>app_rfd_mac_802_15_4.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/app/app_rfd_mac_802_15_4.c</FilePath>
+ </File>
+ <File>
+ <FileName>app_rfd_mac_802_15_4_process.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/app/app_rfd_mac_802_15_4_process.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/target</GroupName>
+ <Files>
+ <File>
+ <FileName>hw_ipcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/Target/hw_ipcc.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Doc</GroupName>
+ <Files>
+ <File>
+ <FileName>readme.txt</FileName>
+ <FileType>5</FileType>
+ <FilePath>../readme.txt</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_nucleo.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_hal.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_adc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_adc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_cortex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_gpio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_ipcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <Files>
+ <File>
+ <FileName>shci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <Files>
+ <File>
+ <FileName>shci_tl.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_mbox.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/mac_802_15_4/inc</GroupName>
+ <Files>
+ <File>
+ <FileName>802_15_4_mac_config.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_config.h</FilePath>
+ </File>
+ <File>
+ <FileName>802_15_4_mac_core.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_core.h</FilePath>
+ </File>
+ <File>
+ <FileName>802_15_4_mac_errors.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_errors.h</FilePath>
+ </File>
+ <File>
+ <FileName>802_15_4_mac_sap.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_sap.h</FilePath>
+ </File>
+ <File>
+ <FileName>802_15_4_mac_types.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\mac_802_15_4\core\inc\802_15_4_mac_types.h</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/mac_802_15_4/src</GroupName>
+ <Files>
+ <File>
+ <FileName>mac_802_15_4_core_wb.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <Files>
+ <File>
+ <FileName>dbg_trace.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</FilePath>
+ </File>
+ <File>
+ <FileName>otp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_list.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_queue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32_lpm.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_seq.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/sequencer/stm32_seq.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+ <RTE>
+ <apis/>
+ <components/>
+ <files/>
+ </RTE>
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..e05e3c5ca
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,368 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : STM32WB55xx devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the CortexM4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;******************************************************************************
+;* @attention
+;*
+;* Copyright (c) 2019 STMicroelectronics. All rights reserved.
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; <h> Stack Configuration
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size EQU 0x1000
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size EQU 0x400
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM detector
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper and TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_PVM_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_LSECSS_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_IRQHandler [WEAK]
+ EXPORT USB_HP_IRQHandler [WEAK]
+ EXPORT USB_LP_IRQHandler [WEAK]
+ EXPORT C2SEV_PWR_C2H_IRQHandler [WEAK]
+ EXPORT COMP_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_IRQHandler [WEAK]
+ EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_TIM17_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT PKA_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT TSC_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+ EXPORT PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler [WEAK]
+ EXPORT IPCC_C1_RX_IRQHandler [WEAK]
+ EXPORT IPCC_C1_TX_IRQHandler [WEAK]
+ EXPORT HSEM_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT LCD_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT AES1_IRQHandler [WEAK]
+ EXPORT AES2_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT DMA2_Channel1_IRQHandler [WEAK]
+ EXPORT DMA2_Channel2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel3_IRQHandler [WEAK]
+ EXPORT DMA2_Channel4_IRQHandler [WEAK]
+ EXPORT DMA2_Channel5_IRQHandler [WEAK]
+ EXPORT DMA2_Channel6_IRQHandler [WEAK]
+ EXPORT DMA2_Channel7_IRQHandler [WEAK]
+ EXPORT DMAMUX1_OVR_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_PVM_IRQHandler
+TAMP_STAMP_LSECSS_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_IRQHandler
+USB_HP_IRQHandler
+USB_LP_IRQHandler
+C2SEV_PWR_C2H_IRQHandler
+COMP_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_IRQHandler
+TIM1_UP_TIM16_IRQHandler
+TIM1_TRG_COM_TIM17_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+PKA_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+LPUART1_IRQHandler
+SAI1_IRQHandler
+TSC_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+CRS_IRQHandler
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+IPCC_C1_RX_IRQHandler
+IPCC_C1_TX_IRQHandler
+HSEM_IRQHandler
+LPTIM1_IRQHandler
+LPTIM2_IRQHandler
+LCD_IRQHandler
+QUADSPI_IRQHandler
+AES1_IRQHandler
+AES2_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_IRQHandler
+DMA2_Channel5_IRQHandler
+DMA2_Channel6_IRQHandler
+DMA2_Channel7_IRQHandler
+DMAMUX1_OVR_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/stm32wb55xx_flash_cm4.sct
new file mode 100644
index 000000000..e8416bf09
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -0,0 +1,21 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x08000000 0x00080000 { ; load region size_region
+ ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ }
+ RW_IRAM1 0x20020000 0x10000 { ; RW data
+ .ANY (+RW +ZI)
+ }
+ RW_RAM_SHARED 0x20030000 0x4000 { ; RW data
+ *(MAPPING_TABLE)
+ *(MB_MEM1)
+ *(MB_MEM2)
+ }
+ }
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/.cproject
new file mode 100644
index 000000000..b83e552d9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/.cproject
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1283841294">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1283841294" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <externalSettings/>
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1283841294" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1283841294." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.1930374931" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1746862909" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.179514989" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" useByScannerDiscovery="false" value="STM32WB55RGVx" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.382593489" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" useByScannerDiscovery="false" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" useByScannerDiscovery="false" valueType="stringList">
+ <listOptionValue builtIn="false" value="ARM Cortex-M4"/>
+ <listOptionValue builtIn="false" value="CM4"/>
+ </option>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.359136976" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1302248934" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.967797147" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1103590932" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+ <builder buildPath="${workspace_loc:/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1065206248" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <outputEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
+ </outputEntries>
+ </builder>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1713093695" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.763197471" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.1251010398" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.include.paths.2115169675" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/"/>
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/Target"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.1480488909" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="CORE_CM4"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="MAC_802_15_4_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1668936070" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1337477688" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.529593955" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.566832397" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.2097346734" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1015759688" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.include.paths.1586318194" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/"/>
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/app"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/Target"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.1421119778" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="CORE_CM4"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="MAC_802_15_4_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.584359301" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1384944037" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1130019670" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.1183150889" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1506690703" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" useByScannerDiscovery="false" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.c.link.option.libs.1596700392" name="Libraries (-l)" superClass="gnu.c.link.option.libs" useByScannerDiscovery="false"/>
+ <option id="gnu.c.link.option.paths.1762301490" name="Library search path (-L)" superClass="gnu.c.link.option.paths" useByScannerDiscovery="false"/>
+ <option id="gnu.c.link.option.ldflags.434448184" name="Linker flags" superClass="gnu.c.link.option.ldflags" useByScannerDiscovery="false" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.c.link.option.other.47736867" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.807376817" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.595204476" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.666320985" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.cpp.link.option.libs.699617751" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+ <option id="gnu.cpp.link.option.paths.1807695179" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
+ <option id="gnu.cpp.link.option.flags.169987564" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.cpp.link.option.other.1033577643" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1625792894" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1659153855" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.1899558444" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+ <option id="gnu.both.asm.option.include.paths.1383552807" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.365883067" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.769443276" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+ </tool>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo.fr.ac6.managedbuild.target.gnu.cross.exe.884609324" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1283841294;fr.ac6.managedbuild.config.gnu.cross.exe.debug.1283841294.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1713093695;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1337477688">
+ <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="refreshScope" versionNumber="2">
+ <configuration artifactName="${ProjName}" configurationName="Debug">
+ <resource resourceType="PROJECT" workspacePath="P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo"/>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/.project
new file mode 100644
index 000000000..d817f335c
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/.project
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
+ <name>P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo</name>
+ <comment/>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>Application/SW4STM32/syscalls.c</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/syscalls.c</location>
+ </link><link>
+ <name>Application/SW4STM32/startup_stm32wb55xx_cm4.s</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/startup_stm32wb55xx_cm4.s</location>
+ </link>
+
+ <link>
+ <name>Application/User/Core/src/app_entry.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/app_entry.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/stm32_lpm_if.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32_lpm_if.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/hw_uart.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/hw_uart.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/main.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/main.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/stm32wbxx_it.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_it.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/stm_logging.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm_logging.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/src/system_stm32wbxx.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/system_stm32wbxx.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/app/app_rfd_mac_802_15_4.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/app/app_rfd_mac_802_15_4.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/app/app_rfd_mac_802_15_4_process.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/app/app_rfd_mac_802_15_4_process.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/target/hw_ipcc.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/Target/hw_ipcc.c</location>
+ </link>
+ <link>
+ <name>Doc/readme.txt</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/readme.txt</location>
+ </link>
+ <link>
+ <name>Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_adc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_adc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_cortex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_gpio.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_ipcc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_ipcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_config.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_config.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_core.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_core.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_errors.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_errors.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_sap.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_sap.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/inc/802_15_4_mac_types.h</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/inc/802_15_4_mac_types.h</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/mac_802_15_4/src/mac_802_15_4_core_wb.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/mac_802_15_4/core/src/mac_802_15_4_core_wb.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/dbg_trace.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/otp.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/otp.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/stm_list.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_list.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/utilities/stm_queue.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</location>
+ </link>
+ <link>
+ <name>Utilities/stm32_lpm.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Utilities/lpm/tiny_lpm/stm32_lpm.c</location>
+ </link>
+ <link>
+ <name>Utilities/stm32_seq.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Utilities/sequencer/stm32_seq.c</location>
+ </link>
+ </linkedResources>
+</projectDescription> \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/stm32wb55xx_flash_cm4.ld
new file mode 100644
index 000000000..c3e6f9301
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/P-NUCLEO-WB55.Nucleo_Mac_802_15_4_RFD_Demo/stm32wb55xx_flash_cm4.ld
@@ -0,0 +1,187 @@
+/**
+*****************************************************************************
+**
+** File : stm32wb55xx_flash_cm4.ld
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 Ac6</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of Ac6 nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20030000; /* end of RAM */
+/* Generate a link error if heap and stack don't fit into RAM */
+_Min_Heap_Size = 0x400; /* required amount of heap */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
+
+/* Specify the memory areas */
+MEMORY
+{
+FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
+RAM1 (xrw) : ORIGIN = 0x20020000, LENGTH = 64k
+RAM2aRet_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 16K
+}
+
+/* Define output sections */
+SECTIONS
+{
+ /* The startup code goes first into FLASH */
+ .isr_vector :
+ {
+ . = ALIGN(4);
+ KEEP(*(.isr_vector)) /* Startup code */
+ . = ALIGN(4);
+ } >FLASH
+
+ /* The program code and other data goes into FLASH */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* Constant data goes into FLASH */
+ .rodata :
+ {
+ . = ALIGN(4);
+ *(.rodata) /* .rodata sections (constants, strings, etc.) */
+ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+ .ARM : {
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ } >FLASH
+
+ .preinit_array :
+ {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array*))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } >FLASH
+ .init_array :
+ {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array*))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } >FLASH
+ .fini_array :
+ {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(SORT(.fini_array.*)))
+ KEEP (*(.fini_array*))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } >FLASH
+
+ /* used by the startup to initialize data */
+ _sidata = LOADADDR(.data);
+
+ /* Initialized data sections goes into RAM, load LMA copy after code */
+ .data :
+ {
+ . = ALIGN(4);
+ _sdata = .; /* create a global symbol at data start */
+ *(.data) /* .data sections */
+ *(.data*) /* .data* sections */
+
+ . = ALIGN(4);
+ _edata = .; /* define a global symbol at data end */
+ } >RAM1 AT> FLASH
+
+
+ /* Uninitialized data section */
+ . = ALIGN(4);
+ .bss :
+ {
+ /* This is used by the startup in order to initialize the .bss secion */
+ _sbss = .; /* define a global symbol at bss start */
+ __bss_start__ = _sbss;
+ *(.bss)
+ *(.bss*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ _ebss = .; /* define a global symbol at bss end */
+ __bss_end__ = _ebss;
+ } >RAM1
+
+ /* User_heap_stack section, used to check that there is enough RAM left */
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE ( end = . );
+ PROVIDE ( _end = . );
+ . = . + _Min_Heap_Size;
+ . = . + _Min_Stack_Size;
+ . = ALIGN(8);
+ } >RAM1
+
+
+
+ /* Remove information from the standard libraries */
+ /DISCARD/ :
+ {
+ libc.a ( * )
+ libm.a ( * )
+ libgcc.a ( * )
+ }
+
+ .ARM.attributes 0 : { *(.ARM.attributes) }
+ MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM2aRet_SHARED
+ MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM2aRet_SHARED
+ MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM2aRet_SHARED
+}
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..f79eec117
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,445 @@
+/**
+ ******************************************************************************
+ * @file startup_stm32wb55xx_cm4.s
+ * @author MCD Application Team
+ * @brief STM32WB55xx devices vector table GCC toolchain.
+ * This module performs:
+ * - Set the initial SP
+ * - Set the initial PC == Reset_Handler,
+ * - Set the vector table entries with the exceptions ISR address
+ * - Branches to main in the C library (which eventually
+ * calls main()).
+ * After Reset the Cortex-M4 processor is in Thread mode,
+ * priority is Privileged, and the Stack is set to Main.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+ .syntax unified
+ .cpu cortex-m4
+ .fpu softvfp
+ .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+/* start address for the .MB_MEM2 section. defined in linker script */
+.word _sMB_MEM2
+/* end address for the .MB_MEM2 section. defined in linker script */
+.word _eMB_MEM2
+
+/* INIT_BSS macro is used to fill the specified region [start : end] with zeros */
+.macro INIT_BSS start, end
+ ldr r0, =\start
+ ldr r1, =\end
+ movs r3, #0
+ bl LoopFillZerobss
+.endm
+
+/* INIT_DATA macro is used to copy data in the region [start : end] starting from 'src' */
+.macro INIT_DATA start, end, src
+ ldr r0, =\start
+ ldr r1, =\end
+ ldr r2, =\src
+ movs r3, #0
+ bl LoopCopyDataInit
+.endm
+
+.section .text.data_initializers
+CopyDataInit:
+ ldr r4, [r2, r3]
+ str r4, [r0, r3]
+ adds r3, r3, #4
+
+LoopCopyDataInit:
+ adds r4, r0, r3
+ cmp r4, r1
+ bcc CopyDataInit
+ bx lr
+
+FillZerobss:
+ str r3, [r0]
+ adds r0, r0, #4
+
+LoopFillZerobss:
+ cmp r0, r1
+ bcc FillZerobss
+ bx lr
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr r0, =_estack
+ mov sp, r0 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ INIT_DATA _sdata, _edata, _sidata
+
+/* Zero fill the bss segments. */
+ INIT_BSS _sbss, _ebss
+ INIT_BSS _sMB_MEM2, _eMB_MEM2
+
+/* Call the clock system intitialization function.*/
+ bl SystemInit
+/* Call static constructors */
+ bl __libc_init_array
+/* Call the application s entry point.*/
+ bl main
+
+LoopForever:
+ b LoopForever
+
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief This is the code that gets called when the processor receives an
+ * unexpected interrupt. This simply enters an infinite loop, preserving
+ * the system state for examination by a debugger.
+ *
+ * @param None
+ * @retval None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex-M4. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+ .section .isr_vector,"a",%progbits
+ .type g_pfnVectors, %object
+ .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+ .word _estack
+ .word Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0
+ .word PendSV_Handler
+ .word SysTick_Handler
+ .word WWDG_IRQHandler
+ .word PVD_PVM_IRQHandler
+ .word TAMP_STAMP_LSECSS_IRQHandler
+ .word RTC_WKUP_IRQHandler
+ .word FLASH_IRQHandler
+ .word RCC_IRQHandler
+ .word EXTI0_IRQHandler
+ .word EXTI1_IRQHandler
+ .word EXTI2_IRQHandler
+ .word EXTI3_IRQHandler
+ .word EXTI4_IRQHandler
+ .word DMA1_Channel1_IRQHandler
+ .word DMA1_Channel2_IRQHandler
+ .word DMA1_Channel3_IRQHandler
+ .word DMA1_Channel4_IRQHandler
+ .word DMA1_Channel5_IRQHandler
+ .word DMA1_Channel6_IRQHandler
+ .word DMA1_Channel7_IRQHandler
+ .word ADC1_IRQHandler
+ .word USB_HP_IRQHandler
+ .word USB_LP_IRQHandler
+ .word C2SEV_PWR_C2H_IRQHandler
+ .word COMP_IRQHandler
+ .word EXTI9_5_IRQHandler
+ .word TIM1_BRK_IRQHandler
+ .word TIM1_UP_TIM16_IRQHandler
+ .word TIM1_TRG_COM_TIM17_IRQHandler
+ .word TIM1_CC_IRQHandler
+ .word TIM2_IRQHandler
+ .word PKA_IRQHandler
+ .word I2C1_EV_IRQHandler
+ .word I2C1_ER_IRQHandler
+ .word I2C3_EV_IRQHandler
+ .word I2C3_ER_IRQHandler
+ .word SPI1_IRQHandler
+ .word SPI2_IRQHandler
+ .word USART1_IRQHandler
+ .word LPUART1_IRQHandler
+ .word SAI1_IRQHandler
+ .word TSC_IRQHandler
+ .word EXTI15_10_IRQHandler
+ .word RTC_Alarm_IRQHandler
+ .word CRS_IRQHandler
+ .word PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .word IPCC_C1_RX_IRQHandler
+ .word IPCC_C1_TX_IRQHandler
+ .word HSEM_IRQHandler
+ .word LPTIM1_IRQHandler
+ .word LPTIM2_IRQHandler
+ .word LCD_IRQHandler
+ .word QUADSPI_IRQHandler
+ .word AES1_IRQHandler
+ .word AES2_IRQHandler
+ .word RNG_IRQHandler
+ .word FPU_IRQHandler
+ .word DMA2_Channel1_IRQHandler
+ .word DMA2_Channel2_IRQHandler
+ .word DMA2_Channel3_IRQHandler
+ .word DMA2_Channel4_IRQHandler
+ .word DMA2_Channel5_IRQHandler
+ .word DMA2_Channel6_IRQHandler
+ .word DMA2_Channel7_IRQHandler
+ .word DMAMUX1_OVR_IRQHandler
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+ .weak NMI_Handler
+ .thumb_set NMI_Handler,Default_Handler
+
+ .weak HardFault_Handler
+ .thumb_set HardFault_Handler,Default_Handler
+
+ .weak MemManage_Handler
+ .thumb_set MemManage_Handler,Default_Handler
+
+ .weak BusFault_Handler
+ .thumb_set BusFault_Handler,Default_Handler
+
+ .weak UsageFault_Handler
+ .thumb_set UsageFault_Handler,Default_Handler
+
+ .weak SVC_Handler
+ .thumb_set SVC_Handler,Default_Handler
+
+ .weak DebugMon_Handler
+ .thumb_set DebugMon_Handler,Default_Handler
+
+ .weak PendSV_Handler
+ .thumb_set PendSV_Handler,Default_Handler
+
+ .weak SysTick_Handler
+ .thumb_set SysTick_Handler,Default_Handler
+
+ .weak WWDG_IRQHandler
+ .thumb_set WWDG_IRQHandler,Default_Handler
+
+ .weak PVD_PVM_IRQHandler
+ .thumb_set PVD_PVM_IRQHandler,Default_Handler
+
+ .weak TAMP_STAMP_LSECSS_IRQHandler
+ .thumb_set TAMP_STAMP_LSECSS_IRQHandler,Default_Handler
+
+ .weak RTC_WKUP_IRQHandler
+ .thumb_set RTC_WKUP_IRQHandler,Default_Handler
+
+ .weak FLASH_IRQHandler
+ .thumb_set FLASH_IRQHandler,Default_Handler
+
+ .weak RCC_IRQHandler
+ .thumb_set RCC_IRQHandler,Default_Handler
+
+ .weak EXTI0_IRQHandler
+ .thumb_set EXTI0_IRQHandler,Default_Handler
+
+ .weak EXTI1_IRQHandler
+ .thumb_set EXTI1_IRQHandler,Default_Handler
+
+ .weak EXTI2_IRQHandler
+ .thumb_set EXTI2_IRQHandler,Default_Handler
+
+ .weak EXTI3_IRQHandler
+ .thumb_set EXTI3_IRQHandler,Default_Handler
+
+ .weak EXTI4_IRQHandler
+ .thumb_set EXTI4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel1_IRQHandler
+ .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel2_IRQHandler
+ .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel3_IRQHandler
+ .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel4_IRQHandler
+ .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel5_IRQHandler
+ .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel6_IRQHandler
+ .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel7_IRQHandler
+ .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
+
+ .weak ADC1_IRQHandler
+ .thumb_set ADC1_IRQHandler,Default_Handler
+
+ .weak USB_HP_IRQHandler
+ .thumb_set USB_HP_IRQHandler,Default_Handler
+
+ .weak USB_LP_IRQHandler
+ .thumb_set USB_LP_IRQHandler,Default_Handler
+
+ .weak C2SEV_PWR_C2H_IRQHandler
+ .thumb_set C2SEV_PWR_C2H_IRQHandler,Default_Handler
+
+ .weak COMP_IRQHandler
+ .thumb_set COMP_IRQHandler,Default_Handler
+
+ .weak EXTI9_5_IRQHandler
+ .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+ .weak TIM1_BRK_IRQHandler
+ .thumb_set TIM1_BRK_IRQHandler,Default_Handler
+
+ .weak TIM1_UP_TIM16_IRQHandler
+ .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler
+
+ .weak TIM1_TRG_COM_TIM17_IRQHandler
+ .thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler
+
+ .weak TIM1_CC_IRQHandler
+ .thumb_set TIM1_CC_IRQHandler,Default_Handler
+
+ .weak TIM2_IRQHandler
+ .thumb_set TIM2_IRQHandler,Default_Handler
+
+ .weak PKA_IRQHandler
+ .thumb_set PKA_IRQHandler,Default_Handler
+
+ .weak I2C1_EV_IRQHandler
+ .thumb_set I2C1_EV_IRQHandler,Default_Handler
+
+ .weak I2C1_ER_IRQHandler
+ .thumb_set I2C1_ER_IRQHandler,Default_Handler
+
+ .weak I2C3_EV_IRQHandler
+ .thumb_set I2C3_EV_IRQHandler,Default_Handler
+
+ .weak I2C3_ER_IRQHandler
+ .thumb_set I2C3_ER_IRQHandler,Default_Handler
+
+ .weak SPI1_IRQHandler
+ .thumb_set SPI1_IRQHandler,Default_Handler
+
+ .weak SPI2_IRQHandler
+ .thumb_set SPI2_IRQHandler,Default_Handler
+
+ .weak USART1_IRQHandler
+ .thumb_set USART1_IRQHandler,Default_Handler
+
+ .weak LPUART1_IRQHandler
+ .thumb_set LPUART1_IRQHandler,Default_Handler
+
+ .weak SAI1_IRQHandler
+ .thumb_set SAI1_IRQHandler,Default_Handler
+
+ .weak TSC_IRQHandler
+ .thumb_set TSC_IRQHandler,Default_Handler
+
+ .weak EXTI15_10_IRQHandler
+ .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+ .weak RTC_Alarm_IRQHandler
+ .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+ .weak CRS_IRQHandler
+ .thumb_set CRS_IRQHandler,Default_Handler
+
+ .weak PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .thumb_set PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_RX_IRQHandler
+ .thumb_set IPCC_C1_RX_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_TX_IRQHandler
+ .thumb_set IPCC_C1_TX_IRQHandler,Default_Handler
+
+ .weak HSEM_IRQHandler
+ .thumb_set HSEM_IRQHandler,Default_Handler
+
+ .weak LPTIM1_IRQHandler
+ .thumb_set LPTIM1_IRQHandler,Default_Handler
+
+ .weak LPTIM2_IRQHandler
+ .thumb_set LPTIM2_IRQHandler,Default_Handler
+
+ .weak LCD_IRQHandler
+ .thumb_set LCD_IRQHandler,Default_Handler
+
+ .weak QUADSPI_IRQHandler
+ .thumb_set QUADSPI_IRQHandler,Default_Handler
+
+ .weak AES1_IRQHandler
+ .thumb_set AES1_IRQHandler,Default_Handler
+
+ .weak AES2_IRQHandler
+ .thumb_set AES2_IRQHandler,Default_Handler
+
+ .weak RNG_IRQHandler
+ .thumb_set RNG_IRQHandler,Default_Handler
+
+ .weak FPU_IRQHandler
+ .thumb_set FPU_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel1_IRQHandler
+ .thumb_set DMA2_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel2_IRQHandler
+ .thumb_set DMA2_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel3_IRQHandler
+ .thumb_set DMA2_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel4_IRQHandler
+ .thumb_set DMA2_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel5_IRQHandler
+ .thumb_set DMA2_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel6_IRQHandler
+ .thumb_set DMA2_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel7_IRQHandler
+ .thumb_set DMA2_Channel7_IRQHandler,Default_Handler
+
+ .weak DMAMUX1_OVR_IRQHandler
+ .thumb_set DMAMUX1_OVR_IRQHandler,Default_Handler
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/syscalls.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/syscalls.c
new file mode 100644
index 000000000..9b7c4071a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Mac_802_15_4/Mac_802_15_4_RFD/SW4STM32/syscalls.c
@@ -0,0 +1,207 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Author : Auto-generated by System workbench for STM32
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Target : STMicroelectronics STM32
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+** @attention
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of STMicroelectronics nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+#include <signal.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/times.h>
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Inc/app_conf.h
index 21b44469f..c3910fae4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Inc/app_conf.h
@@ -172,7 +172,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c
index c9f847853..04620cf7b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c
@@ -234,12 +234,14 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * @brief Trap a notification coming from the M0 firmware
- * @param pPayload : payload associated to the notification
- *
- * @retval None
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
-
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/main.c
index 00e011ffa..34dfa1b2c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Core/Src/main.c
@@ -138,9 +138,10 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-
+
/* Init code for STM32_WPAN */
APPE_Init();
+
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@@ -215,6 +216,9 @@ void SystemClock_Config(void)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +359,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/EWARM/Thread_Cli_Cmd.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/EWARM/Thread_Cli_Cmd.ewp
index 40ccd89a8..6b312e9ee 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/EWARM/Thread_Cli_Cmd.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/EWARM/Thread_Cli_Cmd.ewp
@@ -1297,5 +1297,11 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\sequencer\stm32_seq.c</name>
</file>
</group>
+ <group>
+ <name>Doc</name>
+ <file>
+ <name>$PROJ_DIR$\..\readme.txt</name>
+ </file>
+ </group>
</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Thread_Cli_Cmd.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Thread_Cli_Cmd.ioc
index e1e68fbcc..40469aa3e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Thread_Cli_Cmd.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/Thread_Cli_Cmd.ioc
@@ -77,8 +77,8 @@ Mcu.PinsNb=16
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.C2SEV_PWR_C2H_IRQn=true\:0\:0\:false\:false\:true\:true\:false
NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
@@ -86,6 +86,7 @@ NVIC.DMA1_Channel2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.FLASH_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.FPU_IRQn=true\:0\:0\:false\:false\:true\:true\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/readme.txt
index 6c832094f..b950f97e7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Cli_Cmd/readme.txt
@@ -163,6 +163,8 @@ In order to make the program work, you must do the following:
- Connect a second HyperTerminal as described below to get the traces (optional)
- Run the example and use the HyperTerminal to interact with the Board via the Cli commands
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
For the Cli control and for the traces, the UART must be configured as follows:
- BaudRate = 115200 baud
- Word Length = 8 Bits
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Inc/app_conf.h
index 9f22d0c08..72069ceb9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Inc/app_conf.h
@@ -172,7 +172,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c
index 2ee999e7a..25e9c53c6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c
@@ -231,12 +231,14 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * @brief Trap a notification coming from the M0 firmware
- * @param pPayload : payload associated to the notification
- *
- * @retval None
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
-
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/main.c
index 00e011ffa..34dfa1b2c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/main.c
@@ -138,9 +138,10 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-
+
/* Init code for STM32_WPAN */
APPE_Init();
+
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@@ -215,6 +216,9 @@ void SystemClock_Config(void)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +359,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Thread_Coap_DataTransfer.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Thread_Coap_DataTransfer.ioc
index 0eec34e3d..afe2f231e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Thread_Coap_DataTransfer.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/Thread_Coap_DataTransfer.ioc
@@ -77,8 +77,8 @@ Mcu.PinsNb=16
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.C2SEV_PWR_C2H_IRQn=true\:0\:0\:false\:false\:true\:true\:false
NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
@@ -86,6 +86,7 @@ NVIC.DMA1_Channel2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.FLASH_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.FPU_IRQn=true\:0\:0\:false\:false\:true\:true\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt
index 92ae814f2..23d33a234 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_DataTransfer/readme.txt
@@ -205,7 +205,9 @@ In order to make the program work, you must do the following:
(indicated through the lightning of the Red LED)
- After a few seconds, if everything goes right, a blue LED should be lit indicating the end of the File transfer
- If the above step didn't go as planned, you should look through the traces to locate the source of the error.
-
+
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
If you want to get the traces in real time, you can connect an HyperTerminal
via an UART RS232 cable using the following connections:
RXD: CN10(Pin35)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Inc/app_conf.h
index 1bcd9e327..00060d2d8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Inc/app_conf.h
@@ -172,7 +172,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c
index 48a377587..22d24ea8b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c
@@ -231,12 +231,14 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * @brief Trap a notification coming from the M0 firmware
- * @param pPayload : payload associated to the notification
- *
- * @retval None
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
-
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/main.c
index 00e011ffa..34dfa1b2c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Core/Src/main.c
@@ -138,9 +138,10 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-
+
/* Init code for STM32_WPAN */
APPE_Init();
+
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@@ -215,6 +216,9 @@ void SystemClock_Config(void)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +359,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/EWARM/Thread_Coap_Generic.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/EWARM/Thread_Coap_Generic.ewp
index a9543746e..55ea653ee 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/EWARM/Thread_Coap_Generic.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/EWARM/Thread_Coap_Generic.ewp
@@ -1301,5 +1301,11 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\sequencer\stm32_seq.c</name>
</file>
</group>
+ <group>
+ <name>Doc</name>
+ <file>
+ <name>$PROJ_DIR$\..\readme.txt</name>
+ </file>
+ </group>
</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Thread_Coap_Generic.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Thread_Coap_Generic.ioc
index 0610d91de..e9b5d5c8b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Thread_Coap_Generic.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/Thread_Coap_Generic.ioc
@@ -77,8 +77,8 @@ Mcu.PinsNb=16
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.C2SEV_PWR_C2H_IRQn=true\:0\:0\:false\:false\:true\:true\:false
NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
@@ -86,6 +86,7 @@ NVIC.DMA1_Channel2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.FLASH_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.FPU_IRQn=true\:0\:0\:false\:false\:true\:true\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/readme.txt
index dcc281181..798011235 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic/readme.txt
@@ -143,6 +143,8 @@ In order to make the program work, you must do the following:
- Rebuild all files and load your image into target memory
- Run the application
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
If you want to control this application, you can directly send and
retrieve Cli commands connecting an HyperTerminal with the ST_Link cable.
(Refer to the Thread_Cli_Cmd application for more details)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/app_entry.c
index 83d04ef83..6ea6db837 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/app_entry.c
@@ -238,6 +238,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/main.c
index 00e011ffa..b33e7275d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/Core/Src/main.c
@@ -209,7 +209,7 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/EWARM/Thread_Coap_Generic_Ota.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/EWARM/Thread_Coap_Generic_Ota.ewp
index 1734bbc70..756ec5e1e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/EWARM/Thread_Coap_Generic_Ota.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/EWARM/Thread_Coap_Generic_Ota.ewp
@@ -1301,4 +1301,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\sequencer\stm32_seq.c</name>
</file>
</group>
+ <group>
+ <name>Doc</name>
+ <file>
+ <name>$PROJ_DIR$\..\readme.txt</name>
+ </file>
+ </group>
</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/Thread_Coap_Generic_Ota.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/Thread_Coap_Generic_Ota.uvoptx
new file mode 100644
index 000000000..2d38e5a37
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/Thread_Coap_Generic_Ota.uvoptx
@@ -0,0 +1,1113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Thread_Coap_Generic_Ota</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>8000000</CLKADS>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>0</RunSim>
+ <RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath></ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>18</CpuCode>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>1</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>0</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/Core</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_hal_msp.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_msp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm_logging.c</PathWithFileName>
+ <FilenameWithoutPath>stm_logging.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/App</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/app_thread.c</PathWithFileName>
+ <FilenameWithoutPath>app_thread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/Target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_exti.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_hsem.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</PathWithFileName>
+ <FilenameWithoutPath>channel_manager.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</PathWithFileName>
+ <FilenameWithoutPath>channel_monitor.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</PathWithFileName>
+ <FilenameWithoutPath>child_supervision.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</PathWithFileName>
+ <FilenameWithoutPath>coap.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</PathWithFileName>
+ <FilenameWithoutPath>commissioner.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</PathWithFileName>
+ <FilenameWithoutPath>crypto.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</PathWithFileName>
+ <FilenameWithoutPath>dataset.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</PathWithFileName>
+ <FilenameWithoutPath>dataset_ftd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</PathWithFileName>
+ <FilenameWithoutPath>dhcp6_client.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</PathWithFileName>
+ <FilenameWithoutPath>dhcp6_server.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</PathWithFileName>
+ <FilenameWithoutPath>diag.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</PathWithFileName>
+ <FilenameWithoutPath>dns.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</PathWithFileName>
+ <FilenameWithoutPath>icmp6.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</PathWithFileName>
+ <FilenameWithoutPath>instance.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</PathWithFileName>
+ <FilenameWithoutPath>ip6.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</PathWithFileName>
+ <FilenameWithoutPath>jam_detection.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</PathWithFileName>
+ <FilenameWithoutPath>joiner.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</PathWithFileName>
+ <FilenameWithoutPath>link.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</PathWithFileName>
+ <FilenameWithoutPath>link_raw.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</PathWithFileName>
+ <FilenameWithoutPath>message.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</PathWithFileName>
+ <FilenameWithoutPath>netdata.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</PathWithFileName>
+ <FilenameWithoutPath>openthread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>56</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</PathWithFileName>
+ <FilenameWithoutPath>openthread_api_wb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>57</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>58</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</PathWithFileName>
+ <FilenameWithoutPath>radio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>59</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</PathWithFileName>
+ <FilenameWithoutPath>server.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>60</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>61</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>62</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>63</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>64</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</PathWithFileName>
+ <FilenameWithoutPath>tasklet.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>65</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</PathWithFileName>
+ <FilenameWithoutPath>thread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>66</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</PathWithFileName>
+ <FilenameWithoutPath>thread_ftd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>67</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>68</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>69</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</PathWithFileName>
+ <FilenameWithoutPath>tl_thread_hci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>70</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</PathWithFileName>
+ <FilenameWithoutPath>udp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>71</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>72</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/Thread_Coap_Generic_Ota.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/Thread_Coap_Generic_Ota.uvprojx
new file mode 100644
index 000000000..24250349b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/Thread_Coap_Generic_Ota.uvprojx
@@ -0,0 +1,798 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+ <SchemaVersion>2.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>Thread_Coap_Generic_Ota</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>STM32WB55RGVx</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx_DFP.1.0.0</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
+ <Cpu>IROM(0x08010000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>Thread_Coap_Generic_Ota\Exe\</OutputDirectory>
+ <OutputName>Thread_Coap_Generic_Ota</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>0</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath></ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>fromelf #L --bincombined --output=$L@L.bin</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments>-REMAP -MPU</SimDllArguments>
+ <SimDlgDll>DCM.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments>-MPU</TargetDllArguments>
+ <TargetDlgDll>TCM.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>4107</DriverSelection>
+ </Flash1>
+ <bUseTDR>1</bUseTDR>
+ <Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
+ <Flash3>"" ()</Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>1</AdsALst>
+ <AdsACrf>1</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>"Cortex-M4"</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>2</RvdsVP>
+ <RvdsMve>0</RvdsMve>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>1</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>0</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x8010000</StartAddress>
+ <Size>0x70000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x8010000</StartAddress>
+ <Size>0x70000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fffc</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>1</interw>
+ <Optim>4</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>1</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <uSurpInc>0</uSurpInc>
+ <uC99>1</uC99>
+ <uGnu>0</uGnu>
+ <useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
+ <VariousControls>
+ <MiscControls>--diag_suppress 1296</MiscControls>
+ <Define>OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;,USE_HAL_DRIVER,STM32WB55xx,USE_STM32WBXX_NUCLEO,THREAD_WB</Define>
+ <Undefine></Undefine>
+ <IncludePath>../Core/Inc;../STM32_WPAN/App;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform;../../../../../../Drivers/CMSIS/Include</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>0</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x08000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
+ <pXoBase></pXoBase>
+ <ScatterFile>stm32wb55xx_flash_cm4.sct</ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc>--keep *.o(TAG_OTA_START)
+--keep *.o(TAG_OTA_END)</Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <Files>
+ <File>
+ <FileName>startup_stm32wb55xx_cm4.s</FileName>
+ <FileType>2</FileType>
+ <FilePath>startup_stm32wb55xx_cm4.s</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/Core</GroupName>
+ <Files>
+ <File>
+ <FileName>app_entry.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/app_entry.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_lpm_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32_lpm_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_timerserver.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/hw_timerserver.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/hw_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>main.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/main.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_msp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32wbxx_hal_msp.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_it.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32wbxx_it.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_logging.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm_logging.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/App</GroupName>
+ <Files>
+ <File>
+ <FileName>app_thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/App/app_thread.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/Target</GroupName>
+ <Files>
+ <File>
+ <FileName>hw_ipcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/Target/hw_ipcc.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_nucleo.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <Files>
+ <File>
+ <FileName>system_stm32wbxx.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/system_stm32wbxx.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_hal.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_cortex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_exti.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_gpio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_hsem.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rtc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rtc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_tim.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_tim_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <Files>
+ <File>
+ <FileName>channel_manager.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</FilePath>
+ </File>
+ <File>
+ <FileName>channel_monitor.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</FilePath>
+ </File>
+ <File>
+ <FileName>child_supervision.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</FilePath>
+ </File>
+ <File>
+ <FileName>coap.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</FilePath>
+ </File>
+ <File>
+ <FileName>commissioner.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</FilePath>
+ </File>
+ <File>
+ <FileName>crypto.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</FilePath>
+ </File>
+ <File>
+ <FileName>dataset.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</FilePath>
+ </File>
+ <File>
+ <FileName>dataset_ftd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</FilePath>
+ </File>
+ <File>
+ <FileName>dbg_trace.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</FilePath>
+ </File>
+ <File>
+ <FileName>dhcp6_client.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</FilePath>
+ </File>
+ <File>
+ <FileName>dhcp6_server.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</FilePath>
+ </File>
+ <File>
+ <FileName>diag.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</FilePath>
+ </File>
+ <File>
+ <FileName>dns.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</FilePath>
+ </File>
+ <File>
+ <FileName>icmp6.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</FilePath>
+ </File>
+ <File>
+ <FileName>instance.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</FilePath>
+ </File>
+ <File>
+ <FileName>ip6.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</FilePath>
+ </File>
+ <File>
+ <FileName>jam_detection.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</FilePath>
+ </File>
+ <File>
+ <FileName>joiner.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</FilePath>
+ </File>
+ <File>
+ <FileName>link.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</FilePath>
+ </File>
+ <File>
+ <FileName>link_raw.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</FilePath>
+ </File>
+ <File>
+ <FileName>message.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</FilePath>
+ </File>
+ <File>
+ <FileName>netdata.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</FilePath>
+ </File>
+ <File>
+ <FileName>openthread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</FilePath>
+ </File>
+ <File>
+ <FileName>openthread_api_wb.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</FilePath>
+ </File>
+ <File>
+ <FileName>otp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</FilePath>
+ </File>
+ <File>
+ <FileName>radio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</FilePath>
+ </File>
+ <File>
+ <FileName>server.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_list.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_queue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</FilePath>
+ </File>
+ <File>
+ <FileName>tasklet.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread_ftd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_mbox.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_thread_hci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</FilePath>
+ </File>
+ <File>
+ <FileName>udp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32_lpm.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_seq.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/sequencer/stm32_seq.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+ <RTE>
+ <apis/>
+ <components/>
+ <files/>
+ </RTE>
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..5b201de88
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,373 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : STM32WB55xx devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the CortexM4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;******************************************************************************
+;* @attention
+;*
+;* <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
+;* All rights reserved.</center></h2>
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; <h> Stack Configuration
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size EQU 0x1000
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size EQU 0x400
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ ; EXPORT __Vectors
+ ; EXPORT __Vectors_End
+ ;EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM detector
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper and TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+ DCD 0 ; Reserved
+
+__Vectors_End
+
+ AREA INFO, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_PVM_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_LSECSS_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_IRQHandler [WEAK]
+ EXPORT USB_HP_IRQHandler [WEAK]
+ EXPORT USB_LP_IRQHandler [WEAK]
+ EXPORT C2SEV_PWR_C2H_IRQHandler [WEAK]
+ EXPORT COMP_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_IRQHandler [WEAK]
+ EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_TIM17_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT PKA_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT TSC_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+ EXPORT PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler [WEAK]
+ EXPORT IPCC_C1_RX_IRQHandler [WEAK]
+ EXPORT IPCC_C1_TX_IRQHandler [WEAK]
+ EXPORT HSEM_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT LCD_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT AES1_IRQHandler [WEAK]
+ EXPORT AES2_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT DMA2_Channel1_IRQHandler [WEAK]
+ EXPORT DMA2_Channel2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel3_IRQHandler [WEAK]
+ EXPORT DMA2_Channel4_IRQHandler [WEAK]
+ EXPORT DMA2_Channel5_IRQHandler [WEAK]
+ EXPORT DMA2_Channel6_IRQHandler [WEAK]
+ EXPORT DMA2_Channel7_IRQHandler [WEAK]
+ EXPORT DMAMUX1_OVR_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_PVM_IRQHandler
+TAMP_STAMP_LSECSS_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_IRQHandler
+USB_HP_IRQHandler
+USB_LP_IRQHandler
+C2SEV_PWR_C2H_IRQHandler
+COMP_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_IRQHandler
+TIM1_UP_TIM16_IRQHandler
+TIM1_TRG_COM_TIM17_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+PKA_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+LPUART1_IRQHandler
+SAI1_IRQHandler
+TSC_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+CRS_IRQHandler
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+IPCC_C1_RX_IRQHandler
+IPCC_C1_TX_IRQHandler
+HSEM_IRQHandler
+LPTIM1_IRQHandler
+LPTIM2_IRQHandler
+LCD_IRQHandler
+QUADSPI_IRQHandler
+AES1_IRQHandler
+AES2_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_IRQHandler
+DMA2_Channel5_IRQHandler
+DMA2_Channel6_IRQHandler
+DMA2_Channel7_IRQHandler
+DMAMUX1_OVR_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
new file mode 100644
index 000000000..26a848ab9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -0,0 +1,25 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x08010000 0x254 { ; load region size_region
+ ER_IROM1_LOW 0x08010000 0x254 { ; load address = execution address
+ *.o(RESET, +First)
+ *.o (TAG_OTA_START)
+ }
+ RW_IRAM1 0x20000004 0x0002FFFC { ; RW data
+ .ANY (+RW +ZI)
+ }
+ RW_RAM2aRet_SHARED 0x20030000 0x2800 { ; RW data
+ *(MAPPING_TABLE)
+ *(MB_MEM1)
+ *(MB_MEM2)
+ }
+}
+LR_IROM3 0x8010254 0x6FDAC {
+ ER_IROM1_HIGH 0x8010254 0x6FDAC { ; load address = execution address
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ *.o (TAG_OTA_END)
+ }
+ }
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/STM32_WPAN/Target/hw_ipcc.c
index e46eeb94b..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * Middleware.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/.cproject
new file mode 100644
index 000000000..bddf925a0
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/.cproject
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2091456970">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2091456970" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <externalSettings/>
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2091456970" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2091456970." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.728272402" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.689434634" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1496626457" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.1255853876" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="ARM Cortex-M4"/>
+ <listOptionValue builtIn="false" value="CM4"/>
+ </option>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1986573115" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.162878197" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1382499819" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.417743630" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+ <builder buildPath="${workspace_loc:/Thread_Coap_Generic_Ota}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1793825462" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <outputEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
+ </outputEntries>
+ </builder>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1607429282" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1728452505" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.1746430207" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.include.paths.745863215" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.648337896" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="THREAD_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.823734082" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1462241397" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1154078374" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1294438214" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.147969155" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.942491056" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.include.paths.2116768762" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.1204533400" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="THREAD_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.43435583" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1375955631" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1482472021" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.2056779996" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.605716985" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.c.link.option.libs.396970687" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
+ <option id="gnu.c.link.option.paths.1874390443" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
+ <option id="gnu.c.link.option.ldflags.1316901051" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.c.link.option.other.230805677" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.522684641" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.367683622" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.1486437027" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.cpp.link.option.libs.895420771" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+ <option id="gnu.cpp.link.option.paths.49114476" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
+ <option id="gnu.cpp.link.option.flags.1997888704" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.cpp.link.option.other.1607087709" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1865594798" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.644614094" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.288682269" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+ <option id="gnu.both.asm.option.include.paths.656508895" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1563592887" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1216314172" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+ </tool>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="Thread_Coap_Generic_Ota.fr.ac6.managedbuild.target.gnu.cross.exe.1669250865" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2091456970;fr.ac6.managedbuild.config.gnu.cross.exe.debug.2091456970.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1607429282;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1462241397">
+ <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="refreshScope" versionNumber="2">
+ <configuration artifactName="${ProjName}" configurationName="Debug">
+ <resource resourceType="PROJECT" workspacePath="Thread_Coap_Generic_Ota"/>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/.project
new file mode 100644
index 000000000..281e50afd
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/.project
@@ -0,0 +1,393 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
+ <name>Thread_Coap_Generic_Ota</name>
+ <comment/>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>Application/SW4STM32/syscalls.c</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/syscalls.c</location>
+ </link><link>
+ <name>Application/SW4STM32/startup_stm32wb55xx_cm4.s</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/startup_stm32wb55xx_cm4.s</location>
+ </link>
+
+ <link>
+ <name>Application/User/Core/app_entry.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/app_entry.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/stm32_lpm_if.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32_lpm_if.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/hw_timerserver.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/hw_timerserver.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/hw_uart.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/hw_uart.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/main.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/main.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/stm32wbxx_hal_msp.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_hal_msp.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/stm32wbxx_it.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_it.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/stm_logging.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm_logging.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/App/app_thread.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/App/app_thread.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/Target/hw_ipcc.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/Target/hw_ipcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</location>
+ </link>
+ <link>
+ <name>Drivers/CMSIS/system_stm32wbxx.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/system_stm32wbxx.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_cortex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_exti.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_gpio.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_hsem.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rtc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rtc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/channel_manager.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/channel_monitor.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/child_supervision.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/coap.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/commissioner.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/crypto.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dataset.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dataset_ftd.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dbg_trace.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dhcp6_client.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dhcp6_server.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/diag.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dns.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/icmp6.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/instance.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ip6.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/jam_detection.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/joiner.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/link.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/link_raw.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/message.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/netdata.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/openthread.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/openthread_api_wb.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/otp.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/otp.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/radio.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/server.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci_tl.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/stm_list.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_list.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/stm_queue.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/tasklet.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/thread.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/thread_ftd.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci_tl_if.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/tl_mbox.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/tl_thread_hci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/udp.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</location>
+ </link>
+ <link>
+ <name>Utilities/stm32_lpm.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Utilities/lpm/tiny_lpm/stm32_lpm.c</location>
+ </link>
+ <link>
+ <name>Utilities/stm32_seq.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Utilities/sequencer/stm32_seq.c</location>
+ </link>
+ </linkedResources>
+</projectDescription> \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/stm32wb55xx_flash_cm4.ld
index 13b37c5d0..6332715dd 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer_ota/SW4STM32/BLE_p2pServer/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/Thread_Coap_Generic_Ota/stm32wb55xx_flash_cm4.ld
@@ -50,15 +50,14 @@ ENTRY(Reset_Handler)
_estack = 0x20030000; /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x400; /* required amount of heap */
-_Min_Stack_Size = 0x1000; /* required amount of stack */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
/* Specify the memory areas */
MEMORY
{
-FLASH (rx) : ORIGIN = 0x08007000, LENGTH = 1k
+FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 448K
RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 191k
-RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10k
-OTA_TAG (rx) : ORIGIN = 0x08007178 , LENGTH = 599k
+RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K
}
/* Define output sections */
@@ -71,6 +70,12 @@ SECTIONS
KEEP(*(.isr_vector)) /* Startup code */
. = ALIGN(4);
} >FLASH
+
+ .ota_region 0x08010140:
+ {
+ KEEP(*(TAG_OTA_START))
+ . = ALIGN(4);
+ } >FLASH
/* The program code and other data goes into FLASH */
.text :
@@ -87,7 +92,7 @@ SECTIONS
. = ALIGN(4);
_etext = .; /* define a global symbols at end of code */
- } >OTA_TAG
+ } >FLASH
/* Constant data goes into FLASH */
.rodata :
@@ -96,35 +101,42 @@ SECTIONS
*(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
. = ALIGN(4);
- } >OTA_TAG
+ } >FLASH
.ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
.ARM : {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
- } >OTA_TAG
+ } >FLASH
.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
- } >OTA_TAG
+ } >FLASH
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
- } >OTA_TAG
+ } >FLASH
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
KEEP (*(.fini_array*))
PROVIDE_HIDDEN (__fini_array_end = .);
- } >OTA_TAG
+ } >FLASH
+
+ .ota_region_end :
+ {
+ . = ALIGN(4);
+ KEEP(*(TAG_OTA_END))
+ . = ALIGN(4);
+ } >FLASH
/* used by the startup to initialize data */
_sidata = LOADADDR(.data);
@@ -139,7 +151,7 @@ SECTIONS
. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
- } >RAM1 AT> OTA_TAG
+ }>RAM1 AT> FLASH
/* Uninitialized data section */
@@ -182,9 +194,8 @@ SECTIONS
.ARM.attributes 0 : { *(.ARM.attributes) }
MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM_SHARED
MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM_SHARED
- MB_MEM2 : { *(MB_MEM2) } >RAM_SHARED
- TAG_OTA_START : { KEEP (*(TAG_OTA_START)) } >FLASH
- TAG_OTA_END : { KEEP (*(TAG_OTA_END)) } >OTA_TAG
+ MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM_SHARED
+ TAG_OTA_END(NOLOAD) : { KEEP (*(TAG_OTA_END)) } >FLASH
}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..f79eec117
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,445 @@
+/**
+ ******************************************************************************
+ * @file startup_stm32wb55xx_cm4.s
+ * @author MCD Application Team
+ * @brief STM32WB55xx devices vector table GCC toolchain.
+ * This module performs:
+ * - Set the initial SP
+ * - Set the initial PC == Reset_Handler,
+ * - Set the vector table entries with the exceptions ISR address
+ * - Branches to main in the C library (which eventually
+ * calls main()).
+ * After Reset the Cortex-M4 processor is in Thread mode,
+ * priority is Privileged, and the Stack is set to Main.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+ .syntax unified
+ .cpu cortex-m4
+ .fpu softvfp
+ .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+/* start address for the .MB_MEM2 section. defined in linker script */
+.word _sMB_MEM2
+/* end address for the .MB_MEM2 section. defined in linker script */
+.word _eMB_MEM2
+
+/* INIT_BSS macro is used to fill the specified region [start : end] with zeros */
+.macro INIT_BSS start, end
+ ldr r0, =\start
+ ldr r1, =\end
+ movs r3, #0
+ bl LoopFillZerobss
+.endm
+
+/* INIT_DATA macro is used to copy data in the region [start : end] starting from 'src' */
+.macro INIT_DATA start, end, src
+ ldr r0, =\start
+ ldr r1, =\end
+ ldr r2, =\src
+ movs r3, #0
+ bl LoopCopyDataInit
+.endm
+
+.section .text.data_initializers
+CopyDataInit:
+ ldr r4, [r2, r3]
+ str r4, [r0, r3]
+ adds r3, r3, #4
+
+LoopCopyDataInit:
+ adds r4, r0, r3
+ cmp r4, r1
+ bcc CopyDataInit
+ bx lr
+
+FillZerobss:
+ str r3, [r0]
+ adds r0, r0, #4
+
+LoopFillZerobss:
+ cmp r0, r1
+ bcc FillZerobss
+ bx lr
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr r0, =_estack
+ mov sp, r0 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ INIT_DATA _sdata, _edata, _sidata
+
+/* Zero fill the bss segments. */
+ INIT_BSS _sbss, _ebss
+ INIT_BSS _sMB_MEM2, _eMB_MEM2
+
+/* Call the clock system intitialization function.*/
+ bl SystemInit
+/* Call static constructors */
+ bl __libc_init_array
+/* Call the application s entry point.*/
+ bl main
+
+LoopForever:
+ b LoopForever
+
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief This is the code that gets called when the processor receives an
+ * unexpected interrupt. This simply enters an infinite loop, preserving
+ * the system state for examination by a debugger.
+ *
+ * @param None
+ * @retval None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex-M4. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+ .section .isr_vector,"a",%progbits
+ .type g_pfnVectors, %object
+ .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+ .word _estack
+ .word Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0
+ .word PendSV_Handler
+ .word SysTick_Handler
+ .word WWDG_IRQHandler
+ .word PVD_PVM_IRQHandler
+ .word TAMP_STAMP_LSECSS_IRQHandler
+ .word RTC_WKUP_IRQHandler
+ .word FLASH_IRQHandler
+ .word RCC_IRQHandler
+ .word EXTI0_IRQHandler
+ .word EXTI1_IRQHandler
+ .word EXTI2_IRQHandler
+ .word EXTI3_IRQHandler
+ .word EXTI4_IRQHandler
+ .word DMA1_Channel1_IRQHandler
+ .word DMA1_Channel2_IRQHandler
+ .word DMA1_Channel3_IRQHandler
+ .word DMA1_Channel4_IRQHandler
+ .word DMA1_Channel5_IRQHandler
+ .word DMA1_Channel6_IRQHandler
+ .word DMA1_Channel7_IRQHandler
+ .word ADC1_IRQHandler
+ .word USB_HP_IRQHandler
+ .word USB_LP_IRQHandler
+ .word C2SEV_PWR_C2H_IRQHandler
+ .word COMP_IRQHandler
+ .word EXTI9_5_IRQHandler
+ .word TIM1_BRK_IRQHandler
+ .word TIM1_UP_TIM16_IRQHandler
+ .word TIM1_TRG_COM_TIM17_IRQHandler
+ .word TIM1_CC_IRQHandler
+ .word TIM2_IRQHandler
+ .word PKA_IRQHandler
+ .word I2C1_EV_IRQHandler
+ .word I2C1_ER_IRQHandler
+ .word I2C3_EV_IRQHandler
+ .word I2C3_ER_IRQHandler
+ .word SPI1_IRQHandler
+ .word SPI2_IRQHandler
+ .word USART1_IRQHandler
+ .word LPUART1_IRQHandler
+ .word SAI1_IRQHandler
+ .word TSC_IRQHandler
+ .word EXTI15_10_IRQHandler
+ .word RTC_Alarm_IRQHandler
+ .word CRS_IRQHandler
+ .word PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .word IPCC_C1_RX_IRQHandler
+ .word IPCC_C1_TX_IRQHandler
+ .word HSEM_IRQHandler
+ .word LPTIM1_IRQHandler
+ .word LPTIM2_IRQHandler
+ .word LCD_IRQHandler
+ .word QUADSPI_IRQHandler
+ .word AES1_IRQHandler
+ .word AES2_IRQHandler
+ .word RNG_IRQHandler
+ .word FPU_IRQHandler
+ .word DMA2_Channel1_IRQHandler
+ .word DMA2_Channel2_IRQHandler
+ .word DMA2_Channel3_IRQHandler
+ .word DMA2_Channel4_IRQHandler
+ .word DMA2_Channel5_IRQHandler
+ .word DMA2_Channel6_IRQHandler
+ .word DMA2_Channel7_IRQHandler
+ .word DMAMUX1_OVR_IRQHandler
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+ .weak NMI_Handler
+ .thumb_set NMI_Handler,Default_Handler
+
+ .weak HardFault_Handler
+ .thumb_set HardFault_Handler,Default_Handler
+
+ .weak MemManage_Handler
+ .thumb_set MemManage_Handler,Default_Handler
+
+ .weak BusFault_Handler
+ .thumb_set BusFault_Handler,Default_Handler
+
+ .weak UsageFault_Handler
+ .thumb_set UsageFault_Handler,Default_Handler
+
+ .weak SVC_Handler
+ .thumb_set SVC_Handler,Default_Handler
+
+ .weak DebugMon_Handler
+ .thumb_set DebugMon_Handler,Default_Handler
+
+ .weak PendSV_Handler
+ .thumb_set PendSV_Handler,Default_Handler
+
+ .weak SysTick_Handler
+ .thumb_set SysTick_Handler,Default_Handler
+
+ .weak WWDG_IRQHandler
+ .thumb_set WWDG_IRQHandler,Default_Handler
+
+ .weak PVD_PVM_IRQHandler
+ .thumb_set PVD_PVM_IRQHandler,Default_Handler
+
+ .weak TAMP_STAMP_LSECSS_IRQHandler
+ .thumb_set TAMP_STAMP_LSECSS_IRQHandler,Default_Handler
+
+ .weak RTC_WKUP_IRQHandler
+ .thumb_set RTC_WKUP_IRQHandler,Default_Handler
+
+ .weak FLASH_IRQHandler
+ .thumb_set FLASH_IRQHandler,Default_Handler
+
+ .weak RCC_IRQHandler
+ .thumb_set RCC_IRQHandler,Default_Handler
+
+ .weak EXTI0_IRQHandler
+ .thumb_set EXTI0_IRQHandler,Default_Handler
+
+ .weak EXTI1_IRQHandler
+ .thumb_set EXTI1_IRQHandler,Default_Handler
+
+ .weak EXTI2_IRQHandler
+ .thumb_set EXTI2_IRQHandler,Default_Handler
+
+ .weak EXTI3_IRQHandler
+ .thumb_set EXTI3_IRQHandler,Default_Handler
+
+ .weak EXTI4_IRQHandler
+ .thumb_set EXTI4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel1_IRQHandler
+ .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel2_IRQHandler
+ .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel3_IRQHandler
+ .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel4_IRQHandler
+ .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel5_IRQHandler
+ .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel6_IRQHandler
+ .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel7_IRQHandler
+ .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
+
+ .weak ADC1_IRQHandler
+ .thumb_set ADC1_IRQHandler,Default_Handler
+
+ .weak USB_HP_IRQHandler
+ .thumb_set USB_HP_IRQHandler,Default_Handler
+
+ .weak USB_LP_IRQHandler
+ .thumb_set USB_LP_IRQHandler,Default_Handler
+
+ .weak C2SEV_PWR_C2H_IRQHandler
+ .thumb_set C2SEV_PWR_C2H_IRQHandler,Default_Handler
+
+ .weak COMP_IRQHandler
+ .thumb_set COMP_IRQHandler,Default_Handler
+
+ .weak EXTI9_5_IRQHandler
+ .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+ .weak TIM1_BRK_IRQHandler
+ .thumb_set TIM1_BRK_IRQHandler,Default_Handler
+
+ .weak TIM1_UP_TIM16_IRQHandler
+ .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler
+
+ .weak TIM1_TRG_COM_TIM17_IRQHandler
+ .thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler
+
+ .weak TIM1_CC_IRQHandler
+ .thumb_set TIM1_CC_IRQHandler,Default_Handler
+
+ .weak TIM2_IRQHandler
+ .thumb_set TIM2_IRQHandler,Default_Handler
+
+ .weak PKA_IRQHandler
+ .thumb_set PKA_IRQHandler,Default_Handler
+
+ .weak I2C1_EV_IRQHandler
+ .thumb_set I2C1_EV_IRQHandler,Default_Handler
+
+ .weak I2C1_ER_IRQHandler
+ .thumb_set I2C1_ER_IRQHandler,Default_Handler
+
+ .weak I2C3_EV_IRQHandler
+ .thumb_set I2C3_EV_IRQHandler,Default_Handler
+
+ .weak I2C3_ER_IRQHandler
+ .thumb_set I2C3_ER_IRQHandler,Default_Handler
+
+ .weak SPI1_IRQHandler
+ .thumb_set SPI1_IRQHandler,Default_Handler
+
+ .weak SPI2_IRQHandler
+ .thumb_set SPI2_IRQHandler,Default_Handler
+
+ .weak USART1_IRQHandler
+ .thumb_set USART1_IRQHandler,Default_Handler
+
+ .weak LPUART1_IRQHandler
+ .thumb_set LPUART1_IRQHandler,Default_Handler
+
+ .weak SAI1_IRQHandler
+ .thumb_set SAI1_IRQHandler,Default_Handler
+
+ .weak TSC_IRQHandler
+ .thumb_set TSC_IRQHandler,Default_Handler
+
+ .weak EXTI15_10_IRQHandler
+ .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+ .weak RTC_Alarm_IRQHandler
+ .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+ .weak CRS_IRQHandler
+ .thumb_set CRS_IRQHandler,Default_Handler
+
+ .weak PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .thumb_set PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_RX_IRQHandler
+ .thumb_set IPCC_C1_RX_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_TX_IRQHandler
+ .thumb_set IPCC_C1_TX_IRQHandler,Default_Handler
+
+ .weak HSEM_IRQHandler
+ .thumb_set HSEM_IRQHandler,Default_Handler
+
+ .weak LPTIM1_IRQHandler
+ .thumb_set LPTIM1_IRQHandler,Default_Handler
+
+ .weak LPTIM2_IRQHandler
+ .thumb_set LPTIM2_IRQHandler,Default_Handler
+
+ .weak LCD_IRQHandler
+ .thumb_set LCD_IRQHandler,Default_Handler
+
+ .weak QUADSPI_IRQHandler
+ .thumb_set QUADSPI_IRQHandler,Default_Handler
+
+ .weak AES1_IRQHandler
+ .thumb_set AES1_IRQHandler,Default_Handler
+
+ .weak AES2_IRQHandler
+ .thumb_set AES2_IRQHandler,Default_Handler
+
+ .weak RNG_IRQHandler
+ .thumb_set RNG_IRQHandler,Default_Handler
+
+ .weak FPU_IRQHandler
+ .thumb_set FPU_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel1_IRQHandler
+ .thumb_set DMA2_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel2_IRQHandler
+ .thumb_set DMA2_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel3_IRQHandler
+ .thumb_set DMA2_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel4_IRQHandler
+ .thumb_set DMA2_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel5_IRQHandler
+ .thumb_set DMA2_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel6_IRQHandler
+ .thumb_set DMA2_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel7_IRQHandler
+ .thumb_set DMA2_Channel7_IRQHandler,Default_Handler
+
+ .weak DMAMUX1_OVR_IRQHandler
+ .thumb_set DMAMUX1_OVR_IRQHandler,Default_Handler
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/syscalls.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/syscalls.c
new file mode 100644
index 000000000..9b7c4071a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/SW4STM32/syscalls.c
@@ -0,0 +1,207 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Author : Auto-generated by System workbench for STM32
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Target : STMicroelectronics STM32
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+** @attention
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of STMicroelectronics nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+#include <signal.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/times.h>
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/readme.txt
index 0883181bb..95ed4a4f5 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_Generic_Ota/readme.txt
@@ -153,6 +153,8 @@ In order to make the program work, you must do the following:
- Rebuild all files and load your image into target memory
- Run the application
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
If you want to control this application, you can directly send and
retrieve Cli commands connecting an HyperTerminal with the ST_Link cable.
(Refer to the Thread_Cli_Cmd application for more details)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Inc/app_conf.h
index 4a7816a43..6a297c552 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Inc/app_conf.h
@@ -172,7 +172,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
@@ -303,9 +303,8 @@ typedef enum
#define TASK_SEND_BUFFER (1U << CFG_TASK_SEND_BUFFER)
#define TASK_Notif_CoapReceived (1U << CFG_TASK_NOTIF_COAP_RECEIVED)
#define TASK_IdentifyBoard (1U << CFG_TASK_IDENTIFY_BOARD)
-/* USER CODE END DEFINE_TASK */
+/* USER CODE END DEFINE_TASK */
-
/**
* This is the list of priority required by the application
* Each Id shall be in the range 0..31
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/app_entry.c
index 6d91e5a16..06ecb56ea 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/app_entry.c
@@ -231,12 +231,14 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * @brief Trap a notification coming from the M0 firmware
- * @param pPayload : payload associated to the notification
- *
- * @retval None
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
-
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/main.c
index 00e011ffa..34dfa1b2c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Core/Src/main.c
@@ -138,9 +138,10 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-
+
/* Init code for STM32_WPAN */
APPE_Init();
+
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@@ -215,6 +216,9 @@ void SystemClock_Config(void)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +359,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Thread_Coap_Multiboard.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Thread_Coap_Multiboard.ioc
index a562fcfad..0806fd2eb 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Thread_Coap_Multiboard.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/Thread_Coap_Multiboard.ioc
@@ -77,8 +77,8 @@ Mcu.PinsNb=16
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.C2SEV_PWR_C2H_IRQn=true\:0\:0\:false\:false\:true\:true\:false
NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
@@ -86,6 +86,7 @@ NVIC.DMA1_Channel2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.FLASH_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.FPU_IRQn=true\:0\:0\:false\:false\:true\:true\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/readme.txt
index 32da4bf4e..8919457e7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Coap_MultiBoard/readme.txt
@@ -166,6 +166,7 @@ In order to make the program work, you must do the following:
and load your image into the target memory
- Run the application
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
1) Starting the application:
============================
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Inc/app_conf.h
index 0e7e91751..26ace0a25 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Inc/app_conf.h
@@ -172,7 +172,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/app_entry.c
index 310473bad..451e65b99 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/app_entry.c
@@ -231,12 +231,14 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * @brief Trap a notification coming from the M0 firmware
- * @param pPayload : payload associated to the notification
- *
- * @retval None
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
-
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/main.c
index 00e011ffa..34dfa1b2c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Core/Src/main.c
@@ -138,9 +138,10 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-
+
/* Init code for STM32_WPAN */
APPE_Init();
+
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@@ -215,6 +216,9 @@ void SystemClock_Config(void)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +359,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Thread_Commissioning.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Thread_Commissioning.ioc
index b6cfd601f..ae287baa7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Thread_Commissioning.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/Thread_Commissioning.ioc
@@ -77,8 +77,8 @@ Mcu.PinsNb=16
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.C2SEV_PWR_C2H_IRQn=true\:0\:0\:false\:false\:true\:true\:false
NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
@@ -86,6 +86,7 @@ NVIC.DMA1_Channel2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.FLASH_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.FPU_IRQn=true\:0\:0\:false\:false\:true\:true\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/readme.txt
index b4ffb2875..090683907 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Commissioning/readme.txt
@@ -100,6 +100,7 @@ In order to make the program work, you must do the following:
and load your image into the target memory
- Run the application
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
Step 1 : At start both devices are not attached to any Thread network. LED1 (blue) is
toggling slowly waiting for a user action. Both devices are in 'disabled' mode.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Inc/app_conf.h
index 97b483d45..d80a9d629 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Inc/app_conf.h
@@ -172,7 +172,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c
index 48a377587..22d24ea8b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c
@@ -231,12 +231,14 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * @brief Trap a notification coming from the M0 firmware
- * @param pPayload : payload associated to the notification
- *
- * @retval None
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
-
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/main.c
index 00e011ffa..34dfa1b2c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/main.c
@@ -138,9 +138,10 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-
+
/* Init code for STM32_WPAN */
APPE_Init();
+
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@@ -215,6 +216,9 @@ void SystemClock_Config(void)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +359,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/App/app_thread.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/App/app_thread.c
index 10ada7d8d..d96048e3a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/App/app_thread.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/App/app_thread.c
@@ -900,4 +900,7 @@ void VCP_DataReceived(uint8_t* Buf , uint32_t *Len)
}
#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+/* USER CODE BEGIN FD_WRAP_FUNCTIONS */
+
+/* USER CODE END FD_WRAP_FUNCTIONS */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Thread_FTD_Coap_Multicast.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Thread_FTD_Coap_Multicast.ioc
index 8bd006920..7c6cfb0e0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Thread_FTD_Coap_Multicast.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/Thread_FTD_Coap_Multicast.ioc
@@ -77,8 +77,8 @@ Mcu.PinsNb=16
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.C2SEV_PWR_C2H_IRQn=true\:0\:0\:false\:false\:true\:true\:false
NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
@@ -86,6 +86,7 @@ NVIC.DMA1_Channel2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.FLASH_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.FPU_IRQn=true\:0\:0\:false\:false\:true\:true\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt
index c4eca6508..5bc9e475f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt
@@ -133,7 +133,9 @@ In order to make the program work, you must do the following:
- Rebuild all files of Thread/Thread_FTD_Coap_Multicast application
and load your image into the target memory
- Run the application
-
+
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
If you want to control this application, you can directly send and
retrieve Cli commands connecting an HyperTerminal with the ST_Link cable.
(Refer to the Thread_Cli_Cmd application for more details)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/app_entry.c
index aa38a896b..374fc80e0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/app_entry.c
@@ -78,7 +78,7 @@ static void Init_Debug( void );
static void appe_Tl_Init( void );
static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status );
static void APPE_SysUserEvtRx( void * pPayload );
-static void APPE_SysEvtReadyProcessing(SHCI_C2_Ready_Evt_t *pReadyEvt);
+static SHCI_TL_UserEventFlowStatus_t APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt );
static void APPE_SysEvtError( SCHI_SystemErrCode_t ErrorCode);
#if (CFG_HW_LPUART1_ENABLED == 1)
@@ -237,6 +237,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
@@ -245,7 +254,7 @@ static void APPE_SysUserEvtRx( void * pPayload )
switch(p_sys_event->subevtcode)
{
case SHCI_SUB_EVT_CODE_READY:
- APPE_SysEvtReadyProcessing( (SHCI_C2_Ready_Evt_t*)p_sys_event->payload );;
+ ((tSHCI_UserEvtRxParam*)pPayload)->status = APPE_SysevtReadyProcessing( (SHCI_C2_Ready_Evt_t*)p_sys_event->payload );
break;
case SHCI_SUB_EVT_ERROR_NOTIF:
APPE_SysEvtError((SCHI_SystemErrCode_t) (p_sys_event->payload[0]));
@@ -279,9 +288,10 @@ static void APPE_SysEvtError( SCHI_SystemErrCode_t ErrorCode)
return;
}
-static void APPE_SysEvtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
+static SHCI_TL_UserEventFlowStatus_t APPE_SysevtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
{
uint8_t fus_state_value;
+ SHCI_TL_UserEventFlowStatus_t return_value;
#if ( CFG_LED_SUPPORTED != 0)
BSP_LED_Off(LED_BLUE);
@@ -289,6 +299,8 @@ static void APPE_SysEvtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
if(pReadyEvt->sysevt_ready_rsp == WIRELESS_FW_RUNNING)
{
+ return_value = SHCI_TL_UserEventFlow_Enable;
+
if((*(uint8_t*)SRAM1_BASE) == CFG_REBOOT_ON_CPU2_UPGRADE)
{
/**
@@ -316,6 +328,7 @@ static void APPE_SysEvtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
/**
* FUS is running on CPU2
*/
+ return_value = SHCI_TL_UserEventFlow_Disable;
/**
* The CPU2 firmware update procedure is starting from now
@@ -400,7 +413,7 @@ static void APPE_SysEvtReadyProcessing( SHCI_C2_Ready_Evt_t *pReadyEvt )
}
}
- return;
+ return return_value;
}
/* USER CODE BEGIN FD_LOCAL_FUNCTIONS */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/main.c
index 00e011ffa..b33e7275d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/Core/Src/main.c
@@ -209,7 +209,7 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/Thread_Ota.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/Thread_Ota.ewp
index 7fa9df11b..e08c7dae1 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/Thread_Ota.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/Thread_Ota.ewp
@@ -1301,4 +1301,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\sequencer\stm32_seq.c</name>
</file>
</group>
+ <group>
+ <name>Doc</name>
+ <file>
+ <name>$PROJ_DIR$\..\readme.txt</name>
+ </file>
+ </group>
</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/stm32wb55xx_sram_cm4.icf b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/stm32wb55xx_sram_cm4.icf
deleted file mode 100644
index 36cf3e51a..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/EWARM/stm32wb55xx_sram_cm4.icf
+++ /dev/null
@@ -1,39 +0,0 @@
-/*###ICF### Section handled by ICF editor, don't touch! ****/
-/*-Editor annotation file-*/
-/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
-/*-Specials-*/
-define symbol __ICFEDIT_intvec_start__ = 0x20000000;
-/*-Memory Regions-*/
-/***** RAM dedicated to M4 *****/
-define symbol __ICFEDIT_region_ROM_start__ = 0x20000000;
-define symbol __ICFEDIT_region_ROM_end__ = 0x20017FFF;
-
-define symbol __ICFEDIT_region_RAM_start__ = 0x20018000 ;
-define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF ;
-
-/***** RAM2a *****/
-define symbol __ICFEDIT_region_RAM_SHARED_start__ = 0x20030000 ;
-define symbol __ICFEDIT_region_RAM_SHARED_end__ = 0x20037FFF ;
-
-/*-Sizes-*/
-define symbol __ICFEDIT_size_cstack__ = 0x1000;
-define symbol __ICFEDIT_size_heap__ = 0x400;
-/**** End of ICF editor section. ###ICF###*/
-
-
-define memory mem with size = 4G;
-define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
-define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
-
-
-define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
-define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
-
-initialize by copy { readwrite };
-do not initialize { section .noinit };
-
-place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
-
-place in ROM_region { readonly };
-place in RAM_region { readwrite,
- block CSTACK, block HEAP };
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/Thread_Ota.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/Thread_Ota.uvoptx
new file mode 100644
index 000000000..4996f84aa
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/Thread_Ota.uvoptx
@@ -0,0 +1,1113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Thread_Ota</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>8000000</CLKADS>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>0</RunSim>
+ <RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath></ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>0</CpuCode>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>1</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>0</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_hal_msp.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_msp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm_logging.c</PathWithFileName>
+ <FilenameWithoutPath>stm_logging.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/App</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/app_thread.c</PathWithFileName>
+ <FilenameWithoutPath>app_thread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/Target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_exti.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_hsem.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</PathWithFileName>
+ <FilenameWithoutPath>channel_manager.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</PathWithFileName>
+ <FilenameWithoutPath>channel_monitor.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</PathWithFileName>
+ <FilenameWithoutPath>child_supervision.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</PathWithFileName>
+ <FilenameWithoutPath>coap.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</PathWithFileName>
+ <FilenameWithoutPath>commissioner.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</PathWithFileName>
+ <FilenameWithoutPath>crypto.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</PathWithFileName>
+ <FilenameWithoutPath>dataset.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</PathWithFileName>
+ <FilenameWithoutPath>dataset_ftd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</PathWithFileName>
+ <FilenameWithoutPath>dhcp6_client.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</PathWithFileName>
+ <FilenameWithoutPath>dhcp6_server.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</PathWithFileName>
+ <FilenameWithoutPath>diag.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</PathWithFileName>
+ <FilenameWithoutPath>dns.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</PathWithFileName>
+ <FilenameWithoutPath>icmp6.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</PathWithFileName>
+ <FilenameWithoutPath>instance.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</PathWithFileName>
+ <FilenameWithoutPath>ip6.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</PathWithFileName>
+ <FilenameWithoutPath>jam_detection.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</PathWithFileName>
+ <FilenameWithoutPath>joiner.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</PathWithFileName>
+ <FilenameWithoutPath>link.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</PathWithFileName>
+ <FilenameWithoutPath>link_raw.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</PathWithFileName>
+ <FilenameWithoutPath>message.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</PathWithFileName>
+ <FilenameWithoutPath>netdata.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</PathWithFileName>
+ <FilenameWithoutPath>openthread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>56</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</PathWithFileName>
+ <FilenameWithoutPath>openthread_api_wb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>57</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>58</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</PathWithFileName>
+ <FilenameWithoutPath>radio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>59</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</PathWithFileName>
+ <FilenameWithoutPath>server.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>60</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>61</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>62</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>63</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>64</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>65</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</PathWithFileName>
+ <FilenameWithoutPath>tasklet.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>66</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</PathWithFileName>
+ <FilenameWithoutPath>thread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>67</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</PathWithFileName>
+ <FilenameWithoutPath>thread_ftd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>68</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>69</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</PathWithFileName>
+ <FilenameWithoutPath>tl_thread_hci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>70</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</PathWithFileName>
+ <FilenameWithoutPath>udp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>71</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>72</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/Thread_Ota.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/Thread_Ota.uvprojx
new file mode 100644
index 000000000..3466bbdd2
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/Thread_Ota.uvprojx
@@ -0,0 +1,795 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+ <SchemaVersion>2.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>Thread_Ota</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <uAC6>0</uAC6>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>STM32WB55RGVx</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
+ <Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>Thread_Ota\Exe\</OutputDirectory>
+ <OutputName>Thread_Ota</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>0</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath></ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments>-REMAP -MPU</SimDllArguments>
+ <SimDlgDll>DCM.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments>-MPU</TargetDllArguments>
+ <TargetDlgDll>TCM.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>4107</DriverSelection>
+ </Flash1>
+ <bUseTDR>1</bUseTDR>
+ <Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
+ <Flash3>"" ()</Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>1</AdsALst>
+ <AdsACrf>1</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>"Cortex-M4"</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>2</RvdsVP>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>1</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>0</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fffc</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>1</interw>
+ <Optim>4</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>1</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <uSurpInc>0</uSurpInc>
+ <uC99>0</uC99>
+ <uGnu>0</uGnu>
+ <useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
+ <VariousControls>
+ <MiscControls>--C99</MiscControls>
+ <Define>OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;,USE_HAL_DRIVER,STM32WB55xx,USE_STM32WBXX_NUCLEO,THREAD_WB</Define>
+ <Undefine></Undefine>
+ <IncludePath>../Core/Inc;../STM32_WPAN/App;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform;../../../../../../Drivers/CMSIS/Include</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>0</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x08000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
+ <pXoBase></pXoBase>
+ <ScatterFile>stm32wb55xx_flash_cm4.sct</ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc>--diag_suppress=L6329</Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <Files>
+ <File>
+ <FileName>startup_stm32wb55xx_cm4.s</FileName>
+ <FileType>2</FileType>
+ <FilePath>startup_stm32wb55xx_cm4.s</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/Core</GroupName>
+ <Files>
+ <File>
+ <FileName>app_entry.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/app_entry.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_timerserver.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/hw_timerserver.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/hw_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>main.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/main.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_lpm_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32_lpm_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_msp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32wbxx_hal_msp.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_it.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32wbxx_it.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_logging.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm_logging.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/App</GroupName>
+ <Files>
+ <File>
+ <FileName>app_thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/App/app_thread.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/Target</GroupName>
+ <Files>
+ <File>
+ <FileName>hw_ipcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/Target/hw_ipcc.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_nucleo.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <Files>
+ <File>
+ <FileName>system_stm32wbxx.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/system_stm32wbxx.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_hal.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_cortex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_exti.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_gpio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_hsem.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rtc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rtc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_tim.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_tim_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <Files>
+ <File>
+ <FileName>channel_manager.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</FilePath>
+ </File>
+ <File>
+ <FileName>channel_monitor.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</FilePath>
+ </File>
+ <File>
+ <FileName>child_supervision.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</FilePath>
+ </File>
+ <File>
+ <FileName>coap.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</FilePath>
+ </File>
+ <File>
+ <FileName>commissioner.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</FilePath>
+ </File>
+ <File>
+ <FileName>crypto.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</FilePath>
+ </File>
+ <File>
+ <FileName>dataset.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</FilePath>
+ </File>
+ <File>
+ <FileName>dataset_ftd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</FilePath>
+ </File>
+ <File>
+ <FileName>dbg_trace.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</FilePath>
+ </File>
+ <File>
+ <FileName>dhcp6_client.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</FilePath>
+ </File>
+ <File>
+ <FileName>dhcp6_server.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</FilePath>
+ </File>
+ <File>
+ <FileName>diag.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</FilePath>
+ </File>
+ <File>
+ <FileName>dns.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</FilePath>
+ </File>
+ <File>
+ <FileName>icmp6.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</FilePath>
+ </File>
+ <File>
+ <FileName>instance.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</FilePath>
+ </File>
+ <File>
+ <FileName>ip6.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</FilePath>
+ </File>
+ <File>
+ <FileName>jam_detection.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</FilePath>
+ </File>
+ <File>
+ <FileName>joiner.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</FilePath>
+ </File>
+ <File>
+ <FileName>link.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</FilePath>
+ </File>
+ <File>
+ <FileName>link_raw.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</FilePath>
+ </File>
+ <File>
+ <FileName>message.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</FilePath>
+ </File>
+ <File>
+ <FileName>netdata.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</FilePath>
+ </File>
+ <File>
+ <FileName>openthread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</FilePath>
+ </File>
+ <File>
+ <FileName>openthread_api_wb.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</FilePath>
+ </File>
+ <File>
+ <FileName>otp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</FilePath>
+ </File>
+ <File>
+ <FileName>radio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</FilePath>
+ </File>
+ <File>
+ <FileName>server.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_list.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_queue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</FilePath>
+ </File>
+ <File>
+ <FileName>tasklet.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread_ftd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_mbox.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_thread_hci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</FilePath>
+ </File>
+ <File>
+ <FileName>udp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32_lpm.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_seq.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/sequencer/stm32_seq.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+ <RTE>
+ <apis/>
+ <components/>
+ <files/>
+ </RTE>
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..e05e3c5ca
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,368 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : STM32WB55xx devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the CortexM4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;******************************************************************************
+;* @attention
+;*
+;* Copyright (c) 2019 STMicroelectronics. All rights reserved.
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; <h> Stack Configuration
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size EQU 0x1000
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size EQU 0x400
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM detector
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper and TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_PVM_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_LSECSS_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_IRQHandler [WEAK]
+ EXPORT USB_HP_IRQHandler [WEAK]
+ EXPORT USB_LP_IRQHandler [WEAK]
+ EXPORT C2SEV_PWR_C2H_IRQHandler [WEAK]
+ EXPORT COMP_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_IRQHandler [WEAK]
+ EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_TIM17_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT PKA_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT TSC_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+ EXPORT PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler [WEAK]
+ EXPORT IPCC_C1_RX_IRQHandler [WEAK]
+ EXPORT IPCC_C1_TX_IRQHandler [WEAK]
+ EXPORT HSEM_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT LCD_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT AES1_IRQHandler [WEAK]
+ EXPORT AES2_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT DMA2_Channel1_IRQHandler [WEAK]
+ EXPORT DMA2_Channel2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel3_IRQHandler [WEAK]
+ EXPORT DMA2_Channel4_IRQHandler [WEAK]
+ EXPORT DMA2_Channel5_IRQHandler [WEAK]
+ EXPORT DMA2_Channel6_IRQHandler [WEAK]
+ EXPORT DMA2_Channel7_IRQHandler [WEAK]
+ EXPORT DMAMUX1_OVR_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_PVM_IRQHandler
+TAMP_STAMP_LSECSS_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_IRQHandler
+USB_HP_IRQHandler
+USB_LP_IRQHandler
+C2SEV_PWR_C2H_IRQHandler
+COMP_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_IRQHandler
+TIM1_UP_TIM16_IRQHandler
+TIM1_TRG_COM_TIM17_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+PKA_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+LPUART1_IRQHandler
+SAI1_IRQHandler
+TSC_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+CRS_IRQHandler
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+IPCC_C1_RX_IRQHandler
+IPCC_C1_TX_IRQHandler
+HSEM_IRQHandler
+LPTIM1_IRQHandler
+LPTIM2_IRQHandler
+LCD_IRQHandler
+QUADSPI_IRQHandler
+AES1_IRQHandler
+AES2_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_IRQHandler
+DMA2_Channel5_IRQHandler
+DMA2_Channel6_IRQHandler
+DMA2_Channel7_IRQHandler
+DMAMUX1_OVR_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
new file mode 100644
index 000000000..63845c07b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -0,0 +1,21 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x08000000 0x00080000 { ; load region size_region
+ ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ }
+ RW_IRAM1 0x20000004 0x2FFFC { ; RW data
+ .ANY (+RW +ZI)
+ }
+ RW_RAM_SHARED 0x20030000 0x2800 { ; RW data
+ *(MAPPING_TABLE)
+ *(MB_MEM1)
+ *(MB_MEM2)
+ }
+ }
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/STM32_WPAN/Target/hw_ipcc.c
index e46eeb94b..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * Middleware.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/.cproject
new file mode 100644
index 000000000..a2da791c5
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/.cproject
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.953217734">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.953217734" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <externalSettings/>
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.953217734" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.953217734." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.754523693" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.474673563" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1978450060" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.272810370" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="ARM Cortex-M4"/>
+ <listOptionValue builtIn="false" value="CM4"/>
+ </option>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.36499830" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.472548804" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.418263835" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1153806657" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+ <builder buildPath="${workspace_loc:/Thread_Ota}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.525759453" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <outputEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
+ </outputEntries>
+ </builder>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.2093743364" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.496858045" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.1609261593" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.include.paths.310491208" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.426180904" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="THREAD_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1084448087" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1012504661" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1175565152" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.135695743" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.967925511" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1718587570" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.include.paths.2051988410" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.1194167451" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="THREAD_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.1201520618" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.971959281" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.660499435" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.643908190" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.552588465" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.c.link.option.libs.1688009156" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
+ <option id="gnu.c.link.option.paths.1029494583" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
+ <option id="gnu.c.link.option.ldflags.1674719719" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.c.link.option.other.434583737" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1353843503" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.1637204558" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.2013549158" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.cpp.link.option.libs.1275314679" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+ <option id="gnu.cpp.link.option.paths.935133027" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
+ <option id="gnu.cpp.link.option.flags.783678085" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.cpp.link.option.other.2133835481" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.182734249" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.1349571093" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.850166084" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+ <option id="gnu.both.asm.option.include.paths.1544063977" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1309239019" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.940537640" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+ </tool>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="Thread_Ota.fr.ac6.managedbuild.target.gnu.cross.exe.1984141616" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.953217734;fr.ac6.managedbuild.config.gnu.cross.exe.debug.953217734.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.2093743364;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1012504661">
+ <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="refreshScope" versionNumber="2">
+ <configuration artifactName="${ProjName}" configurationName="Debug">
+ <resource resourceType="PROJECT" workspacePath="Thread_Ota"/>
+ </configuration>
+ </storageModule>
+</cproject>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/.project
index c08ea2944..3a10989d4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_HeartRateFreeRTOS/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>Thread_Ota</name>
<comment/>
<projects>
</projects>
@@ -35,76 +35,56 @@
</link>
<link>
- <name>Application/Core/app_entry.c</name>
+ <name>Application/User/Core/app_entry.c</name>
<type>1</type>
<location>PARENT-2-PROJECT_LOC/Core/Src/app_entry.c</location>
</link>
<link>
- <name>Application/Core/freertos_port.c</name>
- <type>1</type>
- <location>PARENT-2-PROJECT_LOC/Core/Src/freertos_port.c</location>
- </link>
- <link>
- <name>Application/Core/stm32_lpm_if.c</name>
- <type>1</type>
- <location>PARENT-2-PROJECT_LOC/Core/Src/stm32_lpm_if.c</location>
- </link>
- <link>
- <name>Application/Core/hw_timerserver.c</name>
+ <name>Application/User/Core/hw_timerserver.c</name>
<type>1</type>
<location>PARENT-2-PROJECT_LOC/Core/Src/hw_timerserver.c</location>
</link>
<link>
- <name>Application/Core/hw_uart.c</name>
+ <name>Application/User/Core/hw_uart.c</name>
<type>1</type>
<location>PARENT-2-PROJECT_LOC/Core/Src/hw_uart.c</location>
</link>
<link>
- <name>Application/Core/main.c</name>
+ <name>Application/User/Core/main.c</name>
<type>1</type>
<location>PARENT-2-PROJECT_LOC/Core/Src/main.c</location>
</link>
<link>
- <name>Application/Core/stm32wbxx_hal_msp.c</name>
+ <name>Application/User/Core/stm32_lpm_if.c</name>
<type>1</type>
- <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_hal_msp.c</location>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32_lpm_if.c</location>
</link>
<link>
- <name>Application/Core/stm32wbxx_hal_timebase_tim.c</name>
+ <name>Application/User/Core/stm32wbxx_hal_msp.c</name>
<type>1</type>
- <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_hal_timebase_tim.c</location>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_hal_msp.c</location>
</link>
<link>
- <name>Application/Core/stm32wbxx_it.c</name>
+ <name>Application/User/Core/stm32wbxx_it.c</name>
<type>1</type>
<location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_it.c</location>
</link>
<link>
- <name>Application/STM32_WPAN/app/app_ble.c</name>
+ <name>Application/User/Core/stm_logging.c</name>
<type>1</type>
- <location>PARENT-2-PROJECT_LOC/STM32_WPAN/App/app_ble.c</location>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm_logging.c</location>
</link>
<link>
- <name>Application/STM32_WPAN/app/dis_app.c</name>
+ <name>Application/User/STM32_WPAN/App/app_thread.c</name>
<type>1</type>
- <location>PARENT-2-PROJECT_LOC/STM32_WPAN/App/dis_app.c</location>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/App/app_thread.c</location>
</link>
<link>
- <name>Application/STM32_WPAN/app/hrs_app.c</name>
- <type>1</type>
- <location>PARENT-2-PROJECT_LOC/STM32_WPAN/App/hrs_app.c</location>
- </link>
- <link>
- <name>Application/STM32_WPAN/target/hw_ipcc.c</name>
+ <name>Application/User/STM32_WPAN/Target/hw_ipcc.c</name>
<type>1</type>
<location>PARENT-2-PROJECT_LOC/STM32_WPAN/Target/hw_ipcc.c</location>
</link>
<link>
- <name>Doc/readme.txt</name>
- <type>1</type>
- <location>PARENT-2-PROJECT_LOC/readme.txt</location>
- </link>
- <link>
<name>Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</name>
<type>1</type>
<location>PARENT-7-PROJECT_LOC/Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</location>
@@ -120,24 +100,34 @@
<location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</location>
</link>
<link>
- <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_adc.c</name>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_cortex.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc.c</location>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</location>
</link>
<link>
- <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_adc_ex.c</name>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_adc_ex.c</location>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</location>
</link>
<link>
- <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_cortex.c</name>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma_ex.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</location>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</location>
</link>
<link>
- <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma.c</name>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_exti.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</location>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</location>
</link>
<link>
<name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_gpio.c</name>
@@ -145,6 +135,11 @@
<location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</location>
</link>
<link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_hsem.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</location>
+ </link>
+ <link>
<name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr.c</name>
<type>1</type>
<location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</location>
@@ -175,16 +170,6 @@
<location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</location>
</link>
<link>
- <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_spi.c</name>
- <type>1</type>
- <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c</location>
- </link>
- <link>
- <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_spi_ex.c</name>
- <type>1</type>
- <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c</location>
- </link>
- <link>
<name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim.c</name>
<type>1</type>
<location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</location>
@@ -205,134 +190,194 @@
<location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/blesvc/dis.c</name>
+ <name>Middlewares/STM32_WPAN/channel_manager.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/svc/Src/dis.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/blesvc/hrs.c</name>
+ <name>Middlewares/STM32_WPAN/channel_monitor.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/svc/Src/hrs.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/blesvc/svc_ctl.c</name>
+ <name>Middlewares/STM32_WPAN/child_supervision.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/core/ble_gap_aci.c</name>
+ <name>Middlewares/STM32_WPAN/coap.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/core/ble_gatt_aci.c</name>
+ <name>Middlewares/STM32_WPAN/commissioner.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/core/ble_hal_aci.c</name>
+ <name>Middlewares/STM32_WPAN/crypto.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/core/ble_hci_le.c</name>
+ <name>Middlewares/STM32_WPAN/dataset.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/core/ble_l2cap_aci.c</name>
+ <name>Middlewares/STM32_WPAN/dataset_ftd.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/ble/core/osal.c</name>
+ <name>Middlewares/STM32_WPAN/dbg_trace.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</name>
+ <name>Middlewares/STM32_WPAN/dhcp6_client.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</name>
+ <name>Middlewares/STM32_WPAN/dhcp6_server.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</name>
+ <name>Middlewares/STM32_WPAN/diag.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</name>
+ <name>Middlewares/STM32_WPAN/dns.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</name>
+ <name>Middlewares/STM32_WPAN/icmp6.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</name>
+ <name>Middlewares/STM32_WPAN/instance.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/utilities/dbg_trace.c</name>
+ <name>Middlewares/STM32_WPAN/ip6.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/utilities/otp.c</name>
+ <name>Middlewares/STM32_WPAN/jam_detection.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/joiner.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/link.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/link_raw.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/message.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/netdata.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/openthread.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/openthread_api_wb.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/otp.c</name>
<type>1</type>
<location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/otp.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/utilities/stm_list.c</name>
+ <name>Middlewares/STM32_WPAN/radio.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_list.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</location>
</link>
<link>
- <name>Middlewares/STM32_WPAN/utilities/stm_queue.c</name>
+ <name>Middlewares/STM32_WPAN/server.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci_tl.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</location>
</link>
<link>
- <name>Middlewares/Third_Party/FreeRTOS/Source/list.c</name>
+ <name>Middlewares/STM32_WPAN/shci_tl_if.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/list.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</location>
</link>
<link>
- <name>Middlewares/Third_Party/FreeRTOS/Source/queue.c</name>
+ <name>Middlewares/STM32_WPAN/stm_list.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/queue.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_list.c</location>
</link>
<link>
- <name>Middlewares/Third_Party/FreeRTOS/Source/tasks.c</name>
+ <name>Middlewares/STM32_WPAN/stm_queue.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/tasks.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</location>
</link>
<link>
- <name>Middlewares/Third_Party/FreeRTOS/Source/timers.c</name>
+ <name>Middlewares/STM32_WPAN/tasklet.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/timers.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</location>
</link>
<link>
- <name>Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c</name>
+ <name>Middlewares/STM32_WPAN/thread.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/thread_ftd.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/tl_mbox.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</location>
</link>
<link>
- <name>Middlewares/Third_Party/FreeRTOS/Source/portable/IAR/ARM_CM4F/port.c</name>
+ <name>Middlewares/STM32_WPAN/tl_thread_hci.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</location>
</link>
<link>
- <name>Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c</name>
+ <name>Middlewares/STM32_WPAN/udp.c</name>
<type>1</type>
- <location>PARENT-7-PROJECT_LOC/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c</location>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</location>
</link>
<link>
<name>Utilities/stm32_lpm.c</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/stm32wb55xx_flash_cm4.ld
new file mode 100644
index 000000000..8ec68e584
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/Thread_Ota/stm32wb55xx_flash_cm4.ld
@@ -0,0 +1,187 @@
+/**
+*****************************************************************************
+**
+** File : stm32wb55xx_flash_cm4.ld
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed "as is," without any warranty
+** of any kind.
+**
+*****************************************************************************
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 Ac6</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of Ac6 nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20030000; /* end of RAM */
+/* Generate a link error if heap and stack don't fit into RAM */
+_Min_Heap_Size = 0x400; /* required amount of heap */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
+
+/* Specify the memory areas */
+MEMORY
+{
+FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
+RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 191K
+RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K
+}
+
+/* Define output sections */
+SECTIONS
+{
+ /* The startup code goes first into FLASH */
+ .isr_vector :
+ {
+ . = ALIGN(4);
+ KEEP(*(.isr_vector)) /* Startup code */
+ . = ALIGN(4);
+ } >FLASH
+
+ /* The program code and other data goes into FLASH */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* Constant data goes into FLASH */
+ .rodata :
+ {
+ . = ALIGN(4);
+ *(.rodata) /* .rodata sections (constants, strings, etc.) */
+ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+ .ARM : {
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ } >FLASH
+
+ .preinit_array :
+ {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array*))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } >FLASH
+ .init_array :
+ {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array*))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } >FLASH
+ .fini_array :
+ {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(SORT(.fini_array.*)))
+ KEEP (*(.fini_array*))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } >FLASH
+
+ /* used by the startup to initialize data */
+ _sidata = LOADADDR(.data);
+
+ /* Initialized data sections goes into RAM, load LMA copy after code */
+ .data :
+ {
+ . = ALIGN(4);
+ _sdata = .; /* create a global symbol at data start */
+ *(.data) /* .data sections */
+ *(.data*) /* .data* sections */
+
+ . = ALIGN(4);
+ _edata = .; /* define a global symbol at data end */
+ } >RAM1 AT> FLASH
+
+
+ /* Uninitialized data section */
+ . = ALIGN(4);
+ .bss :
+ {
+ /* This is used by the startup in order to initialize the .bss secion */
+ _sbss = .; /* define a global symbol at bss start */
+ __bss_start__ = _sbss;
+ *(.bss)
+ *(.bss*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ _ebss = .; /* define a global symbol at bss end */
+ __bss_end__ = _ebss;
+ } >RAM1
+
+ /* User_heap_stack section, used to check that there is enough RAM left */
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE ( end = . );
+ PROVIDE ( _end = . );
+ . = . + _Min_Heap_Size;
+ . = . + _Min_Stack_Size;
+ . = ALIGN(8);
+ } >RAM1
+
+
+
+ /* Remove information from the standard libraries */
+ /DISCARD/ :
+ {
+ libc.a ( * )
+ libm.a ( * )
+ libgcc.a ( * )
+ }
+
+ .ARM.attributes 0 : { *(.ARM.attributes) }
+ MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM_SHARED
+ MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM_SHARED
+ MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM_SHARED
+}
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..f79eec117
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,445 @@
+/**
+ ******************************************************************************
+ * @file startup_stm32wb55xx_cm4.s
+ * @author MCD Application Team
+ * @brief STM32WB55xx devices vector table GCC toolchain.
+ * This module performs:
+ * - Set the initial SP
+ * - Set the initial PC == Reset_Handler,
+ * - Set the vector table entries with the exceptions ISR address
+ * - Branches to main in the C library (which eventually
+ * calls main()).
+ * After Reset the Cortex-M4 processor is in Thread mode,
+ * priority is Privileged, and the Stack is set to Main.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+ .syntax unified
+ .cpu cortex-m4
+ .fpu softvfp
+ .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+/* start address for the .MB_MEM2 section. defined in linker script */
+.word _sMB_MEM2
+/* end address for the .MB_MEM2 section. defined in linker script */
+.word _eMB_MEM2
+
+/* INIT_BSS macro is used to fill the specified region [start : end] with zeros */
+.macro INIT_BSS start, end
+ ldr r0, =\start
+ ldr r1, =\end
+ movs r3, #0
+ bl LoopFillZerobss
+.endm
+
+/* INIT_DATA macro is used to copy data in the region [start : end] starting from 'src' */
+.macro INIT_DATA start, end, src
+ ldr r0, =\start
+ ldr r1, =\end
+ ldr r2, =\src
+ movs r3, #0
+ bl LoopCopyDataInit
+.endm
+
+.section .text.data_initializers
+CopyDataInit:
+ ldr r4, [r2, r3]
+ str r4, [r0, r3]
+ adds r3, r3, #4
+
+LoopCopyDataInit:
+ adds r4, r0, r3
+ cmp r4, r1
+ bcc CopyDataInit
+ bx lr
+
+FillZerobss:
+ str r3, [r0]
+ adds r0, r0, #4
+
+LoopFillZerobss:
+ cmp r0, r1
+ bcc FillZerobss
+ bx lr
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr r0, =_estack
+ mov sp, r0 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ INIT_DATA _sdata, _edata, _sidata
+
+/* Zero fill the bss segments. */
+ INIT_BSS _sbss, _ebss
+ INIT_BSS _sMB_MEM2, _eMB_MEM2
+
+/* Call the clock system intitialization function.*/
+ bl SystemInit
+/* Call static constructors */
+ bl __libc_init_array
+/* Call the application s entry point.*/
+ bl main
+
+LoopForever:
+ b LoopForever
+
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief This is the code that gets called when the processor receives an
+ * unexpected interrupt. This simply enters an infinite loop, preserving
+ * the system state for examination by a debugger.
+ *
+ * @param None
+ * @retval None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex-M4. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+ .section .isr_vector,"a",%progbits
+ .type g_pfnVectors, %object
+ .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+ .word _estack
+ .word Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0
+ .word PendSV_Handler
+ .word SysTick_Handler
+ .word WWDG_IRQHandler
+ .word PVD_PVM_IRQHandler
+ .word TAMP_STAMP_LSECSS_IRQHandler
+ .word RTC_WKUP_IRQHandler
+ .word FLASH_IRQHandler
+ .word RCC_IRQHandler
+ .word EXTI0_IRQHandler
+ .word EXTI1_IRQHandler
+ .word EXTI2_IRQHandler
+ .word EXTI3_IRQHandler
+ .word EXTI4_IRQHandler
+ .word DMA1_Channel1_IRQHandler
+ .word DMA1_Channel2_IRQHandler
+ .word DMA1_Channel3_IRQHandler
+ .word DMA1_Channel4_IRQHandler
+ .word DMA1_Channel5_IRQHandler
+ .word DMA1_Channel6_IRQHandler
+ .word DMA1_Channel7_IRQHandler
+ .word ADC1_IRQHandler
+ .word USB_HP_IRQHandler
+ .word USB_LP_IRQHandler
+ .word C2SEV_PWR_C2H_IRQHandler
+ .word COMP_IRQHandler
+ .word EXTI9_5_IRQHandler
+ .word TIM1_BRK_IRQHandler
+ .word TIM1_UP_TIM16_IRQHandler
+ .word TIM1_TRG_COM_TIM17_IRQHandler
+ .word TIM1_CC_IRQHandler
+ .word TIM2_IRQHandler
+ .word PKA_IRQHandler
+ .word I2C1_EV_IRQHandler
+ .word I2C1_ER_IRQHandler
+ .word I2C3_EV_IRQHandler
+ .word I2C3_ER_IRQHandler
+ .word SPI1_IRQHandler
+ .word SPI2_IRQHandler
+ .word USART1_IRQHandler
+ .word LPUART1_IRQHandler
+ .word SAI1_IRQHandler
+ .word TSC_IRQHandler
+ .word EXTI15_10_IRQHandler
+ .word RTC_Alarm_IRQHandler
+ .word CRS_IRQHandler
+ .word PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .word IPCC_C1_RX_IRQHandler
+ .word IPCC_C1_TX_IRQHandler
+ .word HSEM_IRQHandler
+ .word LPTIM1_IRQHandler
+ .word LPTIM2_IRQHandler
+ .word LCD_IRQHandler
+ .word QUADSPI_IRQHandler
+ .word AES1_IRQHandler
+ .word AES2_IRQHandler
+ .word RNG_IRQHandler
+ .word FPU_IRQHandler
+ .word DMA2_Channel1_IRQHandler
+ .word DMA2_Channel2_IRQHandler
+ .word DMA2_Channel3_IRQHandler
+ .word DMA2_Channel4_IRQHandler
+ .word DMA2_Channel5_IRQHandler
+ .word DMA2_Channel6_IRQHandler
+ .word DMA2_Channel7_IRQHandler
+ .word DMAMUX1_OVR_IRQHandler
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+ .weak NMI_Handler
+ .thumb_set NMI_Handler,Default_Handler
+
+ .weak HardFault_Handler
+ .thumb_set HardFault_Handler,Default_Handler
+
+ .weak MemManage_Handler
+ .thumb_set MemManage_Handler,Default_Handler
+
+ .weak BusFault_Handler
+ .thumb_set BusFault_Handler,Default_Handler
+
+ .weak UsageFault_Handler
+ .thumb_set UsageFault_Handler,Default_Handler
+
+ .weak SVC_Handler
+ .thumb_set SVC_Handler,Default_Handler
+
+ .weak DebugMon_Handler
+ .thumb_set DebugMon_Handler,Default_Handler
+
+ .weak PendSV_Handler
+ .thumb_set PendSV_Handler,Default_Handler
+
+ .weak SysTick_Handler
+ .thumb_set SysTick_Handler,Default_Handler
+
+ .weak WWDG_IRQHandler
+ .thumb_set WWDG_IRQHandler,Default_Handler
+
+ .weak PVD_PVM_IRQHandler
+ .thumb_set PVD_PVM_IRQHandler,Default_Handler
+
+ .weak TAMP_STAMP_LSECSS_IRQHandler
+ .thumb_set TAMP_STAMP_LSECSS_IRQHandler,Default_Handler
+
+ .weak RTC_WKUP_IRQHandler
+ .thumb_set RTC_WKUP_IRQHandler,Default_Handler
+
+ .weak FLASH_IRQHandler
+ .thumb_set FLASH_IRQHandler,Default_Handler
+
+ .weak RCC_IRQHandler
+ .thumb_set RCC_IRQHandler,Default_Handler
+
+ .weak EXTI0_IRQHandler
+ .thumb_set EXTI0_IRQHandler,Default_Handler
+
+ .weak EXTI1_IRQHandler
+ .thumb_set EXTI1_IRQHandler,Default_Handler
+
+ .weak EXTI2_IRQHandler
+ .thumb_set EXTI2_IRQHandler,Default_Handler
+
+ .weak EXTI3_IRQHandler
+ .thumb_set EXTI3_IRQHandler,Default_Handler
+
+ .weak EXTI4_IRQHandler
+ .thumb_set EXTI4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel1_IRQHandler
+ .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel2_IRQHandler
+ .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel3_IRQHandler
+ .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel4_IRQHandler
+ .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel5_IRQHandler
+ .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel6_IRQHandler
+ .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel7_IRQHandler
+ .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
+
+ .weak ADC1_IRQHandler
+ .thumb_set ADC1_IRQHandler,Default_Handler
+
+ .weak USB_HP_IRQHandler
+ .thumb_set USB_HP_IRQHandler,Default_Handler
+
+ .weak USB_LP_IRQHandler
+ .thumb_set USB_LP_IRQHandler,Default_Handler
+
+ .weak C2SEV_PWR_C2H_IRQHandler
+ .thumb_set C2SEV_PWR_C2H_IRQHandler,Default_Handler
+
+ .weak COMP_IRQHandler
+ .thumb_set COMP_IRQHandler,Default_Handler
+
+ .weak EXTI9_5_IRQHandler
+ .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+ .weak TIM1_BRK_IRQHandler
+ .thumb_set TIM1_BRK_IRQHandler,Default_Handler
+
+ .weak TIM1_UP_TIM16_IRQHandler
+ .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler
+
+ .weak TIM1_TRG_COM_TIM17_IRQHandler
+ .thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler
+
+ .weak TIM1_CC_IRQHandler
+ .thumb_set TIM1_CC_IRQHandler,Default_Handler
+
+ .weak TIM2_IRQHandler
+ .thumb_set TIM2_IRQHandler,Default_Handler
+
+ .weak PKA_IRQHandler
+ .thumb_set PKA_IRQHandler,Default_Handler
+
+ .weak I2C1_EV_IRQHandler
+ .thumb_set I2C1_EV_IRQHandler,Default_Handler
+
+ .weak I2C1_ER_IRQHandler
+ .thumb_set I2C1_ER_IRQHandler,Default_Handler
+
+ .weak I2C3_EV_IRQHandler
+ .thumb_set I2C3_EV_IRQHandler,Default_Handler
+
+ .weak I2C3_ER_IRQHandler
+ .thumb_set I2C3_ER_IRQHandler,Default_Handler
+
+ .weak SPI1_IRQHandler
+ .thumb_set SPI1_IRQHandler,Default_Handler
+
+ .weak SPI2_IRQHandler
+ .thumb_set SPI2_IRQHandler,Default_Handler
+
+ .weak USART1_IRQHandler
+ .thumb_set USART1_IRQHandler,Default_Handler
+
+ .weak LPUART1_IRQHandler
+ .thumb_set LPUART1_IRQHandler,Default_Handler
+
+ .weak SAI1_IRQHandler
+ .thumb_set SAI1_IRQHandler,Default_Handler
+
+ .weak TSC_IRQHandler
+ .thumb_set TSC_IRQHandler,Default_Handler
+
+ .weak EXTI15_10_IRQHandler
+ .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+ .weak RTC_Alarm_IRQHandler
+ .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+ .weak CRS_IRQHandler
+ .thumb_set CRS_IRQHandler,Default_Handler
+
+ .weak PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .thumb_set PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_RX_IRQHandler
+ .thumb_set IPCC_C1_RX_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_TX_IRQHandler
+ .thumb_set IPCC_C1_TX_IRQHandler,Default_Handler
+
+ .weak HSEM_IRQHandler
+ .thumb_set HSEM_IRQHandler,Default_Handler
+
+ .weak LPTIM1_IRQHandler
+ .thumb_set LPTIM1_IRQHandler,Default_Handler
+
+ .weak LPTIM2_IRQHandler
+ .thumb_set LPTIM2_IRQHandler,Default_Handler
+
+ .weak LCD_IRQHandler
+ .thumb_set LCD_IRQHandler,Default_Handler
+
+ .weak QUADSPI_IRQHandler
+ .thumb_set QUADSPI_IRQHandler,Default_Handler
+
+ .weak AES1_IRQHandler
+ .thumb_set AES1_IRQHandler,Default_Handler
+
+ .weak AES2_IRQHandler
+ .thumb_set AES2_IRQHandler,Default_Handler
+
+ .weak RNG_IRQHandler
+ .thumb_set RNG_IRQHandler,Default_Handler
+
+ .weak FPU_IRQHandler
+ .thumb_set FPU_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel1_IRQHandler
+ .thumb_set DMA2_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel2_IRQHandler
+ .thumb_set DMA2_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel3_IRQHandler
+ .thumb_set DMA2_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel4_IRQHandler
+ .thumb_set DMA2_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel5_IRQHandler
+ .thumb_set DMA2_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel6_IRQHandler
+ .thumb_set DMA2_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel7_IRQHandler
+ .thumb_set DMA2_Channel7_IRQHandler,Default_Handler
+
+ .weak DMAMUX1_OVR_IRQHandler
+ .thumb_set DMAMUX1_OVR_IRQHandler,Default_Handler
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/syscalls.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/syscalls.c
new file mode 100644
index 000000000..9b7c4071a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/SW4STM32/syscalls.c
@@ -0,0 +1,207 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Author : Auto-generated by System workbench for STM32
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Target : STMicroelectronics STM32
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+** @attention
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of STMicroelectronics nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+#include <signal.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/times.h>
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/readme.txt
index f8e2b7820..d98bbac50 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota/readme.txt
@@ -207,6 +207,7 @@ In order to make the program work, you must do the following:
- Rebuild all files and load your image into target memory
- Run the application
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
For more details refer to the Application Note:
AN5289 - Building a Wireless application
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/app_entry.c
index fd9cdecf9..663f1a998 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/app_entry.c
@@ -237,6 +237,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/main.c
index 00e011ffa..b33e7275d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/Core/Src/main.c
@@ -209,7 +209,7 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/Thread_Ota_Server.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/Thread_Ota_Server.ewp
index 9ab643a6f..0f06febad 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/Thread_Ota_Server.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/Thread_Ota_Server.ewp
@@ -1301,4 +1301,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\sequencer\stm32_seq.c</name>
</file>
</group>
+ <group>
+ <name>Doc</name>
+ <file>
+ <name>$PROJ_DIR$\..\readme.txt</name>
+ </file>
+ </group>
</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/stm32wb55xx_sram_cm4.icf b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/stm32wb55xx_sram_cm4.icf
deleted file mode 100644
index 36cf3e51a..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/EWARM/stm32wb55xx_sram_cm4.icf
+++ /dev/null
@@ -1,39 +0,0 @@
-/*###ICF### Section handled by ICF editor, don't touch! ****/
-/*-Editor annotation file-*/
-/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
-/*-Specials-*/
-define symbol __ICFEDIT_intvec_start__ = 0x20000000;
-/*-Memory Regions-*/
-/***** RAM dedicated to M4 *****/
-define symbol __ICFEDIT_region_ROM_start__ = 0x20000000;
-define symbol __ICFEDIT_region_ROM_end__ = 0x20017FFF;
-
-define symbol __ICFEDIT_region_RAM_start__ = 0x20018000 ;
-define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF ;
-
-/***** RAM2a *****/
-define symbol __ICFEDIT_region_RAM_SHARED_start__ = 0x20030000 ;
-define symbol __ICFEDIT_region_RAM_SHARED_end__ = 0x20037FFF ;
-
-/*-Sizes-*/
-define symbol __ICFEDIT_size_cstack__ = 0x1000;
-define symbol __ICFEDIT_size_heap__ = 0x400;
-/**** End of ICF editor section. ###ICF###*/
-
-
-define memory mem with size = 4G;
-define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
-define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
-
-
-define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
-define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
-
-initialize by copy { readwrite };
-do not initialize { section .noinit };
-
-place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
-
-place in ROM_region { readonly };
-place in RAM_region { readwrite,
- block CSTACK, block HEAP };
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/Thread_Ota_Server.uvoptx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/Thread_Ota_Server.uvoptx
new file mode 100644
index 000000000..e25ec79a7
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/Thread_Ota_Server.uvoptx
@@ -0,0 +1,1113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>Thread_Ota_Server</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>8000000</CLKADS>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>0</RunSim>
+ <RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath></ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>0</CpuCode>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>1</tRfunc>
+ <tRbox>1</tRbox>
+ <tRtrace>0</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55RGVx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>0</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_hal_msp.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_msp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm_logging.c</PathWithFileName>
+ <FilenameWithoutPath>stm_logging.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/App</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/app_thread.c</PathWithFileName>
+ <FilenameWithoutPath>app_thread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/Target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_nucleo.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_exti.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_flash_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_hsem.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_tim_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</PathWithFileName>
+ <FilenameWithoutPath>channel_manager.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</PathWithFileName>
+ <FilenameWithoutPath>channel_monitor.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</PathWithFileName>
+ <FilenameWithoutPath>child_supervision.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</PathWithFileName>
+ <FilenameWithoutPath>coap.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</PathWithFileName>
+ <FilenameWithoutPath>commissioner.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</PathWithFileName>
+ <FilenameWithoutPath>crypto.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</PathWithFileName>
+ <FilenameWithoutPath>dataset.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</PathWithFileName>
+ <FilenameWithoutPath>dataset_ftd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</PathWithFileName>
+ <FilenameWithoutPath>dhcp6_client.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</PathWithFileName>
+ <FilenameWithoutPath>dhcp6_server.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</PathWithFileName>
+ <FilenameWithoutPath>diag.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</PathWithFileName>
+ <FilenameWithoutPath>dns.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</PathWithFileName>
+ <FilenameWithoutPath>icmp6.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</PathWithFileName>
+ <FilenameWithoutPath>instance.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</PathWithFileName>
+ <FilenameWithoutPath>ip6.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</PathWithFileName>
+ <FilenameWithoutPath>jam_detection.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</PathWithFileName>
+ <FilenameWithoutPath>joiner.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</PathWithFileName>
+ <FilenameWithoutPath>link.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</PathWithFileName>
+ <FilenameWithoutPath>link_raw.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</PathWithFileName>
+ <FilenameWithoutPath>message.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</PathWithFileName>
+ <FilenameWithoutPath>netdata.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</PathWithFileName>
+ <FilenameWithoutPath>openthread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>56</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</PathWithFileName>
+ <FilenameWithoutPath>openthread_api_wb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>57</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>58</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</PathWithFileName>
+ <FilenameWithoutPath>radio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>59</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</PathWithFileName>
+ <FilenameWithoutPath>server.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>60</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>61</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>62</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>63</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>64</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>65</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</PathWithFileName>
+ <FilenameWithoutPath>tasklet.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>66</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</PathWithFileName>
+ <FilenameWithoutPath>thread.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>67</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</PathWithFileName>
+ <FilenameWithoutPath>thread_ftd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>68</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>69</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</PathWithFileName>
+ <FilenameWithoutPath>tl_thread_hci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>70</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</PathWithFileName>
+ <FilenameWithoutPath>udp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>71</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>72</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/Thread_Ota_Server.uvprojx b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/Thread_Ota_Server.uvprojx
new file mode 100644
index 000000000..4d8da6232
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/Thread_Ota_Server.uvprojx
@@ -0,0 +1,795 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+ <SchemaVersion>2.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>Thread_Ota_Server</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <uAC6>0</uAC6>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>STM32WB55RGVx</Device>
+ <Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
+ <Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55RGVx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
+ <bCustSvd>0</bCustSvd>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>Thread_Ota_Server\Exe\</OutputDirectory>
+ <OutputName>Thread_Ota_Server</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>0</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath></ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>1</ComprImg>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments>-REMAP -MPU</SimDllArguments>
+ <SimDlgDll>DCM.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments>-MPU</TargetDllArguments>
+ <TargetDlgDll>TCM.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>4107</DriverSelection>
+ </Flash1>
+ <bUseTDR>1</bUseTDR>
+ <Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
+ <Flash3>"" ()</Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
+ <FcArmLst>0</FcArmLst>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>1</AdsALst>
+ <AdsACrf>1</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>"Cortex-M4"</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>2</RvdsVP>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>1</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>0</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>1</interw>
+ <Optim>4</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>1</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <uSurpInc>0</uSurpInc>
+ <uC99>0</uC99>
+ <uGnu>0</uGnu>
+ <useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
+ <VariousControls>
+ <MiscControls>--C99</MiscControls>
+ <Define>OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;,USE_HAL_DRIVER,STM32WB55xx,USE_STM32WBXX_NUCLEO,THREAD_WB</Define>
+ <Undefine></Undefine>
+ <IncludePath>../Core/Inc;../STM32_WPAN/App;../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread;../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform;../../../../../../Drivers/CMSIS/Include</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>0</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x08000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
+ <pXoBase></pXoBase>
+ <ScatterFile>stm32wb55xx_flash_cm4.sct</ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc>--diag_suppress=L6329</Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <Files>
+ <File>
+ <FileName>startup_stm32wb55xx_cm4.s</FileName>
+ <FileType>2</FileType>
+ <FilePath>startup_stm32wb55xx_cm4.s</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/Core</GroupName>
+ <Files>
+ <File>
+ <FileName>app_entry.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/app_entry.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_timerserver.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/hw_timerserver.c</FilePath>
+ </File>
+ <File>
+ <FileName>hw_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/hw_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>main.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/main.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_lpm_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32_lpm_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_msp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32wbxx_hal_msp.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_it.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm32wbxx_it.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_logging.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/stm_logging.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/App</GroupName>
+ <Files>
+ <File>
+ <FileName>app_thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/App/app_thread.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Application/User/STM32_WPAN/Target</GroupName>
+ <Files>
+ <File>
+ <FileName>hw_ipcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../STM32_WPAN/Target/hw_ipcc.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.Nucleo</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_nucleo.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <Files>
+ <File>
+ <FileName>system_stm32wbxx.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../Core/Src/system_stm32wbxx.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32wbxx_hal.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_cortex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_dma_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_exti.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_flash_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_gpio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_hsem.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_pwr_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rcc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rtc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_rtc_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_tim.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_tim_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32wbxx_hal_uart_ex.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN</GroupName>
+ <Files>
+ <File>
+ <FileName>channel_manager.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</FilePath>
+ </File>
+ <File>
+ <FileName>channel_monitor.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</FilePath>
+ </File>
+ <File>
+ <FileName>child_supervision.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</FilePath>
+ </File>
+ <File>
+ <FileName>coap.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</FilePath>
+ </File>
+ <File>
+ <FileName>commissioner.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</FilePath>
+ </File>
+ <File>
+ <FileName>crypto.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</FilePath>
+ </File>
+ <File>
+ <FileName>dataset.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</FilePath>
+ </File>
+ <File>
+ <FileName>dataset_ftd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</FilePath>
+ </File>
+ <File>
+ <FileName>dbg_trace.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</FilePath>
+ </File>
+ <File>
+ <FileName>dhcp6_client.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</FilePath>
+ </File>
+ <File>
+ <FileName>dhcp6_server.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</FilePath>
+ </File>
+ <File>
+ <FileName>diag.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</FilePath>
+ </File>
+ <File>
+ <FileName>dns.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</FilePath>
+ </File>
+ <File>
+ <FileName>icmp6.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</FilePath>
+ </File>
+ <File>
+ <FileName>instance.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</FilePath>
+ </File>
+ <File>
+ <FileName>ip6.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</FilePath>
+ </File>
+ <File>
+ <FileName>jam_detection.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</FilePath>
+ </File>
+ <File>
+ <FileName>joiner.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</FilePath>
+ </File>
+ <File>
+ <FileName>link.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</FilePath>
+ </File>
+ <File>
+ <FileName>link_raw.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</FilePath>
+ </File>
+ <File>
+ <FileName>message.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</FilePath>
+ </File>
+ <File>
+ <FileName>netdata.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</FilePath>
+ </File>
+ <File>
+ <FileName>openthread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</FilePath>
+ </File>
+ <File>
+ <FileName>openthread_api_wb.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</FilePath>
+ </File>
+ <File>
+ <FileName>otp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</FilePath>
+ </File>
+ <File>
+ <FileName>radio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</FilePath>
+ </File>
+ <File>
+ <FileName>server.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</FilePath>
+ </File>
+ <File>
+ <FileName>shci_tl_if.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_list.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm_queue.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</FilePath>
+ </File>
+ <File>
+ <FileName>tasklet.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread_ftd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_mbox.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</FilePath>
+ </File>
+ <File>
+ <FileName>tl_thread_hci.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</FilePath>
+ </File>
+ <File>
+ <FileName>udp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <Files>
+ <File>
+ <FileName>stm32_lpm.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</FilePath>
+ </File>
+ <File>
+ <FileName>stm32_seq.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>../../../../../../Utilities/sequencer/stm32_seq.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+ <RTE>
+ <apis/>
+ <components/>
+ <files/>
+ </RTE>
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..e05e3c5ca
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,368 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : STM32WB55xx devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the CortexM4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;******************************************************************************
+;* @attention
+;*
+;* Copyright (c) 2019 STMicroelectronics. All rights reserved.
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; <h> Stack Configuration
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size EQU 0x1000
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size EQU 0x400
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM detector
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper and TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_PVM_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_LSECSS_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel1_IRQHandler [WEAK]
+ EXPORT DMA1_Channel2_IRQHandler [WEAK]
+ EXPORT DMA1_Channel3_IRQHandler [WEAK]
+ EXPORT DMA1_Channel4_IRQHandler [WEAK]
+ EXPORT DMA1_Channel5_IRQHandler [WEAK]
+ EXPORT DMA1_Channel6_IRQHandler [WEAK]
+ EXPORT DMA1_Channel7_IRQHandler [WEAK]
+ EXPORT ADC1_IRQHandler [WEAK]
+ EXPORT USB_HP_IRQHandler [WEAK]
+ EXPORT USB_LP_IRQHandler [WEAK]
+ EXPORT C2SEV_PWR_C2H_IRQHandler [WEAK]
+ EXPORT COMP_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_IRQHandler [WEAK]
+ EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_TIM17_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT PKA_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT TSC_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+ EXPORT PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler [WEAK]
+ EXPORT IPCC_C1_RX_IRQHandler [WEAK]
+ EXPORT IPCC_C1_TX_IRQHandler [WEAK]
+ EXPORT HSEM_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT LCD_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT AES1_IRQHandler [WEAK]
+ EXPORT AES2_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT DMA2_Channel1_IRQHandler [WEAK]
+ EXPORT DMA2_Channel2_IRQHandler [WEAK]
+ EXPORT DMA2_Channel3_IRQHandler [WEAK]
+ EXPORT DMA2_Channel4_IRQHandler [WEAK]
+ EXPORT DMA2_Channel5_IRQHandler [WEAK]
+ EXPORT DMA2_Channel6_IRQHandler [WEAK]
+ EXPORT DMA2_Channel7_IRQHandler [WEAK]
+ EXPORT DMAMUX1_OVR_IRQHandler [WEAK]
+
+WWDG_IRQHandler
+PVD_PVM_IRQHandler
+TAMP_STAMP_LSECSS_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Channel1_IRQHandler
+DMA1_Channel2_IRQHandler
+DMA1_Channel3_IRQHandler
+DMA1_Channel4_IRQHandler
+DMA1_Channel5_IRQHandler
+DMA1_Channel6_IRQHandler
+DMA1_Channel7_IRQHandler
+ADC1_IRQHandler
+USB_HP_IRQHandler
+USB_LP_IRQHandler
+C2SEV_PWR_C2H_IRQHandler
+COMP_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_IRQHandler
+TIM1_UP_TIM16_IRQHandler
+TIM1_TRG_COM_TIM17_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+PKA_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+LPUART1_IRQHandler
+SAI1_IRQHandler
+TSC_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+CRS_IRQHandler
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+IPCC_C1_RX_IRQHandler
+IPCC_C1_TX_IRQHandler
+HSEM_IRQHandler
+LPTIM1_IRQHandler
+LPTIM2_IRQHandler
+LCD_IRQHandler
+QUADSPI_IRQHandler
+AES1_IRQHandler
+AES2_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+DMA2_Channel1_IRQHandler
+DMA2_Channel2_IRQHandler
+DMA2_Channel3_IRQHandler
+DMA2_Channel4_IRQHandler
+DMA2_Channel5_IRQHandler
+DMA2_Channel6_IRQHandler
+DMA2_Channel7_IRQHandler
+DMAMUX1_OVR_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/stm32wb55xx_flash_cm4.sct b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/stm32wb55xx_flash_cm4.sct
new file mode 100644
index 000000000..63845c07b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/MDK-ARM/stm32wb55xx_flash_cm4.sct
@@ -0,0 +1,21 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x08000000 0x00080000 { ; load region size_region
+ ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ }
+ RW_IRAM1 0x20000004 0x2FFFC { ; RW data
+ .ANY (+RW +ZI)
+ }
+ RW_RAM_SHARED 0x20030000 0x2800 { ; RW data
+ *(MAPPING_TABLE)
+ *(MB_MEM1)
+ *(MB_MEM2)
+ }
+ }
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/STM32_WPAN/Target/hw_ipcc.c
index e46eeb94b..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * Middleware.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/.cproject b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/.cproject
new file mode 100644
index 000000000..945cf0c86
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/.cproject
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1820638630">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1820638630" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <externalSettings/>
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1820638630" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating binary and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O binary &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.bin&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
+ <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1820638630." name="/" resourcePath="">
+ <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.686724749" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
+ <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1868009885" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.2043028230" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32WB55RGVx" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.board.1334843171" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="P-NUCLEO-WB55.NUCLEO" valueType="string"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="ARM Cortex-M4"/>
+ <listOptionValue builtIn="false" value="CM4"/>
+ </option>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1810839298" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.410376734" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
+ <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.157837225" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
+ <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1043571654" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
+ <builder buildPath="${workspace_loc:/Thread_Ota_Server}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1534104148" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <outputEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
+ </outputEntries>
+ </builder>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1958118899" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.1879274732" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.565144598" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.include.paths.1952194033" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.1052705366" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="THREAD_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1431848004" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1081900802" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1916764625" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1522007156" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
+ <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.756719260" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.size" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.912636205" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.include.paths.1481472164" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+ <listOptionValue builtIn="false" value="../../../Core/Inc"/>
+ <listOptionValue builtIn="false" value="../../../STM32_WPAN/App"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/utilities"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/lpm/tiny_lpm"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Utilities/sequencer"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Middlewares/ST/STM32_WPAN/thread/openthread/stack/include/openthread/platform"/>
+ <listOptionValue builtIn="false" value="../../../../../../../../Drivers/CMSIS/Include"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.934443287" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="OPENTHREAD_CONFIG_FILE=&lt;openthread_api_config_ftd.h&gt;"/>
+ <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+ <listOptionValue builtIn="false" value="STM32WB55xx"/>
+ <listOptionValue builtIn="false" value="USE_STM32WBXX_NUCLEO"/>
+ <listOptionValue builtIn="false" value="THREAD_WB"/>
+ </option>
+ <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.454877991" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1910542835" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1558922221" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.707010909" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.1477308136" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.c.link.option.libs.1589215021" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
+ <option id="gnu.c.link.option.paths.1076354257" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
+ <option id="gnu.c.link.option.ldflags.847127785" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.c.link.option.other.991064318" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.497500023" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.618421447" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
+ <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.469946941" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../stm32wb55xx_flash_cm4.ld" valueType="string"/>
+ <option id="gnu.cpp.link.option.libs.1806977104" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+ <option id="gnu.cpp.link.option.paths.436204101" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
+ <option id="gnu.cpp.link.option.flags.587583473" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
+ <option id="gnu.cpp.link.option.other.544592071" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2014133700" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool id="fr.ac6.managedbuild.tool.gnu.archiver.162729020" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
+ <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.789489254" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
+ <option id="gnu.both.asm.option.include.paths.1113670065" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.164569952" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.780343918" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
+ </tool>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="Thread_Ota_Server.fr.ac6.managedbuild.target.gnu.cross.exe.851698561" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.1820638630;fr.ac6.managedbuild.config.gnu.cross.exe.debug.1820638630.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1958118899;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1081900802">
+ <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="refreshScope" versionNumber="2">
+ <configuration artifactName="${ProjName}" configurationName="Debug">
+ <resource resourceType="PROJECT" workspacePath="Thread_Ota_Server"/>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/.project b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/.project
new file mode 100644
index 000000000..522e2f1f7
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/.project
@@ -0,0 +1,393 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
+ <name>Thread_Ota_Server</name>
+ <comment/>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>Application/SW4STM32/syscalls.c</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/syscalls.c</location>
+ </link><link>
+ <name>Application/SW4STM32/startup_stm32wb55xx_cm4.s</name>
+ <type>1</type>
+ <location>PARENT-1-PROJECT_LOC/startup_stm32wb55xx_cm4.s</location>
+ </link>
+
+ <link>
+ <name>Application/User/Core/app_entry.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/app_entry.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/hw_timerserver.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/hw_timerserver.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/hw_uart.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/hw_uart.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/main.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/main.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/stm32_lpm_if.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32_lpm_if.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/stm32wbxx_hal_msp.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_hal_msp.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/stm32wbxx_it.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm32wbxx_it.c</location>
+ </link>
+ <link>
+ <name>Application/User/Core/stm_logging.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/stm_logging.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/App/app_thread.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/App/app_thread.c</location>
+ </link>
+ <link>
+ <name>Application/User/STM32_WPAN/Target/hw_ipcc.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/STM32_WPAN/Target/hw_ipcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c</location>
+ </link>
+ <link>
+ <name>Drivers/CMSIS/system_stm32wbxx.c</name>
+ <type>1</type>
+ <location>PARENT-2-PROJECT_LOC/Core/Src/system_stm32wbxx.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_cortex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_dma_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_exti.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_exti.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_flash_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_flash_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_gpio.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_hsem.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_hsem.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_pwr_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rcc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rtc.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_rtc_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_tim_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_tim_ex.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</location>
+ </link>
+ <link>
+ <name>Drivers/STM32WBxx_HAL_Driver/stm32wbxx_hal_uart_ex.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/channel_manager.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_manager.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/channel_monitor.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/channel_monitor.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/child_supervision.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/child_supervision.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/coap.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/coap.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/commissioner.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/commissioner.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/crypto.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/crypto.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dataset.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dataset_ftd.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dataset_ftd.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dbg_trace.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dhcp6_client.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_client.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dhcp6_server.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dhcp6_server.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/diag.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/diag.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/dns.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/dns.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/icmp6.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/icmp6.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/instance.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/instance.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/ip6.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/ip6.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/jam_detection.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/jam_detection.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/joiner.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/joiner.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/link.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/link_raw.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/link_raw.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/message.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/message.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/netdata.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/netdata.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/openthread.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/openthread_api_wb.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/openthread_api_wb.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/otp.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/otp.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/radio.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/radio.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/server.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/server.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci_tl.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/shci_tl_if.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/stm_list.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_list.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/stm_queue.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/tasklet.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/tasklet.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/thread.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/thread_ftd.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/thread_ftd.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/tl_mbox.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/tl_thread_hci.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_thread_hci.c</location>
+ </link>
+ <link>
+ <name>Middlewares/STM32_WPAN/udp.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Middlewares/ST/STM32_WPAN/thread/openthread/core/openthread_api/udp.c</location>
+ </link>
+ <link>
+ <name>Utilities/stm32_lpm.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Utilities/lpm/tiny_lpm/stm32_lpm.c</location>
+ </link>
+ <link>
+ <name>Utilities/stm32_seq.c</name>
+ <type>1</type>
+ <location>PARENT-7-PROJECT_LOC/Utilities/sequencer/stm32_seq.c</location>
+ </link>
+ </linkedResources>
+</projectDescription> \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/stm32wb55xx_flash_cm4.ld
new file mode 100644
index 000000000..c31b28be3
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/Thread_Ota_Server/stm32wb55xx_flash_cm4.ld
@@ -0,0 +1,187 @@
+/**
+*****************************************************************************
+**
+** File : stm32wb55xx_flash_cm4.ld
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 Ac6</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of Ac6 nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_estack = 0x20030000; /* end of RAM */
+/* Generate a link error if heap and stack don't fit into RAM */
+_Min_Heap_Size = 0x400; /* required amount of heap */
+_Min_Stack_Size = 0x1000; /* required amount of stack */
+
+/* Specify the memory areas */
+MEMORY
+{
+FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
+RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 0x2FFFC
+RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K
+}
+
+/* Define output sections */
+SECTIONS
+{
+ /* The startup code goes first into FLASH */
+ .isr_vector :
+ {
+ . = ALIGN(4);
+ KEEP(*(.isr_vector)) /* Startup code */
+ . = ALIGN(4);
+ } >FLASH
+
+ /* The program code and other data goes into FLASH */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* Constant data goes into FLASH */
+ .rodata :
+ {
+ . = ALIGN(4);
+ *(.rodata) /* .rodata sections (constants, strings, etc.) */
+ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
+ .ARM : {
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ } >FLASH
+
+ .preinit_array :
+ {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array*))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } >FLASH
+ .init_array :
+ {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array*))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } >FLASH
+ .fini_array :
+ {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(SORT(.fini_array.*)))
+ KEEP (*(.fini_array*))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } >FLASH
+
+ /* used by the startup to initialize data */
+ _sidata = LOADADDR(.data);
+
+ /* Initialized data sections goes into RAM, load LMA copy after code */
+ .data :
+ {
+ . = ALIGN(4);
+ _sdata = .; /* create a global symbol at data start */
+ *(.data) /* .data sections */
+ *(.data*) /* .data* sections */
+
+ . = ALIGN(4);
+ _edata = .; /* define a global symbol at data end */
+ } >RAM1 AT> FLASH
+
+
+ /* Uninitialized data section */
+ . = ALIGN(4);
+ .bss :
+ {
+ /* This is used by the startup in order to initialize the .bss secion */
+ _sbss = .; /* define a global symbol at bss start */
+ __bss_start__ = _sbss;
+ *(.bss)
+ *(.bss*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ _ebss = .; /* define a global symbol at bss end */
+ __bss_end__ = _ebss;
+ } >RAM1
+
+ /* User_heap_stack section, used to check that there is enough RAM left */
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE ( end = . );
+ PROVIDE ( _end = . );
+ . = . + _Min_Heap_Size;
+ . = . + _Min_Stack_Size;
+ . = ALIGN(8);
+ } >RAM1
+
+
+
+ /* Remove information from the standard libraries */
+ /DISCARD/ :
+ {
+ libc.a ( * )
+ libm.a ( * )
+ libgcc.a ( * )
+ }
+
+ .ARM.attributes 0 : { *(.ARM.attributes) }
+ MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM_SHARED
+ MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM_SHARED
+ MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM_SHARED
+}
+
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..f79eec117
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,445 @@
+/**
+ ******************************************************************************
+ * @file startup_stm32wb55xx_cm4.s
+ * @author MCD Application Team
+ * @brief STM32WB55xx devices vector table GCC toolchain.
+ * This module performs:
+ * - Set the initial SP
+ * - Set the initial PC == Reset_Handler,
+ * - Set the vector table entries with the exceptions ISR address
+ * - Branches to main in the C library (which eventually
+ * calls main()).
+ * After Reset the Cortex-M4 processor is in Thread mode,
+ * priority is Privileged, and the Stack is set to Main.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+ .syntax unified
+ .cpu cortex-m4
+ .fpu softvfp
+ .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+/* start address for the .MB_MEM2 section. defined in linker script */
+.word _sMB_MEM2
+/* end address for the .MB_MEM2 section. defined in linker script */
+.word _eMB_MEM2
+
+/* INIT_BSS macro is used to fill the specified region [start : end] with zeros */
+.macro INIT_BSS start, end
+ ldr r0, =\start
+ ldr r1, =\end
+ movs r3, #0
+ bl LoopFillZerobss
+.endm
+
+/* INIT_DATA macro is used to copy data in the region [start : end] starting from 'src' */
+.macro INIT_DATA start, end, src
+ ldr r0, =\start
+ ldr r1, =\end
+ ldr r2, =\src
+ movs r3, #0
+ bl LoopCopyDataInit
+.endm
+
+.section .text.data_initializers
+CopyDataInit:
+ ldr r4, [r2, r3]
+ str r4, [r0, r3]
+ adds r3, r3, #4
+
+LoopCopyDataInit:
+ adds r4, r0, r3
+ cmp r4, r1
+ bcc CopyDataInit
+ bx lr
+
+FillZerobss:
+ str r3, [r0]
+ adds r0, r0, #4
+
+LoopFillZerobss:
+ cmp r0, r1
+ bcc FillZerobss
+ bx lr
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr r0, =_estack
+ mov sp, r0 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ INIT_DATA _sdata, _edata, _sidata
+
+/* Zero fill the bss segments. */
+ INIT_BSS _sbss, _ebss
+ INIT_BSS _sMB_MEM2, _eMB_MEM2
+
+/* Call the clock system intitialization function.*/
+ bl SystemInit
+/* Call static constructors */
+ bl __libc_init_array
+/* Call the application s entry point.*/
+ bl main
+
+LoopForever:
+ b LoopForever
+
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief This is the code that gets called when the processor receives an
+ * unexpected interrupt. This simply enters an infinite loop, preserving
+ * the system state for examination by a debugger.
+ *
+ * @param None
+ * @retval None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex-M4. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+ .section .isr_vector,"a",%progbits
+ .type g_pfnVectors, %object
+ .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+ .word _estack
+ .word Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0
+ .word PendSV_Handler
+ .word SysTick_Handler
+ .word WWDG_IRQHandler
+ .word PVD_PVM_IRQHandler
+ .word TAMP_STAMP_LSECSS_IRQHandler
+ .word RTC_WKUP_IRQHandler
+ .word FLASH_IRQHandler
+ .word RCC_IRQHandler
+ .word EXTI0_IRQHandler
+ .word EXTI1_IRQHandler
+ .word EXTI2_IRQHandler
+ .word EXTI3_IRQHandler
+ .word EXTI4_IRQHandler
+ .word DMA1_Channel1_IRQHandler
+ .word DMA1_Channel2_IRQHandler
+ .word DMA1_Channel3_IRQHandler
+ .word DMA1_Channel4_IRQHandler
+ .word DMA1_Channel5_IRQHandler
+ .word DMA1_Channel6_IRQHandler
+ .word DMA1_Channel7_IRQHandler
+ .word ADC1_IRQHandler
+ .word USB_HP_IRQHandler
+ .word USB_LP_IRQHandler
+ .word C2SEV_PWR_C2H_IRQHandler
+ .word COMP_IRQHandler
+ .word EXTI9_5_IRQHandler
+ .word TIM1_BRK_IRQHandler
+ .word TIM1_UP_TIM16_IRQHandler
+ .word TIM1_TRG_COM_TIM17_IRQHandler
+ .word TIM1_CC_IRQHandler
+ .word TIM2_IRQHandler
+ .word PKA_IRQHandler
+ .word I2C1_EV_IRQHandler
+ .word I2C1_ER_IRQHandler
+ .word I2C3_EV_IRQHandler
+ .word I2C3_ER_IRQHandler
+ .word SPI1_IRQHandler
+ .word SPI2_IRQHandler
+ .word USART1_IRQHandler
+ .word LPUART1_IRQHandler
+ .word SAI1_IRQHandler
+ .word TSC_IRQHandler
+ .word EXTI15_10_IRQHandler
+ .word RTC_Alarm_IRQHandler
+ .word CRS_IRQHandler
+ .word PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .word IPCC_C1_RX_IRQHandler
+ .word IPCC_C1_TX_IRQHandler
+ .word HSEM_IRQHandler
+ .word LPTIM1_IRQHandler
+ .word LPTIM2_IRQHandler
+ .word LCD_IRQHandler
+ .word QUADSPI_IRQHandler
+ .word AES1_IRQHandler
+ .word AES2_IRQHandler
+ .word RNG_IRQHandler
+ .word FPU_IRQHandler
+ .word DMA2_Channel1_IRQHandler
+ .word DMA2_Channel2_IRQHandler
+ .word DMA2_Channel3_IRQHandler
+ .word DMA2_Channel4_IRQHandler
+ .word DMA2_Channel5_IRQHandler
+ .word DMA2_Channel6_IRQHandler
+ .word DMA2_Channel7_IRQHandler
+ .word DMAMUX1_OVR_IRQHandler
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+ .weak NMI_Handler
+ .thumb_set NMI_Handler,Default_Handler
+
+ .weak HardFault_Handler
+ .thumb_set HardFault_Handler,Default_Handler
+
+ .weak MemManage_Handler
+ .thumb_set MemManage_Handler,Default_Handler
+
+ .weak BusFault_Handler
+ .thumb_set BusFault_Handler,Default_Handler
+
+ .weak UsageFault_Handler
+ .thumb_set UsageFault_Handler,Default_Handler
+
+ .weak SVC_Handler
+ .thumb_set SVC_Handler,Default_Handler
+
+ .weak DebugMon_Handler
+ .thumb_set DebugMon_Handler,Default_Handler
+
+ .weak PendSV_Handler
+ .thumb_set PendSV_Handler,Default_Handler
+
+ .weak SysTick_Handler
+ .thumb_set SysTick_Handler,Default_Handler
+
+ .weak WWDG_IRQHandler
+ .thumb_set WWDG_IRQHandler,Default_Handler
+
+ .weak PVD_PVM_IRQHandler
+ .thumb_set PVD_PVM_IRQHandler,Default_Handler
+
+ .weak TAMP_STAMP_LSECSS_IRQHandler
+ .thumb_set TAMP_STAMP_LSECSS_IRQHandler,Default_Handler
+
+ .weak RTC_WKUP_IRQHandler
+ .thumb_set RTC_WKUP_IRQHandler,Default_Handler
+
+ .weak FLASH_IRQHandler
+ .thumb_set FLASH_IRQHandler,Default_Handler
+
+ .weak RCC_IRQHandler
+ .thumb_set RCC_IRQHandler,Default_Handler
+
+ .weak EXTI0_IRQHandler
+ .thumb_set EXTI0_IRQHandler,Default_Handler
+
+ .weak EXTI1_IRQHandler
+ .thumb_set EXTI1_IRQHandler,Default_Handler
+
+ .weak EXTI2_IRQHandler
+ .thumb_set EXTI2_IRQHandler,Default_Handler
+
+ .weak EXTI3_IRQHandler
+ .thumb_set EXTI3_IRQHandler,Default_Handler
+
+ .weak EXTI4_IRQHandler
+ .thumb_set EXTI4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel1_IRQHandler
+ .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel2_IRQHandler
+ .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel3_IRQHandler
+ .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel4_IRQHandler
+ .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel5_IRQHandler
+ .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel6_IRQHandler
+ .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel7_IRQHandler
+ .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
+
+ .weak ADC1_IRQHandler
+ .thumb_set ADC1_IRQHandler,Default_Handler
+
+ .weak USB_HP_IRQHandler
+ .thumb_set USB_HP_IRQHandler,Default_Handler
+
+ .weak USB_LP_IRQHandler
+ .thumb_set USB_LP_IRQHandler,Default_Handler
+
+ .weak C2SEV_PWR_C2H_IRQHandler
+ .thumb_set C2SEV_PWR_C2H_IRQHandler,Default_Handler
+
+ .weak COMP_IRQHandler
+ .thumb_set COMP_IRQHandler,Default_Handler
+
+ .weak EXTI9_5_IRQHandler
+ .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+ .weak TIM1_BRK_IRQHandler
+ .thumb_set TIM1_BRK_IRQHandler,Default_Handler
+
+ .weak TIM1_UP_TIM16_IRQHandler
+ .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler
+
+ .weak TIM1_TRG_COM_TIM17_IRQHandler
+ .thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler
+
+ .weak TIM1_CC_IRQHandler
+ .thumb_set TIM1_CC_IRQHandler,Default_Handler
+
+ .weak TIM2_IRQHandler
+ .thumb_set TIM2_IRQHandler,Default_Handler
+
+ .weak PKA_IRQHandler
+ .thumb_set PKA_IRQHandler,Default_Handler
+
+ .weak I2C1_EV_IRQHandler
+ .thumb_set I2C1_EV_IRQHandler,Default_Handler
+
+ .weak I2C1_ER_IRQHandler
+ .thumb_set I2C1_ER_IRQHandler,Default_Handler
+
+ .weak I2C3_EV_IRQHandler
+ .thumb_set I2C3_EV_IRQHandler,Default_Handler
+
+ .weak I2C3_ER_IRQHandler
+ .thumb_set I2C3_ER_IRQHandler,Default_Handler
+
+ .weak SPI1_IRQHandler
+ .thumb_set SPI1_IRQHandler,Default_Handler
+
+ .weak SPI2_IRQHandler
+ .thumb_set SPI2_IRQHandler,Default_Handler
+
+ .weak USART1_IRQHandler
+ .thumb_set USART1_IRQHandler,Default_Handler
+
+ .weak LPUART1_IRQHandler
+ .thumb_set LPUART1_IRQHandler,Default_Handler
+
+ .weak SAI1_IRQHandler
+ .thumb_set SAI1_IRQHandler,Default_Handler
+
+ .weak TSC_IRQHandler
+ .thumb_set TSC_IRQHandler,Default_Handler
+
+ .weak EXTI15_10_IRQHandler
+ .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+ .weak RTC_Alarm_IRQHandler
+ .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+ .weak CRS_IRQHandler
+ .thumb_set CRS_IRQHandler,Default_Handler
+
+ .weak PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ .thumb_set PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_RX_IRQHandler
+ .thumb_set IPCC_C1_RX_IRQHandler,Default_Handler
+
+ .weak IPCC_C1_TX_IRQHandler
+ .thumb_set IPCC_C1_TX_IRQHandler,Default_Handler
+
+ .weak HSEM_IRQHandler
+ .thumb_set HSEM_IRQHandler,Default_Handler
+
+ .weak LPTIM1_IRQHandler
+ .thumb_set LPTIM1_IRQHandler,Default_Handler
+
+ .weak LPTIM2_IRQHandler
+ .thumb_set LPTIM2_IRQHandler,Default_Handler
+
+ .weak LCD_IRQHandler
+ .thumb_set LCD_IRQHandler,Default_Handler
+
+ .weak QUADSPI_IRQHandler
+ .thumb_set QUADSPI_IRQHandler,Default_Handler
+
+ .weak AES1_IRQHandler
+ .thumb_set AES1_IRQHandler,Default_Handler
+
+ .weak AES2_IRQHandler
+ .thumb_set AES2_IRQHandler,Default_Handler
+
+ .weak RNG_IRQHandler
+ .thumb_set RNG_IRQHandler,Default_Handler
+
+ .weak FPU_IRQHandler
+ .thumb_set FPU_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel1_IRQHandler
+ .thumb_set DMA2_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel2_IRQHandler
+ .thumb_set DMA2_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel3_IRQHandler
+ .thumb_set DMA2_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel4_IRQHandler
+ .thumb_set DMA2_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel5_IRQHandler
+ .thumb_set DMA2_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel6_IRQHandler
+ .thumb_set DMA2_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel7_IRQHandler
+ .thumb_set DMA2_Channel7_IRQHandler,Default_Handler
+
+ .weak DMAMUX1_OVR_IRQHandler
+ .thumb_set DMAMUX1_OVR_IRQHandler,Default_Handler
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/syscalls.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/syscalls.c
new file mode 100644
index 000000000..9b7c4071a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/SW4STM32/syscalls.c
@@ -0,0 +1,207 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Author : Auto-generated by System workbench for STM32
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Target : STMicroelectronics STM32
+**
+** Distribution: The file is distributed as is, without any warranty
+** of any kind.
+**
+*****************************************************************************
+** @attention
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+** 3. Neither the name of STMicroelectronics nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+#include <signal.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/times.h>
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/readme.txt
index 19fbdcf05..84dc102e4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_Ota_Server/readme.txt
@@ -207,6 +207,7 @@ In order to make the program work, you must do the following:
- Rebuild all files and load your image into target memory
- Run the application
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
For more details refer to the Application Note:
AN5289 - Building a Wireless application
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/FreeRTOSConfig.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/FreeRTOSConfig.h
index 509db993c..21c5823a5 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/FreeRTOSConfig.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/FreeRTOSConfig.h
@@ -140,6 +140,7 @@ standard names. */
/* IMPORTANT: This define is commented when used with STM32Cube firmware, when the timebase source is SysTick,
to prevent overwriting SysTick_Handler defined within STM32Cube HAL */
+
#define xPortSysTickHandler SysTick_Handler
/* USER CODE BEGIN Defines */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/app_conf.h
index a995d5c28..616f88a3b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/app_conf.h
@@ -172,7 +172,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
@@ -314,6 +314,7 @@ typedef enum
#define CFG_THREAD_SET_SED_MODE_PROCESS_PRIORITY osPriorityNormal
#define CFG_THREAD_SET_SED_MODE_PROCESS_STACk_SIZE (128 * 8)
/* USER CODE END FreeRTOS_Defines */
+
/******************************************************************************
* LOW POWER
******************************************************************************/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/hw_conf.h
index 830502320..8b8665583 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/hw_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Inc/hw_conf.h
@@ -198,13 +198,13 @@
#define CFG_HW_USART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
#define CFG_HW_USART1_RX_ALTERNATE GPIO_AF7_USART1
-#define CFG_HW_USART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
-#define CFG_HW_USART1_CTS_PORT GPIOA
-#define CFG_HW_USART1_CTS_PIN GPIO_PIN_11
+#define CFG_HW_USART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOvalueNotSetted_CLK_ENABLE
+#define CFG_HW_USART1_CTS_PORT GPIOvalueNotSetted
+#define CFG_HW_USART1_CTS_PIN GPIO_PIN_valueNotSetted
#define CFG_HW_USART1_CTS_MODE GPIO_MODE_AF_PP
#define CFG_HW_USART1_CTS_PULL GPIO_PULLDOWN
#define CFG_HW_USART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
-#define CFG_HW_USART1_CTS_ALTERNATE GPIO_AF7_USART1
+#define CFG_HW_USART1_CTS_ALTERNATE GPIO_AFvalueNotSetted_USART1
#define CFG_HW_USART1_DMA_TX_PREEMPTPRIORITY 0x0F
#define CFG_HW_USART1_DMA_TX_SUBPRIORITY 0
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/app_entry.c
index a8aac5e50..7afb7d521 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/app_entry.c
@@ -64,6 +64,7 @@ PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t SystemSpareEvtBuffer[sizeof(
/* USER CODE BEGIN PV */
/* USER CODE END PV */
+
/* Global variables ----------------------------------------------------------*/
osMutexId_t MtxShciId;
osSemaphoreId_t SemShciId;
@@ -225,7 +226,7 @@ static void appe_Tl_Init( void )
SemShciId = osSemaphoreNew( 1, 0, NULL ); /*< Create the semaphore and make it busy at initialization */
/** FreeRTOS system task creation */
- ShciUserEvtProcessId = osThreadNew(ShciUserEvtProcess, NULL,&ShciUserEvtProcess_attr);
+ ShciUserEvtProcessId = osThreadNew(ShciUserEvtProcess, NULL, &ShciUserEvtProcess_attr);
/**< System channel initialization */
SHci_Tl_Init_Conf.p_cmdbuffer = (uint8_t*)&SystemCmdBuffer;
@@ -263,12 +264,14 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * @brief Trap a notification coming from the M0 firmware
- * @param pPayload : payload associated to the notification
- *
- * @retval None
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
-
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/main.c
index 47f1afdcb..dcd568296 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Core/Src/main.c
@@ -75,7 +75,13 @@ DMA_HandleTypeDef hdma_usart1_tx;
RTC_HandleTypeDef hrtc;
+/* Definitions for defaultTask */
osThreadId_t defaultTaskHandle;
+const osThreadAttr_t defaultTask_attributes = {
+ .name = "defaultTask",
+ .priority = (osPriority_t) osPriorityNormal,
+ .stack_size = 1024
+};
/* USER CODE BEGIN PV */
/* USER CODE END PV */
@@ -88,7 +94,7 @@ void MX_LPUART1_UART_Init(void);
void MX_USART1_UART_Init(void);
static void MX_RF_Init(void);
static void MX_RTC_Init(void);
-void StartDefaultTask(void *argument); // for v2
+void StartDefaultTask(void *argument);
/* USER CODE BEGIN PFP */
void PeriphClock_Config(void);
@@ -141,8 +147,8 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-
- osKernelInitialize(); // Initialize CMSIS-RTOS
+ /* Init scheduler */
+ osKernelInitialize();
/* USER CODE BEGIN RTOS_MUTEX */
/* add mutexes, ... */
@@ -161,12 +167,7 @@ int main(void)
/* USER CODE END RTOS_QUEUES */
/* Create the thread(s) */
- /* definition and creation of defaultTask */
- const osThreadAttr_t defaultTask_attributes = {
- .name = "defaultTask",
- .priority = (osPriority_t) osPriorityNormal,
- .stack_size = 1024
- };
+ /* creation of defaultTask */
defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes);
/* USER CODE BEGIN RTOS_THREADS */
@@ -175,10 +176,10 @@ int main(void)
/* Init code for STM32_WPAN */
APPE_Init();
-
+
/* Start scheduler */
osKernelStart();
-
+
/* We should never get here as control is now taken by the scheduler */
/* Infinite loop */
@@ -253,6 +254,9 @@ void SystemClock_Config(void)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -393,9 +397,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -633,7 +634,6 @@ void HAL_Delay(uint32_t Delay)
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
-
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/App/app_thread.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/App/app_thread.c
index d9b977353..1390c0752 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/App/app_thread.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/App/app_thread.c
@@ -994,7 +994,6 @@ static uint32_t ProcessCmdString( uint8_t* buf , uint32_t len )
#endif/* (CFG_USB_INTERFACE_ENABLE != 0) */
#if (CFG_FULL_LOW_POWER == 0)
-#if (CFG_FULL_LOW_POWER == 0)
/**
* @brief Process sends receive CLI command to M0.
* @param None
@@ -1015,7 +1014,6 @@ static void Send_CLI_To_M0(void)
TL_CLI_SendCmd();
}
#endif /* (CFG_FULL_LOW_POWER == 0) */
-#endif /* (CFG_FULL_LOW_POWER == 0) */
/**
* @brief Send notification for CLI TL Channel.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Thread_SED_Coap_FreeRTOS.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Thread_SED_Coap_FreeRTOS.ioc
index 1a3cb2331..ec21b5502 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Thread_SED_Coap_FreeRTOS.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/Thread_SED_Coap_FreeRTOS.ioc
@@ -82,8 +82,8 @@ Mcu.PinsNb=15
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.C2SEV_PWR_C2H_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:false
NVIC.DMA1_Channel1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true
@@ -91,6 +91,7 @@ NVIC.DMA1_Channel2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.FLASH_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.FPU_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HSEM_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.LPUART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/readme.txt
index 5c2ca3d06..3335b0e33 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_FreeRTOS/readme.txt
@@ -143,6 +143,8 @@ In order to make the program work, you must do the following:
- Run the application
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
If you want to control this application, you can directly send and
retrieve Cli commands connecting an HyperTerminal with the ST_Link cable.
(Refer to the Thread_Cli_Cmd application for more details)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Inc/app_conf.h
index bcff70d0a..f2f08f4cb 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Inc/app_conf.h
@@ -172,7 +172,7 @@
typedef enum
{
- CFG_TIM_PROC_ID_ISR,
+ CFG_TIM_PROC_ID_ISR,
} CFG_TimProcID_t;
/******************************************************************************
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c
index 2ee999e7a..25e9c53c6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c
@@ -231,12 +231,14 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
}
/**
- * @brief Trap a notification coming from the M0 firmware
- * @param pPayload : payload associated to the notification
- *
- * @retval None
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
*/
-
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/main.c
index 00e011ffa..34dfa1b2c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/main.c
@@ -138,9 +138,10 @@ int main(void)
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-
+
/* Init code for STM32_WPAN */
APPE_Init();
+
/* Infinite loop */
/* USER CODE BEGIN WHILE */
@@ -215,6 +216,9 @@ void SystemClock_Config(void)
{
Error_Handler();
}
+ /* USER CODE BEGIN Smps */
+
+ /* USER CODE END Smps */
}
/**
@@ -355,9 +359,6 @@ static void MX_RTC_Init(void)
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
- hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
- hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
- hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..a0d8b3b5b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Thread_SED_Coap_Multicast.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Thread_SED_Coap_Multicast.ioc
index 38c0cdbed..4bd03f797 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Thread_SED_Coap_Multicast.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/Thread_SED_Coap_Multicast.ioc
@@ -76,8 +76,8 @@ Mcu.PinsNb=15
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.4.0
-MxDb.Version=DB.5.0.40
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.C2SEV_PWR_C2H_IRQn=true\:0\:0\:false\:false\:true\:true\:false
NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
@@ -85,6 +85,7 @@ NVIC.DMA1_Channel2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.FLASH_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.FPU_IRQn=true\:0\:0\:false\:false\:true\:true\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt
index a57a3293e..e3bd8fae3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt
@@ -142,6 +142,8 @@ In order to make the program work, you must do the following:
- Run the application
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
If you want to control this application, you can directly send and
retrieve Cli commands connecting an HyperTerminal with the ST_Link cable.
(Refer to the Thread_Cli_Cmd application for more details)
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/.extSettings.bak b/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/.extSettings.bak
deleted file mode 100644
index 147879620..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/.extSettings.bak
+++ /dev/null
@@ -1,11 +0,0 @@
-[ProjectFiles]
-HeaderPath=..\..\..\..\..\..\Drivers\BSP\P-NUCLEO-WB55.Nucleo
-[Others]
-Define=
-HALModule=TIM;UART
-[Groups]
-Drivers/BSP/STM32WBxx_Nucleo=../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c;
-Doc=../readme.txt;
-Application/User/USB_Device/Target=../USB_Device/Target/usbd_conf.c;
-Application/User/USB_Device/App=../USB_Device/App/usbd_desc.c;../USB_Device/App/usbd_cdc_if.c;../USB_Device/App/usb_device.c;
-Application/User/Core=../Core/Src/main.c;../Core/Src/stm32wbxx_it.c;../Core/Src/stm32wbxx_hal_msp.c;../Core/Src/stm32wbxx_hal_msp.c;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/readme.txt
index ca198c13c..303da5073 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/CDC_Standalone/readme.txt
@@ -20,7 +20,7 @@
@par Application Description
-This application describes how to use USB device application based on the Device
+How to use USB device application based on the Device
Communication Class (CDC) following the PSTN sub-protocol on the STM32WBxx devices.
This example is part of the USB Device Library package using STM32Cube firmware.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/DFU_Standalone/.extSettings.bak b/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/DFU_Standalone/.extSettings.bak
deleted file mode 100644
index 848e66b0d..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/DFU_Standalone/.extSettings.bak
+++ /dev/null
@@ -1,11 +0,0 @@
-[ProjectFiles]
-HeaderPath=..\..\..\..\..\..\Drivers\BSP\P-NUCLEO-WB55.Nucleo
-[Others]
-Define=
-HALModule=
-[Groups]
-Drivers/BSP/STM32WBxx_Nucleo=../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c;
-Doc=../readme.txt;
-Application/User/USB_Device/Target=../USB_Device/Target/usbd_conf.c;
-Application/User/USB_Device/App=../USB_Device/App/usbd_desc.c;../USB_Device/App/usbd_dfu_flash.c;../USB_Device/App/usb_device.c;
-Application/User/Core=../Core/Src/main.c;../Core/Src/stm32wbxx_it.c;../Core/Src/stm32wbxx_hal_msp.c;../Core/Src/stm32wbxx_hal_msp.c;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/HID_Standalone/.extSettings.bak b/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/HID_Standalone/.extSettings.bak
deleted file mode 100644
index 91987dee4..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/HID_Standalone/.extSettings.bak
+++ /dev/null
@@ -1,11 +0,0 @@
-[ProjectFiles]
-HeaderPath=..\..\..\..\..\..\Drivers\BSP\P-NUCLEO-WB55.Nucleo
-[Others]
-Define=
-HALModule=
-[Groups]
-Drivers/BSP/STM32WBxx_Nucleo=../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c;
-Doc=../readme.txt;
-Application/User/USB_Device/Target=../USB_Device/Target/usbd_conf.c;
-Application/User/USB_Device/App=../USB_Device/App/usbd_desc.c;../USB_Device/App/usb_device.c;
-Application/User/Core=../Core/Src/main.c;../Core/Src/stm32wbxx_it.c;../Core/Src/stm32wbxx_hal_msp.c;../Core/Src/stm32wbxx_hal_msp.c;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/.extSettings.bak b/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/.extSettings.bak
deleted file mode 100644
index eae0041f1..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/.extSettings.bak
+++ /dev/null
@@ -1,14 +0,0 @@
-[ProjectFiles]
-HeaderPath=..\..\..\..\..\..\Drivers\BSP\P-NUCLEO-WB55.Nucleo;..\..\..\..\..\..\Drivers\BSP\Adafruit_Shield;..\..\..\..\..\..\Drivers\BSP\Components;..\..\..\..\..\..\Drivers\BSP\Components\Common
-[Others]
-Define=USE_STM32WBXX_NUCLEO
-HALModule=SPI
-[Groups]
-Drivers/STM32WBxx_HAL_Driver=../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi.c;../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_spi_ex.c;
-Drivers/BSP/Adafruit_Shield=../../../../../../Drivers/BSP/Adafruit_Shield/stm32_adafruit_sd.c;../../../../../../Drivers/BSP/Adafruit_Shield/stm32_adafruit_lcd.c;
-Doc=../readme.txt;
-Application/User/USB_Device/Target=../USB_Device/Target/usbd_conf.c;
-Application/User/USB_Device/App=../USB_Device/App/usbd_desc.c;../USB_Device/App/usbd_storage_if.c;../USB_Device/App/usb_device.c;
-Application/User/Core=../Core/Src/main.c;../Core/Src/stm32wbxx_it.c;../Core/Src/stm32wbxx_hal_msp.c;../Core/Src/stm32wbxx_hal_msp.c;
-Drivers/BSP/Components=../../../../../../Drivers/BSP/Components/st7735/st7735.c;
-Drivers/BSP/STM32WBxx_Nucleo=../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo/stm32wbxx_nucleo.c;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/readme.txt
index 1b449921a..4da6cfd49 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/USB_Device/MSC_Standalone/readme.txt
@@ -20,7 +20,7 @@
@par Application Description
-This application shows how to use the USB device application based on the Mass Storage Class (MSC) on the STM32WBxx devices.
+How to use the USB device application based on the Mass Storage Class (MSC) on the STM32WBxx devices.
This is a typical application on how to use the STM32WBxx USB Device peripheral to communicate with a PC
Host using the Bulk Only Transfer (BOT) and Small Computer System Interface (SCSI) transparent commands,
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_common.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_common.h
index 4defc5d7a..4defc5d7a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_common.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_common.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_conf.h
index 6d9144c46..3ad7bbb54 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_conf.h
@@ -279,13 +279,14 @@ typedef enum
*/
typedef enum {
- CFG_TASK_MSG_FROM_M0_TO_M4,
- CFG_TASK_ZIGBEE_APP,
- CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_MSG_FROM_M0_TO_M4,
+ CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_ZIGBEE_NETWORK_FORM,
+ CFG_TASK_BUTTON_SW1,
#if (CFG_USB_INTERFACE_ENABLE != 0)
- CFG_TASK_VCP_SEND_DATA,
+ CFG_TASK_VCP_SEND_DATA,
#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
- CFG_TASK_NBR /**< Shall be last in the list */
+ CFG_TASK_NBR /**< Shall be last in the list */
} CFG_IdleTask_Id_t;
/* Scheduler types and defines */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_entry.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_entry.h
index 48c467aaa..48c467aaa 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/app_entry.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/app_entry.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/hw_conf.h
index 8409edd16..8409edd16 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/hw_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/hw_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/hw_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/hw_if.h
index 271a222a9..271a222a9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/hw_if.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/hw_if.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/main.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/main.h
index 68182bc5a..68182bc5a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/main.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/main.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32_lpm_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32_lpm_if.h
index 70abecaa9..70abecaa9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32_lpm_if.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32_lpm_if.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32wbxx_hal_conf.h
index ea9aa40d0..ea9aa40d0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32wbxx_hal_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32wbxx_it.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32wbxx_it.h
index a3a535f13..a3a535f13 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm32wbxx_it.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm32wbxx_it.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm_logging.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm_logging.h
index 58877c570..58877c570 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Inc/stm_logging.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/stm_logging.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/utilities_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/utilities_conf.h
index 4dde3509a..4dde3509a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/utilities_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Inc/utilities_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/app_entry.c
index 901f796a0..30cf0fd08 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/app_entry.c
@@ -208,6 +208,15 @@ static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status)
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
@@ -393,4 +402,28 @@ void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) )
}
#endif
+/* USER CODE BEGIN FD_WRAP_FUNCTIONS */
+/**
+ * @brief This function manage the Push button action
+ * @param GPIO_Pin : GPIO pin which has been activated
+ * @retval None
+ */
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ switch (GPIO_Pin) {
+ case BUTTON_SW1_PIN:
+ UTIL_SEQ_SetTask(1U << CFG_TASK_BUTTON_SW1,CFG_SCH_PRIO_1);
+ break;
+
+ case BUTTON_SW2_PIN:
+ break;
+
+ case BUTTON_SW3_PIN:
+ break;
+
+ default:
+ break;
+ }
+}
+/* USER CODE END FD_WRAP_FUNCTIONS */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/hw_timerserver.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/hw_timerserver.c
index c842ba55e..c842ba55e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/hw_timerserver.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/hw_timerserver.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/hw_uart.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/hw_uart.c
index 9a553610d..9a553610d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/hw_uart.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/hw_uart.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/main.c
index e08ffb500..80ad1ad58 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/main.c
@@ -161,7 +161,7 @@ void SystemClock_Config(void)
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
- PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32_lpm_if.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32_lpm_if.c
index f024b61e3..f024b61e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32_lpm_if.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32_lpm_if.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32wbxx_hal_msp.c
index 9c338486d..9c338486d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32wbxx_hal_msp.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32wbxx_it.c
index 7c5536dfc..7c5536dfc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm32wbxx_it.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm_logging.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm_logging.c
index c24b86dd8..c24b86dd8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/stm_logging.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/stm_logging.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/system_stm32wbxx.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/system_stm32wbxx.c
index d4653a0ce..d4653a0ce 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/system_stm32wbxx.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/Core/Src/system_stm32wbxx.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Project.eww b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Project.eww
new file mode 100644
index 000000000..c819ec52b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Project.eww
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workspace>
+ <project>
+ <path>$WS_DIR$\Zigbee_OnOff_Client_Distrib.ewp</path>
+ </project>
+ <batchBuild />
+</workspace>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Zigbee_OnOff_Client_Distrib.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Zigbee_OnOff_Client_Distrib.ewd
new file mode 100644
index 000000000..2819d1219
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Zigbee_OnOff_Client_Distrib.ewd
@@ -0,0 +1,1419 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <fileVersion>3</fileVersion>
+ <configuration>
+ <name>Zigbee_OnOff_Client_Distrib</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>C-SPY</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>29</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCVariant</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>MemOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MemFile</name>
+ <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32WB_M4.ddf</state>
+ </option>
+ <option>
+ <name>RunToEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RunToName</name>
+ <state>main</state>
+ </option>
+ <option>
+ <name>CExtraOptionsCheck</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CExtraOptions</name>
+ <state>--stlink_use_server</state>
+ </option>
+ <option>
+ <name>CFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDDFArgumentProducer</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadSuppressDownload</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDownloadVerifyAll</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>OCDynDriverList</name>
+ <state>STLINK_ID</state>
+ </option>
+ <option>
+ <name>OCLastSavedByProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>UseFlashLoader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CLowLevel</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacFile2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CDevice</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>FlashLoadersV3</name>
+ <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32WB_M4.board</state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck1</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck3</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath3</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OverrideDefFlashBoard</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesOffset1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesOffset2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesOffset3</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesUse1</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesUse2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesUse3</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDeviceConfigMacroFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDebuggerExtraOption</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCAllMTBOptions</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCMulticoreNrOfCores</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCMulticoreMaster</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCMulticorePort</name>
+ <state>53461</state>
+ </option>
+ <option>
+ <name>OCMulticoreWorkspace</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCMulticoreSlaveProject</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCMulticoreSlaveConfiguration</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadExtraImage</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCAttachSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MassEraseBeforeFlashing</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ARMSIM_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCSimDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCSimEnablePSP</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspOverrideConfig</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspConfigFile</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CADI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCadiMemory</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Fast Model</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCADILogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCADILogFileEditB</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CMSISDAP_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>4</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCIarProbeScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CMSISDAPResetList</name>
+ <version>1</version>
+ <state>10</state>
+ </option>
+ <option>
+ <name>CMSISDAPHWResetDuration</name>
+ <state>300</state>
+ </option>
+ <option>
+ <name>CMSISDAPHWResetDelay</name>
+ <state>200</state>
+ </option>
+ <option>
+ <name>CMSISDAPDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CMSISDAPInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiTargetEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPRestoreBreakpointsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPUpdateBreakpointsEdit</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>RDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchUndef</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchData</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchPrefetch</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchMMERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchNOCPERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchCHKERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSTATERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchBUSERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchINTERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSFERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchHARDERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiCPUEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiCPUNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeCfgOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeConfig</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CMSISDAPProbeConfigRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPSelectedCPUBehaviour</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ICpuName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCJetEmuParams</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCCMSISDAPUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCCMSISDAPUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>GDBSERVER_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJTagBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IJET_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>8</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCIarProbeScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetResetList</name>
+ <version>1</version>
+ <state>10</state>
+ </option>
+ <option>
+ <name>IjetHWResetDuration</name>
+ <state>300</state>
+ </option>
+ <option>
+ <name>IjetHWResetDelay</name>
+ <state>200</state>
+ </option>
+ <option>
+ <name>IjetPowerFromProbe</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetPowerRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>IjetInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiTargetEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetProtocolRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetSwoPin</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetCpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IjetSwoPrescalerList</name>
+ <version>1</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetRestoreBreakpointsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetUpdateBreakpointsEdit</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>RDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchUndef</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchData</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchPrefetch</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchMMERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchNOCPERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchCHKERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSTATERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchBUSERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchINTERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSFERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchHARDERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeCfgOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeConfig</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IjetProbeConfigRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiCPUEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiCPUNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetSelectedCPUBehaviour</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ICpuName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCJetEmuParams</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetPreferETB</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetTraceSettingsList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetTraceSizeList</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>FlashBoardPathSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIjetUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCIjetUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>JLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>16</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>JLinkSpeed</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCJLinkDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJLinkHWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>JLinkInitialSpeed</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCDoJlinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkCommRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>CCJLinkSpeedRadioV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCUSBDevice</name>
+ <version>1</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkResetList</name>
+ <version>6</version>
+ <state>5</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJLinkUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCTcpIpAlt</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTcpIpSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCCpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCSwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSwoClockEdit</name>
+ <state>2000</state>
+ </option>
+ <option>
+ <name>OCJLinkTraceSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkTraceSourceDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkDeviceName</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>LMIFTDI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>2</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>LmiftdiSpeed</name>
+ <state>500</state>
+ </option>
+ <option>
+ <name>CCLmiftdiDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiftdiLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCLmiFtdiInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiFtdiInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>PEMICRO_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>3</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJPEMicroShowSettings</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>STLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>4</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCSTLinkInterfaceRadio</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCSTLinkInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkResetList</name>
+ <version>3</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCpuClockEdit</name>
+ <state>32.0</state>
+ </option>
+ <option>
+ <name>CCSwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSwoClockEdit</name>
+ <state>2000</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCSTLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCSTLinkUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkDAPNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkDebugAccessPortRadio</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>THIRDPARTY_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CThirdPartyDriverDll</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileEditB</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>TIFET_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetResetList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetVccTypeDefault</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetVoltage</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>CCMSPFetVCCDefault</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetSettlingtime</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetRadioJtagSpeedType</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetConnection</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetUsbComPort</name>
+ <state>Automatic</state>
+ </option>
+ <option>
+ <name>CCMSPFetAllowAccessToBSL</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCMSPFetRadioEraseFlash</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>XDS100_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>6</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TIPackageOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>TIPackage</name>
+ <state></state>
+ </option>
+ <option>
+ <name>BoardFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCXds100BreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100DoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100UpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCXds100CatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCXds100SwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SwoClockEdit</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCXds100HWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100ResetList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100UsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCXds100UsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100JtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100InterfaceRadio</name>
+ <state>2</state>
+ </option>
+ <option>
+ <name>CCXds100InterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100ProbeList</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>CCXds100SWOPortRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SWOPort</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <debuggerPlugins>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+ <loadFlag>1</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ </debuggerPlugins>
+ </configuration>
+</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Zigbee_OnOff_Distrib.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Zigbee_OnOff_Client_Distrib.ewp
index a49e07d7f..3a88bb424 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Zigbee_OnOff_Distrib.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/Zigbee_OnOff_Client_Distrib.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Zigbee_OnOff_Distrib</name>
+ <name>Zigbee_OnOff_Client_Distrib</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -283,7 +283,7 @@
<option>
<name>CCAllowList</name>
<version>1</version>
- <state>11111110</state>
+ <state>00000000</state>
</option>
<option>
<name>CCDebugInfo</name>
@@ -383,7 +383,7 @@
</option>
<option>
<name>CCOptLevel</name>
- <state>3</state>
+ <state>0</state>
</option>
<option>
<name>CCOptStrategy</name>
@@ -392,7 +392,7 @@
</option>
<option>
<name>CCOptLevelSlave</name>
- <state>3</state>
+ <state>0</state>
</option>
<option>
<name>CompilerMisraRules98</name>
@@ -1083,9 +1083,6 @@
<file>
<name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee.c</name>
</file>
- <file>
- <name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee_demo.c</name>
- </file>
</group>
<group>
<name>Target</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/startup_stm32wb55xx_cm4.s
index 1f886ff59..1f886ff59 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/startup_stm32wb55xx_cm4.s
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/startup_stm32wb55xx_cm4.s
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/stm32wb55xx_flash_cm4.icf b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/stm32wb55xx_flash_cm4.icf
index 70aec4026..70aec4026 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/stm32wb55xx_flash_cm4.icf
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/EWARM/stm32wb55xx_flash_cm4.icf
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/App/app_zigbee.c
new file mode 100644
index 000000000..446deb3da
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/App/app_zigbee.c
@@ -0,0 +1,542 @@
+/**
+ ******************************************************************************
+ * File Name : App/app_zigbee.c
+ * Description : Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "app_entry.h"
+#include "dbg_trace.h"
+#include "app_zigbee.h"
+#include "zigbee_interface.h"
+#include "shci.h"
+#include "stm_logging.h"
+#include "app_conf.h"
+#include "stm32wbxx_core_interface_def.h"
+#include "zigbee_types.h"
+#include "stm32_seq.h"
+
+#include <assert.h>
+#include "zcl/zcl.h"
+#include "zcl/zcl.onoff.h"
+#include "zcl/zcl.identify.h"
+
+/* Private defines -----------------------------------------------------------*/
+#define APP_ZIGBEE_STARTUP_FAIL_DELAY 500U
+#define SW1_ENDPOINT 17
+#define SW1_GROUP_ADDR 0x0001
+#define CHANNEL 12
+
+/* Private function prototypes -----------------------------------------------*/
+static void APP_ZIGBEE_StackLayersInit(void);
+static void APP_ZIGBEE_ConfigEndpoints(void);
+static void APP_ZIGBEE_SW1_Process(void);
+static void APP_ZIGBEE_NwkForm(void);
+static void APP_ZIGBEE_ConfigGroupAddr(void);
+
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
+
+static void Wait_Getting_Ack_From_M0(void);
+static void Receive_Ack_From_M0(void);
+static void Receive_Notification_From_M0(void);
+
+/* Private variables -----------------------------------------------*/
+static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
+static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
+static __IO uint32_t CptReceiveMsgFromM0 = 0;
+
+PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+struct zigbee_app_info {
+ bool has_init;
+ struct ZigBeeT *zb;
+ enum ZbStartType startupControl;
+ enum ZbStatusCodeT join_status;
+ uint32_t join_delay;
+ bool init_after_join;
+
+ struct ZbZclClusterT *onoff_client_1;
+};
+static struct zigbee_app_info zigbee_app_info;
+
+/* Functions Definition ------------------------------------------------------*/
+
+void APP_ZIGBEE_Init(void)
+{
+ SHCI_CmdStatus_t ZigbeeInitStatus;
+
+ APP_DBG("APP_ZIGBEE_Init");
+
+ /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
+ APP_ZIGBEE_CheckWirelessFirmwareInfo();
+
+ /* Register cmdbuffer */
+ APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
+
+ /* Init config buffer and call TL_ZIGBEE_Init */
+ APP_ZIGBEE_TL_INIT();
+
+ /* Register task */
+ /* Create the different tasks */
+ UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
+
+ /* Task associated with network creation process */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, UTIL_SEQ_RFU, APP_ZIGBEE_NwkForm);
+
+ /* Task associated with push button SW1 */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_BUTTON_SW1, UTIL_SEQ_RFU, APP_ZIGBEE_SW1_Process);
+
+ /* Start the Zigbee on the CPU2 side */
+ ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(ZigbeeInitStatus);
+
+ /* Initialize Zigbee stack layers */
+ APP_ZIGBEE_StackLayersInit();
+
+} /* APP_ZIGBEE_Init */
+
+
+/**
+ * @brief Initialize Zigbee stack layers
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_StackLayersInit(void)
+{
+ APP_DBG("APP_ZIGBEE_StackLayersInit");
+
+ zigbee_app_info.zb = ZbInit(0U, NULL, NULL);
+ assert(zigbee_app_info.zb != NULL);
+
+ /* Create the endpoint and cluster(s) */
+ APP_ZIGBEE_ConfigEndpoints();
+
+ BSP_LED_Off(LED_RED);
+ BSP_LED_Off(LED_GREEN);
+ BSP_LED_Off(LED_BLUE);
+
+ /* Configure the joining parameters */
+ zigbee_app_info.join_status = 0x01; /* init to error status */
+ zigbee_app_info.join_delay = HAL_GetTick(); /* now */
+ zigbee_app_info.startupControl = ZbStartTypeJoin;
+
+ /* Initialization Complete */
+ zigbee_app_info.has_init = true;
+
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+}
+
+static void APP_ZIGBEE_ConfigEndpoints(void)
+{
+ ZbApsmeAddEndpointReqT req;
+ ZbApsmeAddEndpointConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
+ req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
+
+ /* Endpoint: SW1_ENDPOINT */
+ req.endpoint = SW1_ENDPOINT;
+ ZbZclAddEndpoint(zigbee_app_info.zb, &req, &conf);
+ assert(conf.status == ZB_STATUS_SUCCESS);
+
+ /* OnOff Client */
+ zigbee_app_info.onoff_client_1 = ZbZclOnOffClientAlloc(zigbee_app_info.zb, SW1_ENDPOINT);
+ assert(zigbee_app_info.onoff_client_1 != NULL);
+ ZbZclClusterEndpointRegister(zigbee_app_info.onoff_client_1);
+
+} /* config_endpoints */
+
+/**
+ * @brief Handle Zigbee network forming and joining
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_NwkForm(void)
+{
+ if ((zigbee_app_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_app_info.join_delay))
+ {
+ struct ZbStartupT config;
+ enum ZbStatusCodeT status;
+
+ /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
+ ZbSetLogging(zigbee_app_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
+
+ /* Attempt to join a zigbee network */
+ ZbStartupConfigGetProDefaults(&config);
+
+ APP_DBG("Network config : APP_STARTUP_DISTRIB");
+ /* Set the TC address to be distributed. */
+ config.security.trustCenterAddress = ZB_DISTRIBUTED_TC_ADDR;
+
+ /* Using the Uncertified Distributed Global Key (d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:da:db:dc:dd:de:df) */
+ memcpy(config.security.distributedGlobalKey, sec_key_distrib_uncert, ZB_SEC_KEYSIZE);
+
+ config.startupControl = zigbee_app_info.startupControl;
+
+ config.channelList.count = 1;
+ config.channelList.list[0].page = 0;
+ config.channelList.list[0].channelMask = 1 << CHANNEL; /* Channel in use*/
+
+ /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
+ * a blocking call on the M4. */
+ status = ZbStartupWait(zigbee_app_info.zb, &config);
+
+ APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
+ zigbee_app_info.join_status = status;
+
+ if (status == ZB_STATUS_SUCCESS) {
+ zigbee_app_info.join_delay = 0U;
+ zigbee_app_info.init_after_join = true;
+ BSP_LED_On(LED_BLUE);
+ }
+ else {
+ APP_DBG("Startup failed, attempting to form a network after a short delay.");
+ zigbee_app_info.startupControl = ZbStartTypeForm;
+
+ zigbee_app_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
+ }
+ }
+
+ /* If Network forming/joining was not successful reschedule the current task to retry the process */
+ if (zigbee_app_info.join_status != ZB_STATUS_SUCCESS)
+ {
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+ }
+ else
+ {
+ zigbee_app_info.init_after_join = false;
+
+ /* Assign ourselves to the group addresses */
+ APP_ZIGBEE_ConfigGroupAddr();
+
+ /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
+ uint32_t bcast_timeout = 3;
+ ZbNwkSet(zigbee_app_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
+ }
+}
+
+/**
+ * @brief Set group addressing mode
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_ConfigGroupAddr(void)
+{
+ ZbApsmeAddGroupReqT req;
+ ZbApsmeAddGroupConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.endpt = SW1_ENDPOINT;
+ req.groupAddr = SW1_GROUP_ADDR;
+ ZbApsmeAddGroupReq(zigbee_app_info.zb, &req, &conf);
+
+} /* APP_ZIGBEE_ConfigGroupAddr */
+
+/*************************************************************
+ * ZbStartupWait Blocking Call
+ *************************************************************/
+struct ZbStartupWaitInfo {
+ bool active;
+ enum ZbStatusCodeT status;
+};
+
+static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
+{
+ struct ZbStartupWaitInfo *info = cb_arg;
+
+ info->status = status;
+ info->active = false;
+} /* ZbStartupWaitCb */
+
+enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
+{
+ struct ZbStartupWaitInfo *info;
+ enum ZbStatusCodeT status;
+
+ info = malloc(sizeof(struct ZbStartupWaitInfo));
+ if (info == NULL) {
+ return ZB_STATUS_ALLOC_FAIL;
+ }
+ memset(info, 0, sizeof(struct ZbStartupWaitInfo));
+
+ info->active = true;
+ status = ZbStartup(zb, config, ZbStartupWaitCb, info);
+ if (status != ZB_STATUS_SUCCESS) {
+ info->active = false;
+ return status;
+ }
+ while (info->active) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ }
+ status = info->status;
+ free(info);
+ return status;
+} /* ZbStartupWait */
+
+/**
+ * @brief Trace the error or the warning reported.
+ * @param ErrId :
+ * @param ErrCode
+ * @retval None
+ */
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
+{
+ switch (ErrId) {
+ default:
+ APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
+ break;
+ }
+} /* APP_ZIGBEE_Error */
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+/**
+ * @brief Warn the user that an error has occurred.In this case,
+ * the LEDs on the Board will start blinking.
+ *
+ * @param pMess : Message associated to the error.
+ * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
+ * @retval None
+ */
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
+{
+ APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
+ while (1U == 1U) {
+ BSP_LED_Toggle(LED1);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED2);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED3);
+ HAL_Delay(500U);
+ }
+} /* APP_ZIGBEE_TraceError */
+
+/**
+ * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
+ * and display associated informations
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
+{
+ WirelessFwInfo_t wireless_info_instance;
+ WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
+
+ if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ }
+ else {
+ APP_DBG("**********************************************************");
+ APP_DBG("WIRELESS COPROCESSOR FW:");
+ /* Print version */
+ APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
+
+ switch (p_wireless_info->StackType) {
+ case INFO_STACK_TYPE_ZIGBEE:
+ APP_DBG("FW Type : Zigbee stack");
+ break;
+ default:
+ /* No Zigbee device supported ! */
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ break;
+ }
+ APP_DBG("**********************************************************");
+ }
+} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
+
+static void APP_ZIGBEE_SW1_Process()
+{
+ struct ZbApsAddrT dst;
+
+ memset(&dst, 0, sizeof(dst));
+ dst.mode = ZB_APSDE_ADDRMODE_GROUP;
+ dst.endpoint = SW1_ENDPOINT;
+ dst.nwkAddr = SW1_GROUP_ADDR;
+
+ APP_DBG("SW1 PUSHED (SENDING TOGGLE TO GROUP 0x0001)");
+ if (ZbZclOnOffClientToggleReq(zigbee_app_info.onoff_client_1, &dst, NULL, NULL) != ZCL_STATUS_SUCCESS) {
+ APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW1_ENDPOINT)");
+ }
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
+{
+ p_ZIGBEE_otcmdbuffer = p_buffer;
+} /* APP_ZIGBEE_RegisterCmdBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+} /* ZIGBEE_Get_OTCmdPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
+} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
+} /* ZIGBEE_Get_NotificationPayloadBuffer */
+
+/**
+ * @brief This function is used to transfer the commands from the M4 to the M0.
+ *
+ * @param None
+ * @return None
+ */
+void ZIGBEE_CmdTransfer(void)
+{
+ Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+
+ /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
+ /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
+ * + ID (4 bytes) + Size (4 bytes) */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
+
+ TL_ZIGBEE_SendAppliCmdToM0();
+
+ /* Wait completion of cmd */
+ Wait_Getting_Ack_From_M0();
+} /* ZIGBEE_CmdTransfer */
+
+/**
+ * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
+ *
+ *
+ * @param Otbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
+{
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(Otbuffer);
+
+ Receive_Ack_From_M0();
+} /* TL_ZIGBEE_CmdEvtReceived */
+
+/**
+ * @brief This function is called when notification from M0+ is received.
+ *
+ * @param Notbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
+{
+ p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
+
+ Receive_Notification_From_M0();
+} /* TL_ZIGBEE_NotReceived */
+
+/**
+ * @brief This function is called before sending any ot command to the M0
+ * core. The purpose of this function is to be able to check if
+ * there are no notifications coming from the M0 core which are
+ * pending before sending a new ot command.
+ * @param None
+ * @retval None
+ */
+void Pre_ZigbeeCmdProcessing(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+} /* Pre_ZigbeeCmdProcessing */
+
+/**
+ * @brief This function waits for getting an acknowledgment from the M0.
+ *
+ * @param None
+ * @retval None
+ */
+static void Wait_Getting_Ack_From_M0(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Wait_Getting_Ack_From_M0 */
+
+/**
+ * @brief Receive an acknowledgment from the M0+ core.
+ * Each command send by the M4 to the M0 are acknowledged.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Ack_From_M0(void)
+{
+ UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Receive_Ack_From_M0 */
+
+/**
+ * @brief Receive a notification from the M0+ through the IPCC.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Notification_From_M0(void)
+{
+ CptReceiveMsgFromM0++;
+ UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
+} /* Receive_Notification_From_M0 */
+
+/**
+ * @brief Perform initialization of TL for Zigbee.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_TL_INIT(void)
+{
+ ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
+ TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
+} /* APP_ZIGBEE_TL_INIT */
+
+/**
+ * @brief Process the messages coming from the M0.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_ProcessMsgM0ToM4(void)
+{
+ if (CptReceiveMsgFromM0 != 0) {
+ /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
+ if (CptReceiveMsgFromM0 > 1U) {
+ APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
+ }
+ else {
+ Zigbee_CallBackProcessing();
+ }
+ /* Reset counter */
+ CptReceiveMsgFromM0 = 0;
+ }
+} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/App/app_zigbee.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/App/app_zigbee.h
new file mode 100644
index 000000000..d136d4477
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/App/app_zigbee.h
@@ -0,0 +1,60 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : app_zigbee.h
+ * Description : Header for Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_ZIGBEE_H
+#define APP_ZIGBEE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+/* Private includes ----------------------------------------------------------*/
+#include "tl.h"
+#include "tl_zigbee_hci.h"
+
+/* Exported types ------------------------------------------------------------*/
+/*
+ * List of all errors tracked by the Thread application
+ * running on M4. Some of these errors may be fatal
+ * or just warnings
+ */
+typedef enum {
+ ERR_REC_MULTI_MSG_FROM_M0,
+ ERR_ZIGBE_CMD_TO_M0,
+ ERR_ZIGBEE_CHECK_WIRELESS
+} ErrAppliIdEnum_t;
+
+/* Exported constants --------------------------------------------------------*/
+
+/* Exported functions ------------------------------------------------------- */
+void APP_ZIGBEE_Init(void);
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode);
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer);
+void APP_ZIGBEE_ProcessMsgM0ToM4(void);
+void APP_ZIGBEE_TL_INIT(void);
+void Pre_ZigbeeCmdProcessing(void);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* APP_ZIGBEE_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/Target/hw_ipcc.c
index ab7f75b9a..ab7f75b9a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/STM32_WPAN/Target/hw_ipcc.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/readme.txt
index b2a63da26..734833a00 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Distrib/readme.txt
@@ -1,12 +1,12 @@
/**
- @page Zigbee_OnOff_Distrib application
+ @page Zigbee_OnOff_Client_Distrib application
@verbatim
******************************************************************************
- * @file Zigbee/Zigbee_OnOff_Distrib/readme.txt
+ * @file Zigbee/Zigbee_OnOff_Client_Distrib/readme.txt
* @author MCD Application Team
- * @brief Description of the Zigbee OnOff Cluster application using a
- * distributed network.
+ * @brief Description of the Zigbee OnOff Cluster application as a client
+ * using a distributed network.
******************************************************************************
*
* Copyright (c) 2019 STMicroelectronics. All rights reserved.
@@ -21,52 +21,48 @@
@par Application Description
-How to use OnOff cluster on a Distributed Zigbee network.
+How to use OnOff cluster as a client on a distributed Zigbee network.
The purpose of this application is to show how to create a Zigbee distributed network, and
how to communicate from one node to another one using the OnOff cluster. Once the Zigbee mesh
-network is created, the user can send requests to the different boards through the push buttons
+network is created, the user can send requests from the client to the server through the push button
in order to make the LED toggling.
-Each device acts as a client and a server at the same time, making the communication between the
-different boards symmetrical (bi-directorial)
+For this application it is requested to have:
+- 1 STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Server_Distrib
+
+- 1 or more STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Client_Distrib
+
Device 1 Device 2
--------- ---------
- | | ZbZclOnOffClientToggleReq | |
+ | | ZbZclOnOffClientToggleReq | |
PushB=>|Client | -----------------------------------> |Server | =>LED
| | | |
| | | |
- | | ZbZclOnOffClientToggleReq | |
- LED <= |Server | <------------------------------------|Client |<=PushB
- | | | |
-------- ---------
-
-
-This application requires at minimum two STM32WB55xx nucleo boards, but you can use up four boards
-when using configuration A and B. When using configuration C, only two boards are requested.
-
-This application requests having the stm32wb5x_zigbee_full_fw.bin binary flashed on the wireless coprocessor
-and the correct Zigbee_OnOff_Distrib.bin binary flashed on the application processor.
-
To setup the application :
- a) Open the project, build it and load your generated application on all your STM32WB devices.
+ a) Open the project, build it and load your generated application on your STM32WB devices.
To run the application :
- a) Start the first board, wait for four seconds. Start the second board, wait for four seconds. Do the same
- for the other boards if applicable.
+ a) Start the first board (it can be either Device1 or Device2), wait for four seconds.
+ Start the second board, wait for four seconds. Do the same for the other boards if applicable.
Note : In order to create correctly the zigbee network, it is important to NOT switch on all the boards
- at the same time.
+ at the same time. Otherwise independant network can be created because we use distributed network configuration.
- b) At this stage, the Zigbee network is automatically created and it is possible to send OnOffCluster commands
- in multicast mode by pressing on the SW1 or SW2 push button.
- Press on SW1 (resp SW2). You must see the LED1 (resp LED2) toggling on all board connected to this
- newly created Zigbee network.
+ b) At this stage, the Zigbee network is automatically created and BLUE LED (LED1) is ON on all devices.
+ it is now possible to send OnOff Cluster commands from the client to the server in multicast mode
+ by pressing on the SW1 push button.
+ You must see the LED1 toggling on the server side.
---------- -----------
@@ -81,10 +77,11 @@ To setup the application :
|(distr.) |
-----------
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
@par Hardware and Software environment
- - This example runs on STM32WB55xx devices (Nucleo board)
+ - This example runs on STM32WB55xx devices.
- This example has been tested with an STMicroelectronics STM32WB55RG_Nucleo
board and can be easily tailored to any other supported device
@@ -108,9 +105,9 @@ To setup the application :
@par How to use it ?
-=> Loading of the stm32wb5x_zigbee_full_fw.bin binary
+=> Loading of the stm32wb5x_Zigbee_FFD_fw.bin binary
- This application requests having the stm32wb5x_zigbee_full_fw.bin binary flashed on the Wireless Coprocessor.
+ This application requests having the stm32wb5x_Zigbee_FFD_fw.bin binary flashed on the Wireless Coprocessor.
If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory.
Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_common.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_common.h
index 4defc5d7a..4defc5d7a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_common.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_common.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_conf.h
new file mode 100644
index 000000000..3ad7bbb54
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_conf.h
@@ -0,0 +1,348 @@
+/**
+ ******************************************************************************
+ * File Name : app_conf.h
+ * Description : Application configuration file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_CONF_H
+#define APP_CONF_H
+
+#include "hw.h"
+#include "hw_conf.h"
+#include "hw_if.h"
+
+/******************************************************************************
+ * Application Config
+ ******************************************************************************/
+/******************************************************************************
+ * Transport Layer
+ ******************************************************************************/
+/**
+ * Queue length of BLE Event
+ * This parameter defines the number of asynchronous events that can be stored in the HCI layer before
+ * being reported to the application. When a command is sent to the BLE core coprocessor, the HCI layer
+ * is waiting for the event with the Num_HCI_Command_Packets set to 1. The receive queue shall be large
+ * enough to store all asynchronous events received in between.
+ * When CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE is set to 27, this allow to store three 255 bytes long asynchronous events
+ * between the HCI command and its event.
+ * This parameter depends on the value given to CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE. When the queue size is to small,
+ * the system may hang if the queue is full with asynchronous events and the HCI layer is still waiting
+ * for a CC/CS event, In that case, the notification TL_BLE_HCI_ToNot() is called to indicate
+ * to the application a HCI command did not receive its command event within 30s (Default HCI Timeout).
+ */
+#define CFG_TL_EVT_QUEUE_LENGTH 5
+/**
+ * This parameter should be set to fit most events received by the HCI layer. It defines the buffer size of each element
+ * allocated in the queue of received events and can be used to optimize the amount of RAM allocated by the Memory Manager.
+ * It should not exceed 255 which is the maximum HCI packet payload size (a greater value is a lost of memory as it will
+ * never be used)
+ * It shall be at least 4 to receive the command status event in one frame.
+ * The default value is set to 27 to allow receiving an event of MTU size in a single buffer. This value maybe reduced
+ * further depending on the application.
+ *
+ */
+#define CFG_TL_MOST_EVENT_PAYLOAD_SIZE 255 /**< Set to 255 with the memory manager and the mailbox */
+
+#define TL_EVENT_FRAME_SIZE ( TL_EVT_HDR_SIZE + CFG_TL_MOST_EVENT_PAYLOAD_SIZE )
+/******************************************************************************
+ * UART interfaces
+ ******************************************************************************/
+
+/**
+ * Select UART interfaces
+ */
+#define CFG_DEBUG_TRACE_UART hw_uart1
+#define CFG_CONSOLE_MENU
+#define CFG_CLI_UART hw_lpuart1
+/******************************************************************************
+ * USB interface
+ ******************************************************************************/
+
+/**
+ * Enable/Disable USB interface
+ */
+#define CFG_USB_INTERFACE_ENABLE 0
+
+/******************************************************************************
+ * Low Power
+ *
+ * When CFG_FULL_LOW_POWER is set to 1, the system is configured in full
+ * low power mode. It means that all what can have an impact on the consumptions
+ * are powered down.(For instance LED, Access to Debugger, Etc.)
+ *
+ * When CFG_FULL_LOW_POWER is set to 0, the low power mode is not activated
+ *
+ ******************************************************************************/
+
+#define CFG_FULL_LOW_POWER 0
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_LPM_SUPPORTED
+#define CFG_LPM_SUPPORTED 1
+#endif /* CFG_FULL_LOW_POWER */
+
+/******************************************************************************
+ * Timer Server
+ ******************************************************************************/
+/**
+ * CFG_RTC_WUCKSEL_DIVIDER: This sets the RTCCLK divider to the wakeup timer.
+ * The higher is the value, the better is the power consumption and the accuracy of the timerserver
+ * The lower is the value, the finest is the granularity
+ *
+ * CFG_RTC_ASYNCH_PRESCALER: This sets the asynchronous prescaler of the RTC. It should as high as possible ( to ouput
+ * clock as low as possible) but the output clock should be equal or higher frequency compare to the clock feeding
+ * the wakeup timer. A lower clock speed would impact the accuracy of the timer server.
+ *
+ * CFG_RTC_SYNCH_PRESCALER: This sets the synchronous prescaler of the RTC.
+ * When the 1Hz calendar clock is required, it shall be sets according to other settings
+ * When the 1Hz calendar clock is not needed, CFG_RTC_SYNCH_PRESCALER should be set to 0x7FFF (MAX VALUE)
+ *
+ * CFG_RTCCLK_DIVIDER_CONF:
+ * Shall be set to either 0,2,4,8,16
+ * When set to either 2,4,8,16, the 1Hhz calendar is supported
+ * When set to 0, the user sets its own configuration
+ *
+ * The following settings are computed with LSI as input to the RTC
+ */
+#define CFG_RTCCLK_DIVIDER_CONF 0
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 0)
+/**
+ * Custom configuration
+ * It does not support 1Hz calendar
+ * It divides the RTC CLK by 16
+ */
+#define CFG_RTCCLK_DIV (16)
+#define CFG_RTC_WUCKSEL_DIVIDER (0)
+#define CFG_RTC_ASYNCH_PRESCALER (CFG_RTCCLK_DIV - 1)
+#define CFG_RTC_SYNCH_PRESCALER (0x7FFF)
+
+#else
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 2)
+/**
+ * It divides the RTC CLK by 2
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (3)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 4)
+/**
+ * It divides the RTC CLK by 4
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (2)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 8)
+/**
+ * It divides the RTC CLK by 8
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (1)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 16)
+/**
+ * It divides the RTC CLK by 16
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (0)
+#endif
+
+#define CFG_RTCCLK_DIV CFG_RTCCLK_DIVIDER_CONF
+#define CFG_RTC_ASYNCH_PRESCALER (CFG_RTCCLK_DIV - 1)
+#define CFG_RTC_SYNCH_PRESCALER (DIVR( LSE_VALUE, (CFG_RTC_ASYNCH_PRESCALER+1) ) - 1 )
+
+#endif
+
+/** tick timer value in us */
+#define CFG_TS_TICK_VAL DIVR( (CFG_RTCCLK_DIV * 1000000), LSE_VALUE )
+
+typedef enum
+{
+ CFG_TIM_PROC_ID_ISR,
+} CFG_TimProcID_t;
+
+/******************************************************************************
+ * Debug
+ ******************************************************************************/
+/**
+ * When set, this resets some hw resources to set the device in the same state than the power up
+ * The FW resets only register that may prevent the FW to run properly
+ *
+ * This shall be set to 0 in a final product
+ *
+ */
+#define CFG_HW_RESET_BY_FW 1
+
+/**
+ * keep debugger enabled while in any low power mode when set to 1
+ * should be set to 0 in production
+ */
+#define CFG_DEBUGGER_SUPPORTED 1
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_DEBUGGER_SUPPORTED
+#define CFG_DEBUGGER_SUPPORTED 0
+#endif /* CFG_FULL_LOW_POWER */
+
+/*****************************************************************************
+ * Traces
+ * Enable or Disable traces in application
+ * When CFG_DEBUG_TRACE is set, traces are activated
+ *
+ * Note : Refer to utilities_conf.h file in order to details
+ * the level of traces : CFG_DEBUG_TRACE_FULL or CFG_DEBUG_TRACE_LIGHT
+ *****************************************************************************/
+#define CFG_DEBUG_TRACE 1
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_DEBUG_TRACE
+#define CFG_DEBUG_TRACE 0
+#endif /* CFG_FULL_LOW_POWER */
+
+/**
+ * When CFG_DEBUG_TRACE_FULL is set to 1, the trace are output with the API name, the file name and the line number
+ * When CFG_DEBUG_TRACE_LIGHT is set to 1, only the debug message is output
+ *
+ * When both are set to 0, no trace are output
+ * When both are set to 1, CFG_DEBUG_TRACE_FULL is selected
+ */
+#define CFG_DEBUG_TRACE_LIGHT 1
+#define CFG_DEBUG_TRACE_FULL 0
+
+#if (( CFG_DEBUG_TRACE != 0 ) && ( CFG_DEBUG_TRACE_LIGHT == 0 ) && (CFG_DEBUG_TRACE_FULL == 0))
+#undef CFG_DEBUG_TRACE_FULL
+#undef CFG_DEBUG_TRACE_LIGHT
+#define CFG_DEBUG_TRACE_FULL 0
+#define CFG_DEBUG_TRACE_LIGHT 1
+#endif
+
+#if ( CFG_DEBUG_TRACE == 0 )
+#undef CFG_DEBUG_TRACE_FULL
+#undef CFG_DEBUG_TRACE_LIGHT
+#define CFG_DEBUG_TRACE_FULL 0
+#define CFG_DEBUG_TRACE_LIGHT 0
+#endif
+
+/**
+ * When not set, the traces is looping on sending the trace over UART
+ */
+#define DBG_TRACE_USE_CIRCULAR_QUEUE 1
+
+/**
+ * max buffer Size to queue data traces and max data trace allowed.
+ * Only Used if DBG_TRACE_USE_CIRCULAR_QUEUE is defined
+ */
+#define DBG_TRACE_MSG_QUEUE_SIZE 4096
+#define MAX_DBG_TRACE_MSG_SIZE 1024
+
+/******************************************************************************
+ * Configure Log level for Application
+ ******************************************************************************/
+#define APPLI_CONFIG_LOG_LEVEL LOG_LEVEL_INFO
+#define APPLI_PRINT_FILE_FUNC_LINE 0
+
+/* USER CODE BEGIN Defines */
+/******************************************************************************
+ * User interaction
+ * When CFG_LED_SUPPORTED is set, LEDS are activated if requested
+ * When CFG_BUTTON_SUPPORTED is set, the push button are activated if requested
+ ******************************************************************************/
+#if (CFG_FULL_LOW_POWER == 1)
+#define CFG_LED_SUPPORTED 0
+#define CFG_BUTTON_SUPPORTED 0
+#else
+#define CFG_LED_SUPPORTED 1
+#define CFG_BUTTON_SUPPORTED 1
+#endif /* CFG_FULL_LOW_POWER */
+/* USER CODE END Defines */
+
+/******************************************************************************
+ * Scheduler
+ ******************************************************************************/
+/**
+ * This is the list of task id required by the application
+ * Each Id shall be in the range 0..31
+ */
+
+typedef enum {
+ CFG_TASK_MSG_FROM_M0_TO_M4,
+ CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_ZIGBEE_NETWORK_FORM,
+ CFG_TASK_BUTTON_SW1,
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+ CFG_TASK_VCP_SEND_DATA,
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+ CFG_TASK_NBR /**< Shall be last in the list */
+} CFG_IdleTask_Id_t;
+
+/* Scheduler types and defines */
+/*------------------------------------*/
+
+//#define TASK_MSG_FROM_M0_TO_M4 (1U << CFG_TASK_MSG_FROM_M0_TO_M4)
+#define EVENT_ACK_FROM_M0_EVT (1U << CFG_EVT_ACK_FROM_M0_EVT)
+#define EVENT_SYNCHRO_BYPASS_IDLE (1U << CFG_EVT_SYNCHRO_BYPASS_IDLE)
+
+/**
+ * This is the list of priority required by the application
+ * Each Id shall be in the range 0..31
+ */
+typedef enum
+{
+ CFG_SCH_PRIO_0,
+ CFG_SCH_PRIO_1,
+ CFG_PRIO_NBR,
+} CFG_SCH_Prio_Id_t;
+
+/**
+ * This is a bit mapping over 32bits listing all events id supported in the application
+ */
+typedef enum {
+ CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP,
+ CFG_EVT_ACK_FROM_M0_EVT,
+ CFG_EVT_SYNCHRO_BYPASS_IDLE,
+} CFG_IdleEvt_Id_t;
+
+#define EVENT_ACK_FROM_M0_EVT (1U << CFG_EVT_ACK_FROM_M0_EVT)
+#define EVENT_SYNCHRO_BYPASS_IDLE (1U << CFG_EVT_SYNCHRO_BYPASS_IDLE)
+
+/******************************************************************************
+ * Configure Log level for Application
+ ******************************************************************************/
+#define APPLI_CONFIG_LOG_LEVEL LOG_LEVEL_INFO
+#define APPLI_PRINT_FILE_FUNC_LINE 0
+
+/******************************************************************************
+ * LOW POWER
+ ******************************************************************************/
+/**
+ * Supported requester to the MCU Low Power Manager - can be increased up to 32
+ * It lits a bit mapping of all user of the Low Power Manager
+ */
+typedef enum {
+ CFG_LPM_APP,
+} CFG_LPM_Id_t;
+
+/******************************************************************************
+ * OTP manager
+ ******************************************************************************/
+#define CFG_OTP_BASE_ADDRESS OTP_AREA_BASE
+
+#define CFG_OTP_END_ADRESS OTP_AREA_END_ADDR
+
+#endif /*APP_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_entry.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_entry.h
index 48c467aaa..48c467aaa 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_entry.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_entry.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_conf.h
index 8409edd16..8409edd16 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/hw_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/hw_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_if.h
index 271a222a9..271a222a9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/hw_if.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_if.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/main.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/main.h
index 68182bc5a..68182bc5a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/main.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/main.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32_lpm_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32_lpm_if.h
index 70abecaa9..70abecaa9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32_lpm_if.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32_lpm_if.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_hal_conf.h
index ea9aa40d0..ea9aa40d0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_hal_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32wbxx_it.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_it.h
index a3a535f13..a3a535f13 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm32wbxx_it.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_it.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm_logging.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm_logging.h
index 58877c570..58877c570 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/stm_logging.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm_logging.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/utilities_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/utilities_conf.h
index 4dde3509a..4dde3509a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/utilities_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/utilities_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/app_entry.c
new file mode 100644
index 000000000..30cf0fd08
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/app_entry.c
@@ -0,0 +1,429 @@
+/**
+ ******************************************************************************
+ * File Name : app_entry.c
+ * Description : Entry application source file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "main.h"
+#include "app_entry.h"
+#include "app_zigbee.h"
+#include "app_conf.h"
+#include "hw_conf.h"
+#include "stm32_seq.h"
+#include "stm_logging.h"
+#include "shci_tl.h"
+#include "stm32_lpm.h"
+#include "dbg_trace.h"
+#include "shci.h"
+
+/* Private includes -----------------------------------------------------------*/
+
+/* Private typedef -----------------------------------------------------------*/
+extern RTC_HandleTypeDef hrtc;
+
+/* Private defines -----------------------------------------------------------*/
+#define POOL_SIZE (CFG_TL_EVT_QUEUE_LENGTH * 4U * DIVC((sizeof(TL_PacketHeader_t) + TL_EVENT_FRAME_SIZE), 4U))
+
+/* Private variables ---------------------------------------------------------*/
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t EvtPool[POOL_SIZE];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t SystemCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t SystemSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+/* Global function prototypes -----------------------------------------------*/
+size_t __write(int handle, const unsigned char *buf, size_t bufSize);
+
+/* Private functions prototypes-----------------------------------------------*/
+static void SystemPower_Config(void);
+static void Init_Debug(void);
+static void appe_Tl_Init(void);
+static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status);
+static void APPE_SysUserEvtRx(void *pPayload);
+static void APPE_SysEvtReadyProcessing(void);
+static void APPE_SysEvtError(SCHI_SystemErrCode_t ErrorCode);
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+extern void MX_LPUART1_UART_Init(void);
+#endif
+#if (CFG_HW_USART1_ENABLED == 1)
+extern void MX_USART1_UART_Init(void);
+#endif
+
+/* USER CODE BEGIN PFP */
+static void Led_Init(void);
+static void Button_Init(void);
+/* USER CODE END PFP */
+
+/* Functions Definition ------------------------------------------------------*/
+void APPE_Init( void )
+{
+ SystemPower_Config(); /**< Configure the system Power Mode */
+
+ HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
+
+ Init_Debug();
+ /**
+ * The Standby mode should not be entered before the initialization is over
+ * The default state of the Low Power Manager is to allow the Standby Mode so an request is needed here
+ */
+ UTIL_LPM_SetOffMode(1 << CFG_LPM_APP, UTIL_LPM_DISABLE);
+ Led_Init();
+ Button_Init();
+ appe_Tl_Init(); /* Initialize all transport layers */
+
+ /**
+ * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
+ * received on the system channel before starting the Zigbee Stack
+ * This system event is received with APPE_SysUserEvtRx()
+ */
+
+ return;
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+static void Init_Debug( void )
+{
+#if (CFG_DEBUGGER_SUPPORTED == 1)
+ /**
+ * Keep debugger enabled while in any low power mode
+ */
+ HAL_DBGMCU_EnableDBGSleepMode();
+
+ /***************** ENABLE DEBUGGER *************************************/
+ LL_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
+ LL_C2_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
+
+#else
+
+ GPIO_InitTypeDef gpio_config = {0};
+
+ gpio_config.Pull = GPIO_NOPULL;
+ gpio_config.Mode = GPIO_MODE_ANALOG;
+
+ gpio_config.Pin = GPIO_PIN_15 | GPIO_PIN_14 | GPIO_PIN_13;
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOA, &gpio_config);
+ __HAL_RCC_GPIOA_CLK_DISABLE();
+
+ gpio_config.Pin = GPIO_PIN_4 | GPIO_PIN_3;
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOB, &gpio_config);
+ __HAL_RCC_GPIOB_CLK_DISABLE();
+
+ HAL_DBGMCU_DisableDBGSleepMode();
+ HAL_DBGMCU_DisableDBGStopMode();
+ HAL_DBGMCU_DisableDBGStandbyMode();
+
+#endif /* (CFG_DEBUGGER_SUPPORTED == 1) */
+
+#if(CFG_DEBUG_TRACE != 0)
+ DbgTraceInit();
+#endif
+
+ return;
+}
+
+/**
+ * @brief Configure the system for power optimization
+ *
+ * @note This API configures the system to be ready for low power mode
+ *
+ * @param None
+ * @retval None
+ */
+static void SystemPower_Config( void )
+{
+
+ /**
+ * Select HSI as system clock source after Wake Up from Stop mode
+ */
+ LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI);
+
+ /* Initialize low power manager */
+ UTIL_LPM_Init( );
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+ /**
+ * Enable USB power
+ */
+ HAL_PWREx_EnableVddUSB();
+#endif
+
+ return;
+}
+
+static void appe_Tl_Init( void )
+{
+ TL_MM_Config_t tl_mm_config;
+ SHCI_TL_HciInitConf_t SHci_Tl_Init_Conf;
+ /**< Reference table initialization */
+ TL_Init();
+
+ /**< System channel initialization */
+ UTIL_SEQ_RegTask( 1<< CFG_TASK_SYSTEM_HCI_ASYNCH_EVT, UTIL_SEQ_RFU, shci_user_evt_proc );
+ SHci_Tl_Init_Conf.p_cmdbuffer = (uint8_t*)&SystemCmdBuffer;
+ SHci_Tl_Init_Conf.StatusNotCallBack = APPE_SysStatusNot;
+ shci_init(APPE_SysUserEvtRx, (void*) &SHci_Tl_Init_Conf);
+
+ /**< Memory Manager channel initialization */
+ tl_mm_config.p_BleSpareEvtBuffer = 0;
+ tl_mm_config.p_SystemSpareEvtBuffer = SystemSpareEvtBuffer;
+ tl_mm_config.p_AsynchEvtPool = EvtPool;
+ tl_mm_config.AsynchEvtPoolSize = POOL_SIZE;
+ TL_MM_Init( &tl_mm_config );
+
+ TL_Enable();
+
+ return;
+}
+
+
+static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status)
+{
+ UNUSED(status);
+ return;
+}
+
+/**
+ * @brief Trap a notification coming from the M0 firmware
+ * @param pPayload : payload associated to the notification
+ *
+ * @retval None
+ */
+
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
+static void APPE_SysUserEvtRx( void * pPayload )
+{
+ TL_AsynchEvt_t *p_sys_event;
+ p_sys_event = (TL_AsynchEvt_t*)(((tSHCI_UserEvtRxParam*)pPayload)->pckt->evtserial.evt.payload);
+
+ switch(p_sys_event->subevtcode)
+ {
+ case SHCI_SUB_EVT_CODE_READY:
+ APPE_SysEvtReadyProcessing();
+ break;
+ case SHCI_SUB_EVT_ERROR_NOTIF:
+ APPE_SysEvtError((SCHI_SystemErrCode_t) (p_sys_event->payload[0]));
+ break;
+ default:
+ break;
+ }
+ return;
+}
+
+/**
+ * @brief Notify a system error coming from the M0 firmware
+ * @param ErrorCode : errorCode detected by the M0 firmware
+ *
+ * @retval None
+ */
+static void APPE_SysEvtError( SCHI_SystemErrCode_t ErrorCode)
+{
+ switch (ErrorCode) // TODO
+ {
+ case ERR_THREAD_LLD_FATAL_ERROR:
+ APP_DBG("** ERR_ZIGBEE : LLD_FATAL_ERROR \n");
+ break;
+ case ERR_THREAD_UNKNOWN_CMD:
+ APP_DBG("** ERR_ZIGBEE : UNKNOWN_CMD \n");
+ break;
+ default:
+ APP_DBG("** ERR_ZIGBEE : ErroCode=%d \n", ErrorCode);
+ break;
+ }
+ return;
+}
+
+static void APPE_SysEvtReadyProcessing( void )
+{
+ /* Traces channel initialization */
+ TL_TRACES_Init();
+
+ APP_ZIGBEE_Init();
+ UTIL_LPM_SetOffMode(1U << CFG_LPM_APP, UTIL_LPM_ENABLE);
+ return;
+}
+
+/* USER CODE BEGIN FD_LOCAL_FUNCTIONS */
+static void Led_Init( void )
+{
+#if (CFG_LED_SUPPORTED == 1U)
+ /**
+ * Leds Initialization
+ */
+
+ BSP_LED_Init(LED_BLUE);
+ BSP_LED_Init(LED_GREEN);
+ BSP_LED_Init(LED_RED);
+
+#endif
+
+ return;
+}
+
+static void Button_Init( void )
+{
+#if (CFG_BUTTON_SUPPORTED == 1U)
+ /**
+ * Button Initialization
+ */
+ BSP_PB_Init(BUTTON_SW1, BUTTON_MODE_EXTI);
+ BSP_PB_Init(BUTTON_SW2, BUTTON_MODE_EXTI);
+ BSP_PB_Init(BUTTON_SW3, BUTTON_MODE_EXTI);
+#endif
+
+ return;
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void UTIL_SEQ_Idle( void )
+{
+#if ( CFG_LPM_SUPPORTED == 1)
+ UTIL_LPM_EnterLowPower( );
+#endif
+ return;
+}
+
+/**
+ * @brief This function is called by the scheduler each time an event
+ * is pending.
+ *
+ * @param evt_waited_bm : Event pending.
+ * @retval None
+ */
+void UTIL_SEQ_EvtIdle( UTIL_SEQ_bm_t task_id_bm, UTIL_SEQ_bm_t evt_waited_bm )
+{
+ switch (evt_waited_bm) {
+ case EVENT_ACK_FROM_M0_EVT:
+ /* Run only the task CFG_TASK_MSG_FROM_M0_TO_M4 */
+ UTIL_SEQ_Run((1U << CFG_TASK_MSG_FROM_M0_TO_M4));
+ break;
+ case EVENT_SYNCHRO_BYPASS_IDLE:
+ UTIL_SEQ_SetEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+ /* Run only the task CFG_TASK_MSG_FROM_M0_TO_M4 */
+ UTIL_SEQ_Run((1U << CFG_TASK_MSG_FROM_M0_TO_M4));
+ break;
+
+ default:
+ /* default case */
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ break;
+ }
+}
+
+void shci_notify_asynch_evt(void* pdata)
+{
+ UNUSED(pdata);
+ UTIL_SEQ_SetTask(1U << CFG_TASK_SYSTEM_HCI_ASYNCH_EVT, CFG_SCH_PRIO_0);
+ return;
+}
+
+void shci_cmd_resp_release(uint32_t flag)
+{
+ UNUSED(flag);
+ UTIL_SEQ_SetEvt(1U << CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP);
+ return;
+}
+
+void shci_cmd_resp_wait(uint32_t timeout)
+{
+ UNUSED(timeout);
+ UTIL_SEQ_WaitEvt(1U << CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP);
+ return;
+}
+
+/* Received trace buffer from M0 */
+void TL_TRACES_EvtReceived( TL_EvtPacket_t * hcievt )
+{
+#if(CFG_DEBUG_TRACE != 0)
+ /* Call write/print function using DMA from dbg_trace */
+ /* - Cast to TL_AsynchEvt_t* to get "real" payload (without Sub Evt code 2bytes),
+ - (-2) to size to remove Sub Evt Code */
+ DbgTraceWrite(1U, (const unsigned char *) ((TL_AsynchEvt_t *)(hcievt->evtserial.evt.payload))->payload, hcievt->evtserial.evt.plen - 2U);
+#endif /* CFG_DEBUG_TRACE */
+ /* Release buffer */
+ TL_MM_EvtDone( hcievt );
+}
+/**
+ * @brief Initialisation of the trace mechanism
+ * @param None
+ * @retval None
+ */
+#if(CFG_DEBUG_TRACE != 0)
+void DbgOutputInit( void )
+{
+ MX_USART1_UART_Init();
+
+ return;
+}
+
+/**
+ * @brief Management of the traces
+ * @param p_data : data
+ * @param size : size
+ * @param call-back :
+ * @retval None
+ */
+void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) )
+{
+ HW_UART_Transmit_DMA(CFG_DEBUG_TRACE_UART, p_data, size, cb);
+
+ return;
+}
+#endif
+
+/* USER CODE BEGIN FD_WRAP_FUNCTIONS */
+/**
+ * @brief This function manage the Push button action
+ * @param GPIO_Pin : GPIO pin which has been activated
+ * @retval None
+ */
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ switch (GPIO_Pin) {
+ case BUTTON_SW1_PIN:
+ UTIL_SEQ_SetTask(1U << CFG_TASK_BUTTON_SW1,CFG_SCH_PRIO_1);
+ break;
+
+ case BUTTON_SW2_PIN:
+ break;
+
+ case BUTTON_SW3_PIN:
+ break;
+
+ default:
+ break;
+ }
+}
+/* USER CODE END FD_WRAP_FUNCTIONS */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/hw_timerserver.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_timerserver.c
index c842ba55e..c842ba55e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/hw_timerserver.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_timerserver.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/hw_uart.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_uart.c
index 9a553610d..9a553610d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/hw_uart.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_uart.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/main.c
new file mode 100644
index 000000000..80ad1ad58
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/main.c
@@ -0,0 +1,521 @@
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ *
+ @verbatim
+ ==============================================================================
+ ##### IMPORTANT NOTE #####
+ ==============================================================================
+
+ This application requests having the stm32wb5x_Zigbee_fw.bin binary
+ flashed on the Wireless Coprocessor.
+ If it is not the case, you need to use STM32CubeProgrammer to load the appropriate
+ binary.
+
+ All available binaries are located under following directory:
+ /Projects/STM32_Copro_Wireless_Binaries
+
+ Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
+ Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the
+ detailed procedure to change the Wireless Coprocessor binary.
+
+ @endverbatim
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "app_entry.h"
+
+/* Private includes ----------------------------------------------------------*/
+
+#include "dbg_trace.h"
+#include "hw_conf.h"
+#include "otp.h"
+#include "stm32_seq.h"
+
+/* Private variables ---------------------------------------------------------*/
+UART_HandleTypeDef hlpuart1;
+UART_HandleTypeDef huart1;
+DMA_HandleTypeDef hdma_lpuart1_tx;
+DMA_HandleTypeDef hdma_usart1_tx;
+RTC_HandleTypeDef hrtc;
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+void MX_LPUART1_UART_Init(void);
+void MX_USART1_UART_Init(void);
+static void MX_RF_Init(void);
+static void MX_RTC_Init(void);
+
+void PeriphClock_Config(void);
+static void Reset_Device(void);
+static void Reset_IPCC(void);
+static void Reset_BackupDomain(void);
+static void Init_Exti(void);
+static void Config_HSE(void);
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ Reset_Device();
+ Config_HSE();
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ PeriphClock_Config();
+ Init_Exti(); /**< Configure the system Power Mode */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_RF_Init();
+ MX_RTC_Init();
+
+ /* Init the full application */
+ APPE_Init();
+
+ /* Infinite loop */
+
+ while (1) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+
+ }
+
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+
+ /** Configure LSE Drive Capability
+ */
+ __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+ /** Initializes the CPU, AHB and APB busses clocks
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE
+ |RCC_OSCILLATORTYPE_LSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.LSEState = RCC_LSE_ON;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4|RCC_CLOCKTYPE_HCLK2
+ |RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLK2Divider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLK4Divider = RCC_SYSCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Initializes the peripherals clocks
+ */
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RFWAKEUP
+ |RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1
+ |RCC_PERIPHCLK_LPUART1;
+ PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
+ PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
+ PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
+ PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
+ PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
+
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief LPUART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+void MX_LPUART1_UART_Init(void)
+{
+
+ hlpuart1.Instance = LPUART1;
+ hlpuart1.Init.BaudRate = 115200;
+ hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
+ hlpuart1.Init.StopBits = UART_STOPBITS_1;
+ hlpuart1.Init.Parity = UART_PARITY_NONE;
+ hlpuart1.Init.Mode = UART_MODE_TX_RX;
+ hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+ hlpuart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
+ hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+ hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
+ if (HAL_UART_Init(&hlpuart1) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK) {
+ Error_Handler();
+ }
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+void MX_USART1_UART_Init(void)
+{
+
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_8;
+ huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+ huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
+ huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+ if (HAL_UART_Init(&huart1) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) {
+ Error_Handler();
+ }
+
+}
+
+/**
+ * @brief RF Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_RF_Init(void)
+{
+
+}
+
+/**
+ * @brief RTC Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_RTC_Init(void)
+{
+
+
+ /** Initialize RTC Only
+ */
+ hrtc.Instance = RTC;
+ hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
+ hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
+ hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
+ hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
+ hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
+ hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
+ if (HAL_RTC_Init(&hrtc) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN RTC_Init 2 */
+
+ /* USER CODE END RTC_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMAMUX1_CLK_ENABLE();
+ __HAL_RCC_DMA1_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Channel1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
+ /* DMA1_Channel2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+}
+
+/* USER CODE BEGIN 4 */
+void PeriphClock_Config(void)
+{
+ #if (CFG_USB_INTERFACE_ENABLE != 0)
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
+ RCC_CRSInitTypeDef RCC_CRSInitStruct = { 0 };
+
+ /**
+ * This prevents the CPU2 to disable the HSI48 oscillator when
+ * it does not use anymore the RNG IP
+ */
+ LL_HSEM_1StepLock( HSEM, 5 );
+
+ LL_RCC_HSI48_Enable();
+
+ while(!LL_RCC_HSI48_IsReady());
+
+ /* Select HSI48 as USB clock source */
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
+ PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
+ HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
+
+ /*Configure the clock recovery system (CRS)**********************************/
+
+ /* Enable CRS Clock */
+ __HAL_RCC_CRS_CLK_ENABLE();
+
+ /* Default Synchro Signal division factor (not divided) */
+ RCC_CRSInitStruct.Prescaler = RCC_CRS_SYNC_DIV1;
+
+ /* Set the SYNCSRC[1:0] bits according to CRS_Source value */
+ RCC_CRSInitStruct.Source = RCC_CRS_SYNC_SOURCE_USB;
+
+ /* HSI48 is synchronized with USB SOF at 1KHz rate */
+ RCC_CRSInitStruct.ReloadValue = RCC_CRS_RELOADVALUE_DEFAULT;
+ RCC_CRSInitStruct.ErrorLimitValue = RCC_CRS_ERRORLIMIT_DEFAULT;
+
+ RCC_CRSInitStruct.Polarity = RCC_CRS_SYNC_POLARITY_RISING;
+
+ /* Set the TRIM[5:0] to the default value*/
+ RCC_CRSInitStruct.HSI48CalibrationValue = RCC_CRS_HSI48CALIBRATION_DEFAULT;
+
+ /* Start automatic synchronization */
+ HAL_RCCEx_CRSConfig(&RCC_CRSInitStruct);
+#endif
+
+ return;
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+static void Config_HSE(void)
+{
+ OTP_ID0_t * p_otp;
+
+ /**
+ * Read HSE_Tuning from OTP
+ */
+ p_otp = (OTP_ID0_t *) OTP_Read(0);
+ if (p_otp)
+ {
+ LL_RCC_HSE_SetCapacitorTuning(p_otp->hse_tuning);
+ }
+
+ return;
+}
+
+
+static void Reset_Device( void )
+{
+#if ( CFG_HW_RESET_BY_FW == 1 )
+ Reset_BackupDomain();
+
+ Reset_IPCC();
+#endif
+
+ return;
+}
+
+static void Reset_IPCC( void )
+{
+ LL_AHB3_GRP1_EnableClock(LL_AHB3_GRP1_PERIPH_IPCC);
+
+ LL_C1_IPCC_ClearFlag_CHx(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_ClearFlag_CHx(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C1_IPCC_DisableTransmitChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_DisableTransmitChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C1_IPCC_DisableReceiveChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_DisableReceiveChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ return;
+}
+
+static void Reset_BackupDomain( void )
+{
+ if ((LL_RCC_IsActiveFlag_PINRST() != FALSE) && (LL_RCC_IsActiveFlag_SFTRST() == FALSE))
+ {
+ HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */
+
+ /**
+ * Write twice the value to flush the APB-AHB bridge
+ * This bit shall be written in the register before writing the next one
+ */
+ HAL_PWR_EnableBkUpAccess();
+
+ __HAL_RCC_BACKUPRESET_FORCE();
+ __HAL_RCC_BACKUPRESET_RELEASE();
+ }
+
+ return;
+}
+
+static void Init_Exti( void )
+{
+ /**< Disable all wakeup interrupt on CPU1 except IPCC(36), HSEM(38) */
+ LL_EXTI_DisableIT_0_31(~0);
+ LL_EXTI_DisableIT_32_63( (~0) & (~(LL_EXTI_LINE_36 | LL_EXTI_LINE_38)) );
+
+ return;
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+void HAL_Delay(uint32_t Delay)
+{
+ uint32_t tickstart = HAL_GetTick();
+ uint32_t wait = Delay;
+
+ /* Add a freq to guarantee minimum wait */
+ if (wait < HAL_MAX_DELAY)
+ {
+ wait += HAL_GetTickFreq();
+ }
+
+ while ((HAL_GetTick() - tickstart) < wait)
+ {
+ /************************************************************************************
+ * ENTER SLEEP MODE
+ ***********************************************************************************/
+ LL_LPM_EnableSleep( ); /**< Clear SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+ #if defined ( __CC_ARM)
+ __force_stores();
+ #endif
+
+ __WFI( );
+ }
+}
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+
+}
+
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32_lpm_if.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32_lpm_if.c
index f024b61e3..f024b61e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32_lpm_if.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32_lpm_if.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_hal_msp.c
index 9c338486d..9c338486d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_hal_msp.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_it.c
index 7c5536dfc..7c5536dfc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_it.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm_logging.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm_logging.c
index c24b86dd8..c24b86dd8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/stm_logging.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm_logging.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/system_stm32wbxx.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/system_stm32wbxx.c
index d4653a0ce..d4653a0ce 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/system_stm32wbxx.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/system_stm32wbxx.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Project.eww b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Project.eww
index 1cbded401..5107edc35 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Project.eww
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Project.eww
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<workspace>
<project>
- <path>$WS_DIR$\Zigbee_OnOff_Router.ewp</path>
+ <path>$WS_DIR$\Zigbee_OnOff_Client_Router.ewp</path>
</project>
<batchBuild />
</workspace>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Zigbee_OnOff_Distrib.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewd
index a1b53f07b..34d783918 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Zigbee_OnOff_Distrib.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Zigbee_OnOff_Distrib</name>
+ <name>Zigbee_OnOff_Client_Router</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Zigbee_OnOff_Router.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewp
index 496862a6b..0a945a8ef 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Zigbee_OnOff_Router.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Zigbee_OnOff_Router</name>
+ <name>Zigbee_OnOff_Client_Router</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -283,7 +283,7 @@
<option>
<name>CCAllowList</name>
<version>1</version>
- <state>11111110</state>
+ <state>00000000</state>
</option>
<option>
<name>CCDebugInfo</name>
@@ -383,7 +383,7 @@
</option>
<option>
<name>CCOptLevel</name>
- <state>3</state>
+ <state>0</state>
</option>
<option>
<name>CCOptStrategy</name>
@@ -392,7 +392,7 @@
</option>
<option>
<name>CCOptLevelSlave</name>
- <state>3</state>
+ <state>0</state>
</option>
<option>
<name>CompilerMisraRules98</name>
@@ -1083,9 +1083,6 @@
<file>
<name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee.c</name>
</file>
- <file>
- <name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee_demo.c</name>
- </file>
</group>
<group>
<name>Target</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/startup_stm32wb55xx_cm4.s
index 1f886ff59..1f886ff59 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/startup_stm32wb55xx_cm4.s
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/startup_stm32wb55xx_cm4.s
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/stm32wb55xx_flash_cm4.icf b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/stm32wb55xx_flash_cm4.icf
index 70aec4026..70aec4026 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/stm32wb55xx_flash_cm4.icf
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/stm32wb55xx_flash_cm4.icf
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.c
new file mode 100644
index 000000000..349dcc49e
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.c
@@ -0,0 +1,538 @@
+/**
+ ******************************************************************************
+ * File Name : App/app_zigbee.c
+ * Description : Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "app_entry.h"
+#include "dbg_trace.h"
+#include "app_zigbee.h"
+#include "zigbee_interface.h"
+#include "shci.h"
+#include "stm_logging.h"
+#include "app_conf.h"
+#include "stm32wbxx_core_interface_def.h"
+#include "zigbee_types.h"
+#include "stm32_seq.h"
+
+#include <assert.h>
+#include "zcl/zcl.h"
+#include "zcl/zcl.onoff.h"
+#include "zcl/zcl.identify.h"
+
+/* Private defines -----------------------------------------------------------*/
+#define APP_ZIGBEE_STARTUP_FAIL_DELAY 500U
+#define SW1_ENDPOINT 17
+#define SW1_GROUP_ADDR 0x0001
+#define CHANNEL 13
+
+/* Private function prototypes -----------------------------------------------*/
+static void APP_ZIGBEE_StackLayersInit(void);
+static void APP_ZIGBEE_ConfigEndpoints(void);
+static void APP_ZIGBEE_SW1_Process(void);
+static void APP_ZIGBEE_NwkForm(void);
+static void APP_ZIGBEE_ConfigGroupAddr(void);
+
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
+
+static void Wait_Getting_Ack_From_M0(void);
+static void Receive_Ack_From_M0(void);
+static void Receive_Notification_From_M0(void);
+
+/* Private variables -----------------------------------------------*/
+static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
+static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
+static __IO uint32_t CptReceiveMsgFromM0 = 0;
+
+PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+struct zigbee_app_info {
+ bool has_init;
+ struct ZigBeeT *zb;
+ enum ZbStartType startupControl;
+ enum ZbStatusCodeT join_status;
+ uint32_t join_delay;
+ bool init_after_join;
+
+ struct ZbZclClusterT *onoff_client_1;
+};
+static struct zigbee_app_info zigbee_app_info;
+
+/* Functions Definition ------------------------------------------------------*/
+
+void APP_ZIGBEE_Init(void)
+{
+ SHCI_CmdStatus_t ZigbeeInitStatus;
+
+ APP_DBG("APP_ZIGBEE_Init");
+
+ /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
+ APP_ZIGBEE_CheckWirelessFirmwareInfo();
+
+ /* Register cmdbuffer */
+ APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
+
+ /* Init config buffer and call TL_ZIGBEE_Init */
+ APP_ZIGBEE_TL_INIT();
+
+ /* Register task */
+ /* Create the different tasks */
+ UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
+
+ /* Task associated with network creation process */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, UTIL_SEQ_RFU, APP_ZIGBEE_NwkForm);
+
+ /* Task associated with push button SW1 */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_BUTTON_SW1, UTIL_SEQ_RFU, APP_ZIGBEE_SW1_Process);
+
+ /* Start the Zigbee on the CPU2 side */
+ ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(ZigbeeInitStatus);
+
+ /* Initialize Zigbee stack layers */
+ APP_ZIGBEE_StackLayersInit();
+
+} /* APP_ZIGBEE_Init */
+
+
+/**
+ * @brief Initialize Zigbee stack layers
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_StackLayersInit(void)
+{
+ APP_DBG("APP_ZIGBEE_StackLayersInit");
+
+ zigbee_app_info.zb = ZbInit(0U, NULL, NULL);
+ assert(zigbee_app_info.zb != NULL);
+
+ /* Create the endpoint and cluster(s) */
+ APP_ZIGBEE_ConfigEndpoints();
+
+ BSP_LED_Off(LED_RED);
+ BSP_LED_Off(LED_GREEN);
+ BSP_LED_Off(LED_BLUE);
+
+ /* Configure the joining parameters */
+ zigbee_app_info.join_status = 0x01; /* init to error status */
+ zigbee_app_info.join_delay = HAL_GetTick(); /* now */
+ zigbee_app_info.startupControl = ZbStartTypeJoin;
+
+ /* Initialization Complete */
+ zigbee_app_info.has_init = true;
+
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+}
+
+static void APP_ZIGBEE_ConfigEndpoints(void)
+{
+ ZbApsmeAddEndpointReqT req;
+ ZbApsmeAddEndpointConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
+ req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
+
+ /* Endpoint: SW1_ENDPOINT */
+ req.endpoint = SW1_ENDPOINT;
+ ZbZclAddEndpoint(zigbee_app_info.zb, &req, &conf);
+ assert(conf.status == ZB_STATUS_SUCCESS);
+
+ /* OnOff Client */
+ zigbee_app_info.onoff_client_1 = ZbZclOnOffClientAlloc(zigbee_app_info.zb, SW1_ENDPOINT);
+ assert(zigbee_app_info.onoff_client_1 != NULL);
+ ZbZclClusterEndpointRegister(zigbee_app_info.onoff_client_1);
+
+} /* config_endpoints */
+
+/**
+ * @brief Handle Zigbee network forming and joining
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_NwkForm(void)
+{
+ if ((zigbee_app_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_app_info.join_delay))
+ {
+ struct ZbStartupT config;
+ enum ZbStatusCodeT status;
+
+ /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
+ ZbSetLogging(zigbee_app_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
+
+ /* Attempt to join a zigbee network */
+ ZbStartupConfigGetProDefaults(&config);
+
+ APP_DBG("Network config : APP_STARTUP_CENTRALIZED_ROUTER");
+ zigbee_app_info.startupControl = ZbStartTypeJoin;
+ config.startupControl = zigbee_app_info.startupControl;
+
+ /* Using the default HA preconfigured Link Key */
+ memcpy(config.security.preconfiguredLinkKey, sec_key_ha, ZB_SEC_KEYSIZE);
+ config.channelList.count = 1;
+ config.channelList.list[0].page = 0;
+ config.channelList.list[0].channelMask = 1 << CHANNEL; /* Channel in use*/
+
+ /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
+ * a blocking call on the M4. */
+ status = ZbStartupWait(zigbee_app_info.zb, &config);
+
+ APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
+ zigbee_app_info.join_status = status;
+
+ if (status == ZB_STATUS_SUCCESS) {
+ zigbee_app_info.join_delay = 0U;
+ zigbee_app_info.init_after_join = true;
+ BSP_LED_On(LED_BLUE);
+ }
+ else
+ {
+ APP_DBG("Startup failed, attempting again after a short delay (%d ms)", APP_ZIGBEE_STARTUP_FAIL_DELAY);
+ zigbee_app_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
+ }
+ }
+
+ /* If Network forming/joining was not successful reschedule the current task to retry the process */
+ if (zigbee_app_info.join_status != ZB_STATUS_SUCCESS)
+ {
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+ }
+ else
+ {
+ zigbee_app_info.init_after_join = false;
+
+ /* Assign ourselves to the group addresses */
+ APP_ZIGBEE_ConfigGroupAddr();
+
+ /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
+ uint32_t bcast_timeout = 3;
+ ZbNwkSet(zigbee_app_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
+ }
+}
+
+/**
+ * @brief Set group addressing mode
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_ConfigGroupAddr(void)
+{
+ ZbApsmeAddGroupReqT req;
+ ZbApsmeAddGroupConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.endpt = SW1_ENDPOINT;
+ req.groupAddr = SW1_GROUP_ADDR;
+ ZbApsmeAddGroupReq(zigbee_app_info.zb, &req, &conf);
+
+} /* APP_ZIGBEE_ConfigGroupAddr */
+
+/*************************************************************
+ * ZbStartupWait Blocking Call
+ *************************************************************/
+struct ZbStartupWaitInfo {
+ bool active;
+ enum ZbStatusCodeT status;
+};
+
+static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
+{
+ struct ZbStartupWaitInfo *info = cb_arg;
+
+ info->status = status;
+ info->active = false;
+} /* ZbStartupWaitCb */
+
+enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
+{
+ struct ZbStartupWaitInfo *info;
+ enum ZbStatusCodeT status;
+
+ info = malloc(sizeof(struct ZbStartupWaitInfo));
+ if (info == NULL) {
+ return ZB_STATUS_ALLOC_FAIL;
+ }
+ memset(info, 0, sizeof(struct ZbStartupWaitInfo));
+
+ info->active = true;
+ status = ZbStartup(zb, config, ZbStartupWaitCb, info);
+ if (status != ZB_STATUS_SUCCESS) {
+ info->active = false;
+ return status;
+ }
+ while (info->active) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ }
+ status = info->status;
+ free(info);
+ return status;
+} /* ZbStartupWait */
+
+/**
+ * @brief Trace the error or the warning reported.
+ * @param ErrId :
+ * @param ErrCode
+ * @retval None
+ */
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
+{
+ switch (ErrId) {
+ default:
+ APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
+ break;
+ }
+} /* APP_ZIGBEE_Error */
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+/**
+ * @brief Warn the user that an error has occurred.In this case,
+ * the LEDs on the Board will start blinking.
+ *
+ * @param pMess : Message associated to the error.
+ * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
+ * @retval None
+ */
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
+{
+ APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
+ while (1U == 1U) {
+ BSP_LED_Toggle(LED1);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED2);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED3);
+ HAL_Delay(500U);
+ }
+} /* APP_ZIGBEE_TraceError */
+
+/**
+ * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
+ * and display associated informations
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
+{
+ WirelessFwInfo_t wireless_info_instance;
+ WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
+
+ if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ }
+ else {
+ APP_DBG("**********************************************************");
+ APP_DBG("WIRELESS COPROCESSOR FW:");
+ /* Print version */
+ APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
+
+ switch (p_wireless_info->StackType) {
+ case INFO_STACK_TYPE_ZIGBEE:
+ APP_DBG("FW Type : Zigbee stack");
+ break;
+ default:
+ /* No Zigbee device supported ! */
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ break;
+ }
+ APP_DBG("**********************************************************");
+ }
+} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
+
+static void APP_ZIGBEE_SW1_Process()
+{
+ struct ZbApsAddrT dst;
+
+ memset(&dst, 0, sizeof(dst));
+ dst.mode = ZB_APSDE_ADDRMODE_GROUP;
+ dst.endpoint = SW1_ENDPOINT;
+ dst.nwkAddr = SW1_GROUP_ADDR;
+
+ APP_DBG("SW1 PUSHED (SENDING TOGGLE TO GROUP 0x0001)");
+ if (ZbZclOnOffClientToggleReq(zigbee_app_info.onoff_client_1, &dst, NULL, NULL) != ZCL_STATUS_SUCCESS) {
+ APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW1_ENDPOINT)");
+ }
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
+{
+ p_ZIGBEE_otcmdbuffer = p_buffer;
+} /* APP_ZIGBEE_RegisterCmdBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+} /* ZIGBEE_Get_OTCmdPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
+} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
+} /* ZIGBEE_Get_NotificationPayloadBuffer */
+
+/**
+ * @brief This function is used to transfer the commands from the M4 to the M0.
+ *
+ * @param None
+ * @return None
+ */
+void ZIGBEE_CmdTransfer(void)
+{
+ Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+
+ /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
+ /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
+ * + ID (4 bytes) + Size (4 bytes) */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
+
+ TL_ZIGBEE_SendAppliCmdToM0();
+
+ /* Wait completion of cmd */
+ Wait_Getting_Ack_From_M0();
+} /* ZIGBEE_CmdTransfer */
+
+/**
+ * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
+ *
+ *
+ * @param Otbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
+{
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(Otbuffer);
+
+ Receive_Ack_From_M0();
+} /* TL_ZIGBEE_CmdEvtReceived */
+
+/**
+ * @brief This function is called when notification from M0+ is received.
+ *
+ * @param Notbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
+{
+ p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
+
+ Receive_Notification_From_M0();
+} /* TL_ZIGBEE_NotReceived */
+
+/**
+ * @brief This function is called before sending any ot command to the M0
+ * core. The purpose of this function is to be able to check if
+ * there are no notifications coming from the M0 core which are
+ * pending before sending a new ot command.
+ * @param None
+ * @retval None
+ */
+void Pre_ZigbeeCmdProcessing(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+} /* Pre_ZigbeeCmdProcessing */
+
+/**
+ * @brief This function waits for getting an acknowledgment from the M0.
+ *
+ * @param None
+ * @retval None
+ */
+static void Wait_Getting_Ack_From_M0(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Wait_Getting_Ack_From_M0 */
+
+/**
+ * @brief Receive an acknowledgment from the M0+ core.
+ * Each command send by the M4 to the M0 are acknowledged.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Ack_From_M0(void)
+{
+ UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Receive_Ack_From_M0 */
+
+/**
+ * @brief Receive a notification from the M0+ through the IPCC.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Notification_From_M0(void)
+{
+ CptReceiveMsgFromM0++;
+ UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
+} /* Receive_Notification_From_M0 */
+
+/**
+ * @brief Perform initialization of TL for Zigbee.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_TL_INIT(void)
+{
+ ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
+ TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
+} /* APP_ZIGBEE_TL_INIT */
+
+/**
+ * @brief Process the messages coming from the M0.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_ProcessMsgM0ToM4(void)
+{
+ if (CptReceiveMsgFromM0 != 0) {
+ /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
+ if (CptReceiveMsgFromM0 > 1U) {
+ APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
+ }
+ else {
+ Zigbee_CallBackProcessing();
+ }
+ /* Reset counter */
+ CptReceiveMsgFromM0 = 0;
+ }
+} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.h
index dd907ec23..dd907ec23 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/Target/hw_ipcc.c
index ab7f75b9a..ab7f75b9a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/Target/hw_ipcc.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/readme.txt
index d7d49ed76..27ae3e850 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Client_Router/readme.txt
@@ -1,13 +1,12 @@
/**
- @page Zigbee_OnOff_Coord application
+ @page Zigbee_OnOff_Client_Router application
@verbatim
******************************************************************************
- * @file Zigbee/Zigbee_OnOff_Coord/readme.txt
+ * @file Zigbee/Zigbee_OnOff_Client_Router/readme.txt
* @author MCD Application Team
- * @brief Description of the Zigbee OnOff Cluster application using a
- * centralized network. This application concerns only the
- * coordinator role.
+ * @brief Description of the Zigbee OnOff Cluster application as a client
+ * using a centralized network.
******************************************************************************
*
* Copyright (c) 2019 STMicroelectronics. All rights reserved.
@@ -22,72 +21,68 @@
@par Application Description
-How to use OnOff cluster on a Centralized Zigbee network with device acting as coordinator.
+How to use OnOff cluster as a client on a centralized Zigbee network.
-The purpose of this application is to show how to create a centralized Zigbee network, and how to communicate
-from one node to another one using the OnOff cluster. Once the Zigbee mesh network is created, the
-user can send requests to the different boards through the push buttons in order to make the LED toggling.
+The purpose of this application is to show how to create a Zigbee centralized network, and
+how to communicate from one node to another one using the OnOff cluster. Once the Zigbee mesh
+network is created, the user can send requests from the client to the server through the push button
+in order to make the LED toggling.
-Each device acts as a client and a server at the same time, making the communication between the different
-boards symmetrical (bi-directorial)
+For this application it is requested to have:
+- 1 STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Server_Coord
+
+- 1 or more STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Client_Router
+
Device 1 Device 2
--------- ---------
- | | ZbZclOnOffClientToggleReq | |
+ | | ZbZclOnOffClientToggleReq | |
PushB=>|Client | -----------------------------------> |Server | =>LED
| | | |
| | | |
- | | ZbZclOnOffClientToggleReq | |
- LED <= |Server | <------------------------------------|Client |<=PushB
- | | | |
-------- ---------
+
+To setup the application :
+ a) Open the project, build it and load your generated application on your STM32WB devices.
+
+ To run the application :
-This application requires at minimum two STM32WB55xx nucleo boards, but you can use up four boards.
-
-This application requests having the stm32wb5x_zigbee_full_fw.bin binary flashed on the wireless coprocessor
-and the correct binary flashed on the application processor.
-
-Important note :
-================
-As it is a centralized network, to run this application, you need to have one device acting
-as coordinator and all the others devices acting as routers.
-
-One board must be flashed with the binary generated by this application (Zigbee/Zigbee_OnOff_Coord)
-The other boards must be flashed with the binary generated by the application named (Zigbee/Zigbee_OnOff_Router)
-
-To run the application :
-
- a) Once the boards have been flashed, eboot the different devices one by one.
- There must be on board configured in coordinator mode , and all
- other boards should be configured in router mode.
+ a) Start the first board. It must be the coordinator of the Zigbee network so in this demo application it is
+ the device running Zigbee_OnOff_Server_Coord application (Device2 in the above diagram).
+ Wait for the Blue LED (LED1) ON.
+ Start the second board. This board is configured as Zigbee router and will attached to the network created
+ by the coordinator. Do the same for the other boards if applicable.
+
+ b) At this stage, the Zigbee network is automatically created and BLUE LED (LED1) is ON on all devices.
+ it is now possible to send OnOff Cluster commands from the client to the server in multicast mode
+ by pressing on the SW1 push button.
+ You must see the LED1 toggling on the server side.
- b) Wait for a few seconds (around 5 sec), it order to let the zigbee mesh network being created.
-
- c) At this stage, a Zigbee network is automatically created and it is possible to send OnOffCluster commands
- in multicast mode by pressing on the SW1 or SW2 push button.
- Press on SW1 (resp SW2) . You must see the LED1 (resp LED2) toggling on all board connected to this newly created
- Zigbee network.
-
---------- -----------
|Device 1 |............|Device 2 |
- |(Coord.) | |(Router) |
+ |(distr.) | |(distr.) |
----------- -----------
. .
. .
. .
----------- .
|Device 3 |...................
- |(Router) |
+ |(distr.) |
-----------
- .
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
@par Hardware and Software environment
- - This example runs on STM32WB55xx devices (Nucleo board)
+ - This example runs on STM32WB55xx devices.
- This example has been tested with an STMicroelectronics STM32WB55RG_Nucleo
board and can be easily tailored to any other supported device
@@ -111,9 +106,9 @@ To run the application :
@par How to use it ?
-=> Loading of the stm32wb5x_zigbee_full_fw.bin binary
+=> Loading of the stm32wb5x_Zigbee_FFD_fw.bin binary
- This application requests having the stm32wb5x_zigbee_full_fw.bin binary flashed on the Wireless Coprocessor.
+ This application requests having the stm32wb5x_Zigbee_FFD_fw.bin binary flashed on the Wireless Coprocessor.
If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory.
Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee.c
deleted file mode 100644
index a7ca65f04..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/**
- ******************************************************************************
- * File Name : App/app_zigbee.c
- * Description : Zigbee Application.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "app_common.h"
-#include "app_entry.h"
-#include "dbg_trace.h"
-#include "app_zigbee.h"
-#include "zigbee_interface.h"
-#include "shci.h"
-#include "stm_logging.h"
-#include "app_conf.h"
-#include "stm32wbxx_core_interface_def.h"
-#include "zigbee_types.h"
-#include "stm32_seq.h"
-
-/* Private defines -----------------------------------------------------------*/
-
-/* Private function prototypes -----------------------------------------------*/
-void APP_ZIGBEE_Demo(void);
-
-static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
-static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
-
-static void Wait_Getting_Ack_From_M0(void);
-static void Receive_Ack_From_M0(void);
-static void Receive_Notification_From_M0(void);
-
-/* Private variables -----------------------------------------------*/
-static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
-static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
-static __IO uint32_t CptReceiveMsgFromM0 = 0;
-
-PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
-
-/* Functions Definition ------------------------------------------------------*/
-
-void APP_ZIGBEE_Init(void)
-{
- SHCI_CmdStatus_t ZigbeeInitStatus;
-
- APP_DBG("APP_ZIGBEE_Init");
-
- /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
- APP_ZIGBEE_CheckWirelessFirmwareInfo();
-
- /* Register cmdbuffer */
- APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
-
- /* Init config buffer and call TL_ZIGBEE_Init */
- APP_ZIGBEE_TL_INIT();
-
- ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
- /* Prevent unused argument(s) compilation warning */
- UNUSED(ZigbeeInitStatus);
-
- /* Register task */
- /* Create the different tasks */
- UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
-
- /* Create the zigbee demo task */
- UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_APP, UTIL_SEQ_RFU,APP_ZIGBEE_Demo);
- /* run the task */
- UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_APP, CFG_SCH_PRIO_0);
-} /* APP_ZIGBEE_Init */
-
-/**
- * @brief Trace the error or the warning reported.
- * @param ErrId :
- * @param ErrCode
- * @retval None
- */
-void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
-{
- switch (ErrId) {
- default:
- APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
- break;
- }
-} /* APP_ZIGBEE_Error */
-
-/*************************************************************
- *
- * LOCAL FUNCTIONS
- *
- *************************************************************/
-
-/**
- * @brief Warn the user that an error has occurred.In this case,
- * the LEDs on the Board will start blinking.
- *
- * @param pMess : Message associated to the error.
- * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
- * @retval None
- */
-static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
-{
- APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
- while (1U == 1U) {
- BSP_LED_Toggle(LED1);
- HAL_Delay(500U);
- BSP_LED_Toggle(LED2);
- HAL_Delay(500U);
- BSP_LED_Toggle(LED3);
- HAL_Delay(500U);
- }
-} /* APP_ZIGBEE_TraceError */
-
-/**
- * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
- * and display associated informations
- * @param None
- * @retval None
- */
-static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
-{
- WirelessFwInfo_t wireless_info_instance;
- WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
-
- if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
- APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
- }
- else {
- APP_DBG("**********************************************************");
- APP_DBG("WIRELESS COPROCESSOR FW:");
- /* Print version */
- APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
-
- switch (p_wireless_info->StackType) {
- case INFO_STACK_TYPE_ZIGBEE:
- APP_DBG("FW Type : Zigbee stack");
- break;
- default:
- /* No Zigbee device supported ! */
- APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
- break;
- }
- APP_DBG("**********************************************************");
- }
-} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
-
-/*************************************************************
- *
- * WRAP FUNCTIONS
- *
- *************************************************************/
-
-void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
-{
- p_ZIGBEE_otcmdbuffer = p_buffer;
-} /* APP_ZIGBEE_RegisterCmdBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
-} /* ZIGBEE_Get_OTCmdPayloadBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
-} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
-} /* ZIGBEE_Get_NotificationPayloadBuffer */
-
-/**
- * @brief This function is used to transfer the commands from the M4 to the M0.
- *
- * @param None
- * @return None
- */
-void ZIGBEE_CmdTransfer(void)
-{
- Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
-
- /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
- p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
- /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
- * + ID (4 bytes) + Size (4 bytes) */
- p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
-
- TL_ZIGBEE_SendAppliCmdToM0();
-
- /* Wait completion of cmd */
- Wait_Getting_Ack_From_M0();
-} /* ZIGBEE_CmdTransfer */
-
-/**
- * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
- *
- *
- * @param Otbuffer : a pointer to TL_EvtPacket_t
- * @return None
- */
-void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
-{
- /* Prevent unused argument(s) compilation warning */
- UNUSED(Otbuffer);
-
- Receive_Ack_From_M0();
-} /* TL_ZIGBEE_CmdEvtReceived */
-
-/**
- * @brief This function is called when notification from M0+ is received.
- *
- * @param Notbuffer : a pointer to TL_EvtPacket_t
- * @return None
- */
-void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
-{
- p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
-
- Receive_Notification_From_M0();
-} /* TL_ZIGBEE_NotReceived */
-
-/**
- * @brief This function is called before sending any ot command to the M0
- * core. The purpose of this function is to be able to check if
- * there are no notifications coming from the M0 core which are
- * pending before sending a new ot command.
- * @param None
- * @retval None
- */
-void Pre_ZigbeeCmdProcessing(void)
-{
- UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
-} /* Pre_ZigbeeCmdProcessing */
-
-/**
- * @brief This function waits for getting an acknowledgment from the M0.
- *
- * @param None
- * @retval None
- */
-static void Wait_Getting_Ack_From_M0(void)
-{
- UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
-} /* Wait_Getting_Ack_From_M0 */
-
-/**
- * @brief Receive an acknowledgment from the M0+ core.
- * Each command send by the M4 to the M0 are acknowledged.
- * This function is called under interrupt.
- * @param None
- * @retval None
- */
-static void Receive_Ack_From_M0(void)
-{
- UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
-} /* Receive_Ack_From_M0 */
-
-/**
- * @brief Receive a notification from the M0+ through the IPCC.
- * This function is called under interrupt.
- * @param None
- * @retval None
- */
-static void Receive_Notification_From_M0(void)
-{
- CptReceiveMsgFromM0++;
- UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
-} /* Receive_Notification_From_M0 */
-
-/**
- * @brief Perform initialization of TL for Zigbee.
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_TL_INIT(void)
-{
- ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
- ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
- ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
- TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
-} /* APP_ZIGBEE_TL_INIT */
-
-/**
- * @brief Process the messages coming from the M0.
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_ProcessMsgM0ToM4(void)
-{
- if (CptReceiveMsgFromM0 != 0) {
- /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
- if (CptReceiveMsgFromM0 > 1U) {
- APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
- }
- else {
- Zigbee_CallBackProcessing();
- }
- /* Reset counter */
- CptReceiveMsgFromM0 = 0;
- }
-} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee_demo.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee_demo.c
deleted file mode 100644
index a969fca1c..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee_demo.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/**
- ******************************************************************************
- * File Name : App/app_zigbee.c
- * Description : Zigbee Application.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include <assert.h>
-#include "app_common.h"
-#include "app_entry.h"
-#include "dbg_trace.h"
-#include "app_zigbee.h"
-#include "shci.h"
-#include "stm_logging.h"
-#include "app_conf.h"
-#include "stm32wbxx_core_interface_def.h"
-#include "zigbee_types.h"
-#include "zigbee_interface.h"
-#include "stm32_seq.h"
-#include "zcl/zcl.h"
-#include "zcl/zcl.onoff.h"
-#include "zcl/zcl.identify.h"
-
-/* Spec is -40 dBm, but use -60 for ease of testing, and until we get real RSSI from STMAC. */
-#define APP_TOUCHLINK_MIN_RSSI -60
-
-/* Private defines -----------------------------------------------------------*/
-#define APP_ZIGBEE_STARTUP_FAIL_DELAY 3000U
-
-#define SW1_ENDPOINT 17
-#define SW2_ENDPOINT 18
-#define TOUCHLINK_ENDPOINT 200 /* arbitrary */
-
-#define SW1_GROUP_ADDR 0x0001
-#define SW2_GROUP_ADDR 0x0002
-
-#define SW1_FLAG 0x01
-#define SW2_FLAG 0x02
-
-#define SW1_LED LED_RED
-#define SW2_LED LED_GREEN
-#define SW3_LED LED_BLUE
-
-#define CHANNEL 15
-/* Private function prototypes -----------------------------------------------*/
-
-/* Private variables -----------------------------------------------*/
-struct zigbee_demo_info {
- bool has_init;
- struct ZigBeeT *zb;
- enum ZbStartType startupControl;
- enum ZbStatusCodeT join_status;
- uint32_t join_delay;
- bool init_after_join;
-
- struct ZbZclClusterT *onoff_server_1;
- struct ZbZclClusterT *onoff_client_1;
- struct ZbZclClusterT *identify_server_1;
-
- struct ZbZclClusterT *onoff_server_2;
- struct ZbZclClusterT *onoff_client_2;
-
- uint8_t sw_flags;
-};
-
-static struct zigbee_demo_info zigbee_demo_info;
-
-static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb);
-
-static const struct ZbZclAttrT onoff_server_attr_list[] = {
- /* OnOff Server Attributes */
- {
- ZCL_ONOFF_ATTR_ONOFF, ZCL_DATATYPE_BOOLEAN,
- ZCL_ATTR_FLAG_REPORTABLE | ZCL_ATTR_FLAG_PERSISTABLE | ZCL_ATTR_FLAG_DEFAULTABLE | ZCL_ATTR_FLAG_CB_NOTIFY, 0,
- onoff_server_attr_cb, {0, 0}, {0, 0}
- },
-};
-
-/* Functions Definition ------------------------------------------------------*/
-
-static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb)
-{
- uint8_t endpoint;
- uint8_t attrVal;
-
- endpoint = ZbZclClusterGetEndpoint(clusterPtr);
- switch (cb->info->attributeId) {
- case ZCL_ONOFF_ATTR_ONOFF:
- if (endpoint == SW1_ENDPOINT) {
- if (ZbZclAttrRead(zigbee_demo_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
- if (attrVal != 0) {
- APP_DBG("SW1_LED ON");
- BSP_LED_On(SW1_LED);
- }
- else {
- APP_DBG("SW1_LED OFF");
- BSP_LED_Off(SW1_LED);
- }
- }
- }
- else if (endpoint == SW2_ENDPOINT) {
- if (ZbZclAttrRead(zigbee_demo_info.onoff_server_2, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
- if (attrVal != 0) {
- APP_DBG("SW2_LED ON");
- BSP_LED_On(SW2_LED);
- }
- else {
- APP_DBG("SW2_LED OFF");
- BSP_LED_Off(SW2_LED);
- }
- }
- }
- break;
-
- default:
- break;
- } /* switch */
- return ZCL_STATUS_SUCCESS;
-} /* onoff_server_attr_notify */
-
-static void config_endpoints(void)
-{
- ZbApsmeAddEndpointReqT req;
- ZbApsmeAddEndpointConfT conf;
-
- memset(&req, 0, sizeof(req));
- req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
- req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
-
- /* Endpoint: SW1_ENDPOINT */
- req.endpoint = SW1_ENDPOINT;
- ZbZclAddEndpoint(zigbee_demo_info.zb, &req, &conf);
- assert(conf.status == ZB_STATUS_SUCCESS);
- /* OnOff Server */
- zigbee_demo_info.onoff_server_1 = ZbZclOnOffServerAlloc(zigbee_demo_info.zb, SW1_ENDPOINT, NULL);
- assert(zigbee_demo_info.onoff_server_1 != NULL);
- ZbZclAttrAppendList(zigbee_demo_info.onoff_server_1, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_server_1);
- /* OnOff Client */
- zigbee_demo_info.onoff_client_1 = ZbZclOnOffClientAlloc(zigbee_demo_info.zb, SW1_ENDPOINT);
- assert(zigbee_demo_info.onoff_client_1 != NULL);
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_client_1);
- /* Identify Server for Touchlink */
- zigbee_demo_info.identify_server_1 = ZbZclIdentifyServerAlloc(zigbee_demo_info.zb, SW1_ENDPOINT, NULL);
- assert(zigbee_demo_info.identify_server_1 != NULL);
-
- /* Endpoint: SW2_ENDPOINT */
- req.endpoint = SW2_ENDPOINT;
- ZbZclAddEndpoint(zigbee_demo_info.zb, &req, &conf);
- assert(conf.status == ZB_STATUS_SUCCESS);
- /* OnOff Server */
- zigbee_demo_info.onoff_server_2 = ZbZclOnOffServerAlloc(zigbee_demo_info.zb, SW2_ENDPOINT, NULL);
- assert(zigbee_demo_info.onoff_server_2 != NULL);
- ZbZclAttrAppendList(zigbee_demo_info.onoff_server_2, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_server_2);
- /* OnOff Client */
- zigbee_demo_info.onoff_client_2 = ZbZclOnOffClientAlloc(zigbee_demo_info.zb, SW2_ENDPOINT);
- assert(zigbee_demo_info.onoff_client_2 != NULL);
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_client_2);
-} /* config_endpoints */
-
-static void config_group_addr(void)
-{
- ZbApsmeAddGroupReqT req;
- ZbApsmeAddGroupConfT conf;
-
- memset(&req, 0, sizeof(req));
- req.endpt = SW1_ENDPOINT;
- req.groupAddr = SW1_GROUP_ADDR;
- ZbApsmeAddGroupReq(zigbee_demo_info.zb, &req, &conf);
-
- req.endpt = SW2_ENDPOINT;
- req.groupAddr = SW2_GROUP_ADDR;
- ZbApsmeAddGroupReq(zigbee_demo_info.zb, &req, &conf);
-} /* config_group_addr */
-
-/**
- * @brief Zigbee Demo Task
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_Demo(void)
-{
- /*
- * Handle Initialization
- */
- if (!zigbee_demo_info.has_init) {
- zigbee_demo_info.sw_flags = 0;
-
- zigbee_demo_info.zb = ZbInit(0U, NULL, NULL);
- assert(zigbee_demo_info.zb != NULL);
-
- /* Create the endpoint and cluster(s) */
- config_endpoints();
-
- BSP_LED_Off(SW1_LED);
- BSP_LED_Off(SW2_LED);
- BSP_LED_Off(SW3_LED);
-
- /* Configure the joining parameters */
- zigbee_demo_info.join_status = 0x01; /* init to error status */
- zigbee_demo_info.join_delay = HAL_GetTick(); /* now */
- zigbee_demo_info.startupControl = ZbStartTypeJoin;
-
- /* Initialization Complete */
- zigbee_demo_info.has_init = true;
- }
-
- /*
- * Handle Network Joining / Forming
- */
- if ((zigbee_demo_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_demo_info.join_delay)) {
- struct ZbStartupT config;
- enum ZbStatusCodeT status;
-
- /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
- ZbSetLogging(zigbee_demo_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
-
- /* Attempt to join a zigbee network */
- ZbStartupConfigGetProDefaults(&config);
-
- /* Set the centralized network */
- APP_DBG("Network config : APP_STARTUP_CENTRALIZED_COORD");
- config.startupControl = ZbStartTypeForm;
-
- /* Using the default HA preconfigured Link Key */
- memcpy(config.security.preconfiguredLinkKey, sec_key_ha, ZB_SEC_KEYSIZE);
-
- config.channelList.count = 1;
- config.channelList.list[0].page = 0;
- config.channelList.list[0].channelMask = 1 << CHANNEL; /*Channel in use */
-
- /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
- * a blocking call on the M4. */
- status = ZbStartupWait(zigbee_demo_info.zb, &config);
-
- APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
- zigbee_demo_info.join_status = status;
-
- if (status == ZB_STATUS_SUCCESS) {
- zigbee_demo_info.join_delay = 0U;
- zigbee_demo_info.init_after_join = true;
- BSP_LED_On(SW3_LED);
- }
- else {
-
- APP_DBG("Startup failed, attempting again after a short delay.");
- zigbee_demo_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
- }
- }
-
- /*
- * Handle Application (Switches and LEDs)
- */
- if (zigbee_demo_info.join_status == ZB_STATUS_SUCCESS) {
- /* Check if we just joined */
- if (zigbee_demo_info.init_after_join) {
- zigbee_demo_info.init_after_join = false;
-
- /* Assign ourselves to the group addresses */
- config_group_addr();
-
- /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
- uint32_t bcast_timeout = 3;
- ZbNwkSet(zigbee_demo_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
- }
-
- /* Check for switch flags */
- if (zigbee_demo_info.sw_flags != 0) {
- struct ZbApsAddrT dst;
-
- memset(&dst, 0, sizeof(dst));
- dst.mode = ZB_APSDE_ADDRMODE_GROUP;
-
- if ((zigbee_demo_info.sw_flags & SW1_FLAG) != 0) {
- dst.endpoint = SW1_ENDPOINT;
- dst.nwkAddr = SW1_GROUP_ADDR;
-
- APP_DBG("SW1 PUSHED (SENDING TOGGLE TO GROUP 0x0001)");
- if (ZbZclOnOffClientToggleReq(zigbee_demo_info.onoff_client_1, &dst, NULL, NULL) != ZB_STATUS_SUCCESS) {
- APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW1_ENDPOINT)");
- }
- /* We will get a loopback message because we belong to the same APS Group,
- * causing our own local LED to toggle. */
- }
-
- if ((zigbee_demo_info.sw_flags & SW2_FLAG) != 0) {
- dst.endpoint = SW2_ENDPOINT;
- dst.nwkAddr = SW2_GROUP_ADDR;
-
- APP_DBG("SW2 PUSHED (SENDING TOGGLE TO GROUP 0x0002)");
- if (ZbZclOnOffClientToggleReq(zigbee_demo_info.onoff_client_2, &dst, NULL, NULL) != ZB_STATUS_SUCCESS) {
- APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW2_ENDPOINT)");
- }
- /* We will get a loopback message because we belong to the same APS Group,
- * causing our own local LED to toggle. */
- }
-
- /* Clear the flags */
- zigbee_demo_info.sw_flags = 0;
- }
-
- }
-
- UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_APP, CFG_SCH_PRIO_0);
-} /* APP_ZIGBEE_Demo */
-
-/*************************************************************
- * ZbStartupWait Blocking Call
- *************************************************************/
-
-struct ZbStartupWaitInfo {
- bool active;
- enum ZbStatusCodeT status;
-};
-
-static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
-{
- struct ZbStartupWaitInfo *info = cb_arg;
-
- info->status = status;
- info->active = false;
-} /* ZbStartupWaitCb */
-
-enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
-{
- struct ZbStartupWaitInfo *info;
- enum ZbStatusCodeT status;
-
- info = malloc(sizeof(struct ZbStartupWaitInfo));
- if (info == NULL) {
- return ZB_STATUS_ALLOC_FAIL;
- }
- memset(info, 0, sizeof(struct ZbStartupWaitInfo));
-
- info->active = true;
- status = ZbStartup(zb, config, ZbStartupWaitCb, info);
- if (status != ZB_STATUS_SUCCESS) {
- info->active = false;
- return status;
- }
- while (info->active) {
- UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
- }
- status = info->status;
- free(info);
- return status;
-} /* ZbStartupWait */
-
-/*************************************************************
- * External Interrupt Handler
- *************************************************************/
-
-/**
- * @brief This function manage the Push button action
- * @param GPIO_Pin : GPIO pin which has been activated
- * @retval None
- */
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
-{
- switch (GPIO_Pin) {
- case BUTTON_SW1_PIN:
- zigbee_demo_info.sw_flags |= SW1_FLAG;
- break;
-
- case BUTTON_SW2_PIN:
- zigbee_demo_info.sw_flags |= SW2_FLAG;
- break;
-
- case BUTTON_SW3_PIN:
- APP_DBG("SW3 PUSHED (LOCAL LEDS OFF)");
- ZbZclAttrIntegerWrite(zigbee_demo_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, 0);
- ZbZclAttrIntegerWrite(zigbee_demo_info.onoff_server_2, ZCL_ONOFF_ATTR_ONOFF, 0);
- break;
-
- default:
- break;
- }
-} /* HAL_GPIO_EXTI_Callback */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee_demo_complete.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee_demo_complete.c
deleted file mode 100644
index 6b4920d0e..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/STM32_WPAN/App/app_zigbee_demo_complete.c
+++ /dev/null
@@ -1,506 +0,0 @@
-/**
- ******************************************************************************
- * File Name : App/app_zigbee.c
- * Description : Zigbee Application.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include <assert.h>
-#include "app_common.h"
-#include "app_entry.h"
-#include "dbg_trace.h"
-#include "app_zigbee.h"
-#include "shci.h"
-#include "stm_logging.h"
-#include "app_conf.h"
-#include "stm32wbxx_core_interface_def.h"
-#include "zigbee_types.h"
-#include "zigbee_interface.h"
-#include "stm32_seq.h"
-#include "zcl/zcl.h"
-#include "zcl/zcl.onoff.h"
-#include "zcl/zcl.identify.h"
-
-/* Startup Configuration -----------------------------------------------------*/
-#define APP_STARTUP_DISTRIB 0 /* Distributed Netork*/
-#define APP_STARTUP_TOUCHLINK_TARGET 1 /* Touchlink Target*/
-#define APP_STARTUP_TOUCHLINK_INITIATOR 2 /* Touchlink Initiator */
-#define APP_STARTUP_CENTRALIZED_COORD 3 /* Centralized Network Coordinator */
-#define APP_STARTUP_CENTRALIZED_ROUTER 4 /* Centralized Network Router */
-
-/* Choose the startup type you want from the options above */
-#define APP_STARTUP_TYPE APP_STARTUP_CENTRALIZED_COORD
-
-/* Spec is -40 dBm, but use -60 for ease of testing, and until we get real RSSI from STMAC. */
-#define APP_TOUCHLINK_MIN_RSSI -60
-
-/* Private defines -----------------------------------------------------------*/
-#define APP_ZIGBEE_STARTUP_FAIL_DELAY 3000U
-
-#define SW1_ENDPOINT 17
-#define SW2_ENDPOINT 18
-#define TOUCHLINK_ENDPOINT 200 /* arbitrary */
-
-#define SW1_GROUP_ADDR 0x0001
-#define SW2_GROUP_ADDR 0x0002
-
-#define SW1_FLAG 0x01
-#define SW2_FLAG 0x02
-
-#define SW1_LED LED_RED
-#define SW2_LED LED_GREEN
-#define SW3_LED LED_BLUE
-
-#define CHANNEL 16
-/* Private function prototypes -----------------------------------------------*/
-
-/* Private variables -----------------------------------------------*/
-struct zigbee_demo_info {
- bool has_init;
- struct ZigBeeT *zb;
- enum ZbStartType startupControl;
- enum ZbStatusCodeT join_status;
- uint32_t join_delay;
- bool init_after_join;
-
- struct ZbZclClusterT *onoff_server_1;
- struct ZbZclClusterT *onoff_client_1;
- struct ZbZclClusterT *identify_server_1;
-
- struct ZbZclClusterT *onoff_server_2;
- struct ZbZclClusterT *onoff_client_2;
-
- uint8_t sw_flags;
-};
-
-static struct zigbee_demo_info zigbee_demo_info;
-
-static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb);
-
-static const struct ZbZclAttrT onoff_server_attr_list[] = {
- /* OnOff Server Attributes */
- {
- ZCL_ONOFF_ATTR_ONOFF, ZCL_DATATYPE_BOOLEAN,
- ZCL_ATTR_FLAG_REPORTABLE | ZCL_ATTR_FLAG_PERSISTABLE | ZCL_ATTR_FLAG_DEFAULTABLE | ZCL_ATTR_FLAG_CB_NOTIFY, 0,
- onoff_server_attr_cb, {0, 0}, {0, 0}
- },
-};
-
-/* Functions Definition ------------------------------------------------------*/
-
-static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb)
-{
- uint8_t endpoint;
- uint8_t attrVal;
-
- endpoint = ZbZclClusterGetEndpoint(clusterPtr);
- switch (cb->info->attributeId) {
- case ZCL_ONOFF_ATTR_ONOFF:
- if (endpoint == SW1_ENDPOINT) {
- if (ZbZclAttrRead(zigbee_demo_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
- if (attrVal != 0) {
- APP_DBG("SW1_LED ON");
- BSP_LED_On(SW1_LED);
- }
- else {
- APP_DBG("SW1_LED OFF");
- BSP_LED_Off(SW1_LED);
- }
- }
- }
- else if (endpoint == SW2_ENDPOINT) {
- if (ZbZclAttrRead(zigbee_demo_info.onoff_server_2, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
- if (attrVal != 0) {
- APP_DBG("SW2_LED ON");
- BSP_LED_On(SW2_LED);
- }
- else {
- APP_DBG("SW2_LED OFF");
- BSP_LED_Off(SW2_LED);
- }
- }
- }
- break;
-
- default:
- break;
- } /* switch */
- return ZCL_STATUS_SUCCESS;
-} /* onoff_server_attr_notify */
-
-static void config_endpoints(void)
-{
- ZbApsmeAddEndpointReqT req;
- ZbApsmeAddEndpointConfT conf;
-
- memset(&req, 0, sizeof(req));
- req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
- req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
-
- /* Endpoint: SW1_ENDPOINT */
- req.endpoint = SW1_ENDPOINT;
- ZbZclAddEndpoint(zigbee_demo_info.zb, &req, &conf);
- assert(conf.status == ZB_STATUS_SUCCESS);
- /* OnOff Server */
- zigbee_demo_info.onoff_server_1 = ZbZclOnOffServerAlloc(zigbee_demo_info.zb, SW1_ENDPOINT, NULL);
- assert(zigbee_demo_info.onoff_server_1 != NULL);
- ZbZclAttrAppendList(zigbee_demo_info.onoff_server_1, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_server_1);
- /* OnOff Client */
- zigbee_demo_info.onoff_client_1 = ZbZclOnOffClientAlloc(zigbee_demo_info.zb, SW1_ENDPOINT);
- assert(zigbee_demo_info.onoff_client_1 != NULL);
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_client_1);
- /* Identify Server for Touchlink */
- zigbee_demo_info.identify_server_1 = ZbZclIdentifyServerAlloc(zigbee_demo_info.zb, SW1_ENDPOINT, NULL);
- assert(zigbee_demo_info.identify_server_1 != NULL);
-
- /* Endpoint: SW2_ENDPOINT */
- req.endpoint = SW2_ENDPOINT;
- ZbZclAddEndpoint(zigbee_demo_info.zb, &req, &conf);
- assert(conf.status == ZB_STATUS_SUCCESS);
- /* OnOff Server */
- zigbee_demo_info.onoff_server_2 = ZbZclOnOffServerAlloc(zigbee_demo_info.zb, SW2_ENDPOINT, NULL);
- assert(zigbee_demo_info.onoff_server_2 != NULL);
- ZbZclAttrAppendList(zigbee_demo_info.onoff_server_2, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_server_2);
- /* OnOff Client */
- zigbee_demo_info.onoff_client_2 = ZbZclOnOffClientAlloc(zigbee_demo_info.zb, SW2_ENDPOINT);
- assert(zigbee_demo_info.onoff_client_2 != NULL);
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_client_2);
-} /* config_endpoints */
-
-static void config_group_addr(void)
-{
- ZbApsmeAddGroupReqT req;
- ZbApsmeAddGroupConfT conf;
-
- memset(&req, 0, sizeof(req));
- req.endpt = SW1_ENDPOINT;
- req.groupAddr = SW1_GROUP_ADDR;
- ZbApsmeAddGroupReq(zigbee_demo_info.zb, &req, &conf);
-
- req.endpt = SW2_ENDPOINT;
- req.groupAddr = SW2_GROUP_ADDR;
- ZbApsmeAddGroupReq(zigbee_demo_info.zb, &req, &conf);
-} /* config_group_addr */
-
-/**
- * @brief Zigbee Demo Task
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_Demo(void)
-{
- /*
- * Handle Initialization
- */
- if (!zigbee_demo_info.has_init) {
- zigbee_demo_info.sw_flags = 0;
-
- zigbee_demo_info.zb = ZbInit(0U, NULL, NULL);
- assert(zigbee_demo_info.zb != NULL);
-
- /* Create the endpoint and cluster(s) */
- config_endpoints();
-
- BSP_LED_Off(SW1_LED);
- BSP_LED_Off(SW2_LED);
- BSP_LED_Off(SW3_LED);
-
- /* Configure the joining parameters */
- zigbee_demo_info.join_status = 0x01; /* init to error status */
- zigbee_demo_info.join_delay = HAL_GetTick(); /* now */
- zigbee_demo_info.startupControl = ZbStartTypeJoin;
-
- /* Initialization Complete */
- zigbee_demo_info.has_init = true;
- }
-
- /*
- * Handle Network Joining / Forming
- */
- if ((zigbee_demo_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_demo_info.join_delay)) {
- struct ZbStartupT config;
- enum ZbStatusCodeT status;
-
- /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
- ZbSetLogging(zigbee_demo_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
-
- /* Attempt to join a zigbee network */
- ZbStartupConfigGetProDefaults(&config);
-
-#if (APP_STARTUP_TYPE == APP_STARTUP_DISTRIB)
- APP_DBG("Network config : APP_STARTUP_DISTRIB");
- /* Set the TC address to be distributed. */
- config.security.trustCenterAddress = ZB_DISTRIBUTED_TC_ADDR;
-
- /* Using the Uncertified Distributed Global Key (d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:da:db:dc:dd:de:df) */
- memcpy(config.security.distributedGlobalKey, sec_key_distrib_uncert, ZB_SEC_KEYSIZE);
-
- config.startupControl = zigbee_demo_info.startupControl;
-
- config.channelList.count = 1;
- config.channelList.list[0].page = 0;
- config.channelList.list[0].channelMask = 1 << CHANNEL; /* Channel in use*/
-
-#elif (APP_STARTUP_TYPE == APP_STARTUP_TOUCHLINK_TARGET)
- APP_DBG("Network config : APP_STARTUP_TOUCHLINK_TARGET");
- config.startupControl = ZbStartTypeJoin; /* Ignored */
-
- /* Using the Uncertified Distributed Global Key (d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:da:db:dc:dd:de:df).
- * This key can be used as an APS Link Key between Touchlink devices. */
- memcpy(config.security.distributedGlobalKey, sec_key_distrib_uncert, ZB_SEC_KEYSIZE);
-
- /* Use the Touchlink Certification Key (c0:c1:c2:c3:c4:c5:c6:c7:c8:c9:ca:cb:cc:cd:ce:cf).
- * This key is "mashed" with the Touchlink session data to generate the Network Key */
- ZbBdbSet(zigbee_demo_info.zb, ZB_BDB_TLKey, sec_key_touchlink_cert, ZB_SEC_KEYSIZE);
- {
- /* Set the "Key Encryption Algorithm" to Certification */
- enum ZbBdbTouchlinkKeyIndexT keyIdx = TOUCHLINK_KEY_INDEX_CERTIFICATION;
- ZbBdbSet(zigbee_demo_info.zb, ZB_BDB_TLKeyIndex, &keyIdx, sizeof(keyIdx));
- }
-
-#ifdef APP_TOUCHLINK_MIN_RSSI
- /* For debugging, set the Touchlink RSSI threshold very low */
- {
- int8_t val8 = APP_TOUCHLINK_MIN_RSSI;
- status = ZbBdbSet(zigbee_demo_info.zb, ZB_BDB_TLRssiMin, &val8, sizeof(val8));
- }
-#endif
-
- /* Touchlink uses the BDB Primary and Secondary channel masks, which we'll leave as defaults. */
-
- /* Configure the startup to use Touchlink */
- config.bdbCommissioningMode |= BDB_COMMISSION_MODE_TOUCHLINK;
- config.touchlink.tl_endpoint = TOUCHLINK_ENDPOINT;
- config.touchlink.bind_endpoint = SW1_ENDPOINT;
- config.touchlink.flags = ZCL_TL_FLAGS_IS_TARGET;
- config.touchlink.zb_info = ZCL_TL_ZBINFO_TYPE_ROUTER;
- config.touchlink.zb_info |= ZCL_TL_ZBINFO_RX_ON_IDLE;
-
-#elif (APP_STARTUP_TYPE == APP_STARTUP_TOUCHLINK_INITIATOR)
- APP_DBG("Network config : APP_STARTUP_TOUCHLINK_INITIATOR");
- config.startupControl = ZbStartTypeJoin; /* Ignored */
-
- /* Using the Uncertified Distributed Global Key (d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:da:db:dc:dd:de:df).
- * This key can be used as an APS Link Key between Touchlink devices. */
- memcpy(config.security.distributedGlobalKey, sec_key_distrib_uncert, ZB_SEC_KEYSIZE);
-
- /* Use the Touchlink Certification Key (c0:c1:c2:c3:c4:c5:c6:c7:c8:c9:ca:cb:cc:cd:ce:cf).
- * This key is "mashed" with the Touchlink session data to generate the Network Key */
- ZbBdbSet(zigbee_demo_info.zb, ZB_BDB_TLKey, sec_key_touchlink_cert, ZB_SEC_KEYSIZE);
- {
- /* Set the "Key Encryption Algorithm" to Certification */
- enum ZbBdbTouchlinkKeyIndexT keyIdx = TOUCHLINK_KEY_INDEX_CERTIFICATION;
- ZbBdbSet(zigbee_demo_info.zb, ZB_BDB_TLKeyIndex, &keyIdx, sizeof(keyIdx));
- }
-
-#ifdef APP_TOUCHLINK_MIN_RSSI
- /* For debugging, set the Touchlink RSSI threshold very low */
- {
- int8_t val8 = APP_TOUCHLINK_MIN_RSSI;
- status = ZbBdbSet(zigbee_demo_info.zb, ZB_BDB_TLRssiMin, &val8, sizeof(val8));
- }
-#endif
-
- /* Touchlink uses the BDB Primary and Secondary channel masks, which we'll leave as defaults. */
-
- /* Configure the startup to use Touchlink */
- config.bdbCommissioningMode |= BDB_COMMISSION_MODE_TOUCHLINK;
- config.touchlink.tl_endpoint = TOUCHLINK_ENDPOINT;
- config.touchlink.bind_endpoint = SW1_ENDPOINT;
- config.touchlink.flags = 0x00;
- config.touchlink.zb_info = ZCL_TL_ZBINFO_TYPE_ROUTER;
- config.touchlink.zb_info |= ZCL_TL_ZBINFO_RX_ON_IDLE;
-
-#elif (APP_STARTUP_TYPE == APP_STARTUP_CENTRALIZED_COORD)
- APP_DBG("Network config : APP_STARTUP_CENTRALIZED_COORD");
- config.startupControl = ZbStartTypeForm;
-
- /* Using the default HA preconfigured Link Key */
- memcpy(config.security.preconfiguredLinkKey, sec_key_ha, ZB_SEC_KEYSIZE);
-
- config.channelList.count = 1;
- config.channelList.list[0].page = 0;
- config.channelList.list[0].channelMask = 1 << CHANNEL; /*Channel in use */
-
-#elif (APP_STARTUP_TYPE == APP_STARTUP_CENTRALIZED_ROUTER)
- APP_DBG("Network config : APP_STARTUP_CENTRALIZED_ROUTER");
- config.startupControl = ZbStartTypeJoin;
-
- /* Using the default HA preconfigured Link Key */
- memcpy(config.security.preconfiguredLinkKey, sec_key_ha, ZB_SEC_KEYSIZE);
-
- config.channelList.count = 1;
- config.channelList.list[0].page = 0;
- config.channelList.list[0].channelMask = WPAN_CHANNELMASK_2400MHZ;
-
-#else
-# error "Invalid APP_STARTUP_TYPE"
-#endif
-
- /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
- * a blocking call on the M4. */
- status = ZbStartupWait(zigbee_demo_info.zb, &config);
-
- APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
- zigbee_demo_info.join_status = status;
-
- if (status == ZB_STATUS_SUCCESS) {
- zigbee_demo_info.join_delay = 0U;
- zigbee_demo_info.init_after_join = true;
- BSP_LED_On(SW3_LED);
- }
- else {
-#if (APP_STARTUP_TYPE == APP_STARTUP_DISTRIB)
- APP_DBG("Startup failed, attempting to form a network after a short delay.");
- zigbee_demo_info.startupControl = ZbStartTypeForm;
-#else
- APP_DBG("Startup failed, attempting again after a short delay.");
-#endif
- zigbee_demo_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
- }
- }
-
- /*
- * Handle Application (Switches and LEDs)
- */
- if (zigbee_demo_info.join_status == ZB_STATUS_SUCCESS) {
- /* Check if we just joined */
- if (zigbee_demo_info.init_after_join) {
- zigbee_demo_info.init_after_join = false;
-
- /* Assign ourselves to the group addresses */
- config_group_addr();
-
- /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
- uint32_t bcast_timeout = 3;
- ZbNwkSet(zigbee_demo_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
- }
-
- /* Check for switch flags */
- if (zigbee_demo_info.sw_flags != 0) {
- struct ZbApsAddrT dst;
-
- memset(&dst, 0, sizeof(dst));
- dst.mode = ZB_APSDE_ADDRMODE_GROUP;
-
- if ((zigbee_demo_info.sw_flags & SW1_FLAG) != 0) {
- dst.endpoint = SW1_ENDPOINT;
- dst.nwkAddr = SW1_GROUP_ADDR;
-
- APP_DBG("SW1 PUSHED (SENDING TOGGLE TO GROUP 0x0001)");
- if (ZbZclOnOffClientToggleReq(zigbee_demo_info.onoff_client_1, &dst, NULL, NULL) != ZB_STATUS_SUCCESS) {
- APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW1_ENDPOINT)");
- }
- /* We will get a loopback message because we belong to the same APS Group,
- * causing our own local LED to toggle. */
- }
-
- if ((zigbee_demo_info.sw_flags & SW2_FLAG) != 0) {
- dst.endpoint = SW2_ENDPOINT;
- dst.nwkAddr = SW2_GROUP_ADDR;
-
- APP_DBG("SW2 PUSHED (SENDING TOGGLE TO GROUP 0x0002)");
- if (ZbZclOnOffClientToggleReq(zigbee_demo_info.onoff_client_2, &dst, NULL, NULL) != ZB_STATUS_SUCCESS) {
- APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW2_ENDPOINT)");
- }
- /* We will get a loopback message because we belong to the same APS Group,
- * causing our own local LED to toggle. */
- }
-
- /* Clear the flags */
- zigbee_demo_info.sw_flags = 0;
- }
-
- }
-
- UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_APP, CFG_SCH_PRIO_0);
-} /* APP_ZIGBEE_Demo */
-
-/*************************************************************
- * ZbStartupWait Blocking Call
- *************************************************************/
-
-struct ZbStartupWaitInfo {
- bool active;
- enum ZbStatusCodeT status;
-};
-
-static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
-{
- struct ZbStartupWaitInfo *info = cb_arg;
-
- info->status = status;
- info->active = false;
-} /* ZbStartupWaitCb */
-
-enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
-{
- struct ZbStartupWaitInfo *info;
- enum ZbStatusCodeT status;
-
- info = malloc(sizeof(struct ZbStartupWaitInfo));
- if (info == NULL) {
- return ZB_STATUS_ALLOC_FAIL;
- }
- memset(info, 0, sizeof(struct ZbStartupWaitInfo));
-
- info->active = true;
- status = ZbStartup(zb, config, ZbStartupWaitCb, info);
- if (status != ZB_STATUS_SUCCESS) {
- info->active = false;
- return status;
- }
- while (info->active) {
- UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
- }
- status = info->status;
- free(info);
- return status;
-} /* ZbStartupWait */
-
-/*************************************************************
- * External Interrupt Handler
- *************************************************************/
-
-/**
- * @brief This function manage the Push button action
- * @param GPIO_Pin : GPIO pin which has been activated
- * @retval None
- */
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
-{
- switch (GPIO_Pin) {
- case BUTTON_SW1_PIN:
- zigbee_demo_info.sw_flags |= SW1_FLAG;
- break;
-
- case BUTTON_SW2_PIN:
- zigbee_demo_info.sw_flags |= SW2_FLAG;
- break;
-
- case BUTTON_SW3_PIN:
- APP_DBG("SW3 PUSHED (LOCAL LEDS OFF)");
- ZbZclAttrIntegerWrite(zigbee_demo_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, 0);
- ZbZclAttrIntegerWrite(zigbee_demo_info.onoff_server_2, ZCL_ONOFF_ATTR_ONOFF, 0);
- break;
-
- default:
- break;
- }
-} /* HAL_GPIO_EXTI_Callback */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee.c
deleted file mode 100644
index a7ca65f04..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/**
- ******************************************************************************
- * File Name : App/app_zigbee.c
- * Description : Zigbee Application.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "app_common.h"
-#include "app_entry.h"
-#include "dbg_trace.h"
-#include "app_zigbee.h"
-#include "zigbee_interface.h"
-#include "shci.h"
-#include "stm_logging.h"
-#include "app_conf.h"
-#include "stm32wbxx_core_interface_def.h"
-#include "zigbee_types.h"
-#include "stm32_seq.h"
-
-/* Private defines -----------------------------------------------------------*/
-
-/* Private function prototypes -----------------------------------------------*/
-void APP_ZIGBEE_Demo(void);
-
-static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
-static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
-
-static void Wait_Getting_Ack_From_M0(void);
-static void Receive_Ack_From_M0(void);
-static void Receive_Notification_From_M0(void);
-
-/* Private variables -----------------------------------------------*/
-static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
-static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
-static __IO uint32_t CptReceiveMsgFromM0 = 0;
-
-PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
-
-/* Functions Definition ------------------------------------------------------*/
-
-void APP_ZIGBEE_Init(void)
-{
- SHCI_CmdStatus_t ZigbeeInitStatus;
-
- APP_DBG("APP_ZIGBEE_Init");
-
- /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
- APP_ZIGBEE_CheckWirelessFirmwareInfo();
-
- /* Register cmdbuffer */
- APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
-
- /* Init config buffer and call TL_ZIGBEE_Init */
- APP_ZIGBEE_TL_INIT();
-
- ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
- /* Prevent unused argument(s) compilation warning */
- UNUSED(ZigbeeInitStatus);
-
- /* Register task */
- /* Create the different tasks */
- UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
-
- /* Create the zigbee demo task */
- UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_APP, UTIL_SEQ_RFU,APP_ZIGBEE_Demo);
- /* run the task */
- UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_APP, CFG_SCH_PRIO_0);
-} /* APP_ZIGBEE_Init */
-
-/**
- * @brief Trace the error or the warning reported.
- * @param ErrId :
- * @param ErrCode
- * @retval None
- */
-void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
-{
- switch (ErrId) {
- default:
- APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
- break;
- }
-} /* APP_ZIGBEE_Error */
-
-/*************************************************************
- *
- * LOCAL FUNCTIONS
- *
- *************************************************************/
-
-/**
- * @brief Warn the user that an error has occurred.In this case,
- * the LEDs on the Board will start blinking.
- *
- * @param pMess : Message associated to the error.
- * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
- * @retval None
- */
-static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
-{
- APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
- while (1U == 1U) {
- BSP_LED_Toggle(LED1);
- HAL_Delay(500U);
- BSP_LED_Toggle(LED2);
- HAL_Delay(500U);
- BSP_LED_Toggle(LED3);
- HAL_Delay(500U);
- }
-} /* APP_ZIGBEE_TraceError */
-
-/**
- * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
- * and display associated informations
- * @param None
- * @retval None
- */
-static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
-{
- WirelessFwInfo_t wireless_info_instance;
- WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
-
- if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
- APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
- }
- else {
- APP_DBG("**********************************************************");
- APP_DBG("WIRELESS COPROCESSOR FW:");
- /* Print version */
- APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
-
- switch (p_wireless_info->StackType) {
- case INFO_STACK_TYPE_ZIGBEE:
- APP_DBG("FW Type : Zigbee stack");
- break;
- default:
- /* No Zigbee device supported ! */
- APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
- break;
- }
- APP_DBG("**********************************************************");
- }
-} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
-
-/*************************************************************
- *
- * WRAP FUNCTIONS
- *
- *************************************************************/
-
-void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
-{
- p_ZIGBEE_otcmdbuffer = p_buffer;
-} /* APP_ZIGBEE_RegisterCmdBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
-} /* ZIGBEE_Get_OTCmdPayloadBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
-} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
-} /* ZIGBEE_Get_NotificationPayloadBuffer */
-
-/**
- * @brief This function is used to transfer the commands from the M4 to the M0.
- *
- * @param None
- * @return None
- */
-void ZIGBEE_CmdTransfer(void)
-{
- Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
-
- /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
- p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
- /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
- * + ID (4 bytes) + Size (4 bytes) */
- p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
-
- TL_ZIGBEE_SendAppliCmdToM0();
-
- /* Wait completion of cmd */
- Wait_Getting_Ack_From_M0();
-} /* ZIGBEE_CmdTransfer */
-
-/**
- * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
- *
- *
- * @param Otbuffer : a pointer to TL_EvtPacket_t
- * @return None
- */
-void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
-{
- /* Prevent unused argument(s) compilation warning */
- UNUSED(Otbuffer);
-
- Receive_Ack_From_M0();
-} /* TL_ZIGBEE_CmdEvtReceived */
-
-/**
- * @brief This function is called when notification from M0+ is received.
- *
- * @param Notbuffer : a pointer to TL_EvtPacket_t
- * @return None
- */
-void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
-{
- p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
-
- Receive_Notification_From_M0();
-} /* TL_ZIGBEE_NotReceived */
-
-/**
- * @brief This function is called before sending any ot command to the M0
- * core. The purpose of this function is to be able to check if
- * there are no notifications coming from the M0 core which are
- * pending before sending a new ot command.
- * @param None
- * @retval None
- */
-void Pre_ZigbeeCmdProcessing(void)
-{
- UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
-} /* Pre_ZigbeeCmdProcessing */
-
-/**
- * @brief This function waits for getting an acknowledgment from the M0.
- *
- * @param None
- * @retval None
- */
-static void Wait_Getting_Ack_From_M0(void)
-{
- UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
-} /* Wait_Getting_Ack_From_M0 */
-
-/**
- * @brief Receive an acknowledgment from the M0+ core.
- * Each command send by the M4 to the M0 are acknowledged.
- * This function is called under interrupt.
- * @param None
- * @retval None
- */
-static void Receive_Ack_From_M0(void)
-{
- UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
-} /* Receive_Ack_From_M0 */
-
-/**
- * @brief Receive a notification from the M0+ through the IPCC.
- * This function is called under interrupt.
- * @param None
- * @retval None
- */
-static void Receive_Notification_From_M0(void)
-{
- CptReceiveMsgFromM0++;
- UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
-} /* Receive_Notification_From_M0 */
-
-/**
- * @brief Perform initialization of TL for Zigbee.
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_TL_INIT(void)
-{
- ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
- ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
- ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
- TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
-} /* APP_ZIGBEE_TL_INIT */
-
-/**
- * @brief Process the messages coming from the M0.
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_ProcessMsgM0ToM4(void)
-{
- if (CptReceiveMsgFromM0 != 0) {
- /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
- if (CptReceiveMsgFromM0 > 1U) {
- APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
- }
- else {
- Zigbee_CallBackProcessing();
- }
- /* Reset counter */
- CptReceiveMsgFromM0 = 0;
- }
-} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee_demo.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee_demo.c
deleted file mode 100644
index fd5c971c1..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee_demo.c
+++ /dev/null
@@ -1,396 +0,0 @@
-/**
- ******************************************************************************
- * File Name : App/app_zigbee.c
- * Description : Zigbee Application.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include <assert.h>
-#include "app_common.h"
-#include "app_entry.h"
-#include "dbg_trace.h"
-#include "app_zigbee.h"
-#include "shci.h"
-#include "stm_logging.h"
-#include "app_conf.h"
-#include "stm32wbxx_core_interface_def.h"
-#include "zigbee_types.h"
-#include "zigbee_interface.h"
-#include "stm32_seq.h"
-#include "zcl/zcl.h"
-#include "zcl/zcl.onoff.h"
-#include "zcl/zcl.identify.h"
-
-/* Spec is -40 dBm, but use -60 for ease of testing, and until we get real RSSI from STMAC. */
-#define APP_TOUCHLINK_MIN_RSSI -60
-
-/* Private defines -----------------------------------------------------------*/
-#define APP_ZIGBEE_STARTUP_FAIL_DELAY 3000U
-
-#define SW1_ENDPOINT 17
-#define SW2_ENDPOINT 18
-#define TOUCHLINK_ENDPOINT 200 /* arbitrary */
-
-#define SW1_GROUP_ADDR 0x0001
-#define SW2_GROUP_ADDR 0x0002
-
-#define SW1_FLAG 0x01
-#define SW2_FLAG 0x02
-
-#define SW1_LED LED_RED
-#define SW2_LED LED_GREEN
-#define SW3_LED LED_BLUE
-
-#define CHANNEL 12
-/* Private function prototypes -----------------------------------------------*/
-
-/* Private variables -----------------------------------------------*/
-struct zigbee_demo_info {
- bool has_init;
- struct ZigBeeT *zb;
- enum ZbStartType startupControl;
- enum ZbStatusCodeT join_status;
- uint32_t join_delay;
- bool init_after_join;
-
- struct ZbZclClusterT *onoff_server_1;
- struct ZbZclClusterT *onoff_client_1;
- struct ZbZclClusterT *identify_server_1;
-
- struct ZbZclClusterT *onoff_server_2;
- struct ZbZclClusterT *onoff_client_2;
-
- uint8_t sw_flags;
-};
-
-static struct zigbee_demo_info zigbee_demo_info;
-
-static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb);
-
-static const struct ZbZclAttrT onoff_server_attr_list[] = {
- /* OnOff Server Attributes */
- {
- ZCL_ONOFF_ATTR_ONOFF, ZCL_DATATYPE_BOOLEAN,
- ZCL_ATTR_FLAG_REPORTABLE | ZCL_ATTR_FLAG_PERSISTABLE | ZCL_ATTR_FLAG_DEFAULTABLE | ZCL_ATTR_FLAG_CB_NOTIFY, 0,
- onoff_server_attr_cb, {0, 0}, {0, 0}
- },
-};
-
-/* Functions Definition ------------------------------------------------------*/
-
-static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb)
-{
- uint8_t endpoint;
- uint8_t attrVal;
-
- endpoint = ZbZclClusterGetEndpoint(clusterPtr);
- switch (cb->info->attributeId) {
- case ZCL_ONOFF_ATTR_ONOFF:
- if (endpoint == SW1_ENDPOINT) {
- if (ZbZclAttrRead(zigbee_demo_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
- if (attrVal != 0) {
- APP_DBG("SW1_LED ON");
- BSP_LED_On(SW1_LED);
- }
- else {
- APP_DBG("SW1_LED OFF");
- BSP_LED_Off(SW1_LED);
- }
- }
- }
- else if (endpoint == SW2_ENDPOINT) {
- if (ZbZclAttrRead(zigbee_demo_info.onoff_server_2, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
- if (attrVal != 0) {
- APP_DBG("SW2_LED ON");
- BSP_LED_On(SW2_LED);
- }
- else {
- APP_DBG("SW2_LED OFF");
- BSP_LED_Off(SW2_LED);
- }
- }
- }
- break;
-
- default:
- break;
- } /* switch */
- return ZCL_STATUS_SUCCESS;
-} /* onoff_server_attr_notify */
-
-static void config_endpoints(void)
-{
- ZbApsmeAddEndpointReqT req;
- ZbApsmeAddEndpointConfT conf;
-
- memset(&req, 0, sizeof(req));
- req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
- req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
-
- /* Endpoint: SW1_ENDPOINT */
- req.endpoint = SW1_ENDPOINT;
- ZbZclAddEndpoint(zigbee_demo_info.zb, &req, &conf);
- assert(conf.status == ZB_STATUS_SUCCESS);
- /* OnOff Server */
- zigbee_demo_info.onoff_server_1 = ZbZclOnOffServerAlloc(zigbee_demo_info.zb, SW1_ENDPOINT, NULL);
- assert(zigbee_demo_info.onoff_server_1 != NULL);
- ZbZclAttrAppendList(zigbee_demo_info.onoff_server_1, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_server_1);
- /* OnOff Client */
- zigbee_demo_info.onoff_client_1 = ZbZclOnOffClientAlloc(zigbee_demo_info.zb, SW1_ENDPOINT);
- assert(zigbee_demo_info.onoff_client_1 != NULL);
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_client_1);
- /* Identify Server for Touchlink */
- zigbee_demo_info.identify_server_1 = ZbZclIdentifyServerAlloc(zigbee_demo_info.zb, SW1_ENDPOINT, NULL);
- assert(zigbee_demo_info.identify_server_1 != NULL);
-
- /* Endpoint: SW2_ENDPOINT */
- req.endpoint = SW2_ENDPOINT;
- ZbZclAddEndpoint(zigbee_demo_info.zb, &req, &conf);
- assert(conf.status == ZB_STATUS_SUCCESS);
- /* OnOff Server */
- zigbee_demo_info.onoff_server_2 = ZbZclOnOffServerAlloc(zigbee_demo_info.zb, SW2_ENDPOINT, NULL);
- assert(zigbee_demo_info.onoff_server_2 != NULL);
- ZbZclAttrAppendList(zigbee_demo_info.onoff_server_2, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_server_2);
- /* OnOff Client */
- zigbee_demo_info.onoff_client_2 = ZbZclOnOffClientAlloc(zigbee_demo_info.zb, SW2_ENDPOINT);
- assert(zigbee_demo_info.onoff_client_2 != NULL);
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_client_2);
-} /* config_endpoints */
-
-static void config_group_addr(void)
-{
- ZbApsmeAddGroupReqT req;
- ZbApsmeAddGroupConfT conf;
-
- memset(&req, 0, sizeof(req));
- req.endpt = SW1_ENDPOINT;
- req.groupAddr = SW1_GROUP_ADDR;
- ZbApsmeAddGroupReq(zigbee_demo_info.zb, &req, &conf);
-
- req.endpt = SW2_ENDPOINT;
- req.groupAddr = SW2_GROUP_ADDR;
- ZbApsmeAddGroupReq(zigbee_demo_info.zb, &req, &conf);
-} /* config_group_addr */
-
-/**
- * @brief Zigbee Demo Task
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_Demo(void)
-{
- /*
- * Handle Initialization
- */
- if (!zigbee_demo_info.has_init) {
- zigbee_demo_info.sw_flags = 0;
-
- zigbee_demo_info.zb = ZbInit(0U, NULL, NULL);
- assert(zigbee_demo_info.zb != NULL);
-
- /* Create the endpoint and cluster(s) */
- config_endpoints();
-
- BSP_LED_Off(SW1_LED);
- BSP_LED_Off(SW2_LED);
- BSP_LED_Off(SW3_LED);
-
- /* Configure the joining parameters */
- zigbee_demo_info.join_status = 0x01; /* init to error status */
- zigbee_demo_info.join_delay = HAL_GetTick(); /* now */
- zigbee_demo_info.startupControl = ZbStartTypeJoin;
-
- /* Initialization Complete */
- zigbee_demo_info.has_init = true;
- }
-
- /*
- * Handle Network Joining / Forming
- */
- if ((zigbee_demo_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_demo_info.join_delay)) {
- struct ZbStartupT config;
- enum ZbStatusCodeT status;
-
- /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
- ZbSetLogging(zigbee_demo_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
-
- /* Attempt to join a zigbee network */
- ZbStartupConfigGetProDefaults(&config);
-
- APP_DBG("Network config : APP_STARTUP_DISTRIB");
- /* Set the TC address to be distributed. */
- config.security.trustCenterAddress = ZB_DISTRIBUTED_TC_ADDR;
-
- /* Using the Uncertified Distributed Global Key (d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:da:db:dc:dd:de:df) */
- memcpy(config.security.distributedGlobalKey, sec_key_distrib_uncert, ZB_SEC_KEYSIZE);
-
- config.startupControl = zigbee_demo_info.startupControl;
-
- config.channelList.count = 1;
- config.channelList.list[0].page = 0;
- config.channelList.list[0].channelMask = 1 << CHANNEL; /* Channel in use*/
-
- /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
- * a blocking call on the M4. */
- status = ZbStartupWait(zigbee_demo_info.zb, &config);
-
- APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
- zigbee_demo_info.join_status = status;
-
- if (status == ZB_STATUS_SUCCESS) {
- zigbee_demo_info.join_delay = 0U;
- zigbee_demo_info.init_after_join = true;
- BSP_LED_On(SW3_LED);
- }
- else {
- APP_DBG("Startup failed, attempting to form a network after a short delay.");
- zigbee_demo_info.startupControl = ZbStartTypeForm;
-
- zigbee_demo_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
- }
- }
-
- /*
- * Handle Application (Switches and LEDs)
- */
- if (zigbee_demo_info.join_status == ZB_STATUS_SUCCESS) {
- /* Check if we just joined */
- if (zigbee_demo_info.init_after_join) {
- zigbee_demo_info.init_after_join = false;
-
- /* Assign ourselves to the group addresses */
- config_group_addr();
-
- /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
- uint32_t bcast_timeout = 3;
- ZbNwkSet(zigbee_demo_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
- }
-
- /* Check for switch flags */
- if (zigbee_demo_info.sw_flags != 0) {
- struct ZbApsAddrT dst;
-
- memset(&dst, 0, sizeof(dst));
- dst.mode = ZB_APSDE_ADDRMODE_GROUP;
-
- if ((zigbee_demo_info.sw_flags & SW1_FLAG) != 0) {
- dst.endpoint = SW1_ENDPOINT;
- dst.nwkAddr = SW1_GROUP_ADDR;
-
- APP_DBG("SW1 PUSHED (SENDING TOGGLE TO GROUP 0x0001)");
- if (ZbZclOnOffClientToggleReq(zigbee_demo_info.onoff_client_1, &dst, NULL, NULL) != ZB_STATUS_SUCCESS) {
- APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW1_ENDPOINT)");
- }
- /* We will get a loopback message because we belong to the same APS Group,
- * causing our own local LED to toggle. */
- }
-
- if ((zigbee_demo_info.sw_flags & SW2_FLAG) != 0) {
- dst.endpoint = SW2_ENDPOINT;
- dst.nwkAddr = SW2_GROUP_ADDR;
-
- APP_DBG("SW2 PUSHED (SENDING TOGGLE TO GROUP 0x0002)");
- if (ZbZclOnOffClientToggleReq(zigbee_demo_info.onoff_client_2, &dst, NULL, NULL) != ZB_STATUS_SUCCESS) {
- APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW2_ENDPOINT)");
- }
- /* We will get a loopback message because we belong to the same APS Group,
- * causing our own local LED to toggle. */
- }
-
- /* Clear the flags */
- zigbee_demo_info.sw_flags = 0;
- }
-
- }
-
- UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_APP, CFG_SCH_PRIO_0);
-} /* APP_ZIGBEE_Demo */
-
-/*************************************************************
- * ZbStartupWait Blocking Call
- *************************************************************/
-
-struct ZbStartupWaitInfo {
- bool active;
- enum ZbStatusCodeT status;
-};
-
-static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
-{
- struct ZbStartupWaitInfo *info = cb_arg;
-
- info->status = status;
- info->active = false;
-} /* ZbStartupWaitCb */
-
-enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
-{
- struct ZbStartupWaitInfo *info;
- enum ZbStatusCodeT status;
-
- info = malloc(sizeof(struct ZbStartupWaitInfo));
- if (info == NULL) {
- return ZB_STATUS_ALLOC_FAIL;
- }
- memset(info, 0, sizeof(struct ZbStartupWaitInfo));
-
- info->active = true;
- status = ZbStartup(zb, config, ZbStartupWaitCb, info);
- if (status != ZB_STATUS_SUCCESS) {
- info->active = false;
- return status;
- }
- while (info->active) {
- UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
- }
- status = info->status;
- free(info);
- return status;
-} /* ZbStartupWait */
-
-/*************************************************************
- * External Interrupt Handler
- *************************************************************/
-
-/**
- * @brief This function manage the Push button action
- * @param GPIO_Pin : GPIO pin which has been activated
- * @retval None
- */
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
-{
- switch (GPIO_Pin) {
- case BUTTON_SW1_PIN:
- zigbee_demo_info.sw_flags |= SW1_FLAG;
- break;
-
- case BUTTON_SW2_PIN:
- zigbee_demo_info.sw_flags |= SW2_FLAG;
- break;
-
- case BUTTON_SW3_PIN:
- APP_DBG("SW3 PUSHED (LOCAL LEDS OFF)");
- ZbZclAttrIntegerWrite(zigbee_demo_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, 0);
- ZbZclAttrIntegerWrite(zigbee_demo_info.onoff_server_2, ZCL_ONOFF_ATTR_ONOFF, 0);
- break;
-
- default:
- break;
- }
-} /* HAL_GPIO_EXTI_Callback */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee.c
deleted file mode 100644
index a7ca65f04..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/**
- ******************************************************************************
- * File Name : App/app_zigbee.c
- * Description : Zigbee Application.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "app_common.h"
-#include "app_entry.h"
-#include "dbg_trace.h"
-#include "app_zigbee.h"
-#include "zigbee_interface.h"
-#include "shci.h"
-#include "stm_logging.h"
-#include "app_conf.h"
-#include "stm32wbxx_core_interface_def.h"
-#include "zigbee_types.h"
-#include "stm32_seq.h"
-
-/* Private defines -----------------------------------------------------------*/
-
-/* Private function prototypes -----------------------------------------------*/
-void APP_ZIGBEE_Demo(void);
-
-static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
-static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
-
-static void Wait_Getting_Ack_From_M0(void);
-static void Receive_Ack_From_M0(void);
-static void Receive_Notification_From_M0(void);
-
-/* Private variables -----------------------------------------------*/
-static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
-static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
-static __IO uint32_t CptReceiveMsgFromM0 = 0;
-
-PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
-
-/* Functions Definition ------------------------------------------------------*/
-
-void APP_ZIGBEE_Init(void)
-{
- SHCI_CmdStatus_t ZigbeeInitStatus;
-
- APP_DBG("APP_ZIGBEE_Init");
-
- /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
- APP_ZIGBEE_CheckWirelessFirmwareInfo();
-
- /* Register cmdbuffer */
- APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
-
- /* Init config buffer and call TL_ZIGBEE_Init */
- APP_ZIGBEE_TL_INIT();
-
- ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
- /* Prevent unused argument(s) compilation warning */
- UNUSED(ZigbeeInitStatus);
-
- /* Register task */
- /* Create the different tasks */
- UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
-
- /* Create the zigbee demo task */
- UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_APP, UTIL_SEQ_RFU,APP_ZIGBEE_Demo);
- /* run the task */
- UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_APP, CFG_SCH_PRIO_0);
-} /* APP_ZIGBEE_Init */
-
-/**
- * @brief Trace the error or the warning reported.
- * @param ErrId :
- * @param ErrCode
- * @retval None
- */
-void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
-{
- switch (ErrId) {
- default:
- APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
- break;
- }
-} /* APP_ZIGBEE_Error */
-
-/*************************************************************
- *
- * LOCAL FUNCTIONS
- *
- *************************************************************/
-
-/**
- * @brief Warn the user that an error has occurred.In this case,
- * the LEDs on the Board will start blinking.
- *
- * @param pMess : Message associated to the error.
- * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
- * @retval None
- */
-static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
-{
- APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
- while (1U == 1U) {
- BSP_LED_Toggle(LED1);
- HAL_Delay(500U);
- BSP_LED_Toggle(LED2);
- HAL_Delay(500U);
- BSP_LED_Toggle(LED3);
- HAL_Delay(500U);
- }
-} /* APP_ZIGBEE_TraceError */
-
-/**
- * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
- * and display associated informations
- * @param None
- * @retval None
- */
-static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
-{
- WirelessFwInfo_t wireless_info_instance;
- WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
-
- if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
- APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
- }
- else {
- APP_DBG("**********************************************************");
- APP_DBG("WIRELESS COPROCESSOR FW:");
- /* Print version */
- APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
-
- switch (p_wireless_info->StackType) {
- case INFO_STACK_TYPE_ZIGBEE:
- APP_DBG("FW Type : Zigbee stack");
- break;
- default:
- /* No Zigbee device supported ! */
- APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
- break;
- }
- APP_DBG("**********************************************************");
- }
-} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
-
-/*************************************************************
- *
- * WRAP FUNCTIONS
- *
- *************************************************************/
-
-void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
-{
- p_ZIGBEE_otcmdbuffer = p_buffer;
-} /* APP_ZIGBEE_RegisterCmdBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
-} /* ZIGBEE_Get_OTCmdPayloadBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
-} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
-
-Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
-{
- return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
-} /* ZIGBEE_Get_NotificationPayloadBuffer */
-
-/**
- * @brief This function is used to transfer the commands from the M4 to the M0.
- *
- * @param None
- * @return None
- */
-void ZIGBEE_CmdTransfer(void)
-{
- Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
-
- /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
- p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
- /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
- * + ID (4 bytes) + Size (4 bytes) */
- p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
-
- TL_ZIGBEE_SendAppliCmdToM0();
-
- /* Wait completion of cmd */
- Wait_Getting_Ack_From_M0();
-} /* ZIGBEE_CmdTransfer */
-
-/**
- * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
- *
- *
- * @param Otbuffer : a pointer to TL_EvtPacket_t
- * @return None
- */
-void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
-{
- /* Prevent unused argument(s) compilation warning */
- UNUSED(Otbuffer);
-
- Receive_Ack_From_M0();
-} /* TL_ZIGBEE_CmdEvtReceived */
-
-/**
- * @brief This function is called when notification from M0+ is received.
- *
- * @param Notbuffer : a pointer to TL_EvtPacket_t
- * @return None
- */
-void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
-{
- p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
-
- Receive_Notification_From_M0();
-} /* TL_ZIGBEE_NotReceived */
-
-/**
- * @brief This function is called before sending any ot command to the M0
- * core. The purpose of this function is to be able to check if
- * there are no notifications coming from the M0 core which are
- * pending before sending a new ot command.
- * @param None
- * @retval None
- */
-void Pre_ZigbeeCmdProcessing(void)
-{
- UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
-} /* Pre_ZigbeeCmdProcessing */
-
-/**
- * @brief This function waits for getting an acknowledgment from the M0.
- *
- * @param None
- * @retval None
- */
-static void Wait_Getting_Ack_From_M0(void)
-{
- UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
-} /* Wait_Getting_Ack_From_M0 */
-
-/**
- * @brief Receive an acknowledgment from the M0+ core.
- * Each command send by the M4 to the M0 are acknowledged.
- * This function is called under interrupt.
- * @param None
- * @retval None
- */
-static void Receive_Ack_From_M0(void)
-{
- UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
-} /* Receive_Ack_From_M0 */
-
-/**
- * @brief Receive a notification from the M0+ through the IPCC.
- * This function is called under interrupt.
- * @param None
- * @retval None
- */
-static void Receive_Notification_From_M0(void)
-{
- CptReceiveMsgFromM0++;
- UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
-} /* Receive_Notification_From_M0 */
-
-/**
- * @brief Perform initialization of TL for Zigbee.
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_TL_INIT(void)
-{
- ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
- ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
- ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
- TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
-} /* APP_ZIGBEE_TL_INIT */
-
-/**
- * @brief Process the messages coming from the M0.
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_ProcessMsgM0ToM4(void)
-{
- if (CptReceiveMsgFromM0 != 0) {
- /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
- if (CptReceiveMsgFromM0 > 1U) {
- APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
- }
- else {
- Zigbee_CallBackProcessing();
- }
- /* Reset counter */
- CptReceiveMsgFromM0 = 0;
- }
-} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee_demo.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee_demo.c
deleted file mode 100644
index 1b9c9cb92..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee_demo.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/**
- ******************************************************************************
- * File Name : App/app_zigbee.c
- * Description : Zigbee Application.
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include <assert.h>
-#include "app_common.h"
-#include "app_entry.h"
-#include "dbg_trace.h"
-#include "app_zigbee.h"
-#include "shci.h"
-#include "stm_logging.h"
-#include "app_conf.h"
-#include "stm32wbxx_core_interface_def.h"
-#include "zigbee_types.h"
-#include "zigbee_interface.h"
-#include "stm32_seq.h"
-#include "zcl/zcl.h"
-#include "zcl/zcl.onoff.h"
-#include "zcl/zcl.identify.h"
-
-/* Startup Configuration -----------------------------------------------------*/
-#define APP_STARTUP_DISTRIB 0 /* Distributed Netork*/
-#define APP_STARTUP_TOUCHLINK_TARGET 1 /* Touchlink Target*/
-#define APP_STARTUP_TOUCHLINK_INITIATOR 2 /* Touchlink Initiator */
-#define APP_STARTUP_CENTRALIZED_COORD 3 /* Centralized Network Coordinator */
-#define APP_STARTUP_CENTRALIZED_ROUTER 4 /* Centralized Network Router */
-
-/* Choose the startup type you want from the options above */
-#define APP_STARTUP_TYPE APP_STARTUP_CENTRALIZED_ROUTER
-
-/* Spec is -40 dBm, but use -60 for ease of testing, and until we get real RSSI from STMAC. */
-#define APP_TOUCHLINK_MIN_RSSI -60
-
-/* Private defines -----------------------------------------------------------*/
-#define APP_ZIGBEE_STARTUP_FAIL_DELAY 3000U
-
-#define SW1_ENDPOINT 17
-#define SW2_ENDPOINT 18
-#define TOUCHLINK_ENDPOINT 200 /* arbitrary */
-
-#define SW1_GROUP_ADDR 0x0001
-#define SW2_GROUP_ADDR 0x0002
-
-#define SW1_FLAG 0x01
-#define SW2_FLAG 0x02
-
-#define SW1_LED LED_RED
-#define SW2_LED LED_GREEN
-#define SW3_LED LED_BLUE
-
-#define CHANNEL 15
-/* Private function prototypes -----------------------------------------------*/
-
-/* Private variables -----------------------------------------------*/
-struct zigbee_demo_info {
- bool has_init;
- struct ZigBeeT *zb;
- enum ZbStartType startupControl;
- enum ZbStatusCodeT join_status;
- uint32_t join_delay;
- bool init_after_join;
-
- struct ZbZclClusterT *onoff_server_1;
- struct ZbZclClusterT *onoff_client_1;
- struct ZbZclClusterT *identify_server_1;
-
- struct ZbZclClusterT *onoff_server_2;
- struct ZbZclClusterT *onoff_client_2;
-
- uint8_t sw_flags;
-};
-
-static struct zigbee_demo_info zigbee_demo_info;
-
-static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb);
-
-static const struct ZbZclAttrT onoff_server_attr_list[] = {
- /* OnOff Server Attributes */
- {
- ZCL_ONOFF_ATTR_ONOFF, ZCL_DATATYPE_BOOLEAN,
- ZCL_ATTR_FLAG_REPORTABLE | ZCL_ATTR_FLAG_PERSISTABLE | ZCL_ATTR_FLAG_DEFAULTABLE | ZCL_ATTR_FLAG_CB_NOTIFY, 0,
- onoff_server_attr_cb, {0, 0}, {0, 0}
- },
-};
-
-/* Functions Definition ------------------------------------------------------*/
-
-static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb)
-{
- uint8_t endpoint;
- uint8_t attrVal;
-
- endpoint = ZbZclClusterGetEndpoint(clusterPtr);
- switch (cb->info->attributeId) {
- case ZCL_ONOFF_ATTR_ONOFF:
- if (endpoint == SW1_ENDPOINT) {
- if (ZbZclAttrRead(zigbee_demo_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
- if (attrVal != 0) {
- APP_DBG("SW1_LED ON");
- BSP_LED_On(SW1_LED);
- }
- else {
- APP_DBG("SW1_LED OFF");
- BSP_LED_Off(SW1_LED);
- }
- }
- }
- else if (endpoint == SW2_ENDPOINT) {
- if (ZbZclAttrRead(zigbee_demo_info.onoff_server_2, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
- if (attrVal != 0) {
- APP_DBG("SW2_LED ON");
- BSP_LED_On(SW2_LED);
- }
- else {
- APP_DBG("SW2_LED OFF");
- BSP_LED_Off(SW2_LED);
- }
- }
- }
- break;
-
- default:
- break;
- } /* switch */
- return ZCL_STATUS_SUCCESS;
-} /* onoff_server_attr_notify */
-
-static void config_endpoints(void)
-{
- ZbApsmeAddEndpointReqT req;
- ZbApsmeAddEndpointConfT conf;
-
- memset(&req, 0, sizeof(req));
- req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
- req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
-
- /* Endpoint: SW1_ENDPOINT */
- req.endpoint = SW1_ENDPOINT;
- ZbZclAddEndpoint(zigbee_demo_info.zb, &req, &conf);
- assert(conf.status == ZB_STATUS_SUCCESS);
- /* OnOff Server */
- zigbee_demo_info.onoff_server_1 = ZbZclOnOffServerAlloc(zigbee_demo_info.zb, SW1_ENDPOINT, NULL);
- assert(zigbee_demo_info.onoff_server_1 != NULL);
- ZbZclAttrAppendList(zigbee_demo_info.onoff_server_1, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_server_1);
- /* OnOff Client */
- zigbee_demo_info.onoff_client_1 = ZbZclOnOffClientAlloc(zigbee_demo_info.zb, SW1_ENDPOINT);
- assert(zigbee_demo_info.onoff_client_1 != NULL);
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_client_1);
- /* Identify Server for Touchlink */
- zigbee_demo_info.identify_server_1 = ZbZclIdentifyServerAlloc(zigbee_demo_info.zb, SW1_ENDPOINT, NULL);
- assert(zigbee_demo_info.identify_server_1 != NULL);
-
- /* Endpoint: SW2_ENDPOINT */
- req.endpoint = SW2_ENDPOINT;
- ZbZclAddEndpoint(zigbee_demo_info.zb, &req, &conf);
- assert(conf.status == ZB_STATUS_SUCCESS);
- /* OnOff Server */
- zigbee_demo_info.onoff_server_2 = ZbZclOnOffServerAlloc(zigbee_demo_info.zb, SW2_ENDPOINT, NULL);
- assert(zigbee_demo_info.onoff_server_2 != NULL);
- ZbZclAttrAppendList(zigbee_demo_info.onoff_server_2, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_server_2);
- /* OnOff Client */
- zigbee_demo_info.onoff_client_2 = ZbZclOnOffClientAlloc(zigbee_demo_info.zb, SW2_ENDPOINT);
- assert(zigbee_demo_info.onoff_client_2 != NULL);
- ZbZclClusterEndpointRegister(zigbee_demo_info.onoff_client_2);
-} /* config_endpoints */
-
-static void config_group_addr(void)
-{
- ZbApsmeAddGroupReqT req;
- ZbApsmeAddGroupConfT conf;
-
- memset(&req, 0, sizeof(req));
- req.endpt = SW1_ENDPOINT;
- req.groupAddr = SW1_GROUP_ADDR;
- ZbApsmeAddGroupReq(zigbee_demo_info.zb, &req, &conf);
-
- req.endpt = SW2_ENDPOINT;
- req.groupAddr = SW2_GROUP_ADDR;
- ZbApsmeAddGroupReq(zigbee_demo_info.zb, &req, &conf);
-} /* config_group_addr */
-
-/**
- * @brief Zigbee Demo Task
- * @param None
- * @retval None
- */
-void APP_ZIGBEE_Demo(void)
-{
- /*
- * Handle Initialization
- */
- if (!zigbee_demo_info.has_init) {
- zigbee_demo_info.sw_flags = 0;
-
- zigbee_demo_info.zb = ZbInit(0U, NULL, NULL);
- assert(zigbee_demo_info.zb != NULL);
-
- /* Create the endpoint and cluster(s) */
- config_endpoints();
-
- BSP_LED_Off(SW1_LED);
- BSP_LED_Off(SW2_LED);
- BSP_LED_Off(SW3_LED);
-
- /* Configure the joining parameters */
- zigbee_demo_info.join_status = 0x01; /* init to error status */
- zigbee_demo_info.join_delay = HAL_GetTick(); /* now */
- zigbee_demo_info.startupControl = ZbStartTypeJoin;
-
- /* Initialization Complete */
- zigbee_demo_info.has_init = true;
- }
-
- /*
- * Handle Network Joining / Forming
- */
- if ((zigbee_demo_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_demo_info.join_delay)) {
- struct ZbStartupT config;
- enum ZbStatusCodeT status;
-
- /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
- ZbSetLogging(zigbee_demo_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
-
- /* Attempt to join a zigbee network */
- ZbStartupConfigGetProDefaults(&config);
-
-
- APP_DBG("Network config : APP_STARTUP_CENTRALIZED_ROUTER");
- config.startupControl = ZbStartTypeJoin;
-
- /* Using the default HA preconfigured Link Key */
- memcpy(config.security.preconfiguredLinkKey, sec_key_ha, ZB_SEC_KEYSIZE);
-
- config.channelList.count = 1;
- config.channelList.list[0].page = 0;
- config.channelList.list[0].channelMask = WPAN_CHANNELMASK_2400MHZ;
-
- /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
- * a blocking call on the M4. */
- status = ZbStartupWait(zigbee_demo_info.zb, &config);
-
- APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
- zigbee_demo_info.join_status = status;
-
- if (status == ZB_STATUS_SUCCESS) {
- zigbee_demo_info.join_delay = 0U;
- zigbee_demo_info.init_after_join = true;
- BSP_LED_On(SW3_LED);
- }
- else {
- APP_DBG("Startup failed, attempting again after a short delay.");
- zigbee_demo_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
- }
- }
-
- /*
- * Handle Application (Switches and LEDs)
- */
- if (zigbee_demo_info.join_status == ZB_STATUS_SUCCESS) {
- /* Check if we just joined */
- if (zigbee_demo_info.init_after_join) {
- zigbee_demo_info.init_after_join = false;
-
- /* Assign ourselves to the group addresses */
- config_group_addr();
-
- /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
- uint32_t bcast_timeout = 3;
- ZbNwkSet(zigbee_demo_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
- }
-
- /* Check for switch flags */
- if (zigbee_demo_info.sw_flags != 0) {
- struct ZbApsAddrT dst;
-
- memset(&dst, 0, sizeof(dst));
- dst.mode = ZB_APSDE_ADDRMODE_GROUP;
-
- if ((zigbee_demo_info.sw_flags & SW1_FLAG) != 0) {
- dst.endpoint = SW1_ENDPOINT;
- dst.nwkAddr = SW1_GROUP_ADDR;
-
- APP_DBG("SW1 PUSHED (SENDING TOGGLE TO GROUP 0x0001)");
- if (ZbZclOnOffClientToggleReq(zigbee_demo_info.onoff_client_1, &dst, NULL, NULL) != ZB_STATUS_SUCCESS) {
- APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW1_ENDPOINT)");
- }
- /* We will get a loopback message because we belong to the same APS Group,
- * causing our own local LED to toggle. */
- }
-
- if ((zigbee_demo_info.sw_flags & SW2_FLAG) != 0) {
- dst.endpoint = SW2_ENDPOINT;
- dst.nwkAddr = SW2_GROUP_ADDR;
-
- APP_DBG("SW2 PUSHED (SENDING TOGGLE TO GROUP 0x0002)");
- if (ZbZclOnOffClientToggleReq(zigbee_demo_info.onoff_client_2, &dst, NULL, NULL) != ZB_STATUS_SUCCESS) {
- APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW2_ENDPOINT)");
- }
- /* We will get a loopback message because we belong to the same APS Group,
- * causing our own local LED to toggle. */
- }
-
- /* Clear the flags */
- zigbee_demo_info.sw_flags = 0;
- }
-
- }
-
- UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_APP, CFG_SCH_PRIO_0);
-} /* APP_ZIGBEE_Demo */
-
-/*************************************************************
- * ZbStartupWait Blocking Call
- *************************************************************/
-
-struct ZbStartupWaitInfo {
- bool active;
- enum ZbStatusCodeT status;
-};
-
-static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
-{
- struct ZbStartupWaitInfo *info = cb_arg;
-
- info->status = status;
- info->active = false;
-} /* ZbStartupWaitCb */
-
-enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
-{
- struct ZbStartupWaitInfo *info;
- enum ZbStatusCodeT status;
-
- info = malloc(sizeof(struct ZbStartupWaitInfo));
- if (info == NULL) {
- return ZB_STATUS_ALLOC_FAIL;
- }
- memset(info, 0, sizeof(struct ZbStartupWaitInfo));
-
- info->active = true;
- status = ZbStartup(zb, config, ZbStartupWaitCb, info);
- if (status != ZB_STATUS_SUCCESS) {
- info->active = false;
- return status;
- }
- while (info->active) {
- UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
- }
- status = info->status;
- free(info);
- return status;
-} /* ZbStartupWait */
-
-/*************************************************************
- * External Interrupt Handler
- *************************************************************/
-
-/**
- * @brief This function manage the Push button action
- * @param GPIO_Pin : GPIO pin which has been activated
- * @retval None
- */
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
-{
- switch (GPIO_Pin) {
- case BUTTON_SW1_PIN:
- zigbee_demo_info.sw_flags |= SW1_FLAG;
- break;
-
- case BUTTON_SW2_PIN:
- zigbee_demo_info.sw_flags |= SW2_FLAG;
- break;
-
- case BUTTON_SW3_PIN:
- APP_DBG("SW3 PUSHED (LOCAL LEDS OFF)");
- ZbZclAttrIntegerWrite(zigbee_demo_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, 0);
- ZbZclAttrIntegerWrite(zigbee_demo_info.onoff_server_2, ZCL_ONOFF_ATTR_ONOFF, 0);
- break;
-
- default:
- break;
- }
-} /* HAL_GPIO_EXTI_Callback */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_common.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_common.h
new file mode 100644
index 000000000..4defc5d7a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_common.h
@@ -0,0 +1,114 @@
+/**
+ ******************************************************************************
+ * File Name : app_common.h
+ * Description : App Common application configuration file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_COMMON_H
+#define APP_COMMON_H
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stdint.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "app_conf.h"
+
+ /* -------------------------------- *
+ * Basic definitions *
+ * -------------------------------- */
+
+#undef NULL
+#define NULL 0
+
+#undef FALSE
+#define FALSE 0
+
+#undef TRUE
+#define TRUE (!0)
+
+ /* -------------------------------- *
+ * Critical Section definition *
+ * -------------------------------- */
+#define BACKUP_PRIMASK() uint32_t primask_bit= __get_PRIMASK()
+#define DISABLE_IRQ() __disable_irq()
+#define RESTORE_PRIMASK() __set_PRIMASK(primask_bit)
+
+ /* -------------------------------- *
+ * Macro delimiters *
+ * -------------------------------- */
+
+#define M_BEGIN do {
+
+#define M_END } while(0)
+
+ /* -------------------------------- *
+ * Some useful macro definitions *
+ * -------------------------------- */
+
+#define MAX( x, y ) (((x)>(y))?(x):(y))
+
+#define MIN( x, y ) (((x)<(y))?(x):(y))
+
+#define MODINC( a, m ) M_BEGIN (a)++; if ((a)>=(m)) (a)=0; M_END
+
+#define MODDEC( a, m ) M_BEGIN if ((a)==0) (a)=(m); (a)--; M_END
+
+#define MODADD( a, b, m ) M_BEGIN (a)+=(b); if ((a)>=(m)) (a)-=(m); M_END
+
+#define MODSUB( a, b, m ) MODADD( a, (m)-(b), m )
+
+#define PAUSE( t ) M_BEGIN \
+ __IO int _i; \
+ for ( _i = t; _i > 0; _i -- ); \
+ M_END
+
+#define DIVF( x, y ) ((x)/(y))
+
+#define DIVC( x, y ) (((x)+(y)-1)/(y))
+
+#define DIVR( x, y ) (((x)+((y)/2))/(y))
+
+#define SHRR( x, n ) ((((x)>>((n)-1))+1)>>1)
+
+#define BITN( w, n ) (((w)[(n)/32] >> ((n)%32)) & 1)
+
+#define BITNSET( w, n, b ) M_BEGIN (w)[(n)/32] |= ((U32)(b))<<((n)%32); M_END
+
+ /* -------------------------------- *
+ * Compiler *
+ * -------------------------------- */
+#define PLACE_IN_SECTION( __x__ ) __attribute__((section (__x__)))
+
+#ifdef WIN32
+#define ALIGN(n)
+#else
+#define ALIGN(n) __attribute__((aligned(n)))
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*APP_COMMON_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_conf.h
index 6d9144c46..ff55d7800 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_conf.h
@@ -279,13 +279,13 @@ typedef enum
*/
typedef enum {
- CFG_TASK_MSG_FROM_M0_TO_M4,
- CFG_TASK_ZIGBEE_APP,
- CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_MSG_FROM_M0_TO_M4,
+ CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_ZIGBEE_NETWORK_FORM,
#if (CFG_USB_INTERFACE_ENABLE != 0)
- CFG_TASK_VCP_SEND_DATA,
+ CFG_TASK_VCP_SEND_DATA,
#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
- CFG_TASK_NBR /**< Shall be last in the list */
+ CFG_TASK_NBR /**< Shall be last in the list */
} CFG_IdleTask_Id_t;
/* Scheduler types and defines */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_entry.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_entry.h
index 48c467aaa..48c467aaa 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/app_entry.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_entry.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_conf.h
index 8409edd16..8409edd16 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/hw_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_if.h
new file mode 100644
index 000000000..271a222a9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_if.h
@@ -0,0 +1,250 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file hw_if.h
+ * @author MCD Application Team
+ * @brief Hardware Interface
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef HW_IF_H
+#define HW_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /* Includes ------------------------------------------------------------------*/
+#include "stm32wbxx.h"
+#include "stm32wbxx_ll_exti.h"
+#include "stm32wbxx_ll_system.h"
+#include "stm32wbxx_ll_rcc.h"
+#include "stm32wbxx_ll_ipcc.h"
+#include "stm32wbxx_ll_bus.h"
+#include "stm32wbxx_ll_pwr.h"
+#include "stm32wbxx_ll_cortex.h"
+#include "stm32wbxx_ll_utils.h"
+#include "stm32wbxx_ll_hsem.h"
+#include "stm32wbxx_ll_gpio.h"
+#include "stm32wbxx_ll_rtc.h"
+
+#ifdef USE_STM32WBXX_USB_DONGLE
+#include "stm32wbxx_usb_dongle.h"
+#endif
+#ifdef USE_STM32WBXX_NUCLEO
+#include "stm32wbxx_nucleo.h"
+#endif
+#ifdef USE_X_NUCLEO_EPD
+#include "x_nucleo_epd.h"
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+ /******************************************************************************
+ * HW UART
+ ******************************************************************************/
+ typedef enum
+ {
+ hw_uart1,
+ hw_uart2,
+ hw_lpuart1,
+ } hw_uart_id_t;
+
+ typedef enum
+ {
+ hw_uart_ok,
+ hw_uart_error,
+ hw_uart_busy,
+ hw_uart_to,
+ } hw_status_t;
+
+ void HW_UART_Init(hw_uart_id_t hw_uart_id);
+ void HW_UART_Receive_IT(hw_uart_id_t hw_uart_id, uint8_t *pData, uint16_t Size, void (*Callback)(void));
+ void HW_UART_Transmit_IT(hw_uart_id_t hw_uart_id, uint8_t *pData, uint16_t Size, void (*Callback)(void));
+ hw_status_t HW_UART_Transmit(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, uint32_t timeout);
+ hw_status_t HW_UART_Transmit_DMA(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*Callback)(void));
+ void HW_UART_Interrupt_Handler(hw_uart_id_t hw_uart_id);
+ void HW_UART_DMA_Interrupt_Handler(hw_uart_id_t hw_uart_id);
+
+ /******************************************************************************
+ * HW TimerServer
+ ******************************************************************************/
+ /* Exported types ------------------------------------------------------------*/
+ /**
+ * This setting is used when standby mode is supported.
+ * hw_ts_InitMode_Limited should be used when the device restarts from Standby Mode. In that case, the Timer Server does
+ * not re-initialized its context. Only the Hardware register which content has been lost is reconfigured
+ * Otherwise, hw_ts_InitMode_Full should be requested (Start from Power ON) and everything is re-initialized.
+ */
+ typedef enum
+ {
+ hw_ts_InitMode_Full,
+ hw_ts_InitMode_Limited,
+ } HW_TS_InitMode_t;
+
+ /**
+ * When a Timer is created as a SingleShot timer, it is not automatically restarted when the timeout occurs. However,
+ * the timer is kept reserved in the list and could be restarted at anytime with HW_TS_Start()
+ *
+ * When a Timer is created as a Repeated timer, it is automatically restarted when the timeout occurs.
+ */
+ typedef enum
+ {
+ hw_ts_SingleShot,
+ hw_ts_Repeated
+ } HW_TS_Mode_t;
+
+ /**
+ * hw_ts_Successful is returned when a Timer has been successfully created with HW_TS_Create(). Otherwise, hw_ts_Failed
+ * is returned. When hw_ts_Failed is returned, that means there are not enough free slots in the list to create a
+ * Timer. In that case, CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER should be increased
+ */
+ typedef enum
+ {
+ hw_ts_Successful,
+ hw_ts_Failed,
+ }HW_TS_ReturnStatus_t;
+
+ typedef void (*HW_TS_pTimerCb_t)(void);
+
+ /**
+ * @brief Initialize the timer server
+ * This API shall be called by the application before any timer is requested to the timer server. It
+ * configures the RTC module to be connected to the LSI input clock.
+ *
+ * @param TimerInitMode: When the device restarts from Standby, it should request hw_ts_InitMode_Limited so that the
+ * Timer context is not re-initialized. Otherwise, hw_ts_InitMode_Full should be requested
+ * @param hrtc: RTC Handle
+ * @retval None
+ */
+ void HW_TS_Init(HW_TS_InitMode_t TimerInitMode, RTC_HandleTypeDef *hrtc);
+
+ /**
+ * @brief Interface to create a virtual timer
+ * The user shall call this API to create a timer. Once created, the timer is reserved to the module until it
+ * has been deleted. When creating a timer, the user shall specify the mode (single shot or repeated), the
+ * callback to be notified when the timer expires and a module ID to identify in the timer interrupt handler
+ * which module is concerned. In return, the user gets a timer ID to handle it.
+ *
+ * @param TimerProcessID: This is an identifier provided by the user and returned in the callback to allow
+ * identification of the requester
+ * @param pTimerId: Timer Id returned to the user to request operation (start, stop, delete)
+ * @param TimerMode: Mode of the virtual timer (Single shot or repeated)
+ * @param pTimerCallBack: Callback when the virtual timer expires
+ * @retval HW_TS_ReturnStatus_t: Return whether the creation is sucessfull or not
+ */
+ HW_TS_ReturnStatus_t HW_TS_Create(uint32_t TimerProcessID, uint8_t *pTimerId, HW_TS_Mode_t TimerMode, HW_TS_pTimerCb_t pTimerCallBack);
+
+ /**
+ * @brief Stop a virtual timer
+ * This API may be used to stop a running timer. A timer which is stopped is move to the pending state.
+ * A pending timer may be restarted at any time with a different timeout value but the mode cannot be changed.
+ * Nothing is done when it is called to stop a timer which has been already stopped
+ *
+ * @param TimerID: Id of the timer to stop
+ * @retval None
+ */
+ void HW_TS_Stop(uint8_t TimerID);
+
+ /**
+ * @brief Start a virtual timer
+ * This API shall be used to start a timer. The timeout value is specified and may be different each time.
+ * When the timer is in the single shot mode, it will move to the pending state when it expires. The user may
+ * restart it at any time with a different timeout value. When the timer is in the repeated mode, it always
+ * stay in the running state. When the timer expires, it will be restarted with the same timeout value.
+ * This API shall not be called on a running timer.
+ *
+ * @param TimerID: The ID Id of the timer to start
+ * @param timeout_ticks: Number of ticks of the virtual timer (Maximum value is (0xFFFFFFFF-0xFFFF = 0xFFFF0000)
+ * @retval None
+ */
+ void HW_TS_Start(uint8_t TimerID, uint32_t timeout_ticks);
+
+ /**
+ * @brief Delete a virtual timer from the list
+ * This API should be used when a timer is not needed anymore by the user. A deleted timer is removed from
+ * the timer list managed by the timer server. It cannot be restarted again. The user has to go with the
+ * creation of a new timer if required and may get a different timer id
+ *
+ * @param TimerID: The ID of the timer to remove from the list
+ * @retval None
+ */
+ void HW_TS_Delete(uint8_t TimerID);
+
+ /**
+ * @brief Schedule the timer list on the timer interrupt handler
+ * This interrupt handler shall be called by the application in the RTC interrupt handler. This handler takes
+ * care of clearing all status flag required in the RTC and EXTI peripherals
+ *
+ * @param None
+ * @retval None
+ */
+ void HW_TS_RTC_Wakeup_Handler(void);
+
+ /**
+ * @brief Return the number of ticks to count before the interrupt
+ * This API returns the number of ticks left to be counted before an interrupt is generated by the
+ * Timer Server. This API may be used by the application for power management optimization. When the system
+ * enters low power mode, the mode selection is a tradeoff between the wakeup time where the CPU is running
+ * and the time while the CPU will be kept in low power mode before next wakeup. The deeper is the
+ * low power mode used, the longer is the wakeup time. The low power mode management considering wakeup time
+ * versus time in low power mode is implementation specific
+ * When the timer is disabled (No timer in the list), it returns 0xFFFF
+ *
+ * @param None
+ * @retval The number of ticks left to count
+ */
+ uint16_t HW_TS_RTC_ReadLeftTicksToCount(void);
+
+ /**
+ * @brief Notify the application that a registered timer has expired
+ * This API shall be implemented by the user application.
+ * This API notifies the application that a timer expires. This API is running in the RTC Wakeup interrupt
+ * context. The application may implement an Operating System to change the context priority where the timer
+ * callback may be handled. This API provides the module ID to identify which module is concerned and to allow
+ * sending the information to the correct task
+ *
+ * @param TimerProcessID: The TimerProcessId associated with the timer when it has been created
+ * @param TimerID: The TimerID of the expired timer
+ * @param pTimerCallBack: The Callback associated with the timer when it has been created
+ * @retval None
+ */
+ void HW_TS_RTC_Int_AppNot(uint32_t TimerProcessID, uint8_t TimerID, HW_TS_pTimerCb_t pTimerCallBack);
+
+ /**
+ * @brief Notify the application that the wakeupcounter has been updated
+ * This API should be implemented by the user application
+ * This API notifies the application that the counter has been updated. This is expected to be used along
+ * with the HW_TS_RTC_ReadLeftTicksToCount () API. It could be that the counter has been updated since the
+ * last call of HW_TS_RTC_ReadLeftTicksToCount () and before entering low power mode. This notification
+ * provides a way to the application to solve that race condition to reevaluate the counter value before
+ * entering low power mode
+ *
+ * @param None
+ * @retval None
+ */
+ void HW_TS_RTC_CountUpdated_AppNot(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*HW_IF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/main.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/main.h
index 68182bc5a..68182bc5a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/main.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/main.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32_lpm_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32_lpm_if.h
index 70abecaa9..70abecaa9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32_lpm_if.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32_lpm_if.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_hal_conf.h
index ea9aa40d0..ea9aa40d0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_hal_conf.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32wbxx_it.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_it.h
index a3a535f13..a3a535f13 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm32wbxx_it.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_it.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm_logging.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm_logging.h
index 58877c570..58877c570 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Inc/stm_logging.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm_logging.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/utilities_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/utilities_conf.h
new file mode 100644
index 000000000..4dde3509a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/utilities_conf.h
@@ -0,0 +1,68 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : utilities_conf.h
+ * Description : Configuration file for STM32 Utilities.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* 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"
+
+/******************************************************************************
+ * 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 (2)
+#define UTIL_SEQ_MEMSET8( dest, value, size ) UTILS_MEMSET8( dest, value, size )
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*UTILITIES_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/app_entry.c
index 901f796a0..e7120136a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/app_entry.c
@@ -208,6 +208,15 @@ static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status)
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
@@ -393,4 +402,27 @@ void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) )
}
#endif
+/* USER CODE BEGIN FD_WRAP_FUNCTIONS */
+/**
+ * @brief This function manage the Push button action
+ * @param GPIO_Pin : GPIO pin which has been activated
+ * @retval None
+ */
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ switch (GPIO_Pin) {
+ case BUTTON_SW1_PIN:
+ break;
+
+ case BUTTON_SW2_PIN:
+ break;
+
+ case BUTTON_SW3_PIN:
+ break;
+
+ default:
+ break;
+ }
+}
+/* USER CODE END FD_WRAP_FUNCTIONS */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/hw_timerserver.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_timerserver.c
index c842ba55e..c842ba55e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/hw_timerserver.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_timerserver.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/hw_uart.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_uart.c
index 9a553610d..9a553610d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/hw_uart.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_uart.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/main.c
new file mode 100644
index 000000000..80ad1ad58
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/main.c
@@ -0,0 +1,521 @@
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ *
+ @verbatim
+ ==============================================================================
+ ##### IMPORTANT NOTE #####
+ ==============================================================================
+
+ This application requests having the stm32wb5x_Zigbee_fw.bin binary
+ flashed on the Wireless Coprocessor.
+ If it is not the case, you need to use STM32CubeProgrammer to load the appropriate
+ binary.
+
+ All available binaries are located under following directory:
+ /Projects/STM32_Copro_Wireless_Binaries
+
+ Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
+ Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the
+ detailed procedure to change the Wireless Coprocessor binary.
+
+ @endverbatim
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "app_entry.h"
+
+/* Private includes ----------------------------------------------------------*/
+
+#include "dbg_trace.h"
+#include "hw_conf.h"
+#include "otp.h"
+#include "stm32_seq.h"
+
+/* Private variables ---------------------------------------------------------*/
+UART_HandleTypeDef hlpuart1;
+UART_HandleTypeDef huart1;
+DMA_HandleTypeDef hdma_lpuart1_tx;
+DMA_HandleTypeDef hdma_usart1_tx;
+RTC_HandleTypeDef hrtc;
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+void MX_LPUART1_UART_Init(void);
+void MX_USART1_UART_Init(void);
+static void MX_RF_Init(void);
+static void MX_RTC_Init(void);
+
+void PeriphClock_Config(void);
+static void Reset_Device(void);
+static void Reset_IPCC(void);
+static void Reset_BackupDomain(void);
+static void Init_Exti(void);
+static void Config_HSE(void);
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ Reset_Device();
+ Config_HSE();
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ PeriphClock_Config();
+ Init_Exti(); /**< Configure the system Power Mode */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_RF_Init();
+ MX_RTC_Init();
+
+ /* Init the full application */
+ APPE_Init();
+
+ /* Infinite loop */
+
+ while (1) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+
+ }
+
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+
+ /** Configure LSE Drive Capability
+ */
+ __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+ /** Initializes the CPU, AHB and APB busses clocks
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE
+ |RCC_OSCILLATORTYPE_LSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.LSEState = RCC_LSE_ON;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4|RCC_CLOCKTYPE_HCLK2
+ |RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLK2Divider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLK4Divider = RCC_SYSCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Initializes the peripherals clocks
+ */
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RFWAKEUP
+ |RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1
+ |RCC_PERIPHCLK_LPUART1;
+ PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
+ PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
+ PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
+ PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
+ PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
+
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief LPUART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+void MX_LPUART1_UART_Init(void)
+{
+
+ hlpuart1.Instance = LPUART1;
+ hlpuart1.Init.BaudRate = 115200;
+ hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
+ hlpuart1.Init.StopBits = UART_STOPBITS_1;
+ hlpuart1.Init.Parity = UART_PARITY_NONE;
+ hlpuart1.Init.Mode = UART_MODE_TX_RX;
+ hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+ hlpuart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
+ hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+ hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
+ if (HAL_UART_Init(&hlpuart1) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK) {
+ Error_Handler();
+ }
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+void MX_USART1_UART_Init(void)
+{
+
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_8;
+ huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+ huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
+ huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+ if (HAL_UART_Init(&huart1) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) {
+ Error_Handler();
+ }
+
+}
+
+/**
+ * @brief RF Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_RF_Init(void)
+{
+
+}
+
+/**
+ * @brief RTC Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_RTC_Init(void)
+{
+
+
+ /** Initialize RTC Only
+ */
+ hrtc.Instance = RTC;
+ hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
+ hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
+ hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
+ hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
+ hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
+ hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
+ if (HAL_RTC_Init(&hrtc) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN RTC_Init 2 */
+
+ /* USER CODE END RTC_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMAMUX1_CLK_ENABLE();
+ __HAL_RCC_DMA1_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Channel1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
+ /* DMA1_Channel2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+}
+
+/* USER CODE BEGIN 4 */
+void PeriphClock_Config(void)
+{
+ #if (CFG_USB_INTERFACE_ENABLE != 0)
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
+ RCC_CRSInitTypeDef RCC_CRSInitStruct = { 0 };
+
+ /**
+ * This prevents the CPU2 to disable the HSI48 oscillator when
+ * it does not use anymore the RNG IP
+ */
+ LL_HSEM_1StepLock( HSEM, 5 );
+
+ LL_RCC_HSI48_Enable();
+
+ while(!LL_RCC_HSI48_IsReady());
+
+ /* Select HSI48 as USB clock source */
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
+ PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
+ HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
+
+ /*Configure the clock recovery system (CRS)**********************************/
+
+ /* Enable CRS Clock */
+ __HAL_RCC_CRS_CLK_ENABLE();
+
+ /* Default Synchro Signal division factor (not divided) */
+ RCC_CRSInitStruct.Prescaler = RCC_CRS_SYNC_DIV1;
+
+ /* Set the SYNCSRC[1:0] bits according to CRS_Source value */
+ RCC_CRSInitStruct.Source = RCC_CRS_SYNC_SOURCE_USB;
+
+ /* HSI48 is synchronized with USB SOF at 1KHz rate */
+ RCC_CRSInitStruct.ReloadValue = RCC_CRS_RELOADVALUE_DEFAULT;
+ RCC_CRSInitStruct.ErrorLimitValue = RCC_CRS_ERRORLIMIT_DEFAULT;
+
+ RCC_CRSInitStruct.Polarity = RCC_CRS_SYNC_POLARITY_RISING;
+
+ /* Set the TRIM[5:0] to the default value*/
+ RCC_CRSInitStruct.HSI48CalibrationValue = RCC_CRS_HSI48CALIBRATION_DEFAULT;
+
+ /* Start automatic synchronization */
+ HAL_RCCEx_CRSConfig(&RCC_CRSInitStruct);
+#endif
+
+ return;
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+static void Config_HSE(void)
+{
+ OTP_ID0_t * p_otp;
+
+ /**
+ * Read HSE_Tuning from OTP
+ */
+ p_otp = (OTP_ID0_t *) OTP_Read(0);
+ if (p_otp)
+ {
+ LL_RCC_HSE_SetCapacitorTuning(p_otp->hse_tuning);
+ }
+
+ return;
+}
+
+
+static void Reset_Device( void )
+{
+#if ( CFG_HW_RESET_BY_FW == 1 )
+ Reset_BackupDomain();
+
+ Reset_IPCC();
+#endif
+
+ return;
+}
+
+static void Reset_IPCC( void )
+{
+ LL_AHB3_GRP1_EnableClock(LL_AHB3_GRP1_PERIPH_IPCC);
+
+ LL_C1_IPCC_ClearFlag_CHx(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_ClearFlag_CHx(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C1_IPCC_DisableTransmitChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_DisableTransmitChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C1_IPCC_DisableReceiveChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_DisableReceiveChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ return;
+}
+
+static void Reset_BackupDomain( void )
+{
+ if ((LL_RCC_IsActiveFlag_PINRST() != FALSE) && (LL_RCC_IsActiveFlag_SFTRST() == FALSE))
+ {
+ HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */
+
+ /**
+ * Write twice the value to flush the APB-AHB bridge
+ * This bit shall be written in the register before writing the next one
+ */
+ HAL_PWR_EnableBkUpAccess();
+
+ __HAL_RCC_BACKUPRESET_FORCE();
+ __HAL_RCC_BACKUPRESET_RELEASE();
+ }
+
+ return;
+}
+
+static void Init_Exti( void )
+{
+ /**< Disable all wakeup interrupt on CPU1 except IPCC(36), HSEM(38) */
+ LL_EXTI_DisableIT_0_31(~0);
+ LL_EXTI_DisableIT_32_63( (~0) & (~(LL_EXTI_LINE_36 | LL_EXTI_LINE_38)) );
+
+ return;
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+void HAL_Delay(uint32_t Delay)
+{
+ uint32_t tickstart = HAL_GetTick();
+ uint32_t wait = Delay;
+
+ /* Add a freq to guarantee minimum wait */
+ if (wait < HAL_MAX_DELAY)
+ {
+ wait += HAL_GetTickFreq();
+ }
+
+ while ((HAL_GetTick() - tickstart) < wait)
+ {
+ /************************************************************************************
+ * ENTER SLEEP MODE
+ ***********************************************************************************/
+ LL_LPM_EnableSleep( ); /**< Clear SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+ #if defined ( __CC_ARM)
+ __force_stores();
+ #endif
+
+ __WFI( );
+ }
+}
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+
+}
+
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32_lpm_if.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32_lpm_if.c
index f024b61e3..f024b61e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32_lpm_if.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32_lpm_if.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_hal_msp.c
index 9c338486d..9c338486d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32wbxx_hal_msp.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_hal_msp.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_it.c
index 7c5536dfc..7c5536dfc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_it.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm_logging.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm_logging.c
index c24b86dd8..c24b86dd8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/Core/Src/stm_logging.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm_logging.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/system_stm32wbxx.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/system_stm32wbxx.c
new file mode 100644
index 000000000..d4653a0ce
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/system_stm32wbxx.c
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * @file system_stm32wbxx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex Device Peripheral Access Layer System Source File
+ *
+ * This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32wbxx.s" file.
+ *
+ * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
+ * by the user application to setup the SysTick
+ * timer or configure other parameters.
+ *
+ * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
+ * be called whenever the core clock is changed
+ * during program execution.
+ *
+ * After each device reset the MSI (4 MHz) is used as system clock source.
+ * Then SystemInit() function is called, in "startup_stm32wbxx.s" file, to
+ * configure the system clock before to branch to main program.
+ *
+ * This file configures the system clock as follows:
+ *=============================================================================
+ *-----------------------------------------------------------------------------
+ * System Clock source | MSI
+ *-----------------------------------------------------------------------------
+ * SYSCLK(Hz) | 4000000
+ *-----------------------------------------------------------------------------
+ * HCLK(Hz) | 4000000
+ *-----------------------------------------------------------------------------
+ * AHB Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB1 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB2 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * PLL_M | 1
+ *-----------------------------------------------------------------------------
+ * PLL_N | 8
+ *-----------------------------------------------------------------------------
+ * PLL_P | 7
+ *-----------------------------------------------------------------------------
+ * PLL_Q | 2
+ *-----------------------------------------------------------------------------
+ * PLL_R | 2
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_P | NA
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_Q | NA
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_R | NA
+ *-----------------------------------------------------------------------------
+ * Require 48MHz for USB OTG FS, | Disabled
+ * SDIO and RNG clock |
+ *-----------------------------------------------------------------------------
+ *=============================================================================
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32WBxx_system
+ * @{
+ */
+
+/** @addtogroup stm32WBxx_System_Private_Includes
+ * @{
+ */
+
+#include "stm32wbxx.h"
+
+#if !defined (HSE_VALUE)
+ #define HSE_VALUE (32000000UL) /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (MSI_VALUE)
+ #define MSI_VALUE (4000000UL) /*!< Value of the Internal oscillator in Hz*/
+#endif /* MSI_VALUE */
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+#if !defined (LSI_VALUE)
+ #define LSI_VALUE (32000UL) /*!< Value of LSI in Hz*/
+#endif /* LSI_VALUE */
+
+#if !defined (LSE_VALUE)
+ #define LSE_VALUE (32768UL) /*!< Value of LSE in Hz*/
+#endif /* LSE_VALUE */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Defines
+ * @{
+ */
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+ Internal SRAM. */
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET 0x0U /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+
+#define VECT_TAB_BASE_ADDRESS SRAM1_BASE /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Variables
+ * @{
+ */
+ /* The SystemCoreClock variable is updated in three ways:
+ 1) by calling CMSIS function SystemCoreClockUpdate()
+ 2) by calling HAL API function HAL_RCC_GetHCLKFreq()
+ 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
+ Note: If you use this function to configure the system clock; then there
+ is no need to call the 2 first functions listed above, since SystemCoreClock
+ variable is updated automatically.
+ */
+ uint32_t SystemCoreClock = 4000000UL ; /*CPU1: M4 on MSI clock after startup (4MHz)*/
+
+ const uint32_t AHBPrescTable[16UL] = {1UL, 3UL, 5UL, 1UL, 1UL, 6UL, 10UL, 32UL, 2UL, 4UL, 8UL, 16UL, 64UL, 128UL, 256UL, 512UL};
+
+ const uint32_t APBPrescTable[8UL] = {0UL, 0UL, 0UL, 0UL, 1UL, 2UL, 3UL, 4UL};
+
+ const uint32_t MSIRangeTable[16UL] = {100000UL, 200000UL, 400000UL, 800000UL, 1000000UL, 2000000UL, \
+ 4000000UL, 8000000UL, 16000000UL, 24000000UL, 32000000UL, 48000000UL, 0UL, 0UL, 0UL, 0UL}; /* 0UL values are incorrect cases */
+
+ const uint32_t SmpsPrescalerTable[4UL][6UL]={{1UL,3UL,2UL,2UL,1UL,2UL}, \
+ {2UL,6UL,4UL,3UL,2UL,4UL}, \
+ {4UL,12UL,8UL,6UL,4UL,8UL}, \
+ {4UL,12UL,8UL,6UL,4UL,8UL}};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system.
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ /* Configure the Vector Table location add offset address ------------------*/
+#if defined(VECT_TAB_SRAM) && defined(VECT_TAB_BASE_ADDRESS)
+ /* program in SRAMx */
+ SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAMx for CPU1 */
+#else /* program in FLASH */
+ SCB->VTOR = VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
+#endif
+
+ /* FPU settings ------------------------------------------------------------*/
+ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+ SCB->CPACR |= ((3UL << (10UL*2UL))|(3UL << (11UL*2UL))); /* set CP10 and CP11 Full Access */
+ #endif
+
+ /* Reset the RCC clock configuration to the default reset state ------------*/
+ /* Set MSION bit */
+ RCC->CR |= RCC_CR_MSION;
+
+ /* Reset CFGR register */
+ RCC->CFGR = 0x00070000U;
+
+ /* Reset PLLSAI1ON, PLLON, HSECSSON, HSEON, HSION, and MSIPLLON bits */
+ RCC->CR &= (uint32_t)0xFAF6FEFBU;
+
+ /*!< Reset LSI1 and LSI2 bits */
+ RCC->CSR &= (uint32_t)0xFFFFFFFAU;
+
+ /*!< Reset HSI48ON bit */
+ RCC->CRRCR &= (uint32_t)0xFFFFFFFEU;
+
+ /* Reset PLLCFGR register */
+ RCC->PLLCFGR = 0x22041000U;
+
+ /* Reset PLLSAI1CFGR register */
+ RCC->PLLSAI1CFGR = 0x22041000U;
+
+ /* Reset HSEBYP bit */
+ RCC->CR &= 0xFFFBFFFFU;
+
+ /* Disable all interrupts */
+ RCC->CIER = 0x00000000;
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI_VALUE(*)
+ *
+ * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**)
+ *
+ * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***)
+ *
+ * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***)
+ * or HSI_VALUE(*) or MSI_VALUE(*) multiplied/divided by the PLL factors.
+ *
+ * (*) MSI_VALUE is a constant defined in stm32wbxx_hal.h file (default value
+ * 4 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) HSI_VALUE is a constant defined in stm32wbxx_hal_conf.h file (default value
+ * 16 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (***) HSE_VALUE is a constant defined in stm32wbxx_hal_conf.h file (default value
+ * 32 MHz), user has to ensure that HSE_VALUE is same as the real
+ * frequency of the crystal used. Otherwise, this function may
+ * have wrong result.
+ *
+ * - The result of this function could be not correct when using fractional
+ * value for HSE crystal.
+ *
+ * @param None
+ * @retval None
+ */
+void SystemCoreClockUpdate(void)
+{
+ uint32_t tmp, msirange, pllvco, pllr, pllsource , pllm;
+
+ /* Get MSI Range frequency--------------------------------------------------*/
+
+ /*MSI frequency range in Hz*/
+ msirange = MSIRangeTable[(RCC->CR & RCC_CR_MSIRANGE) >> RCC_CR_MSIRANGE_Pos];
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ switch (RCC->CFGR & RCC_CFGR_SWS)
+ {
+ case 0x00: /* MSI used as system clock source */
+ SystemCoreClock = msirange;
+ break;
+
+ case 0x04: /* HSI used as system clock source */
+ /* HSI used as system clock source */
+ SystemCoreClock = HSI_VALUE;
+ break;
+
+ case 0x08: /* HSE used as system clock source */
+ SystemCoreClock = HSE_VALUE;
+ break;
+
+ case 0x0C: /* PLL used as system clock source */
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE or MSI_VALUE/ PLLM) * PLLN
+ SYSCLK = PLL_VCO / PLLR
+ */
+ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC);
+ pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1UL ;
+
+ if(pllsource == 0x02UL) /* HSI used as PLL clock source */
+ {
+ pllvco = (HSI_VALUE / pllm);
+ }
+ else if(pllsource == 0x03UL) /* HSE used as PLL clock source */
+ {
+ pllvco = (HSE_VALUE / pllm);
+ }
+ else /* MSI used as PLL clock source */
+ {
+ pllvco = (msirange / pllm);
+ }
+
+ pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
+ pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1UL);
+
+ SystemCoreClock = pllvco/pllr;
+ break;
+
+ default:
+ SystemCoreClock = msirange;
+ break;
+ }
+
+ /* Compute HCLK clock frequency --------------------------------------------*/
+ /* Get HCLK1 prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)];
+ /* HCLK clock frequency */
+ SystemCoreClock = SystemCoreClock / tmp;
+
+}
+
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Project.eww b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Project.eww
index 217fa8e3f..cf5c06ee4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Project.eww
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Project.eww
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<workspace>
<project>
- <path>$WS_DIR$\Zigbee_OnOff_Coord.ewp</path>
+ <path>$WS_DIR$\Zigbee_OnOff_Server_Coord.ewp</path>
</project>
<batchBuild />
</workspace>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Zigbee_OnOff_Coord.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewd
index 6fce36ff1..33d856c67 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Zigbee_OnOff_Coord.ewd
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Zigbee_OnOff_Coord</name>
+ <name>Zigbee_OnOff_Server_Coord</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Zigbee_OnOff_Coord.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewp
index 98c059752..0cf246d1e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/EWARM/Zigbee_OnOff_Coord.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Zigbee_OnOff_Coord</name>
+ <name>Zigbee_OnOff_Server_Coord</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -283,7 +283,7 @@
<option>
<name>CCAllowList</name>
<version>1</version>
- <state>11111110</state>
+ <state>00000000</state>
</option>
<option>
<name>CCDebugInfo</name>
@@ -383,7 +383,7 @@
</option>
<option>
<name>CCOptLevel</name>
- <state>3</state>
+ <state>0</state>
</option>
<option>
<name>CCOptStrategy</name>
@@ -392,7 +392,7 @@
</option>
<option>
<name>CCOptLevelSlave</name>
- <state>3</state>
+ <state>0</state>
</option>
<option>
<name>CompilerMisraRules98</name>
@@ -1083,9 +1083,6 @@
<file>
<name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee.c</name>
</file>
- <file>
- <name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee_demo.c</name>
- </file>
</group>
<group>
<name>Target</name>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..1f886ff59
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,517 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : M4 core vector table of the STM32WB55xx devices for the
+;* IAR (EWARM) toolchain.
+;*
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == _iar_program_start,
+;* - Set the vector table entries with the exceptions ISR
+;* address.
+;* - Branches to main in the C library (which eventually
+;* calls main()).
+;* After Reset the Cortex-M4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;******************************************************************************
+;* @attention
+;*
+;* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+;* All rights reserved.</center></h2>
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+;
+;
+; The modules in this file are included in the libraries, and may be replaced
+; by any user-defined modules that define the PUBLIC symbol _program_start or
+; a user defined start symbol.
+; To override the cstartup defined in the library, simply add your modified
+; version to the workbench project.
+;
+; The vector table is normally located at address 0.
+; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
+; The name "__vector_table" has special meaning for C-SPY:
+; it is where the SP start value is found, and the NVIC vector
+; table register (VTOR) is initialized to this address if != 0.
+;
+; Cortex-M version
+;
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ PUBLIC __vector_table
+
+ DATA
+__vector_table
+ DCD sfe(CSTACK)
+ DCD Reset_Handler ; Reset Handler
+
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM Interrupt
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper, TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ THUMB
+
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:NOROOT:REORDER(2)
+Reset_Handler
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__iar_program_start
+ BX R0
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+NMI_Handler
+ B NMI_Handler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HardFault_Handler
+ B HardFault_Handler
+
+ PUBWEAK MemManage_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+MemManage_Handler
+ B MemManage_Handler
+
+ PUBWEAK BusFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+BusFault_Handler
+ B BusFault_Handler
+
+ PUBWEAK UsageFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+UsageFault_Handler
+ B UsageFault_Handler
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK DebugMon_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DebugMon_Handler
+ B DebugMon_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SysTick_Handler
+ B SysTick_Handler
+
+ PUBWEAK WWDG_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+WWDG_IRQHandler
+ B WWDG_IRQHandler
+
+ PUBWEAK PVD_PVM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PVD_PVM_IRQHandler
+ B PVD_PVM_IRQHandler
+
+ PUBWEAK TAMP_STAMP_LSECSS_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TAMP_STAMP_LSECSS_IRQHandler
+ B TAMP_STAMP_LSECSS_IRQHandler
+
+ PUBWEAK RTC_WKUP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_WKUP_IRQHandler
+ B RTC_WKUP_IRQHandler
+
+ PUBWEAK FLASH_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FLASH_IRQHandler
+ B FLASH_IRQHandler
+
+ PUBWEAK RCC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RCC_IRQHandler
+ B RCC_IRQHandler
+
+ PUBWEAK EXTI0_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI0_IRQHandler
+ B EXTI0_IRQHandler
+
+ PUBWEAK EXTI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI1_IRQHandler
+ B EXTI1_IRQHandler
+
+ PUBWEAK EXTI2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI2_IRQHandler
+ B EXTI2_IRQHandler
+
+ PUBWEAK EXTI3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI3_IRQHandler
+ B EXTI3_IRQHandler
+
+ PUBWEAK EXTI4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI4_IRQHandler
+ B EXTI4_IRQHandler
+
+ PUBWEAK DMA1_Channel1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel1_IRQHandler
+ B DMA1_Channel1_IRQHandler
+
+ PUBWEAK DMA1_Channel2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel2_IRQHandler
+ B DMA1_Channel2_IRQHandler
+
+ PUBWEAK DMA1_Channel3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel3_IRQHandler
+ B DMA1_Channel3_IRQHandler
+
+ PUBWEAK DMA1_Channel4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel4_IRQHandler
+ B DMA1_Channel4_IRQHandler
+
+ PUBWEAK DMA1_Channel5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel5_IRQHandler
+ B DMA1_Channel5_IRQHandler
+
+ PUBWEAK DMA1_Channel6_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel6_IRQHandler
+ B DMA1_Channel6_IRQHandler
+
+ PUBWEAK DMA1_Channel7_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel7_IRQHandler
+ B DMA1_Channel7_IRQHandler
+
+ PUBWEAK ADC1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+ADC1_IRQHandler
+ B ADC1_IRQHandler
+
+ PUBWEAK USB_HP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USB_HP_IRQHandler
+ B USB_HP_IRQHandler
+
+ PUBWEAK USB_LP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USB_LP_IRQHandler
+ B USB_LP_IRQHandler
+
+ PUBWEAK C2SEV_PWR_C2H_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+C2SEV_PWR_C2H_IRQHandler
+ B C2SEV_PWR_C2H_IRQHandler
+
+ PUBWEAK COMP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+COMP_IRQHandler
+ B COMP_IRQHandler
+
+ PUBWEAK EXTI9_5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI9_5_IRQHandler
+ B EXTI9_5_IRQHandler
+
+ PUBWEAK TIM1_BRK_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_BRK_IRQHandler
+ B TIM1_BRK_IRQHandler
+
+ PUBWEAK TIM1_UP_TIM16_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_UP_TIM16_IRQHandler
+ B TIM1_UP_TIM16_IRQHandler
+
+ PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_TRG_COM_TIM17_IRQHandler
+ B TIM1_TRG_COM_TIM17_IRQHandler
+
+ PUBWEAK TIM1_CC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_CC_IRQHandler
+ B TIM1_CC_IRQHandler
+
+ PUBWEAK TIM2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM2_IRQHandler
+ B TIM2_IRQHandler
+
+ PUBWEAK PKA_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PKA_IRQHandler
+ B PKA_IRQHandler
+
+ PUBWEAK I2C1_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_EV_IRQHandler
+ B I2C1_EV_IRQHandler
+
+ PUBWEAK I2C1_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_ER_IRQHandler
+ B I2C1_ER_IRQHandler
+
+ PUBWEAK I2C3_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C3_EV_IRQHandler
+ B I2C3_EV_IRQHandler
+
+ PUBWEAK I2C3_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C3_ER_IRQHandler
+ B I2C3_ER_IRQHandler
+
+ PUBWEAK SPI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI1_IRQHandler
+ B SPI1_IRQHandler
+
+ PUBWEAK SPI2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI2_IRQHandler
+ B SPI2_IRQHandler
+
+ PUBWEAK USART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USART1_IRQHandler
+ B USART1_IRQHandler
+
+ PUBWEAK LPUART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPUART1_IRQHandler
+ B LPUART1_IRQHandler
+
+ PUBWEAK SAI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SAI1_IRQHandler
+ B SAI1_IRQHandler
+
+ PUBWEAK TSC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TSC_IRQHandler
+ B TSC_IRQHandler
+
+ PUBWEAK EXTI15_10_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI15_10_IRQHandler
+ B EXTI15_10_IRQHandler
+
+ PUBWEAK RTC_Alarm_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_Alarm_IRQHandler
+ B RTC_Alarm_IRQHandler
+
+ PUBWEAK CRS_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+CRS_IRQHandler
+ B CRS_IRQHandler
+
+ PUBWEAK PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ B PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+
+ PUBWEAK IPCC_C1_RX_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+IPCC_C1_RX_IRQHandler
+ B IPCC_C1_RX_IRQHandler
+
+ PUBWEAK IPCC_C1_TX_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+IPCC_C1_TX_IRQHandler
+ B IPCC_C1_TX_IRQHandler
+
+ PUBWEAK HSEM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HSEM_IRQHandler
+ B HSEM_IRQHandler
+
+ PUBWEAK LPTIM1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPTIM1_IRQHandler
+ B LPTIM1_IRQHandler
+
+ PUBWEAK LPTIM2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPTIM2_IRQHandler
+ B LPTIM2_IRQHandler
+
+ PUBWEAK LCD_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LCD_IRQHandler
+ B LCD_IRQHandler
+
+ PUBWEAK QUADSPI_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+QUADSPI_IRQHandler
+ B QUADSPI_IRQHandler
+
+ PUBWEAK AES1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+AES1_IRQHandler
+ B AES1_IRQHandler
+
+ PUBWEAK AES2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+AES2_IRQHandler
+ B AES2_IRQHandler
+
+ PUBWEAK RNG_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RNG_IRQHandler
+ B RNG_IRQHandler
+
+ PUBWEAK FPU_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FPU_IRQHandler
+ B FPU_IRQHandler
+
+ PUBWEAK DMA2_Channel1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel1_IRQHandler
+ B DMA2_Channel1_IRQHandler
+
+ PUBWEAK DMA2_Channel2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel2_IRQHandler
+ B DMA2_Channel2_IRQHandler
+
+ PUBWEAK DMA2_Channel3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel3_IRQHandler
+ B DMA2_Channel3_IRQHandler
+
+ PUBWEAK DMA2_Channel4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel4_IRQHandler
+ B DMA2_Channel4_IRQHandler
+
+ PUBWEAK DMA2_Channel5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel5_IRQHandler
+ B DMA2_Channel5_IRQHandler
+
+ PUBWEAK DMA2_Channel6_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel6_IRQHandler
+ B DMA2_Channel6_IRQHandler
+
+ PUBWEAK DMA2_Channel7_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel7_IRQHandler
+ B DMA2_Channel7_IRQHandler
+
+ PUBWEAK DMAMUX1_OVR_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMAMUX1_OVR_IRQHandler
+ B DMAMUX1_OVR_IRQHandler
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/stm32wb55xx_flash_cm4.icf b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/stm32wb55xx_flash_cm4.icf
index 70aec4026..70aec4026 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/stm32wb55xx_flash_cm4.icf
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/stm32wb55xx_flash_cm4.icf
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.c
new file mode 100644
index 000000000..3f5a04de3
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.c
@@ -0,0 +1,561 @@
+/**
+ ******************************************************************************
+ * File Name : App/app_zigbee.c
+ * Description : Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "app_entry.h"
+#include "dbg_trace.h"
+#include "app_zigbee.h"
+#include "zigbee_interface.h"
+#include "shci.h"
+#include "stm_logging.h"
+#include "app_conf.h"
+#include "stm32wbxx_core_interface_def.h"
+#include "zigbee_types.h"
+#include "stm32_seq.h"
+
+#include <assert.h>
+#include "zcl/zcl.h"
+#include "zcl/zcl.onoff.h"
+#include "zcl/zcl.identify.h"
+
+/* Private defines -----------------------------------------------------------*/
+#define APP_ZIGBEE_STARTUP_FAIL_DELAY 500U
+#define SW1_ENDPOINT 17
+#define SW1_GROUP_ADDR 0x0001
+#define CHANNEL 13
+
+/* Private function prototypes -----------------------------------------------*/
+static void APP_ZIGBEE_StackLayersInit(void);
+static void APP_ZIGBEE_ConfigEndpoints(void);
+static void APP_ZIGBEE_NwkForm(void);
+static void APP_ZIGBEE_ConfigGroupAddr(void);
+
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
+
+static void Wait_Getting_Ack_From_M0(void);
+static void Receive_Ack_From_M0(void);
+static void Receive_Notification_From_M0(void);
+
+/* Private variables -----------------------------------------------*/
+static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
+static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
+static __IO uint32_t CptReceiveMsgFromM0 = 0;
+
+PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+struct zigbee_app_info {
+ bool has_init;
+ struct ZigBeeT *zb;
+ enum ZbStartType startupControl;
+ enum ZbStatusCodeT join_status;
+ uint32_t join_delay;
+ bool init_after_join;
+
+ struct ZbZclClusterT *onoff_server_1;
+};
+static struct zigbee_app_info zigbee_app_info;
+
+static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb);
+
+static const struct ZbZclAttrT onoff_server_attr_list[] = {
+ /* OnOff Server Attributes */
+ {
+ ZCL_ONOFF_ATTR_ONOFF, ZCL_DATATYPE_BOOLEAN,
+ ZCL_ATTR_FLAG_REPORTABLE | ZCL_ATTR_FLAG_PERSISTABLE | ZCL_ATTR_FLAG_DEFAULTABLE | ZCL_ATTR_FLAG_CB_NOTIFY, 0,
+ onoff_server_attr_cb, {0, 0}, {0, 0}
+ },
+};
+
+/* Functions Definition ------------------------------------------------------*/
+
+void APP_ZIGBEE_Init(void)
+{
+ SHCI_CmdStatus_t ZigbeeInitStatus;
+
+ APP_DBG("APP_ZIGBEE_Init");
+
+ /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
+ APP_ZIGBEE_CheckWirelessFirmwareInfo();
+
+ /* Register cmdbuffer */
+ APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
+
+ /* Init config buffer and call TL_ZIGBEE_Init */
+ APP_ZIGBEE_TL_INIT();
+
+ /* Register task */
+ /* Create the different tasks */
+ UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
+
+ /* Task associated with network creation process */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, UTIL_SEQ_RFU, APP_ZIGBEE_NwkForm);
+
+ /* Start the Zigbee on the CPU2 side */
+ ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(ZigbeeInitStatus);
+
+ /* Initialize Zigbee stack layers */
+ APP_ZIGBEE_StackLayersInit();
+
+} /* APP_ZIGBEE_Init */
+
+/**
+ * @brief Initialize Zigbee stack layers
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_StackLayersInit(void)
+{
+ APP_DBG("APP_ZIGBEE_StackLayersInit");
+
+ zigbee_app_info.zb = ZbInit(0U, NULL, NULL);
+ assert(zigbee_app_info.zb != NULL);
+
+ /* Create the endpoint and cluster(s) */
+ APP_ZIGBEE_ConfigEndpoints();
+
+ BSP_LED_Off(LED_RED);
+ BSP_LED_Off(LED_GREEN);
+ BSP_LED_Off(LED_BLUE);
+
+ /* Configure the joining parameters */
+ zigbee_app_info.join_status = 0x01; /* init to error status */
+ zigbee_app_info.join_delay = HAL_GetTick(); /* now */
+ zigbee_app_info.startupControl = ZbStartTypeJoin;
+
+ /* Initialization Complete */
+ zigbee_app_info.has_init = true;
+
+ /* run the task */
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+}
+
+static void APP_ZIGBEE_ConfigEndpoints(void)
+{
+ ZbApsmeAddEndpointReqT req;
+ ZbApsmeAddEndpointConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
+ req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
+
+ /* Endpoint: SW1_ENDPOINT */
+ req.endpoint = SW1_ENDPOINT;
+ ZbZclAddEndpoint(zigbee_app_info.zb, &req, &conf);
+ assert(conf.status == ZB_STATUS_SUCCESS);
+
+ /* OnOff Server */
+ zigbee_app_info.onoff_server_1 = ZbZclOnOffServerAlloc(zigbee_app_info.zb, SW1_ENDPOINT, NULL);
+ assert(zigbee_app_info.onoff_server_1 != NULL);
+ ZbZclAttrAppendList(zigbee_app_info.onoff_server_1, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
+ ZbZclClusterEndpointRegister(zigbee_app_info.onoff_server_1);
+
+} /* config_endpoints */
+
+/**
+ * @brief Handle Zigbee network forming and joining
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_NwkForm(void)
+{
+ if ((zigbee_app_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_app_info.join_delay))
+ {
+ struct ZbStartupT config;
+ enum ZbStatusCodeT status;
+
+ /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
+ ZbSetLogging(zigbee_app_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
+
+ /* Attempt to join a zigbee network */
+ ZbStartupConfigGetProDefaults(&config);
+
+ /* Set the centralized network */
+ APP_DBG("Network config : APP_STARTUP_CENTRALIZED_COORD");
+ config.startupControl = ZbStartTypeForm;
+
+ /* Using the default HA preconfigured Link Key */
+ memcpy(config.security.preconfiguredLinkKey, sec_key_ha, ZB_SEC_KEYSIZE);
+
+ config.channelList.count = 1;
+ config.channelList.list[0].page = 0;
+ config.channelList.list[0].channelMask = 1 << CHANNEL; /*Channel in use */
+
+ /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
+ * a blocking call on the M4. */
+ status = ZbStartupWait(zigbee_app_info.zb, &config);
+
+ APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
+ zigbee_app_info.join_status = status;
+
+ if (status == ZB_STATUS_SUCCESS) {
+ zigbee_app_info.join_delay = 0U;
+ zigbee_app_info.init_after_join = true;
+ BSP_LED_On(LED_BLUE);
+ }
+ else
+ {
+ APP_DBG("Startup failed, re-attempting to form a network after a short delay (%d ms)", APP_ZIGBEE_STARTUP_FAIL_DELAY);
+ zigbee_app_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
+ }
+ }
+
+ /* If Network forming/joining was not successful reschedule the current task to retry the process */
+ if (zigbee_app_info.join_status != ZB_STATUS_SUCCESS)
+ {
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+ }
+ else
+ {
+ zigbee_app_info.init_after_join = false;
+
+ /* Assign ourselves to the group addresses */
+ APP_ZIGBEE_ConfigGroupAddr();
+
+ /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
+ uint32_t bcast_timeout = 3;
+ ZbNwkSet(zigbee_app_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
+ }
+}
+
+/**
+ * @brief Set group addressing mode
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_ConfigGroupAddr(void)
+{
+ ZbApsmeAddGroupReqT req;
+ ZbApsmeAddGroupConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.endpt = SW1_ENDPOINT;
+ req.groupAddr = SW1_GROUP_ADDR;
+ ZbApsmeAddGroupReq(zigbee_app_info.zb, &req, &conf);
+
+} /* APP_ZIGBEE_ConfigGroupAddr */
+
+static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb)
+{
+ uint8_t endpoint;
+ uint8_t attrVal;
+
+ endpoint = ZbZclClusterGetEndpoint(clusterPtr);
+ APP_DBG("onoff_server_attr_cb : endpoint = %d", endpoint);
+ switch (cb->info->attributeId) {
+ case ZCL_ONOFF_ATTR_ONOFF:
+ if (endpoint == SW1_ENDPOINT) {
+ if (ZbZclAttrRead(zigbee_app_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
+ if (attrVal != 0) {
+ APP_DBG("LED_RED ON");
+ BSP_LED_On(LED_RED);
+ }
+ else {
+ APP_DBG("LED_RED OFF");
+ BSP_LED_Off(LED_RED);
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ } /* switch */
+ return ZCL_STATUS_SUCCESS;
+} /* onoff_server_attr_notify */
+
+/*************************************************************
+ * ZbStartupWait Blocking Call
+ *************************************************************/
+struct ZbStartupWaitInfo {
+ bool active;
+ enum ZbStatusCodeT status;
+};
+
+static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
+{
+ struct ZbStartupWaitInfo *info = cb_arg;
+
+ info->status = status;
+ info->active = false;
+} /* ZbStartupWaitCb */
+
+enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
+{
+ struct ZbStartupWaitInfo *info;
+ enum ZbStatusCodeT status;
+
+ info = malloc(sizeof(struct ZbStartupWaitInfo));
+ if (info == NULL) {
+ return ZB_STATUS_ALLOC_FAIL;
+ }
+ memset(info, 0, sizeof(struct ZbStartupWaitInfo));
+
+ info->active = true;
+ status = ZbStartup(zb, config, ZbStartupWaitCb, info);
+ if (status != ZB_STATUS_SUCCESS) {
+ info->active = false;
+ return status;
+ }
+ while (info->active) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ }
+ status = info->status;
+ free(info);
+ return status;
+} /* ZbStartupWait */
+
+/**
+ * @brief Trace the error or the warning reported.
+ * @param ErrId :
+ * @param ErrCode
+ * @retval None
+ */
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
+{
+ switch (ErrId) {
+ default:
+ APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
+ break;
+ }
+} /* APP_ZIGBEE_Error */
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+/**
+ * @brief Warn the user that an error has occurred.In this case,
+ * the LEDs on the Board will start blinking.
+ *
+ * @param pMess : Message associated to the error.
+ * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
+ * @retval None
+ */
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
+{
+ APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
+ while (1U == 1U) {
+ BSP_LED_Toggle(LED1);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED2);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED3);
+ HAL_Delay(500U);
+ }
+} /* APP_ZIGBEE_TraceError */
+
+/**
+ * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
+ * and display associated informations
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
+{
+ WirelessFwInfo_t wireless_info_instance;
+ WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
+
+ if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ }
+ else {
+ APP_DBG("**********************************************************");
+ APP_DBG("WIRELESS COPROCESSOR FW:");
+ /* Print version */
+ APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
+
+ switch (p_wireless_info->StackType) {
+ case INFO_STACK_TYPE_ZIGBEE:
+ APP_DBG("FW Type : Zigbee stack");
+ break;
+ default:
+ /* No Zigbee device supported ! */
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ break;
+ }
+ APP_DBG("**********************************************************");
+ }
+} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
+{
+ p_ZIGBEE_otcmdbuffer = p_buffer;
+} /* APP_ZIGBEE_RegisterCmdBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+} /* ZIGBEE_Get_OTCmdPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
+} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
+} /* ZIGBEE_Get_NotificationPayloadBuffer */
+
+/**
+ * @brief This function is used to transfer the commands from the M4 to the M0.
+ *
+ * @param None
+ * @return None
+ */
+void ZIGBEE_CmdTransfer(void)
+{
+ Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+
+ /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
+ /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
+ * + ID (4 bytes) + Size (4 bytes) */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
+
+ TL_ZIGBEE_SendAppliCmdToM0();
+
+ /* Wait completion of cmd */
+ Wait_Getting_Ack_From_M0();
+} /* ZIGBEE_CmdTransfer */
+
+/**
+ * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
+ *
+ *
+ * @param Otbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
+{
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(Otbuffer);
+
+ Receive_Ack_From_M0();
+} /* TL_ZIGBEE_CmdEvtReceived */
+
+/**
+ * @brief This function is called when notification from M0+ is received.
+ *
+ * @param Notbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
+{
+ p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
+
+ Receive_Notification_From_M0();
+} /* TL_ZIGBEE_NotReceived */
+
+/**
+ * @brief This function is called before sending any ot command to the M0
+ * core. The purpose of this function is to be able to check if
+ * there are no notifications coming from the M0 core which are
+ * pending before sending a new ot command.
+ * @param None
+ * @retval None
+ */
+void Pre_ZigbeeCmdProcessing(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+} /* Pre_ZigbeeCmdProcessing */
+
+/**
+ * @brief This function waits for getting an acknowledgment from the M0.
+ *
+ * @param None
+ * @retval None
+ */
+static void Wait_Getting_Ack_From_M0(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Wait_Getting_Ack_From_M0 */
+
+/**
+ * @brief Receive an acknowledgment from the M0+ core.
+ * Each command send by the M4 to the M0 are acknowledged.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Ack_From_M0(void)
+{
+ UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Receive_Ack_From_M0 */
+
+/**
+ * @brief Receive a notification from the M0+ through the IPCC.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Notification_From_M0(void)
+{
+ CptReceiveMsgFromM0++;
+ UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
+} /* Receive_Notification_From_M0 */
+
+/**
+ * @brief Perform initialization of TL for Zigbee.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_TL_INIT(void)
+{
+ ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
+ TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
+} /* APP_ZIGBEE_TL_INIT */
+
+/**
+ * @brief Process the messages coming from the M0.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_ProcessMsgM0ToM4(void)
+{
+ if (CptReceiveMsgFromM0 != 0) {
+ /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
+ if (CptReceiveMsgFromM0 > 1U) {
+ APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
+ }
+ else {
+ Zigbee_CallBackProcessing();
+ }
+ /* Reset counter */
+ CptReceiveMsgFromM0 = 0;
+ }
+} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.h
index dd907ec23..dd907ec23 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/STM32_WPAN/App/app_zigbee.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/Target/hw_ipcc.c
index ab7f75b9a..ab7f75b9a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/Target/hw_ipcc.c
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/readme.txt
new file mode 100644
index 000000000..586292d3b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Coord/readme.txt
@@ -0,0 +1,133 @@
+/**
+ @page Zigbee_OnOff_Server_Coord application
+
+ @verbatim
+ ******************************************************************************
+ * @file Zigbee/Zigbee_OnOff_Server_Coord/readme.txt
+ * @author MCD Application Team
+ * @brief Description of the Zigbee OnOff Cluster application as a client
+ * using a centralized network.
+ ******************************************************************************
+ *
+ * Copyright (c) 2019 STMicroelectronics. All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ @endverbatim
+
+@par Application Description
+
+How to use OnOff cluster as a server on a centralized Zigbee network.
+
+The purpose of this application is to show how to create a Zigbee centralized network, and
+how to communicate from one node to another one using the OnOff cluster. Once the Zigbee mesh
+network is created, the user can send requests from the client to the server through the push button
+in order to make the LED toggling.
+
+For this application it is requested to have:
+
+- 1 STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Server_Coord
+
+- 1 or more STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Client_Router
+
+
+ Device 1 Device 2
+
+ --------- ---------
+ | | ZbZclOnOffClientToggleReq | |
+ PushB=>|Client | -----------------------------------> |Server | =>LED
+ | | | |
+ | | | |
+ -------- ---------
+
+To setup the application :
+
+ a) Open the project, build it and load your generated application on your STM32WB devices.
+
+ To run the application :
+
+ a) Start the first board. It must be the coordinator of the Zigbee network so in this demo application it is
+ the device running Zigbee_OnOff_Server_Coord application (Device2 in the above diagram).
+ Wait for the Blue LED (LED1) ON.
+ Start the second board. This board is configured as Zigbee router and will attached to the network created
+ by the coordinator. Do the same for the other boards if applicable.
+
+ b) At this stage, the Zigbee network is automatically created and BLUE LED (LED1) is ON on all devices.
+ it is now possible to send OnOff Cluster commands from the client to the server in multicast mode
+ by pressing on the SW1 push button.
+ You must see the LED1 toggling on the server side.
+
+
+ ---------- -----------
+ |Device 1 |............|Device 2 |
+ |(distr.) | |(distr.) |
+ ----------- -----------
+ . .
+ . .
+ . .
+ ----------- .
+ |Device 3 |...................
+ |(distr.) |
+ -----------
+
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
+@par Hardware and Software environment
+
+ - This example runs on STM32WB55xx devices.
+
+ - This example has been tested with an STMicroelectronics STM32WB55RG_Nucleo
+ board and can be easily tailored to any other supported device
+ and development board.
+
+ - On STM32WB55RG_Nucleo, the jumpers must be configured as described
+ in this section. Starting from the top left position up to the bottom
+ right position, the jumpers on the Board must be set as follows:
+
+ CN11: GND [OFF]
+ JP4: VDDRF [ON]
+ JP6: VC0 [ON]
+ JP2: +3V3 [ON]
+ JP1: USB_STL [ON] All others [OFF]
+ CN12: GND [OFF]
+ CN7: <All> [OFF]
+ JP3: VDD_MCU [ON]
+ JP5: GND [OFF] All others [ON]
+ CN10: <All> [OFF]
+
+
+@par How to use it ?
+
+=> Loading of the stm32wb5x_Zigbee_FFD_fw.bin binary
+
+ This application requests having the stm32wb5x_Zigbee_FFD_fw.bin binary flashed on the Wireless Coprocessor.
+ If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
+ All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory.
+ Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
+ Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the detailed procedure to change the
+ Wireless Coprocessor binary.
+
+=> Getting traces
+ To get the traces you need to connect your Board to the Hyperterminal (through the STLink Virtual COM Port).
+ The UART must be configured as follows:
+
+ - BaudRate = 115200 baud
+ - Word Length = 8 Bits
+ - Stop Bit = 1 bit
+ - Parity = none
+ - Flow control = none
+
+=> Running the application
+
+ Refer to the Application description at the beginning of this readme.txt
+
+ * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_common.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_common.h
new file mode 100644
index 000000000..4defc5d7a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_common.h
@@ -0,0 +1,114 @@
+/**
+ ******************************************************************************
+ * File Name : app_common.h
+ * Description : App Common application configuration file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_COMMON_H
+#define APP_COMMON_H
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stdint.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "app_conf.h"
+
+ /* -------------------------------- *
+ * Basic definitions *
+ * -------------------------------- */
+
+#undef NULL
+#define NULL 0
+
+#undef FALSE
+#define FALSE 0
+
+#undef TRUE
+#define TRUE (!0)
+
+ /* -------------------------------- *
+ * Critical Section definition *
+ * -------------------------------- */
+#define BACKUP_PRIMASK() uint32_t primask_bit= __get_PRIMASK()
+#define DISABLE_IRQ() __disable_irq()
+#define RESTORE_PRIMASK() __set_PRIMASK(primask_bit)
+
+ /* -------------------------------- *
+ * Macro delimiters *
+ * -------------------------------- */
+
+#define M_BEGIN do {
+
+#define M_END } while(0)
+
+ /* -------------------------------- *
+ * Some useful macro definitions *
+ * -------------------------------- */
+
+#define MAX( x, y ) (((x)>(y))?(x):(y))
+
+#define MIN( x, y ) (((x)<(y))?(x):(y))
+
+#define MODINC( a, m ) M_BEGIN (a)++; if ((a)>=(m)) (a)=0; M_END
+
+#define MODDEC( a, m ) M_BEGIN if ((a)==0) (a)=(m); (a)--; M_END
+
+#define MODADD( a, b, m ) M_BEGIN (a)+=(b); if ((a)>=(m)) (a)-=(m); M_END
+
+#define MODSUB( a, b, m ) MODADD( a, (m)-(b), m )
+
+#define PAUSE( t ) M_BEGIN \
+ __IO int _i; \
+ for ( _i = t; _i > 0; _i -- ); \
+ M_END
+
+#define DIVF( x, y ) ((x)/(y))
+
+#define DIVC( x, y ) (((x)+(y)-1)/(y))
+
+#define DIVR( x, y ) (((x)+((y)/2))/(y))
+
+#define SHRR( x, n ) ((((x)>>((n)-1))+1)>>1)
+
+#define BITN( w, n ) (((w)[(n)/32] >> ((n)%32)) & 1)
+
+#define BITNSET( w, n, b ) M_BEGIN (w)[(n)/32] |= ((U32)(b))<<((n)%32); M_END
+
+ /* -------------------------------- *
+ * Compiler *
+ * -------------------------------- */
+#define PLACE_IN_SECTION( __x__ ) __attribute__((section (__x__)))
+
+#ifdef WIN32
+#define ALIGN(n)
+#else
+#define ALIGN(n) __attribute__((aligned(n)))
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*APP_COMMON_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_conf.h
index 6d9144c46..ff55d7800 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Inc/app_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_conf.h
@@ -279,13 +279,13 @@ typedef enum
*/
typedef enum {
- CFG_TASK_MSG_FROM_M0_TO_M4,
- CFG_TASK_ZIGBEE_APP,
- CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_MSG_FROM_M0_TO_M4,
+ CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_ZIGBEE_NETWORK_FORM,
#if (CFG_USB_INTERFACE_ENABLE != 0)
- CFG_TASK_VCP_SEND_DATA,
+ CFG_TASK_VCP_SEND_DATA,
#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
- CFG_TASK_NBR /**< Shall be last in the list */
+ CFG_TASK_NBR /**< Shall be last in the list */
} CFG_IdleTask_Id_t;
/* Scheduler types and defines */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_entry.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_entry.h
new file mode 100644
index 000000000..48c467aaa
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/app_entry.h
@@ -0,0 +1,68 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : app_entry.h
+ * Description : App entry configuration file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_ENTRY_H
+#define APP_ENTRY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+ /* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported variables --------------------------------------------------------*/
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/* Exported macros ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions ---------------------------------------------*/
+ void APPE_Init( void );
+/* USER CODE BEGIN EF */
+
+/* USER CODE END EF */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*APP_ENTRY_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/hw_conf.h
new file mode 100644
index 000000000..8409edd16
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/hw_conf.h
@@ -0,0 +1,219 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : hw_conf.h
+ * Description : Hardware configuration file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef HW_CONF_H
+#define HW_CONF_H
+
+/******************************************************************************
+ * Semaphores
+ * THIS SHALL NO BE CHANGED AS THESE SEMAPHORES ARE USED AS WELL ON THE CM0+
+ *****************************************************************************/
+/* Index of the semaphore used to manage the entry Stop Mode procedure */
+#define CFG_HW_ENTRY_STOP_MODE_SEMID 4
+
+/* Index of the semaphore used to access the RCC */
+#define CFG_HW_RCC_SEMID 3
+
+/* Index of the semaphore used to access the FLASH */
+#define CFG_HW_FLASH_SEMID 2
+
+/* Index of the semaphore used to access the PKA */
+#define CFG_HW_PKA_SEMID 1
+
+/* Index of the semaphore used to access the RNG */
+#define CFG_HW_RNG_SEMID 0
+
+/******************************************************************************
+ * HW TIMER SERVER
+ *****************************************************************************/
+/**
+ * The user may define the maximum number of virtual timers supported.
+ * It shall not exceed 255
+ */
+#define CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER 6
+
+/**
+ * The user may define the priority in the NVIC of the RTC_WKUP interrupt handler that is used to manage the
+ * wakeup timer.
+ * This setting is the preemptpriority part of the NVIC.
+ */
+#define CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO 3
+
+/**
+ * The user may define the priority in the NVIC of the RTC_WKUP interrupt handler that is used to manage the
+ * wakeup timer.
+ * This setting is the subpriority part of the NVIC. It does not exist on all processors. When it is not supported
+ * on the CPU, the setting is ignored
+ */
+#define CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO 0
+
+/**
+ * Define a critical section in the Timer server
+ * The Timer server does not support the API to be nested
+ * The Application shall either:
+ * a) Ensure this will never happen
+ * b) Define the critical section
+ * The default implementations is masking all interrupts using the PRIMASK bit
+ * The TimerServer driver uses critical sections to avoid context corruption. This is achieved with the macro
+ * TIMER_ENTER_CRITICAL_SECTION and TIMER_EXIT_CRITICAL_SECTION. When CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION is set
+ * to 1, all STM32 interrupts are masked with the PRIMASK bit of the CortexM CPU. It is possible to use the BASEPRI
+ * register of the CortexM CPU to keep allowed some interrupts with high priority. In that case, the user shall
+ * re-implement TIMER_ENTER_CRITICAL_SECTION and TIMER_EXIT_CRITICAL_SECTION and shall make sure that no TimerServer
+ * API are called when the TIMER critical section is entered
+ */
+#define CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION 1
+
+/**
+ * This value shall reflect the maximum delay there could be in the application between the time the RTC interrupt
+ * is generated by the Hardware and the time when the RTC interrupt handler is called. This time is measured in
+ * number of RTCCLK ticks.
+ * A relaxed timing would be 10ms
+ * When the value is too short, the timerserver will not be able to count properly and all timeout may be random.
+ * When the value is too long, the device may wake up more often than the most optimal configuration. However, the
+ * impact on power consumption would be marginal (unless the value selected is extremely too long). It is strongly
+ * recommended to select a value large enough to make sure it is not too short to ensure reliability of the system
+ * as this will have marginal impact on low power mode
+ */
+#define CFG_HW_TS_RTC_HANDLER_MAX_DELAY ( 10 * (LSI_VALUE/1000) )
+
+ /**
+ * Interrupt ID in the NVIC of the RTC Wakeup interrupt handler
+ * It shall be type of IRQn_Type
+ */
+#define CFG_HW_TS_RTC_WAKEUP_HANDLER_ID RTC_WKUP_IRQn
+
+/******************************************************************************
+ * HW UART
+ *****************************************************************************/
+
+#define CFG_HW_LPUART1_ENABLED 1
+#define CFG_HW_LPUART1_DMA_TX_SUPPORTED 1
+
+#define CFG_HW_USART1_ENABLED 1
+#define CFG_HW_USART1_DMA_TX_SUPPORTED 1
+
+/**
+ * LPUART1
+ */
+#define CFG_HW_LPUART1_PREEMPTPRIORITY 0x0F
+#define CFG_HW_LPUART1_SUBPRIORITY 0
+
+/** < The application shall check the selected source clock is enable */
+#define CFG_HW_LPUART1_SOURCE_CLOCK RCC_LPUART1CLKSOURCE_SYSCLK
+
+#define CFG_HW_LPUART1_BAUDRATE 115200
+#define CFG_HW_LPUART1_WORDLENGTH UART_WORDLENGTH_8B
+#define CFG_HW_LPUART1_STOPBITS UART_STOPBITS_1
+#define CFG_HW_LPUART1_PARITY UART_PARITY_NONE
+#define CFG_HW_LPUART1_HWFLOWCTL UART_HWCONTROL_NONE
+#define CFG_HW_LPUART1_MODE UART_MODE_TX_RX
+#define CFG_HW_LPUART1_ADVFEATUREINIT UART_ADVFEATURE_NO_INIT
+#define CFG_HW_LPUART1_OVERSAMPLING UART_OVERSAMPLING_8
+
+#define CFG_HW_LPUART1_TX_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_LPUART1_TX_PORT GPIOA
+#define CFG_HW_LPUART1_TX_PIN GPIO_PIN_2
+#define CFG_HW_LPUART1_TX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_TX_PULL GPIO_NOPULL
+#define CFG_HW_LPUART1_TX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_TX_ALTERNATE GPIO_AF8_LPUART1
+
+#define CFG_HW_LPUART1_RX_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_LPUART1_RX_PORT GPIOA
+#define CFG_HW_LPUART1_RX_PIN GPIO_PIN_3
+#define CFG_HW_LPUART1_RX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_RX_PULL GPIO_NOPULL
+#define CFG_HW_LPUART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_RX_ALTERNATE GPIO_AF8_LPUART1
+
+#define CFG_HW_LPUART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOvalueNotSetted_CLK_ENABLE
+#define CFG_HW_LPUART1_CTS_PORT GPIOvalueNotSetted
+#define CFG_HW_LPUART1_CTS_PIN GPIO_PIN_valueNotSetted
+#define CFG_HW_LPUART1_CTS_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_CTS_PULL GPIO_PULLDOWN
+#define CFG_HW_LPUART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_CTS_ALTERNATE GPIO_AFvalueNotSetted_LPUART1
+
+#define CFG_HW_LPUART1_DMA_TX_PREEMPTPRIORITY 0x0F
+#define CFG_HW_LPUART1_DMA_TX_SUBPRIORITY 0
+
+#define CFG_HW_LPUART1_DMAMUX_CLK_ENABLE __HAL_RCC_DMAMUX1_CLK_ENABLE
+#define CFG_HW_LPUART1_DMA_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE
+#define CFG_HW_LPUART1_TX_DMA_REQ DMA_REQUEST_LPUART1_TX
+#define CFG_HW_LPUART1_TX_DMA_CHANNEL DMA1_CHANNEL_1
+#define CFG_HW_LPUART1_TX_DMA_IRQn DMA1_CHANNEL_1_IRQn
+#define CFG_HW_LPUART1_DMA_TX_IRQHandler DMA1_CHANNEL_1_IRQHandler
+
+/**
+ * UART1
+ */
+#define CFG_HW_USART1_PREEMPTPRIORITY 0x0F
+#define CFG_HW_USART1_SUBPRIORITY 0
+
+/** < The application shall check the selected source clock is enable */
+#define CFG_HW_USART1_SOURCE_CLOCK RCC_USART1CLKSOURCE_SYSCLK
+
+#define CFG_HW_USART1_BAUDRATE 115200
+#define CFG_HW_USART1_WORDLENGTH UART_WORDLENGTH_8B
+#define CFG_HW_USART1_STOPBITS UART_STOPBITS_1
+#define CFG_HW_USART1_PARITY UART_PARITY_NONE
+#define CFG_HW_USART1_HWFLOWCTL UART_HWCONTROL_NONE
+#define CFG_HW_USART1_MODE UART_MODE_TX_RX
+#define CFG_HW_USART1_ADVFEATUREINIT UART_ADVFEATURE_NO_INIT
+#define CFG_HW_USART1_OVERSAMPLING UART_OVERSAMPLING_8
+
+#define CFG_HW_USART1_TX_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define CFG_HW_USART1_TX_PORT GPIOB
+#define CFG_HW_USART1_TX_PIN GPIO_PIN_6
+#define CFG_HW_USART1_TX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_TX_PULL GPIO_NOPULL
+#define CFG_HW_USART1_TX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_TX_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_RX_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define CFG_HW_USART1_RX_PORT GPIOB
+#define CFG_HW_USART1_RX_PIN GPIO_PIN_7
+#define CFG_HW_USART1_RX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_RX_PULL GPIO_NOPULL
+#define CFG_HW_USART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_RX_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_USART1_CTS_PORT GPIOA
+#define CFG_HW_USART1_CTS_PIN GPIO_PIN_11
+#define CFG_HW_USART1_CTS_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_CTS_PULL GPIO_PULLDOWN
+#define CFG_HW_USART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_CTS_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_DMA_TX_PREEMPTPRIORITY 0x0F
+#define CFG_HW_USART1_DMA_TX_SUBPRIORITY 0
+
+#define CFG_HW_USART1_DMAMUX_CLK_ENABLE __HAL_RCC_DMAMUX1_CLK_ENABLE
+#define CFG_HW_USART1_DMA_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE
+#define CFG_HW_USART1_TX_DMA_REQ DMA_REQUEST_USART1_TX
+#define CFG_HW_USART1_TX_DMA_CHANNEL DMA1_CHANNEL_2
+#define CFG_HW_USART1_TX_DMA_IRQn DMA1_CHANNEL_2_IRQn
+#define CFG_HW_USART1_DMA_TX_IRQHandler DMA1_CHANNEL_2_IRQHandler
+
+#endif /*HW_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/hw_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/hw_if.h
new file mode 100644
index 000000000..271a222a9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/hw_if.h
@@ -0,0 +1,250 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file hw_if.h
+ * @author MCD Application Team
+ * @brief Hardware Interface
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef HW_IF_H
+#define HW_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /* Includes ------------------------------------------------------------------*/
+#include "stm32wbxx.h"
+#include "stm32wbxx_ll_exti.h"
+#include "stm32wbxx_ll_system.h"
+#include "stm32wbxx_ll_rcc.h"
+#include "stm32wbxx_ll_ipcc.h"
+#include "stm32wbxx_ll_bus.h"
+#include "stm32wbxx_ll_pwr.h"
+#include "stm32wbxx_ll_cortex.h"
+#include "stm32wbxx_ll_utils.h"
+#include "stm32wbxx_ll_hsem.h"
+#include "stm32wbxx_ll_gpio.h"
+#include "stm32wbxx_ll_rtc.h"
+
+#ifdef USE_STM32WBXX_USB_DONGLE
+#include "stm32wbxx_usb_dongle.h"
+#endif
+#ifdef USE_STM32WBXX_NUCLEO
+#include "stm32wbxx_nucleo.h"
+#endif
+#ifdef USE_X_NUCLEO_EPD
+#include "x_nucleo_epd.h"
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+ /******************************************************************************
+ * HW UART
+ ******************************************************************************/
+ typedef enum
+ {
+ hw_uart1,
+ hw_uart2,
+ hw_lpuart1,
+ } hw_uart_id_t;
+
+ typedef enum
+ {
+ hw_uart_ok,
+ hw_uart_error,
+ hw_uart_busy,
+ hw_uart_to,
+ } hw_status_t;
+
+ void HW_UART_Init(hw_uart_id_t hw_uart_id);
+ void HW_UART_Receive_IT(hw_uart_id_t hw_uart_id, uint8_t *pData, uint16_t Size, void (*Callback)(void));
+ void HW_UART_Transmit_IT(hw_uart_id_t hw_uart_id, uint8_t *pData, uint16_t Size, void (*Callback)(void));
+ hw_status_t HW_UART_Transmit(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, uint32_t timeout);
+ hw_status_t HW_UART_Transmit_DMA(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*Callback)(void));
+ void HW_UART_Interrupt_Handler(hw_uart_id_t hw_uart_id);
+ void HW_UART_DMA_Interrupt_Handler(hw_uart_id_t hw_uart_id);
+
+ /******************************************************************************
+ * HW TimerServer
+ ******************************************************************************/
+ /* Exported types ------------------------------------------------------------*/
+ /**
+ * This setting is used when standby mode is supported.
+ * hw_ts_InitMode_Limited should be used when the device restarts from Standby Mode. In that case, the Timer Server does
+ * not re-initialized its context. Only the Hardware register which content has been lost is reconfigured
+ * Otherwise, hw_ts_InitMode_Full should be requested (Start from Power ON) and everything is re-initialized.
+ */
+ typedef enum
+ {
+ hw_ts_InitMode_Full,
+ hw_ts_InitMode_Limited,
+ } HW_TS_InitMode_t;
+
+ /**
+ * When a Timer is created as a SingleShot timer, it is not automatically restarted when the timeout occurs. However,
+ * the timer is kept reserved in the list and could be restarted at anytime with HW_TS_Start()
+ *
+ * When a Timer is created as a Repeated timer, it is automatically restarted when the timeout occurs.
+ */
+ typedef enum
+ {
+ hw_ts_SingleShot,
+ hw_ts_Repeated
+ } HW_TS_Mode_t;
+
+ /**
+ * hw_ts_Successful is returned when a Timer has been successfully created with HW_TS_Create(). Otherwise, hw_ts_Failed
+ * is returned. When hw_ts_Failed is returned, that means there are not enough free slots in the list to create a
+ * Timer. In that case, CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER should be increased
+ */
+ typedef enum
+ {
+ hw_ts_Successful,
+ hw_ts_Failed,
+ }HW_TS_ReturnStatus_t;
+
+ typedef void (*HW_TS_pTimerCb_t)(void);
+
+ /**
+ * @brief Initialize the timer server
+ * This API shall be called by the application before any timer is requested to the timer server. It
+ * configures the RTC module to be connected to the LSI input clock.
+ *
+ * @param TimerInitMode: When the device restarts from Standby, it should request hw_ts_InitMode_Limited so that the
+ * Timer context is not re-initialized. Otherwise, hw_ts_InitMode_Full should be requested
+ * @param hrtc: RTC Handle
+ * @retval None
+ */
+ void HW_TS_Init(HW_TS_InitMode_t TimerInitMode, RTC_HandleTypeDef *hrtc);
+
+ /**
+ * @brief Interface to create a virtual timer
+ * The user shall call this API to create a timer. Once created, the timer is reserved to the module until it
+ * has been deleted. When creating a timer, the user shall specify the mode (single shot or repeated), the
+ * callback to be notified when the timer expires and a module ID to identify in the timer interrupt handler
+ * which module is concerned. In return, the user gets a timer ID to handle it.
+ *
+ * @param TimerProcessID: This is an identifier provided by the user and returned in the callback to allow
+ * identification of the requester
+ * @param pTimerId: Timer Id returned to the user to request operation (start, stop, delete)
+ * @param TimerMode: Mode of the virtual timer (Single shot or repeated)
+ * @param pTimerCallBack: Callback when the virtual timer expires
+ * @retval HW_TS_ReturnStatus_t: Return whether the creation is sucessfull or not
+ */
+ HW_TS_ReturnStatus_t HW_TS_Create(uint32_t TimerProcessID, uint8_t *pTimerId, HW_TS_Mode_t TimerMode, HW_TS_pTimerCb_t pTimerCallBack);
+
+ /**
+ * @brief Stop a virtual timer
+ * This API may be used to stop a running timer. A timer which is stopped is move to the pending state.
+ * A pending timer may be restarted at any time with a different timeout value but the mode cannot be changed.
+ * Nothing is done when it is called to stop a timer which has been already stopped
+ *
+ * @param TimerID: Id of the timer to stop
+ * @retval None
+ */
+ void HW_TS_Stop(uint8_t TimerID);
+
+ /**
+ * @brief Start a virtual timer
+ * This API shall be used to start a timer. The timeout value is specified and may be different each time.
+ * When the timer is in the single shot mode, it will move to the pending state when it expires. The user may
+ * restart it at any time with a different timeout value. When the timer is in the repeated mode, it always
+ * stay in the running state. When the timer expires, it will be restarted with the same timeout value.
+ * This API shall not be called on a running timer.
+ *
+ * @param TimerID: The ID Id of the timer to start
+ * @param timeout_ticks: Number of ticks of the virtual timer (Maximum value is (0xFFFFFFFF-0xFFFF = 0xFFFF0000)
+ * @retval None
+ */
+ void HW_TS_Start(uint8_t TimerID, uint32_t timeout_ticks);
+
+ /**
+ * @brief Delete a virtual timer from the list
+ * This API should be used when a timer is not needed anymore by the user. A deleted timer is removed from
+ * the timer list managed by the timer server. It cannot be restarted again. The user has to go with the
+ * creation of a new timer if required and may get a different timer id
+ *
+ * @param TimerID: The ID of the timer to remove from the list
+ * @retval None
+ */
+ void HW_TS_Delete(uint8_t TimerID);
+
+ /**
+ * @brief Schedule the timer list on the timer interrupt handler
+ * This interrupt handler shall be called by the application in the RTC interrupt handler. This handler takes
+ * care of clearing all status flag required in the RTC and EXTI peripherals
+ *
+ * @param None
+ * @retval None
+ */
+ void HW_TS_RTC_Wakeup_Handler(void);
+
+ /**
+ * @brief Return the number of ticks to count before the interrupt
+ * This API returns the number of ticks left to be counted before an interrupt is generated by the
+ * Timer Server. This API may be used by the application for power management optimization. When the system
+ * enters low power mode, the mode selection is a tradeoff between the wakeup time where the CPU is running
+ * and the time while the CPU will be kept in low power mode before next wakeup. The deeper is the
+ * low power mode used, the longer is the wakeup time. The low power mode management considering wakeup time
+ * versus time in low power mode is implementation specific
+ * When the timer is disabled (No timer in the list), it returns 0xFFFF
+ *
+ * @param None
+ * @retval The number of ticks left to count
+ */
+ uint16_t HW_TS_RTC_ReadLeftTicksToCount(void);
+
+ /**
+ * @brief Notify the application that a registered timer has expired
+ * This API shall be implemented by the user application.
+ * This API notifies the application that a timer expires. This API is running in the RTC Wakeup interrupt
+ * context. The application may implement an Operating System to change the context priority where the timer
+ * callback may be handled. This API provides the module ID to identify which module is concerned and to allow
+ * sending the information to the correct task
+ *
+ * @param TimerProcessID: The TimerProcessId associated with the timer when it has been created
+ * @param TimerID: The TimerID of the expired timer
+ * @param pTimerCallBack: The Callback associated with the timer when it has been created
+ * @retval None
+ */
+ void HW_TS_RTC_Int_AppNot(uint32_t TimerProcessID, uint8_t TimerID, HW_TS_pTimerCb_t pTimerCallBack);
+
+ /**
+ * @brief Notify the application that the wakeupcounter has been updated
+ * This API should be implemented by the user application
+ * This API notifies the application that the counter has been updated. This is expected to be used along
+ * with the HW_TS_RTC_ReadLeftTicksToCount () API. It could be that the counter has been updated since the
+ * last call of HW_TS_RTC_ReadLeftTicksToCount () and before entering low power mode. This notification
+ * provides a way to the application to solve that race condition to reevaluate the counter value before
+ * entering low power mode
+ *
+ * @param None
+ * @retval None
+ */
+ void HW_TS_RTC_CountUpdated_AppNot(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*HW_IF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/main.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/main.h
new file mode 100644
index 000000000..68182bc5a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/main.h
@@ -0,0 +1,71 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.h
+ * @brief : Header for main.c file.
+ * This file contains the common defines of the application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32wbxx_hal.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void Error_Handler(void);
+
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+/* Private defines -----------------------------------------------------------*/
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32_lpm_if.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32_lpm_if.h
new file mode 100644
index 000000000..70abecaa9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32_lpm_if.h
@@ -0,0 +1,81 @@
+/* USER CODE BEGIN Header */
+/**
+******************************************************************************
+* @file stm32_lpm_if.h
+* @brief Header for stm32_lpm_if.c module (device specific LP management)
+******************************************************************************
+* @attention
+*
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+* All rights reserved.</center></h2>
+*
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+*
+******************************************************************************
+*/
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32_LPM_IF_H
+#define __STM32_LPM_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+
+/**
+ * @brief Enters Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_EnterOffMode( void );
+/**
+ * @brief Exits Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_ExitOffMode( void );
+
+/**
+ * @brief Enters Low Power Stop Mode
+ * @note ARM exists the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterStopMode( void );
+/**
+ * @brief Exits Low Power Stop Mode
+ * @note Enable the pll at 32MHz
+ * @param none
+ * @retval none
+ */
+void PWR_ExitStopMode( void );
+
+/**
+ * @brief Enters Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterSleepMode( void );
+
+/**
+ * @brief Exits Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_ExitSleepMode( void );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__STM32_LPM_IF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32wbxx_hal_conf.h
new file mode 100644
index 000000000..ea9aa40d0
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32wbxx_hal_conf.h
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * @file stm32wbxx_hal_conf.h
+ * @author MCD Application Team
+ * @brief HAL configuration file.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32WBxx_HAL_CONF_H
+#define __STM32WBxx_HAL_CONF_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* ########################## Module Selection ############################## */
+/**
+ * @brief This is the list of modules to be used in the HAL driver
+ */
+#define HAL_MODULE_ENABLED
+/*#define HAL_ADC_MODULE_ENABLED */
+/*#define HAL_CRYP_MODULE_ENABLED */
+/*#define HAL_COMP_MODULE_ENABLED */
+/*#define HAL_CRC_MODULE_ENABLED */
+#define HAL_HSEM_MODULE_ENABLED
+/*#define HAL_I2C_MODULE_ENABLED */
+/*#define HAL_IPCC_MODULE_ENABLED */
+/*#define HAL_IRDA_MODULE_ENABLED */
+/*#define HAL_IWDG_MODULE_ENABLED */
+/*#define HAL_LCD_MODULE_ENABLED */
+/*#define HAL_LPTIM_MODULE_ENABLED */
+/*#define HAL_PCD_MODULE_ENABLED */
+/*#define HAL_PKA_MODULE_ENABLED */
+/*#define HAL_QSPI_MODULE_ENABLED */
+/*#define HAL_RNG_MODULE_ENABLED */
+#define HAL_RTC_MODULE_ENABLED
+/*#define HAL_SAI_MODULE_ENABLED */
+/*#define HAL_SMBUS_MODULE_ENABLED */
+/*#define HAL_SMARTCARD_MODULE_ENABLED */
+/*#define HAL_SPI_MODULE_ENABLED */
+/*#define HAL_TIM_MODULE_ENABLED */
+/*#define HAL_TSC_MODULE_ENABLED */
+#define HAL_UART_MODULE_ENABLED
+/*#define HAL_USART_MODULE_ENABLED */
+/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
+#define HAL_CORTEX_MODULE_ENABLED
+#define HAL_DMA_MODULE_ENABLED
+#define HAL_FLASH_MODULE_ENABLED
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED
+
+#define USE_HAL_ADC_REGISTER_CALLBACKS 0u
+#define USE_HAL_COMP_REGISTER_CALLBACKS 0u
+#define USE_HAL_CRYP_REGISTER_CALLBACKS 0u
+#define USE_HAL_I2C_REGISTER_CALLBACKS 0u
+#define USE_HAL_IRDA_REGISTER_CALLBACKS 0u
+#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0u
+#define USE_HAL_PCD_REGISTER_CALLBACKS 0u
+#define USE_HAL_PKA_REGISTER_CALLBACKS 0u
+#define USE_HAL_QSPI_REGISTER_CALLBACKS 0u
+#define USE_HAL_RNG_REGISTER_CALLBACKS 0u
+#define USE_HAL_RTC_REGISTER_CALLBACKS 0u
+#define USE_HAL_SAI_REGISTER_CALLBACKS 0u
+#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0u
+#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0u
+#define USE_HAL_SPI_REGISTER_CALLBACKS 0u
+#define USE_HAL_TIM_REGISTER_CALLBACKS 0u
+#define USE_HAL_TSC_REGISTER_CALLBACKS 0u
+#define USE_HAL_UART_REGISTER_CALLBACKS 0u
+#define USE_HAL_USART_REGISTER_CALLBACKS 0u
+#define USE_HAL_WWDG_REGISTER_CALLBACKS 0u
+
+/* ########################## Oscillator Values adaptation ####################*/
+/**
+ * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSE is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSE_VALUE)
+#define HSE_VALUE 32000000U /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (HSE_STARTUP_TIMEOUT)
+ #define HSE_STARTUP_TIMEOUT ((uint32_t)100) /*!< Time out for HSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief Internal Multiple Speed oscillator (MSI) default value.
+ * This value is the default MSI range value after Reset.
+ */
+#if !defined (MSI_VALUE)
+ #define MSI_VALUE ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* MSI_VALUE */
+
+/**
+ * @brief Internal High Speed oscillator (HSI) value.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSI is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSI_VALUE)
+#define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @brief Internal Low Speed oscillator (LSI1) value.
+ */
+#if !defined (LSI1_VALUE)
+ #define LSI1_VALUE ((uint32_t)32000) /*!< LSI1 Typical Value in Hz*/
+#endif /* LSI1_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+/**
+ * @brief Internal Low Speed oscillator (LSI2) value.
+ */
+#if !defined (LSI2_VALUE)
+ #define LSI2_VALUE ((uint32_t)32000) /*!< LSI2 Typical Value in Hz*/
+#endif /* LSI2_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+
+/**
+ * @brief External Low Speed oscillator (LSE) value.
+ * This value is used by the UART, RTC HAL module to compute the system frequency
+ */
+#if !defined (LSE_VALUE)
+#define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/
+#endif /* LSE_VALUE */
+
+/**
+ * @brief Internal Multiple Speed oscillator (HSI48) default value.
+ * This value is the default HSI48 range value after Reset.
+ */
+#if !defined (HSI48_VALUE)
+ #define HSI48_VALUE ((uint32_t)48000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI48_VALUE */
+
+#if !defined (LSE_STARTUP_TIMEOUT)
+#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief External clock source for SAI1 peripheral
+ * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source
+ * frequency.
+ */
+#if !defined (EXTERNAL_SAI1_CLOCK_VALUE)
+ #define EXTERNAL_SAI1_CLOCK_VALUE ((uint32_t)2097000) /*!< Value of the SAI1 External clock source in Hz*/
+#endif /* EXTERNAL_SAI1_CLOCK_VALUE */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+ === you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+ * @brief This is the HAL system configuration section
+ */
+
+#define VDD_VALUE 3300U /*!< Value of VDD in mv */
+#define TICK_INT_PRIORITY 0U /*!< tick interrupt priority */
+#define USE_RTOS 0U
+#define PREFETCH_ENABLE 1U
+#define INSTRUCTION_CACHE_ENABLE 1U
+#define DATA_CACHE_ENABLE 1U
+
+/* ########################## Assert Selection ############################## */
+/**
+ * @brief Uncomment the line below to expanse the "assert_param" macro in the
+ * HAL drivers code
+ */
+/* #define USE_FULL_ASSERT 1U */
+
+/* ################## SPI peripheral configuration ########################## */
+
+/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
+ * Activated: CRC code is present inside driver
+ * Deactivated: CRC code cleaned from driver
+ */
+
+#define USE_SPI_CRC 0U
+
+/* Includes ------------------------------------------------------------------*/
+/**
+ * @brief Include module's header file
+ */
+#ifdef HAL_DMA_MODULE_ENABLED
+ #include "stm32wbxx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+ #include "stm32wbxx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_COMP_MODULE_ENABLED
+ #include "stm32wbxx_hal_comp.h"
+#endif /* HAL_COMP_MODULE_ENABLED */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+ #include "stm32wbxx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+ #include "stm32wbxx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_CRYP_MODULE_ENABLED
+ #include "stm32wbxx_hal_cryp.h"
+#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+ #include "stm32wbxx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+ #include "stm32wbxx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+#ifdef HAL_HSEM_MODULE_ENABLED
+ #include "stm32wbxx_hal_hsem.h"
+#endif /* HAL_HSEM_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+ #include "stm32wbxx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_IPCC_MODULE_ENABLED
+ #include "stm32wbxx_hal_ipcc.h"
+#endif /* HAL_IPCC_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+ #include "stm32wbxx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+ #include "stm32wbxx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_LCD_MODULE_ENABLED
+ #include "stm32wbxx_hal_lcd.h"
+#endif /* HAL_LCD_MODULE_ENABLED */
+
+#ifdef HAL_LPTIM_MODULE_ENABLED
+ #include "stm32wbxx_hal_lptim.h"
+#endif /* HAL_LPTIM_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+ #include "stm32wbxx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_PKA_MODULE_ENABLED
+ #include "stm32wbxx_hal_pka.h"
+#endif /* HAL_PKA_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+ #include "stm32wbxx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_QSPI_MODULE_ENABLED
+ #include "stm32wbxx_hal_qspi.h"
+#endif /* HAL_QSPI_MODULE_ENABLED */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+ #include "stm32wbxx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_RNG_MODULE_ENABLED
+ #include "stm32wbxx_hal_rng.h"
+#endif /* HAL_RNG_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+ #include "stm32wbxx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_SAI_MODULE_ENABLED
+ #include "stm32wbxx_hal_sai.h"
+#endif /* HAL_SAI_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+ #include "stm32wbxx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_SMBUS_MODULE_ENABLED
+ #include "stm32wbxx_hal_smbus.h"
+#endif /* HAL_SMBUS_MODULE_ENABLED */
+
+#ifdef HAL_SPI_MODULE_ENABLED
+ #include "stm32wbxx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+ #include "stm32wbxx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_TSC_MODULE_ENABLED
+ #include "stm32wbxx_hal_tsc.h"
+#endif /* HAL_TSC_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+ #include "stm32wbxx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+ #include "stm32wbxx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+ #include "stm32wbxx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+/* Exported macro ------------------------------------------------------------*/
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief The assert_param macro is used for function's parameters check.
+ * @param expr If expr is false, it calls assert_failed function
+ * which reports the name of the source file and the source
+ * line number of the call that failed.
+ * If expr is true, it returns no value.
+ * @retval None
+ */
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+ void assert_failed(uint8_t* file, uint32_t line);
+#else
+ #define assert_param(expr) ((void)0U)
+#endif /* USE_FULL_ASSERT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32WBxx_HAL_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32wbxx_it.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32wbxx_it.h
new file mode 100644
index 000000000..a3a535f13
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm32wbxx_it.h
@@ -0,0 +1,83 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32wbxx_it.h
+ * @brief This file contains the headers of the interrupt handlers.
+ *******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32WBxx_IT_H
+#define __STM32WBxx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "app_common.h"
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void SVC_Handler(void);
+void DebugMon_Handler(void);
+void PendSV_Handler(void);
+void SysTick_Handler(void);
+void PVD_PVM_IRQHandler(void);
+void FLASH_IRQHandler(void);
+void RCC_IRQHandler(void);
+void DMA1_Channel1_IRQHandler(void);
+void DMA1_Channel2_IRQHandler(void);
+void C2SEV_PWR_C2H_IRQHandler(void);
+void USART1_IRQHandler(void);
+void LPUART1_IRQHandler(void);
+void PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler(void);
+void HSEM_IRQHandler(void);
+void FPU_IRQHandler(void);
+/* USER CODE BEGIN EFP */
+void RTC_WKUP_IRQHandler(void);
+void EXTI4_IRQHandler(void);
+void IPCC_C1_TX_IRQHandler(void);
+void IPCC_C1_RX_IRQHandler(void);
+/* USER CODE END EFP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32WBxx_IT_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm_logging.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm_logging.h
new file mode 100644
index 000000000..58877c570
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/stm_logging.h
@@ -0,0 +1,55 @@
+/**
+ ******************************************************************************
+ * File Name : stm_logging.h
+ * Description : Application header file for logging
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+#ifndef STM_LOGGING_H_
+#define STM_LOGGING_H_
+
+#define LOG_LEVEL_NONE 0 /* None */
+#define LOG_LEVEL_CRIT 1U /* Critical */
+#define LOG_LEVEL_WARN 2U /* Warning */
+#define LOG_LEVEL_INFO 3U /* Info */
+#define LOG_LEVEL_DEBG 4U /* Debug */
+
+#define APP_DBG_FULL(level, region, ...) \
+ if (APPLI_PRINT_FILE_FUNC_LINE == 1U) \
+ { \
+ printf("\r\n[%s][%s][%d] ", DbgTraceGetFileName(__FILE__), __FUNCTION__, __LINE__); \
+ } \
+ logApplication(level, region, __VA_ARGS__);
+
+#define APP_DBG(...) \
+ if (APPLI_PRINT_FILE_FUNC_LINE == 1U) \
+ { \
+ printf("\r\n[%s][%s][%d] ", DbgTraceGetFileName(__FILE__), __FUNCTION__, __LINE__); \
+ } \
+ logApplication(LOG_LEVEL_NONE, APPLI_LOG_REGION_GENERAL, __VA_ARGS__);
+
+/**
+ * This enumeration represents log regions.
+ *
+ */
+typedef enum {
+ APPLI_LOG_REGION_GENERAL = 1U, /* General */
+ APPLI_LOG_REGION_ZIGBEE_API = 2U, /* OpenThread API */
+} appliLogRegion_t;
+
+typedef uint8_t appliLogLevel_t;
+
+void logApplication(appliLogLevel_t aLogLevel, appliLogRegion_t aLogRegion, const char *aFormat, ...);
+
+#endif /* STM_LOGGING_H_ */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/utilities_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/utilities_conf.h
new file mode 100644
index 000000000..4dde3509a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Inc/utilities_conf.h
@@ -0,0 +1,68 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : utilities_conf.h
+ * Description : Configuration file for STM32 Utilities.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* 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"
+
+/******************************************************************************
+ * 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 (2)
+#define UTIL_SEQ_MEMSET8( dest, value, size ) UTILS_MEMSET8( dest, value, size )
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*UTILITIES_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/app_entry.c
index 901f796a0..e7120136a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/app_entry.c
@@ -208,6 +208,15 @@ static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status)
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
@@ -393,4 +402,27 @@ void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) )
}
#endif
+/* USER CODE BEGIN FD_WRAP_FUNCTIONS */
+/**
+ * @brief This function manage the Push button action
+ * @param GPIO_Pin : GPIO pin which has been activated
+ * @retval None
+ */
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ switch (GPIO_Pin) {
+ case BUTTON_SW1_PIN:
+ break;
+
+ case BUTTON_SW2_PIN:
+ break;
+
+ case BUTTON_SW3_PIN:
+ break;
+
+ default:
+ break;
+ }
+}
+/* USER CODE END FD_WRAP_FUNCTIONS */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/hw_timerserver.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/hw_timerserver.c
new file mode 100644
index 000000000..c842ba55e
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/hw_timerserver.c
@@ -0,0 +1,893 @@
+/**
+ ******************************************************************************
+ * File Name : hw_timerserver.c
+ * Description : Hardware timerserver source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "hw_conf.h"
+
+/* Private typedef -----------------------------------------------------------*/
+typedef enum
+{
+ TimerID_Free,
+ TimerID_Created,
+ TimerID_Running
+}TimerIDStatus_t;
+
+typedef enum
+{
+ SSR_Read_Requested,
+ SSR_Read_Not_Requested
+}RequestReadSSR_t;
+
+typedef enum
+{
+ WakeupTimerValue_Overpassed,
+ WakeupTimerValue_LargeEnough
+}WakeupTimerLimitation_Status_t;
+
+typedef struct
+{
+ HW_TS_pTimerCb_t pTimerCallBack;
+ uint32_t CounterInit;
+ uint32_t CountLeft;
+ TimerIDStatus_t TimerIDStatus;
+ HW_TS_Mode_t TimerMode;
+ uint32_t TimerProcessID;
+ uint8_t PreviousID;
+ uint8_t NextID;
+}TimerContext_t;
+
+/* Private defines -----------------------------------------------------------*/
+#define SSR_FORBIDDEN_VALUE 0xFFFFFFFF
+#define TIMER_LIST_EMPTY 0xFFFF
+
+/* Private macros ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+/**
+ * START of Section TIMERSERVER_CONTEXT
+ */
+
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile TimerContext_t aTimerContext[CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER];
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint8_t CurrentRunningTimerID;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint8_t PreviousRunningTimerID;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint32_t SSRValueOnLastSetup;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile WakeupTimerLimitation_Status_t WakeupTimerLimitation;
+
+/**
+ * END of Section TIMERSERVER_CONTEXT
+ */
+
+static RTC_HandleTypeDef *phrtc; /**< RTC handle */
+static uint8_t WakeupTimerDivider;
+static uint8_t AsynchPrescalerUserConfig;
+static uint16_t SynchPrescalerUserConfig;
+static volatile uint16_t MaxWakeupTimerSetup;
+
+/* Global variables ----------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+static void RestartWakeupCounter(uint16_t Value);
+static uint16_t ReturnTimeElapsed(void);
+static void RescheduleTimerList(void);
+static void UnlinkTimer(uint8_t TimerID, RequestReadSSR_t RequestReadSSR);
+static void LinkTimerBefore(uint8_t TimerID, uint8_t RefTimerID);
+static void LinkTimerAfter(uint8_t TimerID, uint8_t RefTimerID);
+static uint16_t linkTimer(uint8_t TimerID);
+static uint32_t ReadRtcSsrValue(void);
+
+__weak void HW_TS_RTC_CountUpdated_AppNot(void);
+
+/* Functions Definition ------------------------------------------------------*/
+
+/**
+ * @brief Read the RTC_SSR value
+ * As described in the reference manual, the RTC_SSR shall be read twice to ensure
+ * reliability of the value
+ * @param None
+ * @retval SSR value read
+ */
+static uint32_t ReadRtcSsrValue(void)
+{
+ uint32_t first_read;
+ uint32_t second_read;
+
+ first_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+
+ second_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+
+ while(first_read != second_read)
+ {
+ first_read = second_read;
+
+ second_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+ }
+
+ return second_read;
+}
+
+/**
+ * @brief Insert a Timer in the list after the Timer ID specified
+ * @param TimerID: The ID of the Timer
+ * @param RefTimerID: The ID of the Timer to be linked after
+ * @retval None
+ */
+static void LinkTimerAfter(uint8_t TimerID, uint8_t RefTimerID)
+{
+ uint8_t next_id;
+
+ next_id = aTimerContext[RefTimerID].NextID;
+
+ if(next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[next_id].PreviousID = TimerID;
+ }
+ aTimerContext[TimerID].NextID = next_id;
+ aTimerContext[TimerID].PreviousID = RefTimerID ;
+ aTimerContext[RefTimerID].NextID = TimerID;
+
+ return;
+}
+
+/**
+ * @brief Insert a Timer in the list before the ID specified
+ * @param TimerID: The ID of the Timer
+ * @param RefTimerID: The ID of the Timer to be linked before
+ * @retval None
+ */
+static void LinkTimerBefore(uint8_t TimerID, uint8_t RefTimerID)
+{
+ uint8_t previous_id;
+
+ if(RefTimerID != CurrentRunningTimerID)
+ {
+ previous_id = aTimerContext[RefTimerID].PreviousID;
+
+ aTimerContext[previous_id].NextID = TimerID;
+ aTimerContext[TimerID].NextID = RefTimerID;
+ aTimerContext[TimerID].PreviousID = previous_id ;
+ aTimerContext[RefTimerID].PreviousID = TimerID;
+ }
+ else
+ {
+ aTimerContext[TimerID].NextID = RefTimerID;
+ aTimerContext[RefTimerID].PreviousID = TimerID;
+ }
+
+ return;
+}
+
+/**
+ * @brief Insert a Timer in the list
+ * @param TimerID: The ID of the Timer
+ * @retval None
+ */
+static uint16_t linkTimer(uint8_t TimerID)
+{
+ uint32_t time_left;
+ uint16_t time_elapsed;
+ uint8_t timer_id_lookup;
+ uint8_t next_id;
+
+ if(CurrentRunningTimerID == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ /**
+ * No timer in the list
+ */
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = TimerID;
+ aTimerContext[TimerID].NextID = CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER;
+
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+ time_elapsed = 0;
+ }
+ else
+ {
+ time_elapsed = ReturnTimeElapsed();
+
+ /**
+ * update count of the timer to be linked
+ */
+ aTimerContext[TimerID].CountLeft += time_elapsed;
+ time_left = aTimerContext[TimerID].CountLeft;
+
+ /**
+ * Search for index where the new timer shall be linked
+ */
+ if(aTimerContext[CurrentRunningTimerID].CountLeft <= time_left)
+ {
+ /**
+ * Search for the ID after the first one
+ */
+ timer_id_lookup = CurrentRunningTimerID;
+ next_id = aTimerContext[timer_id_lookup].NextID;
+ while((next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (aTimerContext[next_id].CountLeft <= time_left))
+ {
+ timer_id_lookup = aTimerContext[timer_id_lookup].NextID;
+ next_id = aTimerContext[timer_id_lookup].NextID;
+ }
+
+ /**
+ * Link after the ID
+ */
+ LinkTimerAfter(TimerID, timer_id_lookup);
+ }
+ else
+ {
+ /**
+ * Link before the first ID
+ */
+ LinkTimerBefore(TimerID, CurrentRunningTimerID);
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = TimerID;
+ }
+ }
+
+ return time_elapsed;
+}
+
+/**
+ * @brief Remove a Timer from the list
+ * @param TimerID: The ID of the Timer
+ * @param RequestReadSSR: Request to read the SSR register or not
+ * @retval None
+ */
+static void UnlinkTimer(uint8_t TimerID, RequestReadSSR_t RequestReadSSR)
+{
+ uint8_t previous_id;
+ uint8_t next_id;
+
+ if(TimerID == CurrentRunningTimerID)
+ {
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = aTimerContext[TimerID].NextID;
+ }
+ else
+ {
+ previous_id = aTimerContext[TimerID].PreviousID;
+ next_id = aTimerContext[TimerID].NextID;
+
+ aTimerContext[previous_id].NextID = aTimerContext[TimerID].NextID;
+ if(next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[next_id].PreviousID = aTimerContext[TimerID].PreviousID;
+ }
+ }
+
+ /**
+ * Timer is out of the list
+ */
+ aTimerContext[TimerID].TimerIDStatus = TimerID_Created;
+
+ if((CurrentRunningTimerID == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (RequestReadSSR == SSR_Read_Requested))
+ {
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+ }
+
+ return;
+}
+
+/**
+ * @brief Return the number of ticks counted by the wakeuptimer since it has been started
+ * @note The API is reading the SSR register to get how many ticks have been counted
+ * since the time the timer has been started
+ * @param None
+ * @retval Time expired in Ticks
+ */
+static uint16_t ReturnTimeElapsed(void)
+{
+ uint32_t return_value;
+ uint32_t wrap_counter;
+
+ if(SSRValueOnLastSetup != SSR_FORBIDDEN_VALUE)
+ {
+ return_value = ReadRtcSsrValue(); /**< Read SSR register first */
+
+ if (SSRValueOnLastSetup >= return_value)
+ {
+ return_value = SSRValueOnLastSetup - return_value;
+ }
+ else
+ {
+ wrap_counter = SynchPrescalerUserConfig - return_value;
+ return_value = SSRValueOnLastSetup + wrap_counter;
+ }
+
+ /**
+ * At this stage, ReturnValue holds the number of ticks counted by SSR
+ * Need to translate in number of ticks counted by the Wakeuptimer
+ */
+ return_value = return_value*AsynchPrescalerUserConfig;
+ return_value = return_value >> WakeupTimerDivider;
+ }
+ else
+ {
+ return_value = 0;
+ }
+
+ return (uint16_t)return_value;
+}
+
+/**
+ * @brief Set the wakeup counter
+ * @note The API is writing the counter value so that the value is decreased by one to cope with the fact
+ * the interrupt is generated with 1 extra clock cycle (See RefManuel)
+ * It assumes all condition are met to be allowed to write the wakeup counter
+ * @param Value: Value to be written in the counter
+ * @retval None
+ */
+static void RestartWakeupCounter(uint16_t Value)
+{
+ /**
+ * The wakeuptimer has been disabled in the calling function to reduce the time to poll the WUTWF
+ * FLAG when the new value will have to be written
+ * __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc);
+ */
+
+ if(Value == 0)
+ {
+ SSRValueOnLastSetup = ReadRtcSsrValue();
+
+ /**
+ * Simulate that the Timer expired
+ */
+ HAL_NVIC_SetPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID);
+ }
+ else
+ {
+ if((Value > 1) ||(WakeupTimerDivider != 1))
+ {
+ Value -= 1;
+ }
+
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+
+ MODIFY_REG(RTC->WUTR, RTC_WUTR_WUT, Value);
+
+ /**
+ * Update the value here after the WUTWF polling that may take some time
+ */
+ SSRValueOnLastSetup = ReadRtcSsrValue();
+
+ __HAL_RTC_WAKEUPTIMER_ENABLE(phrtc); /**< Enable the Wakeup Timer */
+
+ HW_TS_RTC_CountUpdated_AppNot();
+ }
+
+ return ;
+}
+
+/**
+ * @brief Reschedule the list of timer
+ * @note 1) Update the count left for each timer in the list
+ * 2) Setup the wakeuptimer
+ * @param None
+ * @retval None
+ */
+static void RescheduleTimerList(void)
+{
+ uint8_t localTimerID;
+ uint32_t timecountleft;
+ uint16_t wakeup_timer_value;
+ uint16_t time_elapsed;
+
+ /**
+ * The wakeuptimer is disabled now to reduce the time to poll the WUTWF
+ * FLAG when the new value will have to be written
+ */
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ /**
+ * Wait for the flag to be back to 0 when the wakeup timer is enabled
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == SET);
+ }
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+
+ localTimerID = CurrentRunningTimerID;
+
+ /**
+ * Calculate what will be the value to write in the wakeuptimer
+ */
+ timecountleft = aTimerContext[localTimerID].CountLeft;
+
+ /**
+ * Read how much has been counted
+ */
+ time_elapsed = ReturnTimeElapsed();
+
+ if(timecountleft < time_elapsed )
+ {
+ /**
+ * There is no tick left to count
+ */
+ wakeup_timer_value = 0;
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ }
+ else
+ {
+ if(timecountleft > (time_elapsed + MaxWakeupTimerSetup))
+ {
+ /**
+ * The number of tick left is greater than the Wakeuptimer maximum value
+ */
+ wakeup_timer_value = MaxWakeupTimerSetup;
+
+ WakeupTimerLimitation = WakeupTimerValue_Overpassed;
+ }
+ else
+ {
+ wakeup_timer_value = timecountleft - time_elapsed;
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ }
+
+ }
+
+ /**
+ * update ticks left to be counted for each timer
+ */
+ while(localTimerID != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ if (aTimerContext[localTimerID].CountLeft < time_elapsed)
+ {
+ aTimerContext[localTimerID].CountLeft = 0;
+ }
+ else
+ {
+ aTimerContext[localTimerID].CountLeft -= time_elapsed;
+ }
+ localTimerID = aTimerContext[localTimerID].NextID;
+ }
+
+ /**
+ * Write next count
+ */
+ RestartWakeupCounter(wakeup_timer_value);
+
+ return ;
+}
+
+/* Public functions ----------------------------------------------------------*/
+
+/**
+ * For all public interface except that may need write access to the RTC, the RTC
+ * shall be unlock at the beginning and locked at the output
+ * In order to ease maintainability, the unlock is done at the top and the lock at then end
+ * in case some new implementation is coming in the future
+ */
+
+void HW_TS_RTC_Wakeup_Handler(void)
+{
+ HW_TS_pTimerCb_t ptimer_callback;
+ uint32_t timer_process_id;
+ uint8_t local_current_running_timer_id;
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+/* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ /**
+ * Disable the Wakeup Timer
+ * This may speed up a bit the processing to wait the timer to be disabled
+ * The timer is still counting 2 RTCCLK
+ */
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc);
+
+ local_current_running_timer_id = CurrentRunningTimerID;
+
+ if(aTimerContext[local_current_running_timer_id].TimerIDStatus == TimerID_Running)
+ {
+ ptimer_callback = aTimerContext[local_current_running_timer_id].pTimerCallBack;
+ timer_process_id = aTimerContext[local_current_running_timer_id].TimerProcessID;
+
+ /**
+ * It should be good to check whether the TimeElapsed is greater or not than the tick left to be counted
+ * However, due to the inaccuracy of the reading of the time elapsed, it may return there is 1 tick
+ * to be left whereas the count is over
+ * A more secure implementation has been done with a flag to state whereas the full count has been written
+ * in the wakeuptimer or not
+ */
+ if(WakeupTimerLimitation != WakeupTimerValue_Overpassed)
+ {
+ if(aTimerContext[local_current_running_timer_id].TimerMode == hw_ts_Repeated)
+ {
+ UnlinkTimer(local_current_running_timer_id, SSR_Read_Not_Requested);
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ HW_TS_Start(local_current_running_timer_id, aTimerContext[local_current_running_timer_id].CounterInit);
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+ }
+ else
+ {
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ HW_TS_Stop(local_current_running_timer_id);
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+ }
+
+ HW_TS_RTC_Int_AppNot(timer_process_id, local_current_running_timer_id, ptimer_callback);
+ }
+ else
+ {
+ RescheduleTimerList();
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ }
+ }
+ else
+ {
+ /**
+ * We should never end up in this case
+ * However, if due to any bug in the timer server this is the case, the mistake may not impact the user.
+ * We could just clean the interrupt flag and get out from this unexpected interrupt
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ return;
+}
+
+void HW_TS_Init(HW_TS_InitMode_t TimerInitMode, RTC_HandleTypeDef *hrtc)
+{
+ uint8_t loop;
+ uint32_t localmaxwakeuptimersetup;
+
+ /**
+ * Get RTC handler
+ */
+ phrtc = hrtc;
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ SET_BIT(RTC->CR, RTC_CR_BYPSHAD);
+
+ /**
+ * Readout the user config
+ */
+ WakeupTimerDivider = (4 - ((uint32_t)(READ_BIT(RTC->CR, RTC_CR_WUCKSEL))));
+
+ AsynchPrescalerUserConfig = (uint8_t)(READ_BIT(RTC->PRER, RTC_PRER_PREDIV_A) >> (uint32_t)POSITION_VAL(RTC_PRER_PREDIV_A)) + 1;
+
+ SynchPrescalerUserConfig = (uint16_t)(READ_BIT(RTC->PRER, RTC_PRER_PREDIV_S)) + 1;
+
+ /**
+ * Margin is taken to avoid wrong calculation when the wrap around is there and some
+ * application interrupts may have delayed the reading
+ */
+ localmaxwakeuptimersetup = ((((SynchPrescalerUserConfig - 1)*AsynchPrescalerUserConfig) - CFG_HW_TS_RTC_HANDLER_MAX_DELAY) >> WakeupTimerDivider);
+
+ if(localmaxwakeuptimersetup >= 0xFFFF)
+ {
+ MaxWakeupTimerSetup = 0xFFFF;
+ }
+ else
+ {
+ MaxWakeupTimerSetup = (uint16_t)localmaxwakeuptimersetup;
+ }
+
+ /**
+ * Configure EXTI module
+ */
+ LL_EXTI_EnableRisingTrig_0_31(RTC_EXTI_LINE_WAKEUPTIMER_EVENT);
+ LL_EXTI_EnableIT_0_31(RTC_EXTI_LINE_WAKEUPTIMER_EVENT);
+
+ if(TimerInitMode == hw_ts_InitMode_Full)
+ {
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+
+ /**
+ * Initialize the timer server
+ */
+ for(loop = 0; loop < CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER; loop++)
+ {
+ aTimerContext[loop].TimerIDStatus = TimerID_Free;
+ }
+
+ CurrentRunningTimerID = CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER; /**< Set ID to non valid value */
+
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+ __HAL_RTC_WAKEUPTIMER_ENABLE_IT(phrtc, RTC_IT_WUT); /**< Enable interrupt in RTC module */
+ }
+ else
+ {
+ if(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTF) != RESET)
+ {
+ /**
+ * Simulate that the Timer expired
+ */
+ HAL_NVIC_SetPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID);
+ }
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_SetPriority(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID, CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO, CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO); /**< Set NVIC priority */
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+ return;
+}
+
+HW_TS_ReturnStatus_t HW_TS_Create(uint32_t TimerProcessID, uint8_t *pTimerId, HW_TS_Mode_t TimerMode, HW_TS_pTimerCb_t pftimeout_handler)
+{
+ HW_TS_ReturnStatus_t localreturnstatus;
+ uint8_t loop = 0;
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ while((loop < CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (aTimerContext[loop].TimerIDStatus != TimerID_Free))
+ {
+ loop++;
+ }
+
+ if(loop != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[loop].TimerIDStatus = TimerID_Created;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ aTimerContext[loop].TimerProcessID = TimerProcessID;
+ aTimerContext[loop].TimerMode = TimerMode;
+ aTimerContext[loop].pTimerCallBack = pftimeout_handler;
+ *pTimerId = loop;
+
+ localreturnstatus = hw_ts_Successful;
+ }
+ else
+ {
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ localreturnstatus = hw_ts_Failed;
+ }
+
+ return(localreturnstatus);
+}
+
+void HW_TS_Delete(uint8_t timer_id)
+{
+ HW_TS_Stop(timer_id);
+
+ aTimerContext[timer_id].TimerIDStatus = TimerID_Free; /**< release ID */
+
+ return;
+}
+
+void HW_TS_Stop(uint8_t timer_id)
+{
+ uint8_t localcurrentrunningtimerid;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ HAL_NVIC_DisableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Disable NVIC */
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ if(aTimerContext[timer_id].TimerIDStatus == TimerID_Running)
+ {
+ UnlinkTimer(timer_id, SSR_Read_Requested);
+ localcurrentrunningtimerid = CurrentRunningTimerID;
+
+ if(localcurrentrunningtimerid == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ /**
+ * List is empty
+ */
+
+ /**
+ * Disable the timer
+ */
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ /**
+ * Wait for the flag to be back to 0 when the wakeup timer is enabled
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == SET);
+ }
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+ }
+ else if(PreviousRunningTimerID != localcurrentrunningtimerid)
+ {
+ RescheduleTimerList();
+ }
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ return;
+}
+
+void HW_TS_Start(uint8_t timer_id, uint32_t timeout_ticks)
+{
+ uint16_t time_elapsed;
+ uint8_t localcurrentrunningtimerid;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+ if(aTimerContext[timer_id].TimerIDStatus == TimerID_Running)
+ {
+ HW_TS_Stop( timer_id );
+ }
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ HAL_NVIC_DisableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Disable NVIC */
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ aTimerContext[timer_id].TimerIDStatus = TimerID_Running;
+
+ aTimerContext[timer_id].CountLeft = timeout_ticks;
+ aTimerContext[timer_id].CounterInit = timeout_ticks;
+
+ time_elapsed = linkTimer(timer_id);
+
+ localcurrentrunningtimerid = CurrentRunningTimerID;
+
+ if(PreviousRunningTimerID != localcurrentrunningtimerid)
+ {
+ RescheduleTimerList();
+ }
+ else
+ {
+ aTimerContext[timer_id].CountLeft -= time_elapsed;
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ return;
+}
+
+uint16_t HW_TS_RTC_ReadLeftTicksToCount(void)
+{
+ uint32_t primask_bit;
+ uint16_t return_value, auro_reload_value, elapsed_time_value;
+
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ auro_reload_value = (uint32_t)(READ_BIT(RTC->WUTR, RTC_WUTR_WUT));
+
+ elapsed_time_value = ReturnTimeElapsed();
+
+ if(auro_reload_value > elapsed_time_value)
+ {
+ return_value = auro_reload_value - elapsed_time_value;
+ }
+ else
+ {
+ return_value = 0;
+ }
+ }
+ else
+ {
+ return_value = TIMER_LIST_EMPTY;
+ }
+
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+
+ return (return_value);
+}
+
+__weak void HW_TS_RTC_Int_AppNot(uint32_t TimerProcessID, uint8_t TimerID, HW_TS_pTimerCb_t pTimerCallBack)
+{
+ pTimerCallBack();
+
+ return;
+}
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/hw_uart.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/hw_uart.c
new file mode 100644
index 000000000..9a553610d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/hw_uart.c
@@ -0,0 +1,318 @@
+/**
+ ******************************************************************************
+ * File Name : Src/hw_uart.c
+ * Description : HW UART source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "hw_conf.h"
+#if (CFG_HW_LPUART1_ENABLED == 1)
+extern UART_HandleTypeDef hlpuart1;
+#endif
+#if (CFG_HW_USART1_ENABLED == 1)
+extern UART_HandleTypeDef huart1;
+#endif
+
+/* Macros --------------------------------------------------------------------*/
+#define HW_UART_RX_IT(__HANDLE__, __USART_BASE__) \
+ do{ \
+ HW_##__HANDLE__##RxCb = cb; \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ HAL_UART_Receive_IT(&(__HANDLE__), p_data, size); \
+ } while(0)
+
+#define HW_UART_TX_IT(__HANDLE__, __USART_BASE__) \
+ do{ \
+ HW_##__HANDLE__##TxCb = cb; \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ HAL_UART_Transmit_IT(&(__HANDLE__), p_data, size); \
+ } while(0)
+
+#define HW_UART_TX(__HANDLE__, __USART_BASE__) \
+ do{ \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ hal_status = HAL_UART_Transmit(&(__HANDLE__), p_data, size, timeout); \
+ } while(0)
+
+/* Variables -----------------------------------------------------------------*/
+#if (CFG_HW_USART1_ENABLED == 1)
+#if (CFG_HW_USART1_DMA_TX_SUPPORTED == 1)
+ DMA_HandleTypeDef HW_hdma_huart1_tx ={0};
+#endif
+ void (*HW_huart1RxCb)(void);
+ void (*HW_huart1TxCb)(void);
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+#if (CFG_HW_LPUART1_DMA_TX_SUPPORTED == 1)
+ DMA_HandleTypeDef HW_hdma_hlpuart1_tx ={0};
+#endif
+ void (*HW_hlpuart1RxCb)(void);
+ void (*HW_hlpuart1TxCb)(void);
+#endif
+
+void HW_UART_Receive_IT(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_RX_IT(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_RX_IT(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HW_UART_Transmit_IT(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_TX_IT(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_TX_IT(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+hw_status_t HW_UART_Transmit(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, uint32_t timeout)
+{
+ HAL_StatusTypeDef hal_status = HAL_OK;
+ hw_status_t hw_status = hw_uart_ok;
+
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_TX(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_TX(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ switch (hal_status)
+ {
+ case HAL_OK:
+ hw_status = hw_uart_ok;
+ break;
+
+ case HAL_ERROR:
+ hw_status = hw_uart_error;
+ break;
+
+ case HAL_BUSY:
+ hw_status = hw_uart_busy;
+ break;
+
+ case HAL_TIMEOUT:
+ hw_status = hw_uart_to;
+ break;
+
+ default:
+ break;
+ }
+
+ return hw_status;
+}
+
+hw_status_t HW_UART_Transmit_DMA(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ HAL_StatusTypeDef hal_status = HAL_OK;
+ hw_status_t hw_status = hw_uart_ok;
+
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_huart1TxCb = cb;
+ huart1.Instance = USART1;
+ hal_status = HAL_UART_Transmit_DMA(&huart1, p_data, size);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_hlpuart1TxCb = cb;
+ hlpuart1.Instance = LPUART1;
+ hal_status = HAL_UART_Transmit_DMA(&hlpuart1, p_data, size);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ switch (hal_status)
+ {
+ case HAL_OK:
+ hw_status = hw_uart_ok;
+ break;
+
+ case HAL_ERROR:
+ hw_status = hw_uart_error;
+ break;
+
+ case HAL_BUSY:
+ hw_status = hw_uart_busy;
+ break;
+
+ case HAL_TIMEOUT:
+ hw_status = hw_uart_to;
+ break;
+
+ default:
+ break;
+ }
+
+ return hw_status;
+}
+
+void HW_UART_Interrupt_Handler(hw_uart_id_t hw_uart_id)
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HAL_UART_IRQHandler(&huart1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HAL_UART_IRQHandler(&hlpuart1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HW_UART_DMA_Interrupt_Handler(hw_uart_id_t hw_uart_id)
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_DMA_TX_SUPPORTED == 1)
+ case hw_uart1:
+ HAL_DMA_IRQHandler(huart1.hdmatx);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_DMA_TX_SUPPORTED == 1)
+ case hw_lpuart1:
+ HAL_DMA_IRQHandler(hlpuart1.hdmatx);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
+{
+ switch ((uint32_t)huart->Instance)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case (uint32_t)USART1:
+ if(HW_huart1RxCb)
+ {
+ HW_huart1RxCb();
+ }
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case (uint32_t)LPUART1:
+ if(HW_hlpuart1RxCb)
+ {
+ HW_hlpuart1RxCb();
+ }
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
+{
+ switch ((uint32_t)huart->Instance)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case (uint32_t)USART1:
+ if(HW_huart1TxCb)
+ {
+ HW_huart1TxCb();
+ }
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case (uint32_t)LPUART1:
+ if(HW_hlpuart1TxCb)
+ {
+ HW_hlpuart1TxCb();
+ }
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/main.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/main.c
new file mode 100644
index 000000000..80ad1ad58
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/main.c
@@ -0,0 +1,521 @@
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ *
+ @verbatim
+ ==============================================================================
+ ##### IMPORTANT NOTE #####
+ ==============================================================================
+
+ This application requests having the stm32wb5x_Zigbee_fw.bin binary
+ flashed on the Wireless Coprocessor.
+ If it is not the case, you need to use STM32CubeProgrammer to load the appropriate
+ binary.
+
+ All available binaries are located under following directory:
+ /Projects/STM32_Copro_Wireless_Binaries
+
+ Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
+ Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the
+ detailed procedure to change the Wireless Coprocessor binary.
+
+ @endverbatim
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "app_entry.h"
+
+/* Private includes ----------------------------------------------------------*/
+
+#include "dbg_trace.h"
+#include "hw_conf.h"
+#include "otp.h"
+#include "stm32_seq.h"
+
+/* Private variables ---------------------------------------------------------*/
+UART_HandleTypeDef hlpuart1;
+UART_HandleTypeDef huart1;
+DMA_HandleTypeDef hdma_lpuart1_tx;
+DMA_HandleTypeDef hdma_usart1_tx;
+RTC_HandleTypeDef hrtc;
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+void MX_LPUART1_UART_Init(void);
+void MX_USART1_UART_Init(void);
+static void MX_RF_Init(void);
+static void MX_RTC_Init(void);
+
+void PeriphClock_Config(void);
+static void Reset_Device(void);
+static void Reset_IPCC(void);
+static void Reset_BackupDomain(void);
+static void Init_Exti(void);
+static void Config_HSE(void);
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ Reset_Device();
+ Config_HSE();
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ PeriphClock_Config();
+ Init_Exti(); /**< Configure the system Power Mode */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_RF_Init();
+ MX_RTC_Init();
+
+ /* Init the full application */
+ APPE_Init();
+
+ /* Infinite loop */
+
+ while (1) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+
+ }
+
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+
+ /** Configure LSE Drive Capability
+ */
+ __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+ /** Initializes the CPU, AHB and APB busses clocks
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE
+ |RCC_OSCILLATORTYPE_LSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.LSEState = RCC_LSE_ON;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4|RCC_CLOCKTYPE_HCLK2
+ |RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLK2Divider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.AHBCLK4Divider = RCC_SYSCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Initializes the peripherals clocks
+ */
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RFWAKEUP
+ |RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1
+ |RCC_PERIPHCLK_LPUART1;
+ PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
+ PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
+ PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
+ PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
+ PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
+ PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
+
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief LPUART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+void MX_LPUART1_UART_Init(void)
+{
+
+ hlpuart1.Instance = LPUART1;
+ hlpuart1.Init.BaudRate = 115200;
+ hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
+ hlpuart1.Init.StopBits = UART_STOPBITS_1;
+ hlpuart1.Init.Parity = UART_PARITY_NONE;
+ hlpuart1.Init.Mode = UART_MODE_TX_RX;
+ hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+ hlpuart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
+ hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+ hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
+ if (HAL_UART_Init(&hlpuart1) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK) {
+ Error_Handler();
+ }
+
+}
+
+/**
+ * @brief USART1 Initialization Function
+ * @param None
+ * @retval None
+ */
+void MX_USART1_UART_Init(void)
+{
+
+ huart1.Instance = USART1;
+ huart1.Init.BaudRate = 115200;
+ huart1.Init.WordLength = UART_WORDLENGTH_8B;
+ huart1.Init.StopBits = UART_STOPBITS_1;
+ huart1.Init.Parity = UART_PARITY_NONE;
+ huart1.Init.Mode = UART_MODE_TX_RX;
+ huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart1.Init.OverSampling = UART_OVERSAMPLING_8;
+ huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+ huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
+ huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+ if (HAL_UART_Init(&huart1) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) {
+ Error_Handler();
+ }
+ if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) {
+ Error_Handler();
+ }
+
+}
+
+/**
+ * @brief RF Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_RF_Init(void)
+{
+
+}
+
+/**
+ * @brief RTC Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_RTC_Init(void)
+{
+
+
+ /** Initialize RTC Only
+ */
+ hrtc.Instance = RTC;
+ hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
+ hrtc.Init.AsynchPrediv = CFG_RTC_ASYNCH_PRESCALER;
+ hrtc.Init.SynchPrediv = CFG_RTC_SYNCH_PRESCALER;
+ hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
+ hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
+ hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
+ if (HAL_RTC_Init(&hrtc) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN RTC_Init 2 */
+
+ /* USER CODE END RTC_Init 2 */
+
+}
+
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+
+ /* DMA controller clock enable */
+ __HAL_RCC_DMAMUX1_CLK_ENABLE();
+ __HAL_RCC_DMA1_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Channel1_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
+ /* DMA1_Channel2_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn);
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+
+}
+
+/* USER CODE BEGIN 4 */
+void PeriphClock_Config(void)
+{
+ #if (CFG_USB_INTERFACE_ENABLE != 0)
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
+ RCC_CRSInitTypeDef RCC_CRSInitStruct = { 0 };
+
+ /**
+ * This prevents the CPU2 to disable the HSI48 oscillator when
+ * it does not use anymore the RNG IP
+ */
+ LL_HSEM_1StepLock( HSEM, 5 );
+
+ LL_RCC_HSI48_Enable();
+
+ while(!LL_RCC_HSI48_IsReady());
+
+ /* Select HSI48 as USB clock source */
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
+ PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
+ HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
+
+ /*Configure the clock recovery system (CRS)**********************************/
+
+ /* Enable CRS Clock */
+ __HAL_RCC_CRS_CLK_ENABLE();
+
+ /* Default Synchro Signal division factor (not divided) */
+ RCC_CRSInitStruct.Prescaler = RCC_CRS_SYNC_DIV1;
+
+ /* Set the SYNCSRC[1:0] bits according to CRS_Source value */
+ RCC_CRSInitStruct.Source = RCC_CRS_SYNC_SOURCE_USB;
+
+ /* HSI48 is synchronized with USB SOF at 1KHz rate */
+ RCC_CRSInitStruct.ReloadValue = RCC_CRS_RELOADVALUE_DEFAULT;
+ RCC_CRSInitStruct.ErrorLimitValue = RCC_CRS_ERRORLIMIT_DEFAULT;
+
+ RCC_CRSInitStruct.Polarity = RCC_CRS_SYNC_POLARITY_RISING;
+
+ /* Set the TRIM[5:0] to the default value*/
+ RCC_CRSInitStruct.HSI48CalibrationValue = RCC_CRS_HSI48CALIBRATION_DEFAULT;
+
+ /* Start automatic synchronization */
+ HAL_RCCEx_CRSConfig(&RCC_CRSInitStruct);
+#endif
+
+ return;
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+static void Config_HSE(void)
+{
+ OTP_ID0_t * p_otp;
+
+ /**
+ * Read HSE_Tuning from OTP
+ */
+ p_otp = (OTP_ID0_t *) OTP_Read(0);
+ if (p_otp)
+ {
+ LL_RCC_HSE_SetCapacitorTuning(p_otp->hse_tuning);
+ }
+
+ return;
+}
+
+
+static void Reset_Device( void )
+{
+#if ( CFG_HW_RESET_BY_FW == 1 )
+ Reset_BackupDomain();
+
+ Reset_IPCC();
+#endif
+
+ return;
+}
+
+static void Reset_IPCC( void )
+{
+ LL_AHB3_GRP1_EnableClock(LL_AHB3_GRP1_PERIPH_IPCC);
+
+ LL_C1_IPCC_ClearFlag_CHx(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_ClearFlag_CHx(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C1_IPCC_DisableTransmitChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_DisableTransmitChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C1_IPCC_DisableReceiveChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ LL_C2_IPCC_DisableReceiveChannel(
+ IPCC,
+ LL_IPCC_CHANNEL_1 | LL_IPCC_CHANNEL_2 | LL_IPCC_CHANNEL_3 | LL_IPCC_CHANNEL_4
+ | LL_IPCC_CHANNEL_5 | LL_IPCC_CHANNEL_6);
+
+ return;
+}
+
+static void Reset_BackupDomain( void )
+{
+ if ((LL_RCC_IsActiveFlag_PINRST() != FALSE) && (LL_RCC_IsActiveFlag_SFTRST() == FALSE))
+ {
+ HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */
+
+ /**
+ * Write twice the value to flush the APB-AHB bridge
+ * This bit shall be written in the register before writing the next one
+ */
+ HAL_PWR_EnableBkUpAccess();
+
+ __HAL_RCC_BACKUPRESET_FORCE();
+ __HAL_RCC_BACKUPRESET_RELEASE();
+ }
+
+ return;
+}
+
+static void Init_Exti( void )
+{
+ /**< Disable all wakeup interrupt on CPU1 except IPCC(36), HSEM(38) */
+ LL_EXTI_DisableIT_0_31(~0);
+ LL_EXTI_DisableIT_32_63( (~0) & (~(LL_EXTI_LINE_36 | LL_EXTI_LINE_38)) );
+
+ return;
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+void HAL_Delay(uint32_t Delay)
+{
+ uint32_t tickstart = HAL_GetTick();
+ uint32_t wait = Delay;
+
+ /* Add a freq to guarantee minimum wait */
+ if (wait < HAL_MAX_DELAY)
+ {
+ wait += HAL_GetTickFreq();
+ }
+
+ while ((HAL_GetTick() - tickstart) < wait)
+ {
+ /************************************************************************************
+ * ENTER SLEEP MODE
+ ***********************************************************************************/
+ LL_LPM_EnableSleep( ); /**< Clear SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+ #if defined ( __CC_ARM)
+ __force_stores();
+ #endif
+
+ __WFI( );
+ }
+}
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+
+}
+
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32_lpm_if.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32_lpm_if.c
new file mode 100644
index 000000000..f024b61e3
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32_lpm_if.c
@@ -0,0 +1,275 @@
+/* USER CODE BEGIN Header */
+/**
+ ***************************************************************************************
+ * File Name : stm32_lpm_if.c
+ * Description : Low layer function to enter/exit low power modes (stop, sleep).
+ ***************************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32_lpm_if.h"
+#include "stm32_lpm.h"
+#include "app_conf.h"
+/* USER CODE BEGIN include */
+
+/* USER CODE END include */
+
+/* Exported variables --------------------------------------------------------*/
+const struct UTIL_LPM_Driver_s UTIL_PowerDriver =
+{
+ PWR_EnterSleepMode,
+ PWR_ExitSleepMode,
+
+ PWR_EnterStopMode,
+ PWR_ExitStopMode,
+
+ PWR_EnterOffMode,
+ PWR_ExitOffMode,
+};
+
+/* Private function prototypes -----------------------------------------------*/
+static void Switch_On_HSI( void );
+/* USER CODE BEGIN Private_Function_Prototypes */
+
+/* USER CODE END Private_Function_Prototypes */
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN Private_Typedef */
+
+/* USER CODE END Private_Typedef */
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Private_Define */
+
+/* USER CODE END Private_Define */
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Private_Macro */
+
+/* USER CODE END Private_Macro */
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN Private_Variables */
+
+/* USER CODE END Private_Variables */
+
+/* Functions Definition ------------------------------------------------------*/
+/**
+ * @brief Enters Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_EnterOffMode( void )
+{
+/* USER CODE BEGIN PWR_EnterOffMode */
+ /************************************************************************************
+ * ENTER OFF MODE
+ ***********************************************************************************/
+ /*
+ * There is no risk to clear all the WUF here because in the current implementation, this API is called
+ * in critical section. If an interrupt occurs while in that critical section before that point,
+ * the flag is set and will be cleared here but the system will not enter Off Mode
+ * because an interrupt is pending in the NVIC. The ISR will be executed when moving out
+ * of this critical section
+ */
+ LL_PWR_ClearFlag_WU( );
+
+ LL_PWR_SetPowerMode( LL_PWR_MODE_STANDBY );
+
+ LL_LPM_EnableDeepSleep( ); /**< Set SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores( );
+#endif
+
+ __WFI( );
+/* USER CODE END PWR_EnterOffMode */
+}
+
+/**
+ * @brief Exits Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_ExitOffMode( void )
+{
+/* USER CODE BEGIN PWR_ExitOffMode */
+
+/* USER CODE END PWR_ExitOffMode */
+}
+
+/**
+ * @brief Enters Low Power Stop Mode
+ * @note ARM exists the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterStopMode( void )
+{
+/* USER CODE BEGIN PWR_EnterStopMode */
+ /**
+ * This function is called from CRITICAL SECTION
+ */
+ while( LL_HSEM_1StepLock( HSEM, CFG_HW_RCC_SEMID ) );
+
+ if ( ! LL_HSEM_1StepLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID ) )
+ {
+ if( LL_PWR_IsActiveFlag_C2DS( ) )
+ {
+ /* Release ENTRY_STOP_MODE semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID, 0 );
+
+ /**
+ * The switch on HSI before entering Stop Mode is required on Cut2.0
+ * It is useless from Cut2.1
+ */
+ Switch_On_HSI( );
+ }
+ }
+ else
+ {
+ /**
+ * The switch on HSI before entering Stop Mode is required on Cut2.0
+ * It is useless from Cut2.1
+ */
+ Switch_On_HSI( );
+ }
+
+ /* Release RCC semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_RCC_SEMID, 0 );
+
+ /************************************************************************************
+ * ENTER STOP MODE
+ ***********************************************************************************/
+ LL_PWR_SetPowerMode( LL_PWR_MODE_STOP2 );
+
+ LL_LPM_EnableDeepSleep( ); /**< Set SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores( );
+#endif
+
+ __WFI();
+/* USER CODE END PWR_EnterStopMode */
+}
+
+/**
+ * @brief Exits Low Power Stop Mode
+ * @note Enable the pll at 32MHz
+ * @param none
+ * @retval none
+ */
+void PWR_ExitStopMode( void )
+{
+/* USER CODE BEGIN PWR_ExitStopMode */
+ /**
+ * This function is called from CRITICAL SECTION
+ */
+
+ /* Release ENTRY_STOP_MODE semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID, 0 );
+
+ while( LL_HSEM_1StepLock( HSEM, CFG_HW_RCC_SEMID ) );
+
+ if(LL_RCC_GetSysClkSource( ) == LL_RCC_SYS_CLKSOURCE_STATUS_HSI)
+ {
+ LL_RCC_HSE_Enable( );
+ while(!LL_RCC_HSE_IsReady( ));
+ LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSE);
+ while (LL_RCC_GetSysClkSource( ) != LL_RCC_SYS_CLKSOURCE_STATUS_HSE);
+ }
+ else
+ {
+ /**
+ * As long as the current application is fine with HSE as system clock source,
+ * there is nothing to do here
+ */
+ }
+
+ /* Release RCC semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_RCC_SEMID, 0 );
+/* USER CODE END PWR_ExitStopMode */
+}
+
+/**
+ * @brief Enters Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterSleepMode( void )
+{
+/* USER CODE BEGIN PWR_EnterSleepMode */
+
+ HAL_SuspendTick();
+
+ /************************************************************************************
+ * ENTER SLEEP MODE
+ ***********************************************************************************/
+ LL_LPM_EnableSleep( ); /**< Clear SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores();
+#endif
+
+ __WFI( );
+/* USER CODE END PWR_EnterSleepMode */
+}
+
+/**
+ * @brief Exits Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_ExitSleepMode( void )
+{
+/* USER CODE BEGIN PWR_ExitSleepMode */
+
+ HAL_ResumeTick();
+
+/* USER CODE END PWR_ExitSleepMode */
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+/**
+ * @brief Switch the system clock on HSI
+ * @param none
+ * @retval none
+ */
+static void Switch_On_HSI( void )
+{
+ LL_RCC_HSI_Enable( );
+ while(!LL_RCC_HSI_IsReady( ));
+ LL_RCC_SetSysClkSource( LL_RCC_SYS_CLKSOURCE_HSI );
+ LL_RCC_SetSMPSClockSource(LL_RCC_SMPS_CLKSOURCE_HSI);
+ while (LL_RCC_GetSysClkSource( ) != LL_RCC_SYS_CLKSOURCE_STATUS_HSI);
+}
+
+/* USER CODE BEGIN Private_Functions */
+
+/* USER CODE END Private_Functions */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32wbxx_hal_msp.c
new file mode 100644
index 000000000..9c338486d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32wbxx_hal_msp.c
@@ -0,0 +1,334 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : stm32wbxx_hal_msp.c
+ * Description : This file provides code for the MSP Initialization
+ * and de-Initialization codes.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+/* USER CODE BEGIN Includes */
+#include "app_conf.h"
+/* USER CODE END Includes */
+extern DMA_HandleTypeDef hdma_lpuart1_tx;
+
+extern DMA_HandleTypeDef hdma_usart1_tx;
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Define */
+
+/* USER CODE END Define */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Macro */
+
+/* USER CODE END Macro */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* External functions --------------------------------------------------------*/
+/* USER CODE BEGIN ExternalFunctions */
+
+/* USER CODE END ExternalFunctions */
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+/**
+ * Initializes the Global MSP.
+ */
+void HAL_MspInit(void)
+{
+ /* USER CODE BEGIN MspInit 0 */
+
+ /* USER CODE END MspInit 0 */
+
+ __HAL_RCC_HSEM_CLK_ENABLE();
+
+ /* System interrupt init*/
+
+ /* Peripheral interrupt init */
+ /* PVD_PVM_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(PVD_PVM_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(PVD_PVM_IRQn);
+ /* FLASH_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(FLASH_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(FLASH_IRQn);
+ /* RCC_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(RCC_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(RCC_IRQn);
+ /* C2SEV_PWR_C2H_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(C2SEV_PWR_C2H_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(C2SEV_PWR_C2H_IRQn);
+ /* PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn);
+ /* HSEM_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(HSEM_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(HSEM_IRQn);
+ /* FPU_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(FPU_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(FPU_IRQn);
+
+ /* USER CODE BEGIN MspInit 1 */
+
+ /* USER CODE END MspInit 1 */
+}
+
+/**
+* @brief UART MSP Initialization
+* This function configures the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspInit(UART_HandleTypeDef* huart)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(huart->Instance==LPUART1)
+ {
+ /* USER CODE BEGIN LPUART1_MspInit 0 */
+
+ /* USER CODE END LPUART1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_LPUART1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**LPUART1 GPIO Configuration
+ PA2 ------> LPUART1_TX
+ PA3 ------> LPUART1_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* LPUART1 DMA Init */
+ /* LPUART1_TX Init */
+ hdma_lpuart1_tx.Instance = DMA1_Channel1;
+ hdma_lpuart1_tx.Init.Request = DMA_REQUEST_LPUART1_TX;
+ hdma_lpuart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_lpuart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_lpuart1_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_lpuart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_lpuart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_lpuart1_tx.Init.Mode = DMA_NORMAL;
+ hdma_lpuart1_tx.Init.Priority = DMA_PRIORITY_LOW;
+ if (HAL_DMA_Init(&hdma_lpuart1_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
+
+ /* LPUART1 interrupt Init */
+ HAL_NVIC_SetPriority(LPUART1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(LPUART1_IRQn);
+ /* USER CODE BEGIN LPUART1_MspInit 1 */
+
+ /* USER CODE END LPUART1_MspInit 1 */
+ }
+ else if(huart->Instance==USART1)
+ {
+ /* USER CODE BEGIN USART1_MspInit 0 */
+
+ /* USER CODE END USART1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_USART1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**USART1 GPIO Configuration
+ PA11 ------> USART1_CTS
+ PB6 ------> USART1_TX
+ PB7 ------> USART1_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_11;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USART1 DMA Init */
+ /* USART1_TX Init */
+ hdma_usart1_tx.Instance = DMA1_Channel2;
+ hdma_usart1_tx.Init.Request = DMA_REQUEST_USART1_TX;
+ hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart1_tx.Init.Mode = DMA_NORMAL;
+ hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;
+ if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx);
+
+ /* USART1 interrupt Init */
+ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(USART1_IRQn);
+ /* USER CODE BEGIN USART1_MspInit 1 */
+
+ /* USER CODE END USART1_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief UART MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
+{
+ if(huart->Instance==LPUART1)
+ {
+ /* USER CODE BEGIN LPUART1_MspDeInit 0 */
+
+ /* USER CODE END LPUART1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_LPUART1_CLK_DISABLE();
+
+ /**LPUART1 GPIO Configuration
+ PA2 ------> LPUART1_TX
+ PA3 ------> LPUART1_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
+
+ /* LPUART1 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmatx);
+
+ /* LPUART1 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(LPUART1_IRQn);
+ /* USER CODE BEGIN LPUART1_MspDeInit 1 */
+
+ /* USER CODE END LPUART1_MspDeInit 1 */
+ }
+ else if(huart->Instance==USART1)
+ {
+ /* USER CODE BEGIN USART1_MspDeInit 0 */
+
+ /* USER CODE END USART1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_USART1_CLK_DISABLE();
+
+ /**USART1 GPIO Configuration
+ PA11 ------> USART1_CTS
+ PB6 ------> USART1_TX
+ PB7 ------> USART1_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11);
+
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
+
+ /* USART1 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmatx);
+
+ /* USART1 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(USART1_IRQn);
+ /* USER CODE BEGIN USART1_MspDeInit 1 */
+
+ /* USER CODE END USART1_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief RTC MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hrtc: RTC handle pointer
+* @retval None
+*/
+void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
+{
+ if(hrtc->Instance==RTC)
+ {
+ /* USER CODE BEGIN RTC_MspInit 0 */
+ HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */
+
+ /**
+ * Write twice the value to flush the APB-AHB bridge
+ * This bit shall be written in the register before writing the next one
+ */
+ HAL_PWR_EnableBkUpAccess();
+
+ __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE); /**< Select LSE as RTC Input */
+
+ /* USER CODE END RTC_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_RTC_ENABLE();
+ /* USER CODE BEGIN RTC_MspInit 1 */
+
+ MODIFY_REG(RTC->CR, RTC_CR_WUCKSEL, CFG_RTC_WUCKSEL_DIVIDER);
+ /* USER CODE END RTC_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief RTC MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hrtc: RTC handle pointer
+* @retval None
+*/
+void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
+{
+ if(hrtc->Instance==RTC)
+ {
+ /* USER CODE BEGIN RTC_MspDeInit 0 */
+
+ /* USER CODE END RTC_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_RTC_DISABLE();
+ /* USER CODE BEGIN RTC_MspDeInit 1 */
+
+ /* USER CODE END RTC_MspDeInit 1 */
+ }
+
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32wbxx_it.c
new file mode 100644
index 000000000..7c5536dfc
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm32wbxx_it.c
@@ -0,0 +1,411 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32wbxx_it.c
+ * @brief Interrupt Service Routines.
+ *******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32wbxx_it.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "hw.h"
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+
+extern DMA_HandleTypeDef hdma_lpuart1_tx;
+
+extern DMA_HandleTypeDef hdma_usart1_tx;
+
+extern UART_HandleTypeDef hlpuart1;
+
+extern UART_HandleTypeDef huart1;
+
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/* Cortex Processor Interruption and Exception Handlers */
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+
+ /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+ /* USER CODE END W1_HardFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+ /* USER CODE END W1_MemoryManagement_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Prefetch fault, memory access fault.
+ */
+void BusFault_Handler(void)
+{
+ /* USER CODE BEGIN BusFault_IRQn 0 */
+
+ /* USER CODE END BusFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_BusFault_IRQn 0 */
+ /* USER CODE END W1_BusFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Undefined instruction or illegal state.
+ */
+void UsageFault_Handler(void)
+{
+ /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+ /* USER CODE END UsageFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
+ /* USER CODE END W1_UsageFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles System service call via SWI instruction.
+ */
+void SVC_Handler(void)
+{
+ /* USER CODE BEGIN SVCall_IRQn 0 */
+
+ /* USER CODE END SVCall_IRQn 0 */
+ /* USER CODE BEGIN SVCall_IRQn 1 */
+
+ /* USER CODE END SVCall_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Debug monitor.
+ */
+void DebugMon_Handler(void)
+{
+ /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+ /* USER CODE END DebugMonitor_IRQn 0 */
+ /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+ /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Pendable request for system service.
+ */
+void PendSV_Handler(void)
+{
+ /* USER CODE BEGIN PendSV_IRQn 0 */
+
+ /* USER CODE END PendSV_IRQn 0 */
+ /* USER CODE BEGIN PendSV_IRQn 1 */
+
+ /* USER CODE END PendSV_IRQn 1 */
+}
+
+/**
+ * @brief This function handles System tick timer.
+ */
+void SysTick_Handler(void)
+{
+ /* USER CODE BEGIN SysTick_IRQn 0 */
+
+ /* USER CODE END SysTick_IRQn 0 */
+ HAL_IncTick();
+ /* USER CODE BEGIN SysTick_IRQn 1 */
+
+ /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32WBxx Peripheral Interrupt Handlers */
+/* Add here the Interrupt Handlers for the used peripherals. */
+/* For the available peripheral interrupt handler names, */
+/* please refer to the startup file (startup_stm32wbxx.s). */
+/******************************************************************************/
+
+/**
+ * @brief This function handles PVD/PVM0/PVM2 interrupts through EXTI lines 16/31/33.
+ */
+void PVD_PVM_IRQHandler(void)
+{
+ /* USER CODE BEGIN PVD_PVM_IRQn 0 */
+
+ /* USER CODE END PVD_PVM_IRQn 0 */
+ HAL_PWREx_PVD_PVM_IRQHandler();
+ /* USER CODE BEGIN PVD_PVM_IRQn 1 */
+
+ /* USER CODE END PVD_PVM_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Flash global interrupt.
+ */
+void FLASH_IRQHandler(void)
+{
+ /* USER CODE BEGIN FLASH_IRQn 0 */
+
+ /* USER CODE END FLASH_IRQn 0 */
+ HAL_FLASH_IRQHandler();
+ /* USER CODE BEGIN FLASH_IRQn 1 */
+
+ /* USER CODE END FLASH_IRQn 1 */
+}
+
+/**
+ * @brief This function handles RCC global interrupt.
+ */
+void RCC_IRQHandler(void)
+{
+ /* USER CODE BEGIN RCC_IRQn 0 */
+
+ /* USER CODE END RCC_IRQn 0 */
+ /* USER CODE BEGIN RCC_IRQn 1 */
+
+ /* USER CODE END RCC_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 channel1 global interrupt.
+ */
+void DMA1_Channel1_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
+
+ /* USER CODE END DMA1_Channel1_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_lpuart1_tx);
+ /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
+
+ /* USER CODE END DMA1_Channel1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 channel2 global interrupt.
+ */
+void DMA1_Channel2_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Channel2_IRQn 0 */
+
+ /* USER CODE END DMA1_Channel2_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart1_tx);
+ /* USER CODE BEGIN DMA1_Channel2_IRQn 1 */
+
+ /* USER CODE END DMA1_Channel2_IRQn 1 */
+}
+
+/**
+ * @brief This function handles CPU2 SEV interrupt through EXTI line 40 and PWR CPU2 HOLD wake-up interrupt.
+ */
+void C2SEV_PWR_C2H_IRQHandler(void)
+{
+ /* USER CODE BEGIN C2SEV_PWR_C2H_IRQn 0 */
+
+ /* USER CODE END C2SEV_PWR_C2H_IRQn 0 */
+ /* USER CODE BEGIN C2SEV_PWR_C2H_IRQn 1 */
+
+ /* USER CODE END C2SEV_PWR_C2H_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USART1 global interrupt.
+ */
+void USART1_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART1_IRQn 0 */
+
+ /* USER CODE END USART1_IRQn 0 */
+ HAL_UART_IRQHandler(&huart1);
+ /* USER CODE BEGIN USART1_IRQn 1 */
+
+ /* USER CODE END USART1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles LPUART1 global interrupt.
+ */
+void LPUART1_IRQHandler(void)
+{
+ /* USER CODE BEGIN LPUART1_IRQn 0 */
+
+ /* USER CODE END LPUART1_IRQn 0 */
+ HAL_UART_IRQHandler(&hlpuart1);
+ /* USER CODE BEGIN LPUART1_IRQn 1 */
+
+ /* USER CODE END LPUART1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles PWR switching on the fly, end of BLE activity, end of 802.15.4 activity, end of critical radio phase interrupt.
+ */
+void PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler(void)
+{
+ /* USER CODE BEGIN PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 0 */
+
+ /* USER CODE END PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 0 */
+ /* USER CODE BEGIN PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 1 */
+
+ /* USER CODE END PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 1 */
+}
+
+/**
+ * @brief This function handles HSEM global interrupt.
+ */
+void HSEM_IRQHandler(void)
+{
+ /* USER CODE BEGIN HSEM_IRQn 0 */
+
+ /* USER CODE END HSEM_IRQn 0 */
+ HAL_HSEM_IRQHandler();
+ /* USER CODE BEGIN HSEM_IRQn 1 */
+
+ /* USER CODE END HSEM_IRQn 1 */
+}
+
+/**
+ * @brief This function handles FPU global interrupt.
+ */
+void FPU_IRQHandler(void)
+{
+ /* USER CODE BEGIN FPU_IRQn 0 */
+
+ /* USER CODE END FPU_IRQn 0 */
+ /* USER CODE BEGIN FPU_IRQn 1 */
+
+ /* USER CODE END FPU_IRQn 1 */
+}
+
+/* USER CODE BEGIN 1 */
+void RTC_WKUP_IRQHandler(void)
+{
+ HW_TS_RTC_Wakeup_Handler();
+}
+
+/**
+ * @brief This function handles External External line 4 interrupt request.
+ * @param None
+ * @retval None
+ */
+void EXTI4_IRQHandler(void)
+{
+ HAL_GPIO_EXTI_IRQHandler(BUTTON_SW1_PIN);
+}
+
+/**
+ * @brief This function handles External External line 0 interrupt request.
+ * @param None
+ * @retval None
+ */
+void EXTI0_IRQHandler(void)
+{
+ HAL_GPIO_EXTI_IRQHandler(BUTTON_SW2_PIN);
+}
+
+/**
+ * @brief This function handles External External line 1 interrupt request.
+ * @param None
+ * @retval None
+ */
+void EXTI1_IRQHandler(void)
+{
+ HAL_GPIO_EXTI_IRQHandler(BUTTON_SW3_PIN);
+}
+
+void
+IPCC_C1_TX_IRQHandler(void)
+{
+ HW_IPCC_Tx_Handler();
+
+ return;
+}
+
+void
+IPCC_C1_RX_IRQHandler(void)
+{
+ HW_IPCC_Rx_Handler();
+ return;
+}
+
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm_logging.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm_logging.c
new file mode 100644
index 000000000..c24b86dd8
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/stm_logging.c
@@ -0,0 +1,205 @@
+/**
+ ******************************************************************************
+ * File Name : stm_logging.c
+ * Description : This file contains all the defines and functions used
+ * for logging on Application examples.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/**
+ * @file
+ * This file implements logging functions to be used in Application examples.
+ *
+ */
+
+#include <ctype.h>
+#include <inttypes.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "app_conf.h"
+#include "stm_logging.h"
+
+#define LOG_PARSE_BUFFER_SIZE 256U
+
+#define LOG_TIMESTAMP_ENABLE 0
+#define LOG_REGION_ENABLE 1U
+#define LOG_RTT_COLOR_ENABLE 1U
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+#define RTT_COLOR_CODE_DEFAULT "\x1b[0m"
+#define RTT_COLOR_CODE_RED "\x1b[0;91m"
+#define RTT_COLOR_CODE_GREEN "\x1b[0;92m"
+#define RTT_COLOR_CODE_YELLOW "\x1b[0;93m"
+#define RTT_COLOR_CODE_CYAN "\x1b[0;96m"
+
+#else /* LOG_RTT_COLOR_ENABLE == 1 */
+#define RTT_COLOR_CODE_DEFAULT ""
+#define RTT_COLOR_CODE_RED ""
+#define RTT_COLOR_CODE_GREEN ""
+#define RTT_COLOR_CODE_YELLOW ""
+#define RTT_COLOR_CODE_CYAN ""
+#endif /* LOG_RTT_COLOR_ENABLE == 1 */
+
+#define LOG_MSG_SZ_MAX 256
+
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for outputting code region string.
+ *
+ * @param[inout] aLogString Pointer to log buffer.
+ * @param[in] aMaxSize Maximum size of log buffer.
+ * @param[in] otLogRegion The region ID.
+ *
+ * @returns String with a log level color value.
+ */
+static inline uint16_t
+logRegion(char *aLogString, uint16_t aMaxSize,
+ appliLogRegion_t aLogRegion)
+{
+ char logRegionString[30U];
+
+ switch (aLogRegion) {
+ case APPLI_LOG_REGION_GENERAL:
+ strcpy(logRegionString, "[M4 APPLICATION]");
+ break;
+ case APPLI_LOG_REGION_ZIGBEE_API:
+ strcpy(logRegionString, "[M4 ZIGBEE API]");
+ break;
+ default:
+ strcpy(logRegionString, "[M4]");
+ break;
+ }
+
+ return snprintf(aLogString, aMaxSize, "%s ", logRegionString);
+}
+
+#endif /* CFG_DEBUG_TRACE */
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for getting color of a given level log.
+ *
+ * @param[in] aLogLevel The log level.
+ *
+ * @returns String with a log level color value.
+ */
+static inline const char *levelToString(appliLogLevel_t aLogLevel)
+{
+ switch (aLogLevel)
+ {
+ case LOG_LEVEL_CRIT:
+ return RTT_COLOR_CODE_RED;
+
+ case LOG_LEVEL_WARN:
+ return RTT_COLOR_CODE_YELLOW;
+
+ case LOG_LEVEL_INFO:
+ return RTT_COLOR_CODE_GREEN;
+
+ case LOG_LEVEL_DEBG:
+ default:
+ return RTT_COLOR_CODE_DEFAULT;
+ }
+}
+#endif /* CFG_DEBUG_TRACE */
+
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for printing log level.
+ *
+ * @param[inout] aLogString Pointer to log buffer.
+ * @param[in] aMaxSize Maximum size of log buffer.
+ * @param[in] aLogLevel Log level.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+static inline uint16_t logLevel(char *aLogString, uint16_t aMaxSize,
+ appliLogLevel_t aLogLevel)
+{
+ return snprintf(aLogString, aMaxSize, "%s", levelToString(aLogLevel));
+}
+#endif /* CFG_DEBUG_TRACE */
+#endif /* LOG_RTT_COLOR_ENABLE */
+
+#if (LOG_TIMESTAMP_ENABLE == 1U)
+/**
+ * Function for printing actual timestamp.
+ *
+ * @param[inout] aLogString Pointer to the log buffer.
+ * @param[in] aMaxSize Maximum size of the log buffer.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+static inline uint16_t logTimestamp(char *aLogString, uint16_t aMaxSize)
+{
+ return snprintf(aLogString, aMaxSize, "%s[%010ld]", RTT_COLOR_CODE_DEFAULT,
+ otPlatAlarmMilliGetNow());
+}
+#endif /* LOG_TIMESTAMP_ENABLE */
+
+/**
+ * Function for printing application log
+ *
+ * @param[in] aLogLevel Log level.
+ * @param[in] aLogRegion The region ID.
+ * @param[in] aFormat User string format.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+void logApplication(appliLogLevel_t aLogLevel, appliLogRegion_t aLogRegion, const char *aFormat, ...)
+{
+#if (CFG_DEBUG_TRACE != 0) /* Since the traces are disabled, there is nothing to print */
+ uint16_t length = 0;
+ char logString[LOG_PARSE_BUFFER_SIZE + 1U];
+
+#if (LOG_TIMESTAMP_ENABLE == 1U)
+ length += logTimestamp(logString, LOG_PARSE_BUFFER_SIZE);
+#endif
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+ /* Add level information */
+ length += logLevel(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aLogLevel);
+#endif
+
+#if (LOG_REGION_ENABLE == 1U)
+ /* Add Region information */
+ length += logRegion(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aLogRegion);
+#endif
+
+ /* Parse user string */
+ va_list paramList;
+ va_start(paramList, aFormat);
+ length += vsnprintf(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aFormat, paramList);
+ logString[length++] = '\r';
+ logString[length++] = '\n';
+ logString[length++] = 0;
+ va_end(paramList);
+
+ if (aLogLevel <= APPLI_CONFIG_LOG_LEVEL)
+ {
+ printf("%s", logString);
+ }else
+ {
+ /* Print nothing */
+ }
+#endif /* CFG_DEBUG_TRACE */
+}
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/system_stm32wbxx.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/system_stm32wbxx.c
new file mode 100644
index 000000000..d4653a0ce
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/Core/Src/system_stm32wbxx.c
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * @file system_stm32wbxx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex Device Peripheral Access Layer System Source File
+ *
+ * This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32wbxx.s" file.
+ *
+ * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
+ * by the user application to setup the SysTick
+ * timer or configure other parameters.
+ *
+ * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
+ * be called whenever the core clock is changed
+ * during program execution.
+ *
+ * After each device reset the MSI (4 MHz) is used as system clock source.
+ * Then SystemInit() function is called, in "startup_stm32wbxx.s" file, to
+ * configure the system clock before to branch to main program.
+ *
+ * This file configures the system clock as follows:
+ *=============================================================================
+ *-----------------------------------------------------------------------------
+ * System Clock source | MSI
+ *-----------------------------------------------------------------------------
+ * SYSCLK(Hz) | 4000000
+ *-----------------------------------------------------------------------------
+ * HCLK(Hz) | 4000000
+ *-----------------------------------------------------------------------------
+ * AHB Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB1 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB2 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * PLL_M | 1
+ *-----------------------------------------------------------------------------
+ * PLL_N | 8
+ *-----------------------------------------------------------------------------
+ * PLL_P | 7
+ *-----------------------------------------------------------------------------
+ * PLL_Q | 2
+ *-----------------------------------------------------------------------------
+ * PLL_R | 2
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_P | NA
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_Q | NA
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_R | NA
+ *-----------------------------------------------------------------------------
+ * Require 48MHz for USB OTG FS, | Disabled
+ * SDIO and RNG clock |
+ *-----------------------------------------------------------------------------
+ *=============================================================================
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32WBxx_system
+ * @{
+ */
+
+/** @addtogroup stm32WBxx_System_Private_Includes
+ * @{
+ */
+
+#include "stm32wbxx.h"
+
+#if !defined (HSE_VALUE)
+ #define HSE_VALUE (32000000UL) /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (MSI_VALUE)
+ #define MSI_VALUE (4000000UL) /*!< Value of the Internal oscillator in Hz*/
+#endif /* MSI_VALUE */
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+#if !defined (LSI_VALUE)
+ #define LSI_VALUE (32000UL) /*!< Value of LSI in Hz*/
+#endif /* LSI_VALUE */
+
+#if !defined (LSE_VALUE)
+ #define LSE_VALUE (32768UL) /*!< Value of LSE in Hz*/
+#endif /* LSE_VALUE */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Defines
+ * @{
+ */
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+ Internal SRAM. */
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET 0x0U /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+
+#define VECT_TAB_BASE_ADDRESS SRAM1_BASE /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Variables
+ * @{
+ */
+ /* The SystemCoreClock variable is updated in three ways:
+ 1) by calling CMSIS function SystemCoreClockUpdate()
+ 2) by calling HAL API function HAL_RCC_GetHCLKFreq()
+ 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
+ Note: If you use this function to configure the system clock; then there
+ is no need to call the 2 first functions listed above, since SystemCoreClock
+ variable is updated automatically.
+ */
+ uint32_t SystemCoreClock = 4000000UL ; /*CPU1: M4 on MSI clock after startup (4MHz)*/
+
+ const uint32_t AHBPrescTable[16UL] = {1UL, 3UL, 5UL, 1UL, 1UL, 6UL, 10UL, 32UL, 2UL, 4UL, 8UL, 16UL, 64UL, 128UL, 256UL, 512UL};
+
+ const uint32_t APBPrescTable[8UL] = {0UL, 0UL, 0UL, 0UL, 1UL, 2UL, 3UL, 4UL};
+
+ const uint32_t MSIRangeTable[16UL] = {100000UL, 200000UL, 400000UL, 800000UL, 1000000UL, 2000000UL, \
+ 4000000UL, 8000000UL, 16000000UL, 24000000UL, 32000000UL, 48000000UL, 0UL, 0UL, 0UL, 0UL}; /* 0UL values are incorrect cases */
+
+ const uint32_t SmpsPrescalerTable[4UL][6UL]={{1UL,3UL,2UL,2UL,1UL,2UL}, \
+ {2UL,6UL,4UL,3UL,2UL,4UL}, \
+ {4UL,12UL,8UL,6UL,4UL,8UL}, \
+ {4UL,12UL,8UL,6UL,4UL,8UL}};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system.
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ /* Configure the Vector Table location add offset address ------------------*/
+#if defined(VECT_TAB_SRAM) && defined(VECT_TAB_BASE_ADDRESS)
+ /* program in SRAMx */
+ SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAMx for CPU1 */
+#else /* program in FLASH */
+ SCB->VTOR = VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
+#endif
+
+ /* FPU settings ------------------------------------------------------------*/
+ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+ SCB->CPACR |= ((3UL << (10UL*2UL))|(3UL << (11UL*2UL))); /* set CP10 and CP11 Full Access */
+ #endif
+
+ /* Reset the RCC clock configuration to the default reset state ------------*/
+ /* Set MSION bit */
+ RCC->CR |= RCC_CR_MSION;
+
+ /* Reset CFGR register */
+ RCC->CFGR = 0x00070000U;
+
+ /* Reset PLLSAI1ON, PLLON, HSECSSON, HSEON, HSION, and MSIPLLON bits */
+ RCC->CR &= (uint32_t)0xFAF6FEFBU;
+
+ /*!< Reset LSI1 and LSI2 bits */
+ RCC->CSR &= (uint32_t)0xFFFFFFFAU;
+
+ /*!< Reset HSI48ON bit */
+ RCC->CRRCR &= (uint32_t)0xFFFFFFFEU;
+
+ /* Reset PLLCFGR register */
+ RCC->PLLCFGR = 0x22041000U;
+
+ /* Reset PLLSAI1CFGR register */
+ RCC->PLLSAI1CFGR = 0x22041000U;
+
+ /* Reset HSEBYP bit */
+ RCC->CR &= 0xFFFBFFFFU;
+
+ /* Disable all interrupts */
+ RCC->CIER = 0x00000000;
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI_VALUE(*)
+ *
+ * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**)
+ *
+ * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***)
+ *
+ * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***)
+ * or HSI_VALUE(*) or MSI_VALUE(*) multiplied/divided by the PLL factors.
+ *
+ * (*) MSI_VALUE is a constant defined in stm32wbxx_hal.h file (default value
+ * 4 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) HSI_VALUE is a constant defined in stm32wbxx_hal_conf.h file (default value
+ * 16 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (***) HSE_VALUE is a constant defined in stm32wbxx_hal_conf.h file (default value
+ * 32 MHz), user has to ensure that HSE_VALUE is same as the real
+ * frequency of the crystal used. Otherwise, this function may
+ * have wrong result.
+ *
+ * - The result of this function could be not correct when using fractional
+ * value for HSE crystal.
+ *
+ * @param None
+ * @retval None
+ */
+void SystemCoreClockUpdate(void)
+{
+ uint32_t tmp, msirange, pllvco, pllr, pllsource , pllm;
+
+ /* Get MSI Range frequency--------------------------------------------------*/
+
+ /*MSI frequency range in Hz*/
+ msirange = MSIRangeTable[(RCC->CR & RCC_CR_MSIRANGE) >> RCC_CR_MSIRANGE_Pos];
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ switch (RCC->CFGR & RCC_CFGR_SWS)
+ {
+ case 0x00: /* MSI used as system clock source */
+ SystemCoreClock = msirange;
+ break;
+
+ case 0x04: /* HSI used as system clock source */
+ /* HSI used as system clock source */
+ SystemCoreClock = HSI_VALUE;
+ break;
+
+ case 0x08: /* HSE used as system clock source */
+ SystemCoreClock = HSE_VALUE;
+ break;
+
+ case 0x0C: /* PLL used as system clock source */
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE or MSI_VALUE/ PLLM) * PLLN
+ SYSCLK = PLL_VCO / PLLR
+ */
+ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC);
+ pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1UL ;
+
+ if(pllsource == 0x02UL) /* HSI used as PLL clock source */
+ {
+ pllvco = (HSI_VALUE / pllm);
+ }
+ else if(pllsource == 0x03UL) /* HSE used as PLL clock source */
+ {
+ pllvco = (HSE_VALUE / pllm);
+ }
+ else /* MSI used as PLL clock source */
+ {
+ pllvco = (msirange / pllm);
+ }
+
+ pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
+ pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1UL);
+
+ SystemCoreClock = pllvco/pllr;
+ break;
+
+ default:
+ SystemCoreClock = msirange;
+ break;
+ }
+
+ /* Compute HCLK clock frequency --------------------------------------------*/
+ /* Get HCLK1 prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)];
+ /* HCLK clock frequency */
+ SystemCoreClock = SystemCoreClock / tmp;
+
+}
+
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Project.eww b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Project.eww
new file mode 100644
index 000000000..16fc18d6a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Project.eww
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workspace>
+ <project>
+ <path>$WS_DIR$\Zigbee_OnOff_Server_Distrib.ewp</path>
+ </project>
+ <batchBuild />
+</workspace>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Zigbee_OnOff_Server_Distrib.ewd b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Zigbee_OnOff_Server_Distrib.ewd
new file mode 100644
index 000000000..a7396426d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Zigbee_OnOff_Server_Distrib.ewd
@@ -0,0 +1,1419 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <fileVersion>3</fileVersion>
+ <configuration>
+ <name>Zigbee_OnOff_Server_Distrib</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>C-SPY</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>29</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCVariant</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>MemOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MemFile</name>
+ <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32WB_M4.ddf</state>
+ </option>
+ <option>
+ <name>RunToEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RunToName</name>
+ <state>main</state>
+ </option>
+ <option>
+ <name>CExtraOptionsCheck</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CExtraOptions</name>
+ <state>--stlink_use_server</state>
+ </option>
+ <option>
+ <name>CFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDDFArgumentProducer</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadSuppressDownload</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDownloadVerifyAll</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>OCDynDriverList</name>
+ <state>STLINK_ID</state>
+ </option>
+ <option>
+ <name>OCLastSavedByProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>UseFlashLoader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CLowLevel</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacFile2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CDevice</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>FlashLoadersV3</name>
+ <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32WB_M4.board</state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck1</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck3</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath3</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OverrideDefFlashBoard</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesOffset1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesOffset2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesOffset3</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesUse1</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesUse2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesUse3</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDeviceConfigMacroFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDebuggerExtraOption</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCAllMTBOptions</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCMulticoreNrOfCores</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCMulticoreMaster</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCMulticorePort</name>
+ <state>53461</state>
+ </option>
+ <option>
+ <name>OCMulticoreWorkspace</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCMulticoreSlaveProject</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCMulticoreSlaveConfiguration</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadExtraImage</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCAttachSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MassEraseBeforeFlashing</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ARMSIM_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCSimDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCSimEnablePSP</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspOverrideConfig</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspConfigFile</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CADI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCadiMemory</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Fast Model</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCADILogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCADILogFileEditB</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CMSISDAP_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>4</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCIarProbeScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CMSISDAPResetList</name>
+ <version>1</version>
+ <state>10</state>
+ </option>
+ <option>
+ <name>CMSISDAPHWResetDuration</name>
+ <state>300</state>
+ </option>
+ <option>
+ <name>CMSISDAPHWResetDelay</name>
+ <state>200</state>
+ </option>
+ <option>
+ <name>CMSISDAPDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CMSISDAPInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiTargetEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPRestoreBreakpointsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPUpdateBreakpointsEdit</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>RDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchUndef</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchData</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchPrefetch</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchMMERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchNOCPERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchCHKERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSTATERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchBUSERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchINTERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSFERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchHARDERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiCPUEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiCPUNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeCfgOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeConfig</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CMSISDAPProbeConfigRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPSelectedCPUBehaviour</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ICpuName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCJetEmuParams</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCCMSISDAPUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCCMSISDAPUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>GDBSERVER_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJTagBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IJET_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>8</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCIarProbeScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetResetList</name>
+ <version>1</version>
+ <state>10</state>
+ </option>
+ <option>
+ <name>IjetHWResetDuration</name>
+ <state>300</state>
+ </option>
+ <option>
+ <name>IjetHWResetDelay</name>
+ <state>200</state>
+ </option>
+ <option>
+ <name>IjetPowerFromProbe</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetPowerRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>IjetInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiTargetEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetProtocolRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetSwoPin</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetCpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IjetSwoPrescalerList</name>
+ <version>1</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetRestoreBreakpointsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetUpdateBreakpointsEdit</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>RDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchUndef</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchData</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchPrefetch</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchMMERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchNOCPERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchCHKERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSTATERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchBUSERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchINTERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSFERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchHARDERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeCfgOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeConfig</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IjetProbeConfigRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiCPUEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiCPUNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetSelectedCPUBehaviour</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ICpuName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCJetEmuParams</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetPreferETB</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetTraceSettingsList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetTraceSizeList</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>FlashBoardPathSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIjetUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCIjetUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>JLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>16</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>JLinkSpeed</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCJLinkDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJLinkHWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>JLinkInitialSpeed</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCDoJlinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkCommRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>CCJLinkSpeedRadioV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCUSBDevice</name>
+ <version>1</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkResetList</name>
+ <version>6</version>
+ <state>5</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJLinkUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCTcpIpAlt</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTcpIpSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCCpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCSwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSwoClockEdit</name>
+ <state>2000</state>
+ </option>
+ <option>
+ <name>OCJLinkTraceSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkTraceSourceDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkDeviceName</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>LMIFTDI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>2</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>LmiftdiSpeed</name>
+ <state>500</state>
+ </option>
+ <option>
+ <name>CCLmiftdiDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiftdiLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCLmiFtdiInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiFtdiInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>PEMICRO_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>3</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJPEMicroShowSettings</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>STLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>4</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCSTLinkInterfaceRadio</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCSTLinkInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkResetList</name>
+ <version>3</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCpuClockEdit</name>
+ <state>32.0</state>
+ </option>
+ <option>
+ <name>CCSwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSwoClockEdit</name>
+ <state>2000</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCSTLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCSTLinkUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkDAPNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkDebugAccessPortRadio</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>THIRDPARTY_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CThirdPartyDriverDll</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileEditB</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>TIFET_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetResetList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetVccTypeDefault</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetVoltage</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>CCMSPFetVCCDefault</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetSettlingtime</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetRadioJtagSpeedType</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetConnection</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetUsbComPort</name>
+ <state>Automatic</state>
+ </option>
+ <option>
+ <name>CCMSPFetAllowAccessToBSL</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCMSPFetRadioEraseFlash</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>XDS100_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>6</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TIPackageOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>TIPackage</name>
+ <state></state>
+ </option>
+ <option>
+ <name>BoardFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCXds100BreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100DoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100UpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCXds100CatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCXds100SwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SwoClockEdit</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCXds100HWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100ResetList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100UsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCXds100UsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100JtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100InterfaceRadio</name>
+ <state>2</state>
+ </option>
+ <option>
+ <name>CCXds100InterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100ProbeList</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>CCXds100SWOPortRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SWOPort</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <debuggerPlugins>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+ <loadFlag>1</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ </debuggerPlugins>
+ </configuration>
+</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Zigbee_OnOff_Server_Distrib.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Zigbee_OnOff_Server_Distrib.ewp
new file mode 100644
index 000000000..5e0f5dfaa
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/Zigbee_OnOff_Server_Distrib.ewp
@@ -0,0 +1,1261 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <fileVersion>3</fileVersion>
+ <configuration>
+ <name>Zigbee_OnOff_Server_Distrib</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>General</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <version>30</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>ExePath</name>
+ <state>Zigbee_OnOff_Distrib/Exe</state>
+ </option>
+ <option>
+ <name>ObjPath</name>
+ <state>Zigbee_OnOff_Distrib/Obj</state>
+ </option>
+ <option>
+ <name>ListPath</name>
+ <state>Zigbee_OnOff_Distrib/List</state>
+ </option>
+ <option>
+ <name>GEndianMode</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>Input description</name>
+ <state>Full formatting, with multibyte support.</state>
+ </option>
+ <option>
+ <name>Output description</name>
+ <state>Full formatting, with multibyte support.</state>
+ </option>
+ <option>
+ <name>GOutputBinary</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGCoreOrChip</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelect</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelectSlave</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>RTDescription</name>
+ <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+ </option>
+ <option>
+ <name>OGProductVersion</name>
+ <state>4.41A</state>
+ </option>
+ <option>
+ <name>OGLastSavedByProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>GeneralEnableMisra</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraVerbose</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGChipSelectEditMenu</name>
+ <state>STM32WB55RG ST STM32WB55RG</state>
+ </option>
+ <option>
+ <name>GenLowLevelInterface</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GEndianModeBE</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGBufferedTerminalOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GenStdoutInterface</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules98</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>GeneralMisraVer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules04</name>
+ <version>0</version>
+ <state>011111111111111110111111111111011111111111111011110100111111111111111111111111111111111111111111101111111111111011111111111111111111111111111</state>
+ </option>
+ <option>
+ <name>RTConfigPath2</name>
+ <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>
+ </option>
+ <option>
+ <name>GBECoreSlave</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>OGUseCmsis</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGUseCmsisDspLib</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GRuntimeLibThreads</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CoreVariant</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>GFPUDeviceSlave</name>
+ <state>STM32WB55RG ST STM32WB55RG</state>
+ </option>
+ <option>
+ <name>FPU2</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>NrRegs</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>NEON</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GFPUCoreSlave2</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>OGCMSISPackSelectDevice</name>
+ </option>
+ <option>
+ <name>OgLibHeap</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGLibAdditionalLocale</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGPrintfVariant</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGPrintfMultibyteSupport</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGScanfVariant</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGScanfMultibyteSupport</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GenLocaleTags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>GenLocaleDisplayOnly</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DSPExtension</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TrustZone</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ICCARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>34</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCOptimizationNoSizeConstraints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDefines</name>
+ <state>USE_HAL_DRIVER</state>
+ <state>STM32WB55xx</state>
+ <state>USE_STM32WBXX_NUCLEO</state>
+ <state>ZIGBEE_WB</state>
+ </option>
+ <option>
+ <name>CCPreprocFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocComments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMnemonics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMessages</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagSuppress</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagRemark</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagWarning</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagError</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCAllowList</name>
+ <version>1</version>
+ <state>00000000</state>
+ </option>
+ <option>
+ <name>CCDebugInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IEndianMode</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IExtraOptionsCheck</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IExtraOptions</name>
+ <state>--diag_suppress Pe111</state>
+ <state>--diag_suppress Pe188</state>
+ </option>
+ <option>
+ <name>CCLangConformance</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSignedPlainChar</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRequirePrototypes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagWarnAreErr</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCompilerRuntimeInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>CCLibConfigHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>PreInclude</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CompilerMisraOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIncludePath2</name>
+ <state>$PROJ_DIR$/../Core/Inc</state>
+ <state>$PROJ_DIR$/../STM32_WPAN/App</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/BSP/P-NUCLEO-WB55.Nucleo</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/app</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/utilities</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/core/Inc</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include/mac</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include/M4</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/sequencer</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/lpm/tiny_lpm</state>
+ </option>
+ <option>
+ <name>CCStdIncCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCodeSection</name>
+ <state>.text</state>
+ </option>
+ <option>
+ <name>IProcessorMode2</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptStrategy</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevelSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules98</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules04</name>
+ <version>0</version>
+ <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+ </option>
+ <option>
+ <name>CCPosIndRopi</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPosIndRwpi</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPosIndNoDynInit</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccLang</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCDialect</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccAllowVLA</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccStaticDestr</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCppInlineSemantics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCmsis</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccFloatSemantics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCNoLiteralPool</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptStrategySlave</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCGuardCalls</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCEncSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEncOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEncOutputBom</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCEncInput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccExceptions2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccRTTI2</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>AARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>10</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>AObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ACaseSensitivity</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacroChars</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnWhat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnOne</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>ADebug</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AltRegisterNames</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ADefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AList</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AListHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AListing</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Includes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacExps</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacExec</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OnlyAssed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MultiLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>TabSpacing</name>
+ <state>8</state>
+ </option>
+ <option>
+ <name>AXRef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDefines</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefInternal</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDual</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AOutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>ALimitErrorsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ALimitErrorsEdit</name>
+ <state>100</state>
+ </option>
+ <option>
+ <name>AIgnoreStdInclude</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AUserIncludes</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AExtraOptionsCheckV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AExtraOptionsV2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AsmNoLiteralPool</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>OBJCOPY</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OOCOutputFormat</name>
+ <version>3</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>OCOutputOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCOutputFile</name>
+ <state>Zigbee_OnOff_Distrib.bin</state>
+ </option>
+ <option>
+ <name>OOCCommandLineProducer</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCObjCopyEnable</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CUSTOM</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <extensions></extensions>
+ <cmdline></cmdline>
+ <hasPrio>0</hasPrio>
+ </data>
+ </settings>
+ <settings>
+ <name>BICOMP</name>
+ <archiveVersion>0</archiveVersion>
+ <data />
+ </settings>
+ <settings>
+ <name>BUILDACTION</name>
+ <archiveVersion>1</archiveVersion>
+ <data>
+ <prebuild></prebuild>
+ <postbuild></postbuild>
+ </data>
+ </settings>
+ <settings>
+ <name>ILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>20</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IlinkLibIOConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XLinkMisraHandler</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkInputFileSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOutputFile</name>
+ <state>Zigbee_OnOff_Distrib.out</state>
+ </option>
+ <option>
+ <name>IlinkDebugInfoEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkKeepSymbols</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySymbol</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySegment</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryAlign</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkConfigDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkMapFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogInitialization</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogModule</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogSection</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogVeneer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile</name>
+ <state>$PROJ_DIR$\stm32wb55xx_flash_cm4.icf</state>
+ </option>
+ <option>
+ <name>IlinkIcfFileSlave</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkSuppressDiags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsRem</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsWarn</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsErr</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkWarningsAreErrors</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkUseExtraOptions</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkLowLevelInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAutoLibEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAdditionalLibs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkOverrideProgramEntryLabel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabelSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabel</name>
+ <state>__iar_program_start</state>
+ </option>
+ <option>
+ <name>DoFill</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FillerByte</name>
+ <state>0xFF</state>
+ </option>
+ <option>
+ <name>FillerStart</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>FillerEnd</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>CrcSize</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcAlign</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcPoly</name>
+ <state>0x11021</state>
+ </option>
+ <option>
+ <name>CrcCompl</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcBitOrder</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcInitialValue</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>DoCrc</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkBufferedTerminalOutput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkStdoutInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcFullSize</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIElfToolPostProcess</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogAutoLibSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogRedirSymbols</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogUnusedFragments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCrcReverseByteOrder</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCrcUseAsInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptInline</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOptExceptionsAllow</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptExceptionsForce</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCmsis</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptMergeDuplSections</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOptUseVfe</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptForceVfe</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkStackAnalysisEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkStackControlFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkStackCallGraphFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CrcAlgorithm</name>
+ <version>1</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcUnitSize</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkThreadsSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogCallGraph</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile_AltDefault</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEncInput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkEncOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkEncOutputBom</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkHeapSelect</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLocaleSelect</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IARCHIVE</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IarchiveInputs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IarchiveOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IarchiveOutput</name>
+ <state>###Unitialized###</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>BILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data />
+ </settings>
+ </configuration>
+ <group>
+ <name>Application</name>
+ <group>
+ <name>EWARM</name>
+ <file>
+ <name>$PROJ_DIR$\startup_stm32wb55xx_cm4.s</name>
+ </file>
+ </group>
+ <group>
+ <name>User</name>
+ <group>
+ <name>Core</name>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\hw_uart.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\main.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32wbxx_hal_msp.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm_logging.c</name>
+ </file>
+ </group>
+ <group>
+ <name>STM32_WPAN</name>
+ <group>
+ <name>App</name>
+ <file>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee.c</name>
+ </file>
+ </group>
+ <group>
+ <name>Target</name>
+ <file>
+ <name>$PROJ_DIR$\..\STM32_WPAN\Target\hw_ipcc.c</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>Drivers</name>
+ <group>
+ <name>BSP</name>
+ <group>
+ <name>STM32WBxx_Nucleo</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\P-NUCLEO-WB55.Nucleo\stm32wbxx_nucleo.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>CMSIS</name>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\system_stm32wbxx.c</name>
+ </file>
+ </group>
+ <group>
+ <name>STM32WBxx_HAL_Driver</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_cortex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_exti.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_flash.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_flash_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_gpio.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_hsem.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_tim.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_tim_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart_ex.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>Middlewares</name>
+ <group>
+ <name>STM32_WPAN</name>
+ <group>
+ <name>interface</name>
+ <group>
+ <name>patterns</name>
+ <group>
+ <name>ble_thread</name>
+ <group>
+ <name>schi</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\shci\shci.c</name>
+ </file>
+ </group>
+ <group>
+ <name>tl</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\tl_mbox.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\tl_zigbee_hci.c</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>utilities</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\dbg_trace.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\otp.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_list.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_queue.c</name>
+ </file>
+ </group>
+ <group>
+ <name>zigbee</name>
+ <group>
+ <name>core</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\zigbee\core\src\zigbee_core_wb.c</name>
+ </file>
+ </group>
+ <group>
+ <name>stack</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\zigbee\lib\stm32wb_zigbee_wb_lib.a</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>Utilities</name>
+ <group>
+ <name>lpm</name>
+ <group>
+ <name>tiny_lpm</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\lpm\tiny_lpm\stm32_lpm.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>sequencer</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\sequencer\stm32_seq.c</name>
+ </file>
+ </group>
+ </group>
+</project>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..1f886ff59
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,517 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : M4 core vector table of the STM32WB55xx devices for the
+;* IAR (EWARM) toolchain.
+;*
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == _iar_program_start,
+;* - Set the vector table entries with the exceptions ISR
+;* address.
+;* - Branches to main in the C library (which eventually
+;* calls main()).
+;* After Reset the Cortex-M4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;******************************************************************************
+;* @attention
+;*
+;* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+;* All rights reserved.</center></h2>
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+;
+;
+; The modules in this file are included in the libraries, and may be replaced
+; by any user-defined modules that define the PUBLIC symbol _program_start or
+; a user defined start symbol.
+; To override the cstartup defined in the library, simply add your modified
+; version to the workbench project.
+;
+; The vector table is normally located at address 0.
+; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
+; The name "__vector_table" has special meaning for C-SPY:
+; it is where the SP start value is found, and the NVIC vector
+; table register (VTOR) is initialized to this address if != 0.
+;
+; Cortex-M version
+;
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ PUBLIC __vector_table
+
+ DATA
+__vector_table
+ DCD sfe(CSTACK)
+ DCD Reset_Handler ; Reset Handler
+
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM Interrupt
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper, TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ THUMB
+
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:NOROOT:REORDER(2)
+Reset_Handler
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__iar_program_start
+ BX R0
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+NMI_Handler
+ B NMI_Handler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HardFault_Handler
+ B HardFault_Handler
+
+ PUBWEAK MemManage_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+MemManage_Handler
+ B MemManage_Handler
+
+ PUBWEAK BusFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+BusFault_Handler
+ B BusFault_Handler
+
+ PUBWEAK UsageFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+UsageFault_Handler
+ B UsageFault_Handler
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK DebugMon_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DebugMon_Handler
+ B DebugMon_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SysTick_Handler
+ B SysTick_Handler
+
+ PUBWEAK WWDG_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+WWDG_IRQHandler
+ B WWDG_IRQHandler
+
+ PUBWEAK PVD_PVM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PVD_PVM_IRQHandler
+ B PVD_PVM_IRQHandler
+
+ PUBWEAK TAMP_STAMP_LSECSS_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TAMP_STAMP_LSECSS_IRQHandler
+ B TAMP_STAMP_LSECSS_IRQHandler
+
+ PUBWEAK RTC_WKUP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_WKUP_IRQHandler
+ B RTC_WKUP_IRQHandler
+
+ PUBWEAK FLASH_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FLASH_IRQHandler
+ B FLASH_IRQHandler
+
+ PUBWEAK RCC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RCC_IRQHandler
+ B RCC_IRQHandler
+
+ PUBWEAK EXTI0_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI0_IRQHandler
+ B EXTI0_IRQHandler
+
+ PUBWEAK EXTI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI1_IRQHandler
+ B EXTI1_IRQHandler
+
+ PUBWEAK EXTI2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI2_IRQHandler
+ B EXTI2_IRQHandler
+
+ PUBWEAK EXTI3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI3_IRQHandler
+ B EXTI3_IRQHandler
+
+ PUBWEAK EXTI4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI4_IRQHandler
+ B EXTI4_IRQHandler
+
+ PUBWEAK DMA1_Channel1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel1_IRQHandler
+ B DMA1_Channel1_IRQHandler
+
+ PUBWEAK DMA1_Channel2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel2_IRQHandler
+ B DMA1_Channel2_IRQHandler
+
+ PUBWEAK DMA1_Channel3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel3_IRQHandler
+ B DMA1_Channel3_IRQHandler
+
+ PUBWEAK DMA1_Channel4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel4_IRQHandler
+ B DMA1_Channel4_IRQHandler
+
+ PUBWEAK DMA1_Channel5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel5_IRQHandler
+ B DMA1_Channel5_IRQHandler
+
+ PUBWEAK DMA1_Channel6_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel6_IRQHandler
+ B DMA1_Channel6_IRQHandler
+
+ PUBWEAK DMA1_Channel7_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel7_IRQHandler
+ B DMA1_Channel7_IRQHandler
+
+ PUBWEAK ADC1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+ADC1_IRQHandler
+ B ADC1_IRQHandler
+
+ PUBWEAK USB_HP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USB_HP_IRQHandler
+ B USB_HP_IRQHandler
+
+ PUBWEAK USB_LP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USB_LP_IRQHandler
+ B USB_LP_IRQHandler
+
+ PUBWEAK C2SEV_PWR_C2H_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+C2SEV_PWR_C2H_IRQHandler
+ B C2SEV_PWR_C2H_IRQHandler
+
+ PUBWEAK COMP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+COMP_IRQHandler
+ B COMP_IRQHandler
+
+ PUBWEAK EXTI9_5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI9_5_IRQHandler
+ B EXTI9_5_IRQHandler
+
+ PUBWEAK TIM1_BRK_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_BRK_IRQHandler
+ B TIM1_BRK_IRQHandler
+
+ PUBWEAK TIM1_UP_TIM16_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_UP_TIM16_IRQHandler
+ B TIM1_UP_TIM16_IRQHandler
+
+ PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_TRG_COM_TIM17_IRQHandler
+ B TIM1_TRG_COM_TIM17_IRQHandler
+
+ PUBWEAK TIM1_CC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_CC_IRQHandler
+ B TIM1_CC_IRQHandler
+
+ PUBWEAK TIM2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM2_IRQHandler
+ B TIM2_IRQHandler
+
+ PUBWEAK PKA_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PKA_IRQHandler
+ B PKA_IRQHandler
+
+ PUBWEAK I2C1_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_EV_IRQHandler
+ B I2C1_EV_IRQHandler
+
+ PUBWEAK I2C1_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_ER_IRQHandler
+ B I2C1_ER_IRQHandler
+
+ PUBWEAK I2C3_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C3_EV_IRQHandler
+ B I2C3_EV_IRQHandler
+
+ PUBWEAK I2C3_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C3_ER_IRQHandler
+ B I2C3_ER_IRQHandler
+
+ PUBWEAK SPI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI1_IRQHandler
+ B SPI1_IRQHandler
+
+ PUBWEAK SPI2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI2_IRQHandler
+ B SPI2_IRQHandler
+
+ PUBWEAK USART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USART1_IRQHandler
+ B USART1_IRQHandler
+
+ PUBWEAK LPUART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPUART1_IRQHandler
+ B LPUART1_IRQHandler
+
+ PUBWEAK SAI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SAI1_IRQHandler
+ B SAI1_IRQHandler
+
+ PUBWEAK TSC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TSC_IRQHandler
+ B TSC_IRQHandler
+
+ PUBWEAK EXTI15_10_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI15_10_IRQHandler
+ B EXTI15_10_IRQHandler
+
+ PUBWEAK RTC_Alarm_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_Alarm_IRQHandler
+ B RTC_Alarm_IRQHandler
+
+ PUBWEAK CRS_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+CRS_IRQHandler
+ B CRS_IRQHandler
+
+ PUBWEAK PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ B PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+
+ PUBWEAK IPCC_C1_RX_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+IPCC_C1_RX_IRQHandler
+ B IPCC_C1_RX_IRQHandler
+
+ PUBWEAK IPCC_C1_TX_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+IPCC_C1_TX_IRQHandler
+ B IPCC_C1_TX_IRQHandler
+
+ PUBWEAK HSEM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HSEM_IRQHandler
+ B HSEM_IRQHandler
+
+ PUBWEAK LPTIM1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPTIM1_IRQHandler
+ B LPTIM1_IRQHandler
+
+ PUBWEAK LPTIM2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPTIM2_IRQHandler
+ B LPTIM2_IRQHandler
+
+ PUBWEAK LCD_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LCD_IRQHandler
+ B LCD_IRQHandler
+
+ PUBWEAK QUADSPI_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+QUADSPI_IRQHandler
+ B QUADSPI_IRQHandler
+
+ PUBWEAK AES1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+AES1_IRQHandler
+ B AES1_IRQHandler
+
+ PUBWEAK AES2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+AES2_IRQHandler
+ B AES2_IRQHandler
+
+ PUBWEAK RNG_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RNG_IRQHandler
+ B RNG_IRQHandler
+
+ PUBWEAK FPU_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FPU_IRQHandler
+ B FPU_IRQHandler
+
+ PUBWEAK DMA2_Channel1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel1_IRQHandler
+ B DMA2_Channel1_IRQHandler
+
+ PUBWEAK DMA2_Channel2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel2_IRQHandler
+ B DMA2_Channel2_IRQHandler
+
+ PUBWEAK DMA2_Channel3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel3_IRQHandler
+ B DMA2_Channel3_IRQHandler
+
+ PUBWEAK DMA2_Channel4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel4_IRQHandler
+ B DMA2_Channel4_IRQHandler
+
+ PUBWEAK DMA2_Channel5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel5_IRQHandler
+ B DMA2_Channel5_IRQHandler
+
+ PUBWEAK DMA2_Channel6_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel6_IRQHandler
+ B DMA2_Channel6_IRQHandler
+
+ PUBWEAK DMA2_Channel7_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel7_IRQHandler
+ B DMA2_Channel7_IRQHandler
+
+ PUBWEAK DMAMUX1_OVR_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMAMUX1_OVR_IRQHandler
+ B DMAMUX1_OVR_IRQHandler
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/stm32wb55xx_flash_cm4.icf b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/stm32wb55xx_flash_cm4.icf
new file mode 100644
index 000000000..70aec4026
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/EWARM/stm32wb55xx_flash_cm4.icf
@@ -0,0 +1,47 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x08000000;
+/*-Memory Regions-*/
+/***** FLASH Part dedicated to M4 *****/
+define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
+define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
+define symbol __ICFEDIT_region_RAM_start__ = 0x20000004;
+define symbol __ICFEDIT_region_RAM_end__ = 0x2002F000;
+
+ /*0x2002FFFF---------------------------------------|
+ * | Emulation Flash |
+ * 0x2002F000-------------------------------------- |
+ * | Region_RAM |
+ * 0x20000004-------------------------------------- |
+
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x1000; /* 4K */
+define symbol __ICFEDIT_size_heap__ = 102400; /* was 4K */
+/**** End of ICF editor section. ###ICF###*/
+
+define symbol __ICFEDIT_region_RAM_SHARED_start__ = 0x20030000;
+define symbol __ICFEDIT_region_RAM_SHARED_end__ = 0x20031000;
+
+define memory mem with size = 4G;
+define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
+define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
+define region RAM_SHARED_region = mem:[from __ICFEDIT_region_RAM_SHARED_start__ to __ICFEDIT_region_RAM_SHARED_end__];
+
+define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
+define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
+
+/* MB_MEM1 and MB_MEM2 are sections reserved to mailbox communication. It is placed in the shared memory */
+initialize by copy { readwrite };
+do not initialize { section .noinit,
+ section MAPPING_TABLE,
+ section MB_MEM1 };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region { readonly };
+place in RAM_region { readwrite,block CSTACK, block HEAP };
+place in RAM_SHARED_region { first section MAPPING_TABLE};
+place in RAM_SHARED_region { section MB_MEM1};
+place in RAM_SHARED_region { section MB_MEM2};
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/App/app_zigbee.c
new file mode 100644
index 000000000..10c84dc1b
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/App/app_zigbee.c
@@ -0,0 +1,564 @@
+/**
+ ******************************************************************************
+ * File Name : App/app_zigbee.c
+ * Description : Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "app_entry.h"
+#include "dbg_trace.h"
+#include "app_zigbee.h"
+#include "zigbee_interface.h"
+#include "shci.h"
+#include "stm_logging.h"
+#include "app_conf.h"
+#include "stm32wbxx_core_interface_def.h"
+#include "zigbee_types.h"
+#include "stm32_seq.h"
+
+#include <assert.h>
+#include "zcl/zcl.h"
+#include "zcl/zcl.onoff.h"
+#include "zcl/zcl.identify.h"
+
+/* Private defines -----------------------------------------------------------*/
+#define APP_ZIGBEE_STARTUP_FAIL_DELAY 500U
+#define SW1_ENDPOINT 17
+#define SW1_GROUP_ADDR 0x0001
+#define CHANNEL 12
+
+/* Private function prototypes -----------------------------------------------*/
+static void APP_ZIGBEE_StackLayersInit(void);
+static void APP_ZIGBEE_ConfigEndpoints(void);
+static void APP_ZIGBEE_NwkForm(void);
+static void APP_ZIGBEE_ConfigGroupAddr(void);
+
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
+
+static void Wait_Getting_Ack_From_M0(void);
+static void Receive_Ack_From_M0(void);
+static void Receive_Notification_From_M0(void);
+
+/* Private variables -----------------------------------------------*/
+static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
+static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
+static __IO uint32_t CptReceiveMsgFromM0 = 0;
+
+PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+struct zigbee_app_info {
+ bool has_init;
+ struct ZigBeeT *zb;
+ enum ZbStartType startupControl;
+ enum ZbStatusCodeT join_status;
+ uint32_t join_delay;
+ bool init_after_join;
+
+ struct ZbZclClusterT *onoff_server_1;
+};
+static struct zigbee_app_info zigbee_app_info;
+
+static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb);
+
+static const struct ZbZclAttrT onoff_server_attr_list[] = {
+ /* OnOff Server Attributes */
+ {
+ ZCL_ONOFF_ATTR_ONOFF, ZCL_DATATYPE_BOOLEAN,
+ ZCL_ATTR_FLAG_REPORTABLE | ZCL_ATTR_FLAG_PERSISTABLE | ZCL_ATTR_FLAG_DEFAULTABLE | ZCL_ATTR_FLAG_CB_NOTIFY, 0,
+ onoff_server_attr_cb, {0, 0}, {0, 0}
+ },
+};
+
+/* Functions Definition ------------------------------------------------------*/
+
+void APP_ZIGBEE_Init(void)
+{
+ SHCI_CmdStatus_t ZigbeeInitStatus;
+
+ APP_DBG("APP_ZIGBEE_Init");
+
+ /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
+ APP_ZIGBEE_CheckWirelessFirmwareInfo();
+
+ /* Register cmdbuffer */
+ APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
+
+ /* Init config buffer and call TL_ZIGBEE_Init */
+ APP_ZIGBEE_TL_INIT();
+
+ /* Register task */
+ /* Create the different tasks */
+ UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
+
+ /* Task associated with network creation process */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, UTIL_SEQ_RFU, APP_ZIGBEE_NwkForm);
+
+ /* Start the Zigbee on the CPU2 side */
+ ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(ZigbeeInitStatus);
+
+ /* Initialize Zigbee stack layers */
+ APP_ZIGBEE_StackLayersInit();
+
+} /* APP_ZIGBEE_Init */
+
+/**
+ * @brief Initialize Zigbee stack layers
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_StackLayersInit(void)
+{
+ APP_DBG("APP_ZIGBEE_StackLayersInit");
+
+ zigbee_app_info.zb = ZbInit(0U, NULL, NULL);
+ assert(zigbee_app_info.zb != NULL);
+
+ /* Create the endpoint and cluster(s) */
+ APP_ZIGBEE_ConfigEndpoints();
+
+ BSP_LED_Off(LED_RED);
+ BSP_LED_Off(LED_GREEN);
+ BSP_LED_Off(LED_BLUE);
+
+ /* Configure the joining parameters */
+ zigbee_app_info.join_status = 0x01; /* init to error status */
+ zigbee_app_info.join_delay = HAL_GetTick(); /* now */
+ zigbee_app_info.startupControl = ZbStartTypeJoin;
+
+ /* Initialization Complete */
+ zigbee_app_info.has_init = true;
+
+ /* run the task */
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+}
+
+static void APP_ZIGBEE_ConfigEndpoints(void)
+{
+ ZbApsmeAddEndpointReqT req;
+ ZbApsmeAddEndpointConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
+ req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
+
+ /* Endpoint: SW1_ENDPOINT */
+ req.endpoint = SW1_ENDPOINT;
+ ZbZclAddEndpoint(zigbee_app_info.zb, &req, &conf);
+ assert(conf.status == ZB_STATUS_SUCCESS);
+
+ /* OnOff Server */
+ zigbee_app_info.onoff_server_1 = ZbZclOnOffServerAlloc(zigbee_app_info.zb, SW1_ENDPOINT, NULL);
+ assert(zigbee_app_info.onoff_server_1 != NULL);
+ ZbZclAttrAppendList(zigbee_app_info.onoff_server_1, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
+ ZbZclClusterEndpointRegister(zigbee_app_info.onoff_server_1);
+
+} /* config_endpoints */
+
+/**
+ * @brief Handle Zigbee network forming and joining
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_NwkForm(void)
+{
+ if ((zigbee_app_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_app_info.join_delay))
+ {
+ struct ZbStartupT config;
+ enum ZbStatusCodeT status;
+
+ /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
+ ZbSetLogging(zigbee_app_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
+
+ /* Attempt to join a zigbee network */
+ ZbStartupConfigGetProDefaults(&config);
+
+ APP_DBG("Network config : APP_STARTUP_DISTRIB");
+ /* Set the TC address to be distributed. */
+ config.security.trustCenterAddress = ZB_DISTRIBUTED_TC_ADDR;
+
+ /* Using the Uncertified Distributed Global Key (d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:da:db:dc:dd:de:df) */
+ memcpy(config.security.distributedGlobalKey, sec_key_distrib_uncert, ZB_SEC_KEYSIZE);
+
+ config.startupControl = zigbee_app_info.startupControl;
+
+ config.channelList.count = 1;
+ config.channelList.list[0].page = 0;
+ config.channelList.list[0].channelMask = 1 << CHANNEL; /* Channel in use*/
+
+ /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
+ * a blocking call on the M4. */
+ status = ZbStartupWait(zigbee_app_info.zb, &config);
+
+ APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
+ zigbee_app_info.join_status = status;
+
+ if (status == ZB_STATUS_SUCCESS) {
+ zigbee_app_info.join_delay = 0U;
+ zigbee_app_info.init_after_join = true;
+ BSP_LED_On(LED_BLUE);
+ }
+ else {
+ APP_DBG("Startup failed, attempting to form a network after a short delay.");
+ zigbee_app_info.startupControl = ZbStartTypeForm;
+
+ zigbee_app_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
+ }
+ }
+
+ /* If Network forming/joining was not successful reschedule the current task to retry the process */
+ if (zigbee_app_info.join_status != ZB_STATUS_SUCCESS)
+ {
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+ }
+ else
+ {
+ zigbee_app_info.init_after_join = false;
+
+ /* Assign ourselves to the group addresses */
+ APP_ZIGBEE_ConfigGroupAddr();
+
+ /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
+ uint32_t bcast_timeout = 3;
+ ZbNwkSet(zigbee_app_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
+ }
+}
+
+/**
+ * @brief Set group addressing mode
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_ConfigGroupAddr(void)
+{
+ ZbApsmeAddGroupReqT req;
+ ZbApsmeAddGroupConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.endpt = SW1_ENDPOINT;
+ req.groupAddr = SW1_GROUP_ADDR;
+ ZbApsmeAddGroupReq(zigbee_app_info.zb, &req, &conf);
+
+} /* APP_ZIGBEE_ConfigGroupAddr */
+
+static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb)
+{
+ uint8_t endpoint;
+ uint8_t attrVal;
+
+ endpoint = ZbZclClusterGetEndpoint(clusterPtr);
+ APP_DBG("onoff_server_attr_cb : endpoint = %d", endpoint);
+ switch (cb->info->attributeId) {
+ case ZCL_ONOFF_ATTR_ONOFF:
+ if (endpoint == SW1_ENDPOINT) {
+ if (ZbZclAttrRead(zigbee_app_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
+ if (attrVal != 0) {
+ APP_DBG("LED_RED ON");
+ BSP_LED_On(LED_RED);
+ }
+ else {
+ APP_DBG("LED_RED OFF");
+ BSP_LED_Off(LED_RED);
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ } /* switch */
+ return ZCL_STATUS_SUCCESS;
+} /* onoff_server_attr_notify */
+
+/*************************************************************
+ * ZbStartupWait Blocking Call
+ *************************************************************/
+struct ZbStartupWaitInfo {
+ bool active;
+ enum ZbStatusCodeT status;
+};
+
+static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
+{
+ struct ZbStartupWaitInfo *info = cb_arg;
+
+ info->status = status;
+ info->active = false;
+} /* ZbStartupWaitCb */
+
+enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
+{
+ struct ZbStartupWaitInfo *info;
+ enum ZbStatusCodeT status;
+
+ info = malloc(sizeof(struct ZbStartupWaitInfo));
+ if (info == NULL) {
+ return ZB_STATUS_ALLOC_FAIL;
+ }
+ memset(info, 0, sizeof(struct ZbStartupWaitInfo));
+
+ info->active = true;
+ status = ZbStartup(zb, config, ZbStartupWaitCb, info);
+ if (status != ZB_STATUS_SUCCESS) {
+ info->active = false;
+ return status;
+ }
+ while (info->active) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ }
+ status = info->status;
+ free(info);
+ return status;
+} /* ZbStartupWait */
+
+/**
+ * @brief Trace the error or the warning reported.
+ * @param ErrId :
+ * @param ErrCode
+ * @retval None
+ */
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
+{
+ switch (ErrId) {
+ default:
+ APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
+ break;
+ }
+} /* APP_ZIGBEE_Error */
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+/**
+ * @brief Warn the user that an error has occurred.In this case,
+ * the LEDs on the Board will start blinking.
+ *
+ * @param pMess : Message associated to the error.
+ * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
+ * @retval None
+ */
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
+{
+ APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
+ while (1U == 1U) {
+ BSP_LED_Toggle(LED1);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED2);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED3);
+ HAL_Delay(500U);
+ }
+} /* APP_ZIGBEE_TraceError */
+
+/**
+ * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
+ * and display associated informations
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
+{
+ WirelessFwInfo_t wireless_info_instance;
+ WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
+
+ if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ }
+ else {
+ APP_DBG("**********************************************************");
+ APP_DBG("WIRELESS COPROCESSOR FW:");
+ /* Print version */
+ APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
+
+ switch (p_wireless_info->StackType) {
+ case INFO_STACK_TYPE_ZIGBEE:
+ APP_DBG("FW Type : Zigbee stack");
+ break;
+ default:
+ /* No Zigbee device supported ! */
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ break;
+ }
+ APP_DBG("**********************************************************");
+ }
+} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
+{
+ p_ZIGBEE_otcmdbuffer = p_buffer;
+} /* APP_ZIGBEE_RegisterCmdBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+} /* ZIGBEE_Get_OTCmdPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
+} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
+} /* ZIGBEE_Get_NotificationPayloadBuffer */
+
+/**
+ * @brief This function is used to transfer the commands from the M4 to the M0.
+ *
+ * @param None
+ * @return None
+ */
+void ZIGBEE_CmdTransfer(void)
+{
+ Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+
+ /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
+ /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
+ * + ID (4 bytes) + Size (4 bytes) */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
+
+ TL_ZIGBEE_SendAppliCmdToM0();
+
+ /* Wait completion of cmd */
+ Wait_Getting_Ack_From_M0();
+} /* ZIGBEE_CmdTransfer */
+
+/**
+ * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
+ *
+ *
+ * @param Otbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
+{
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(Otbuffer);
+
+ Receive_Ack_From_M0();
+} /* TL_ZIGBEE_CmdEvtReceived */
+
+/**
+ * @brief This function is called when notification from M0+ is received.
+ *
+ * @param Notbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
+{
+ p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
+
+ Receive_Notification_From_M0();
+} /* TL_ZIGBEE_NotReceived */
+
+/**
+ * @brief This function is called before sending any ot command to the M0
+ * core. The purpose of this function is to be able to check if
+ * there are no notifications coming from the M0 core which are
+ * pending before sending a new ot command.
+ * @param None
+ * @retval None
+ */
+void Pre_ZigbeeCmdProcessing(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+} /* Pre_ZigbeeCmdProcessing */
+
+/**
+ * @brief This function waits for getting an acknowledgment from the M0.
+ *
+ * @param None
+ * @retval None
+ */
+static void Wait_Getting_Ack_From_M0(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Wait_Getting_Ack_From_M0 */
+
+/**
+ * @brief Receive an acknowledgment from the M0+ core.
+ * Each command send by the M4 to the M0 are acknowledged.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Ack_From_M0(void)
+{
+ UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Receive_Ack_From_M0 */
+
+/**
+ * @brief Receive a notification from the M0+ through the IPCC.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Notification_From_M0(void)
+{
+ CptReceiveMsgFromM0++;
+ UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
+} /* Receive_Notification_From_M0 */
+
+/**
+ * @brief Perform initialization of TL for Zigbee.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_TL_INIT(void)
+{
+ ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
+ TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
+} /* APP_ZIGBEE_TL_INIT */
+
+/**
+ * @brief Process the messages coming from the M0.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_ProcessMsgM0ToM4(void)
+{
+ if (CptReceiveMsgFromM0 != 0) {
+ /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
+ if (CptReceiveMsgFromM0 > 1U) {
+ APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
+ }
+ else {
+ Zigbee_CallBackProcessing();
+ }
+ /* Reset counter */
+ CptReceiveMsgFromM0 = 0;
+ }
+} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee.h b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/App/app_zigbee.h
index dd907ec23..dd907ec23 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/STM32_WPAN/App/app_zigbee.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/App/app_zigbee.h
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/Target/hw_ipcc.c
new file mode 100644
index 000000000..ab7f75b9a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/STM32_WPAN/Target/hw_ipcc.c
@@ -0,0 +1,491 @@
+/**
+ ******************************************************************************
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "mbox_def.h"
+
+/* Global variables ---------------------------------------------------------*/
+/* Private defines -----------------------------------------------------------*/
+#define HW_IPCC_TX_PENDING( channel ) ( !(LL_C1_IPCC_IsActiveFlag_CHx( IPCC, channel )) ) && (((~(IPCC->C1MR)) & (channel << 16U)))
+#define HW_IPCC_RX_PENDING( channel ) (LL_C2_IPCC_IsActiveFlag_CHx( IPCC, channel )) && (((~(IPCC->C1MR)) & (channel << 0U)))
+
+/* Private macros ------------------------------------------------------------*/
+/* Private typedef -----------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+static void (*FreeBufCb)( void );
+
+/* Private function prototypes -----------------------------------------------*/
+static void HW_IPCC_BLE_EvtHandler( void );
+static void HW_IPCC_BLE_AclDataEvtHandler( void );
+static void HW_IPCC_MM_FreeBufHandler( void );
+static void HW_IPCC_SYS_CmdEvtHandler( void );
+static void HW_IPCC_SYS_EvtHandler( void );
+static void HW_IPCC_TRACES_EvtHandler( void );
+
+#ifdef THREAD_WB
+static void HW_IPCC_OT_CmdEvtHandler( void );
+static void HW_IPCC_THREAD_NotEvtHandler( void );
+static void HW_IPCC_THREAD_CliNotEvtHandler( void );
+#endif
+
+#ifdef MAC_802_15_4_WB
+static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void );
+static void HW_IPCC_MAC_802_15_4_NotEvtHandler( void );
+#endif
+
+#ifdef ZIGBEE_WB
+static void HW_IPCC_ZIGBEE_CmdEvtHandler( void );
+static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void );
+
+#endif
+
+/* Public function definition -----------------------------------------------*/
+
+/******************************************************************************
+ * INTERRUPT HANDLER
+ ******************************************************************************/
+void HW_IPCC_Rx_Handler( void )
+{
+ if (HW_IPCC_RX_PENDING( HW_IPCC_SYSTEM_EVENT_CHANNEL ))
+ {
+ HW_IPCC_SYS_EvtHandler();
+ }
+#ifdef MAC_802_15_4_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_MAC_802_15_4_NotEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef THREAD_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_THREAD_NotEvtHandler();
+ }
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_THREAD_CliNotEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef ZIGBEE_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL ))
+ {
+ HW_IPCC_ZIGBEE_StackNotifEvtHandler();
+ }
+#endif /* ZIGBEE_WB */
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_BLE_EVENT_CHANNEL ))
+ {
+ HW_IPCC_BLE_EvtHandler();
+ }
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_TRACES_CHANNEL ))
+ {
+ HW_IPCC_TRACES_EvtHandler();
+ }
+
+ return;
+}
+
+void HW_IPCC_Tx_Handler( void )
+{
+ if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_SYS_CmdEvtHandler();
+ }
+#ifdef MAC_802_15_4_WB
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_MAC_802_15_4_CmdEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef THREAD_WB
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_OT_CmdEvtHandler();
+ }
+#endif /* THREAD_WB */
+#ifdef ZIGBEE_WB
+ if (HW_IPCC_TX_PENDING( HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL ))
+ {
+ HW_IPCC_ZIGBEE_CmdEvtHandler();
+ }
+#endif /* ZIGBEE_WB */
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_SYS_CmdEvtHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ))
+ {
+ HW_IPCC_MM_FreeBufHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_HCI_ACL_DATA_CHANNEL ))
+ {
+ HW_IPCC_BLE_AclDataEvtHandler();
+ }
+
+ return;
+}
+/******************************************************************************
+ * GENERAL
+ ******************************************************************************/
+void HW_IPCC_Enable( void )
+{
+ /**
+ * In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
+ * In that case, to keep the mechanism transparent to the user application, it shall call the system command
+ * SHCI_C2_Reinit( ) before jumping to the application.
+ * When the CPU2 receives that command, it waits for its event input to be set to restart the CPU2 firmware.
+ * This is required because once C2BOOT has been set once, a clear/set on C2BOOT has no effect.
+ * When SHCI_C2_Reinit( ) is not called, generating an event to the CPU2 does not have any effect
+ * So, by default, the application shall both set the event flag and set the C2BOOT bit.
+ */
+ __SEV( ); /* Set the internal event flag and send an event to the CPU2 */
+ __WFE( ); /* Clear the internal event flag */
+ LL_PWR_EnableBootC2( );
+
+ return;
+}
+
+void HW_IPCC_Init( void )
+{
+ LL_AHB3_GRP1_EnableClock( LL_AHB3_GRP1_PERIPH_IPCC );
+
+ LL_C1_IPCC_EnableIT_RXO( IPCC );
+ LL_C1_IPCC_EnableIT_TXF( IPCC );
+
+ HAL_NVIC_EnableIRQ(IPCC_C1_RX_IRQn);
+ HAL_NVIC_EnableIRQ(IPCC_C1_TX_IRQn);
+
+ return;
+}
+
+/******************************************************************************
+ * BLE
+ ******************************************************************************/
+void HW_IPCC_BLE_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_BLE_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_BLE_CMD_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_BLE_EvtHandler( void )
+{
+ HW_IPCC_BLE_RxEvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_BLE_SendAclData( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_BLE_AclDataEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+
+ HW_IPCC_BLE_AclDataAckNot();
+
+ return;
+}
+
+__weak void HW_IPCC_BLE_AclDataAckNot( void ){};
+__weak void HW_IPCC_BLE_RxEvtNot( void ){};
+
+/******************************************************************************
+ * SYSTEM
+ ******************************************************************************/
+void HW_IPCC_SYS_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_SYS_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_SYS_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+
+ HW_IPCC_SYS_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_SYS_EvtHandler( void )
+{
+ HW_IPCC_SYS_EvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
+
+ return;
+}
+
+__weak void HW_IPCC_SYS_CmdEvtNot( void ){};
+__weak void HW_IPCC_SYS_EvtNot( void ){};
+
+/******************************************************************************
+ * THREAD
+ ******************************************************************************/
+#ifdef THREAD_WB
+void HW_IPCC_THREAD_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_OT_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_CLI_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_CMD_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_THREAD_SendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_THREAD_CliSendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_OT_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ HW_IPCC_OT_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_THREAD_NotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_THREAD_EvtNot();
+
+ return;
+}
+
+static void HW_IPCC_THREAD_CliNotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_THREAD_CliEvtNot();
+
+ return;
+}
+
+__weak void HW_IPCC_OT_CmdEvtNot( void ){};
+__weak void HW_IPCC_CLI_CmdEvtNot( void ){};
+__weak void HW_IPCC_THREAD_EvtNot( void ){};
+
+#endif /* THREAD_WB */
+/******************************************************************************
+ * ZIGBEE
+ ******************************************************************************/
+#ifdef ZIGBEE_WB
+void HW_IPCC_ZIGBEE_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_ZIGBEE_SendAppliCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_ZIGBEE_SendAppliCmdAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_ZIGBEE_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ HW_IPCC_ZIGBEE_AppliCmdNotification();
+
+ return;
+}
+
+static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_ZIGBEE_AppliAsyncEvtNotification();
+
+ return;
+}
+
+
+
+__weak void HW_IPCC_ZIGBEE_AppliCmdNotification( void ){};
+__weak void HW_IPCC_ZIGBEE_AppliAsyncEvtNotification( void ){};
+#endif /* ZIGBEE_WB */
+
+
+/******************************************************************************
+ * MEMORY MANAGER
+ ******************************************************************************/
+void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )
+{
+ if ( LL_C1_IPCC_IsActiveFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ) )
+ {
+ FreeBufCb = cb;
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+ }
+ else
+ {
+ cb();
+
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+ }
+
+ return;
+}
+
+static void HW_IPCC_MM_FreeBufHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+
+ FreeBufCb();
+
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+
+ return;
+}
+
+/******************************************************************************
+ * TRACES
+ ******************************************************************************/
+void HW_IPCC_TRACES_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_TRACES_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_TRACES_EvtHandler( void )
+{
+ HW_IPCC_TRACES_EvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_TRACES_CHANNEL );
+
+ return;
+}
+
+__weak void HW_IPCC_TRACES_EvtNot( void ){};
+
+
+/******************************************************************************
+ * MAC 802.15.4
+ ******************************************************************************/
+#ifdef MAC_802_15_4_WB
+void HW_IPCC_MAC_802_15_4_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_MAC_802_15_4_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_MAC_802_15_4_SendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+
+ HW_IPCC_MAC_802_15_4_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_MAC_802_15_4_NotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_MAC_802_15_4_EvtNot();
+
+ return;
+}
+__weak void HW_IPCC_MAC_802_15_4_CmdEvtNot( void ){};
+__weak void HW_IPCC_MAC_802_15_4_EvtNot( void ){};
+#endif
+
+/******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/readme.txt b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/readme.txt
index b453fced2..94cf6b791 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/readme.txt
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Server_Distrib/readme.txt
@@ -1,13 +1,12 @@
/**
- @page Zigbee_OnOff_Router application
+ @page Zigbee_OnOff_Server_Distrib application
@verbatim
******************************************************************************
- * @file Zigbee/Zigbee_OnOff_Router/readme.txt
+ * @file Zigbee/Zigbee_OnOff_Server_Distrib/readme.txt
* @author MCD Application Team
- * @brief Description of the Zigbee OnOff Cluster application using a
- * centralized network. This application concerns only the
- * router role.
+ * @brief Description of the Zigbee OnOff Cluster application as a server
+ * using a distributed network.
******************************************************************************
*
* Copyright (c) 2019 STMicroelectronics. All rights reserved.
@@ -22,72 +21,67 @@
@par Application Description
-How to use OnOff cluster on a Centralized Zigbee network with device acting as router.
+How to use OnOff cluster as a server on a distributed Zigbee network.
-The purpose of this application is to show how to create a centralized Zigbee network, and how to communicate
-from one node to another one using the OnOff cluster. Once the Zigbee mesh network is created, the
-user can send requests to the different boards through the push buttons in order to make the LED toggling.
+The purpose of this application is to show how to create a Zigbee distributed network, and
+how to communicate from one node to another one using the OnOff cluster. Once the Zigbee mesh
+network is created, the user can send requests from the client to the server through the push button
+in order to make the LED toggling.
-Each device acts as a client and a server at the same time, making the communication between the different
-boards symmetrical (bi-directorial)
+For this application it is requested to have:
+- 1 STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Server_Distrib
+
+- 1 or more STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Client_Distrib
+
Device 1 Device 2
--------- ---------
- | | ZbZclOnOffClientToggleReq | |
+ | | ZbZclOnOffClientToggleReq | |
PushB=>|Client | -----------------------------------> |Server | =>LED
| | | |
| | | |
- | | ZbZclOnOffClientToggleReq | |
- LED <= |Server | <------------------------------------|Client |<=PushB
- | | | |
-------- ---------
+
+To setup the application :
+ a) Open the project, build it and load your generated application on your STM32WB devices.
+
+ To run the application :
-This application requires at minimum two STM32WB55xx nucleo boards, but you can use up four boards.
-
-This application requests having the stm32wb5x_zigbee_full_fw.bin binary flashed on the wireless coprocessor
-and the correct binary flashed on the application processor.
-
-Important note :
-================
-As it is a centralized network, to run this application, you need to have one device acting
-as coordinator and all the others devices acting as routers.
-
-One board must be flashed with the binary generated by the application located under Zigbee/Zigbee_OnOff_Coord.
-The other boards must be flashed with the binary generated by this application (Zigbee/Zigbee_OnOff_Router)
-
-To run the application :
-
- a) Once the boards have been flashed, eboot the different devices one by one.
- There must be on board configured in coordinator mode, and all
- other boards should be configured in router mode.
+ a) Start the first board (it can be either Device1 or Device2), wait for four seconds.
+ Start the second board, wait for four seconds. Do the same for the other boards if applicable.
+ Note : In order to create correctly the zigbee network, it is important to NOT switch on all the boards
+ at the same time. Otherwise independant network can be created because we use distributed network configuration.
+
+ b) At this stage, the Zigbee network is automatically created and BLUE LED (LED1) is ON on all devices.
+ it is now possible to send OnOff Cluster commands from the client to the server in multicast mode
+ by pressing on the SW1 push button.
+ You must see the LED1 toggling on the server side.
- b) Wait for a few seconds (around 5 sec), it order to let the zigbee mesh network being created.
-
- c) At this stage, a Zigbee network is automatically created and it is possible to send OnOffCluster commands
- in multicast mode by pressing on the SW1 or SW2 push button.
- Press on SW1 (resp SW2) . You must see the LED1 (resp LED2) toggling on all board connected to this newly created
- Zigbee network.
-
---------- -----------
|Device 1 |............|Device 2 |
- |(Coord.) | |(Router) |
+ |(distr.) | |(distr.) |
----------- -----------
. .
. .
. .
----------- .
|Device 3 |...................
- |(Router) |
+ |(distr.) |
-----------
- .
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
@par Hardware and Software environment
- - This example runs on STM32WB55xx devices (Nucleo board)
+ - This example runs on STM32WB55xx devices.
- This example has been tested with an STMicroelectronics STM32WB55RG_Nucleo
board and can be easily tailored to any other supported device
@@ -111,9 +105,9 @@ To run the application :
@par How to use it ?
-=> Loading of the stm32wb5x_zigbee_full_fw.bin binary
+=> Loading of the stm32wb5x_Zigbee_FFD_fw.bin binary
- This application requests having the stm32wb5x_zigbee_full_fw.bin binary flashed on the Wireless Coprocessor.
+ This application requests having the stm32wb5x_Zigbee_FFD_fw.bin binary flashed on the Wireless Coprocessor.
If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory.
Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Inc/stm32wbxx_hal_conf.h
index 7db37ae35..7627ce14d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Src/stm32wbxx_it.c
index 9730ebbcb..39d6f09ba 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Demonstrations/Adafruit_LCD_1_8_SD_Joystick/Core/Src/stm32wbxx_it.c
@@ -78,8 +78,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_AnalogWatchdog/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_AnalogWatchdog/Inc/stm32wbxx_hal_conf.h
index e5137a2bf..17c01a621 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_AnalogWatchdog/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_AnalogWatchdog/Inc/stm32wbxx_hal_conf.h
@@ -337,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_MultiChannelSingleConversion/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_MultiChannelSingleConversion/Inc/stm32wbxx_hal_conf.h
index e5137a2bf..17c01a621 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_MultiChannelSingleConversion/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_MultiChannelSingleConversion/Inc/stm32wbxx_hal_conf.h
@@ -337,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_Oversampling/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_Oversampling/Inc/stm32wbxx_hal_conf.h
index e5137a2bf..17c01a621 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_Oversampling/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_Oversampling/Inc/stm32wbxx_hal_conf.h
@@ -337,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h
index e5137a2bf..17c01a621 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h
@@ -337,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerTimer_DMA/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerTimer_DMA/Inc/stm32wbxx_hal_conf.h
index f866f56fc..8d5d09a58 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerTimer_DMA/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/ADC/ADC_SingleConversion_TriggerTimer_DMA/Inc/stm32wbxx_hal_conf.h
@@ -337,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Src/stm32wbxx_it.c
index bef5cc114..7ad225a80 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/BSP/BSP_Example/Src/stm32wbxx_it.c
@@ -58,8 +58,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Inc/stm32wbxx_hal_conf.h
index 52e1330fc..4cd69a4b4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Inc/stm32wbxx_hal_conf.h
@@ -199,6 +199,10 @@
/**
* @brief Include module's header file
*/
+#ifdef HAL_DMA_MODULE_ENABLED
+ #include "stm32wbxx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
#ifdef HAL_ADC_MODULE_ENABLED
#include "stm32wbxx_hal_adc.h"
#endif /* HAL_ADC_MODULE_ENABLED */
@@ -219,10 +223,6 @@
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
-#ifdef HAL_DMA_MODULE_ENABLED
- #include "stm32wbxx_hal_dma.h"
-#endif /* HAL_DMA_MODULE_ENABLED */
-
#ifdef HAL_EXTI_MODULE_ENABLED
#include "stm32wbxx_hal_exti.h"
#endif /* HAL_EXTI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Src/stm32wbxx_it.c
index 9c8c16405..479b9a02a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_IT/Src/stm32wbxx_it.c
@@ -60,9 +60,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern COMP_HandleTypeDef hcomp1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Inc/stm32wbxx_hal_conf.h
index c33c49fbb..4cd69a4b4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Src/stm32wbxx_it.c
index c9842c97d..45641c15e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/COMP/COMP_CompareGpioVsVrefInt_Window_IT/Src/stm32wbxx_it.c
@@ -60,11 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Inc/stm32wbxx_hal_conf.h
index d7f365210..2ba1ad4ad 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Src/stm32wbxx_it.c
index 3517ead7c..79a96b6e1 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_Example/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Inc/stm32wbxx_hal_conf.h
index d7f365210..2ba1ad4ad 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c
index 132f9700f..ffdb94e72 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Inc/stm32wbxx_hal_conf.h
index ba774d899..c3574553f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Src/stm32wbxx_it.c
index 91548b9a0..29cd183c8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_AESModes/Src/stm32wbxx_it.c
@@ -60,15 +60,8 @@ extern CRYP_HandleTypeDef hcryp1;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_aes1_in;
-
-
extern DMA_HandleTypeDef hdma_aes1_out;
-
-
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Inc/stm32wbxx_hal_conf.h
index ba774d899..c3574553f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Src/stm32wbxx_it.c
index dfa40a7f4..526155789 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/CRYP/CRYP_DMA/Src/stm32wbxx_it.c
@@ -59,15 +59,8 @@ extern CRYP_HandleTypeDef hcryp1;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_aes1_in;
-
-
extern DMA_HandleTypeDef hdma_aes1_out;
-
-
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Src/stm32wbxx_it.c
index da3eb9d2b..e8c930698 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_MPU/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
extern uint32_t AccessPermitted;
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Src/stm32wbxx_it.c
index 3bf25987e..750f09402 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Src/stm32wbxx_it.c
index 1b61b7fca..a3c232df9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/Cortex/CORTEXM_SysTick/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c
index bf9a97a90..7a6494097 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_memtomem_dma1_channel1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Inc/stm32wbxx_hal_conf.h
index 104886d13..9062575e2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Src/stm32wbxx_it.c
index 22e9a2b68..fac751c57 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUXSYNC/Src/stm32wbxx_it.c
@@ -58,14 +58,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
-
-
extern DMA_HandleTypeDef hdma_usart1_tx;
-
-
extern UART_HandleTypeDef huart1;
/* USER CODE BEGIN EV */
extern UART_HandleTypeDef UartHandle;
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Src/stm32wbxx_it.c
index b1959c7ee..bba6e5025 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/DMA/DMA_MUX_RequestGen/Src/stm32wbxx_it.c
@@ -52,8 +52,8 @@ extern DMA_HandleTypeDef DMA_Handle;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
/******************************************************************************/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Src/stm32wbxx_it.c
index 195bef69d..a5b64b12e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_EraseProgram/Src/stm32wbxx_it.c
@@ -58,8 +58,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Src/stm32wbxx_it.c
index cedd1bd8c..d574f6fa5 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/FLASH/FLASH_WriteProtection/Src/stm32wbxx_it.c
@@ -58,8 +58,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Src/stm32wbxx_it.c
index 40c66a502..e442a1c92 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_EXTI/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Src/stm32wbxx_it.c
index 5cd60cb3c..8121f9a97 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/GPIO/GPIO_IOToggle/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Src/stm32wbxx_it.c
index 5e061cfe9..28bac3d30 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
extern TIM_HandleTypeDef htim2;
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Inc/stm32wbxx_hal_conf.h
index c839acd5a..cfaf3f438 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Src/stm32wbxx_it.c
index 88dcfe963..36fbfa4a6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/Src/stm32wbxx_it.c
@@ -58,8 +58,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Inc/stm32wbxx_hal_conf.h
index c839acd5a..cfaf3f438 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Src/stm32wbxx_it.c
index 7063e42ae..99731a3ae 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/Src/stm32wbxx_it.c
@@ -58,8 +58,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Src/stm32wbxx_it.c
index 6c6b2ff35..9d440c925 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HAL/HAL_TimeBase_TIM/Src/stm32wbxx_it.c
@@ -60,8 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- extern TIM_HandleTypeDef htim17;
+extern TIM_HandleTypeDef htim17;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Inc/stm32wbxx_hal_conf.h
index 10fe59288..321814dc8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Src/stm32wbxx_it.c
index 56e4c80b7..2fb31b747 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ProcessSync/Src/stm32wbxx_it.c
@@ -58,8 +58,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Inc/stm32wbxx_hal_conf.h
index 10fe59288..321814dc8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Src/stm32wbxx_it.c
index b258e1bdc..e80f2b574 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/HSEM/HSEM_ReadLock/Src/stm32wbxx_it.c
@@ -58,8 +58,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Inc/stm32wbxx_hal_conf.h
index 97af78d58..9abcabf4b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Src/stm32wbxx_it.c
index 7b7408063..5a03e360b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern I2C_HandleTypeDef hi2c1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h
index 97af78d58..9abcabf4b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Src/stm32wbxx_it.c
index 989c5b2b1..e2899b609 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/Src/stm32wbxx_it.c
@@ -59,15 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_i2c1_tx;
-
-
extern DMA_HandleTypeDef hdma_i2c1_rx;
-
-
extern I2C_HandleTypeDef hi2c1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h
index 97af78d58..9abcabf4b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Src/stm32wbxx_it.c
index 36d4cecfa..aad3ae3d1 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern I2C_HandleTypeDef hi2c1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h
index 97af78d58..9abcabf4b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Src/stm32wbxx_it.c
index 0d02cd309..a950f18b3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/I2C_TwoBoards_RestartAdvComIT.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/I2C_TwoBoards_RestartAdvComIT.ioc
index a2b7b7450..d95025e19 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/I2C_TwoBoards_RestartAdvComIT.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/I2C_TwoBoards_RestartAdvComIT.ioc
@@ -27,7 +27,7 @@ Mcu.Pin1=PB9
Mcu.Pin2=VP_SYS_VS_Systick
Mcu.PinsNb=3
Mcu.ThirdPartyNb=0
-Mcu.UserConstants=I2C_ADDRESS,0x1E
+Mcu.UserConstants=I2C_ADDRESS,0x3C
Mcu.UserName=STM32WB55RGVx
MxCube.Version=5.1.0
MxDb.Version=DB.5.0.10
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Inc/stm32wbxx_hal_conf.h
index ad0050b72..089de2461 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Src/stm32wbxx_it.c
index f222eecf0..7b72ee6fa 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern I2C_HandleTypeDef hi2c1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Inc/stm32wbxx_hal_conf.h
index 97af78d58..9abcabf4b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Src/stm32wbxx_it.c
index f747b69d4..f89d69f52 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_TwoBoards_RestartComIT/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern I2C_HandleTypeDef hi2c1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Inc/stm32wbxx_hal_conf.h
index 97af78d58..9abcabf4b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Src/stm32wbxx_it.c
index 517982d11..bfcc38fb2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern I2C_HandleTypeDef hi2c1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Inc/stm32wbxx_hal_conf.h
index 97af78d58..9abcabf4b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Src/stm32wbxx_it.c
index 9fdd74c38..f0928fbf4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/I2C/I2C_WakeUpFromStop2/Src/stm32wbxx_it.c
@@ -60,9 +60,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern I2C_HandleTypeDef hi2c3;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Inc/stm32wbxx_hal_conf.h
index 81c02ad0c..c3d19112c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Src/stm32wbxx_it.c
index 4c73c2e06..9ff809b58 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_Reset/Src/stm32wbxx_it.c
@@ -62,9 +62,7 @@ extern TIM_HandleTypeDef htim16;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Inc/stm32wbxx_hal_conf.h
index 81c02ad0c..c3d19112c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Src/stm32wbxx_it.c
index f42528987..ce2d259d4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/IWDG/IWDG_WindowMode/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Inc/stm32wbxx_hal_conf.h
index d2480d16e..936595130 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Src/stm32wbxx_it.c
index 7f0e1b19a..d13edc98f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWMExternalClock/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Inc/stm32wbxx_hal_conf.h
index d2480d16e..936595130 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Src/stm32wbxx_it.c
index 7db4bc1bd..22a435878 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PWM_LSE/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Inc/stm32wbxx_hal_conf.h
index d2480d16e..936595130 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Src/stm32wbxx_it.c
index 6fc23b246..931c53317 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_PulseCounter/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern LPTIM_HandleTypeDef hlptim1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Inc/stm32wbxx_hal_conf.h
index d2480d16e..936595130 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Src/stm32wbxx_it.c
index fb67c4db2..09fc5b496 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/LPTIM/LPTIM_Timeout/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern LPTIM_HandleTypeDef hlptim1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Src/stm32wbxx_it.c
index 1cabeba08..1605bee3c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Src/stm32wbxx_it.c
index 7ac70d191..ac955bd11 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECCscalarMultiplication_IT/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@ extern PKA_HandleTypeDef hpka;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c
index b3c3128b6..3f51ae61d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Src/stm32wbxx_it.c
index 4af7ac097..e9db70135 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Sign_IT/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@ extern PKA_HandleTypeDef hpka;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Src/stm32wbxx_it.c
index 139026c81..d2bff8975 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Src/stm32wbxx_it.c
index 9f281d522..d96ddbe9a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ECDSA_Verify_IT/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@ extern PKA_HandleTypeDef hpka;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c
index 2e045ca38..2286295ce 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Src/stm32wbxx_it.c
index e2f0a3595..db729bb7f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Src/stm32wbxx_it.c
index e2f9910a3..f0579700c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiationCRT_IT/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@ extern PKA_HandleTypeDef hpka;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Src/stm32wbxx_it.c
index 93de7469c..1207abe60 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_ModularExponentiation_IT/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@ extern PKA_HandleTypeDef hpka;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Src/stm32wbxx_it.c
index f5665e30d..45cb6de8f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Inc/stm32wbxx_hal_conf.h
index b556b5860..7b01114a7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Src/stm32wbxx_it.c
index 42cf34d8e..3ea63129c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PKA/PKA_PointCheck_IT/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@ extern PKA_HandleTypeDef hpka;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Src/stm32wbxx_it.c
index 0e9ac95c4..de8a4bb6e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPRUN/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Src/stm32wbxx_it.c
index 7a33d98d4..f2866be16 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_LPSLEEP/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Src/stm32wbxx_it.c
index 8a6f65c29..a4464823f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_PVD/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Inc/stm32wbxx_hal_conf.h
index c839acd5a..cfaf3f438 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Src/stm32wbxx_it.c
index 0347dd28b..aed227144 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STANDBY_RTC/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
extern RTC_HandleTypeDef hrtc;
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Inc/stm32wbxx_hal_conf.h
index e2e088ba0..cfaf3f438 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Inc/stm32wbxx_hal_conf.h
@@ -199,6 +199,10 @@
/**
* @brief Include module's header file
*/
+#ifdef HAL_DMA_MODULE_ENABLED
+ #include "stm32wbxx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
#ifdef HAL_ADC_MODULE_ENABLED
#include "stm32wbxx_hal_adc.h"
#endif /* HAL_ADC_MODULE_ENABLED */
@@ -219,10 +223,6 @@
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
-#ifdef HAL_DMA_MODULE_ENABLED
- #include "stm32wbxx_hal_dma.h"
-#endif /* HAL_DMA_MODULE_ENABLED */
-
#ifdef HAL_EXTI_MODULE_ENABLED
#include "stm32wbxx_hal_exti.h"
#endif /* HAL_EXTI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Src/stm32wbxx_it.c
index 2a6686b43..9cec0a1fe 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR/PWR_STOP2_RTC/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@ extern RTC_HandleTypeDef hrtc;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Src/stm32wbxx_it.c
index dd3d4a6d3..1d6c1d618 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_IT/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Src/stm32wbxx_it.c
index 426e7286f..0a3c545de 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_CRS_Synchronization_Polling/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Src/stm32wbxx_it.c
index 12dbda9c1..dae2ec632 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RCC/RCC_ClockConfig/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Inc/stm32wbxx_hal_conf.h
index 98b9e67f3..10f8100ca 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Src/stm32wbxx_it.c
index d78475524..7728d493e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG_IT/Src/stm32wbxx_it.c
index 97abceb89..473cce9ae 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RNG/RNG_MultiRNG_IT/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern RNG_HandleTypeDef hrng;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Inc/stm32wbxx_hal_conf.h
index c839acd5a..cfaf3f438 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Src/stm32wbxx_it.c
index 6ffed44ea..90935de71 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Calendar/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Inc/stm32wbxx_hal_conf.h
index 7023e2ebe..d242bab8e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Src/stm32wbxx_it.c
index 3ed46c5c6..3922e9461 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_LSI/Src/stm32wbxx_it.c
@@ -60,12 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern RTC_HandleTypeDef hrtc;
-
-
extern TIM_HandleTypeDef htim16;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Inc/stm32wbxx_hal_conf.h
index c839acd5a..cfaf3f438 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Src/stm32wbxx_it.c
index 117540327..051010030 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_Tamper/Src/stm32wbxx_it.c
@@ -63,9 +63,6 @@ extern __IO FlagStatus TamperStatus;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern RTC_HandleTypeDef hrtc;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Inc/stm32wbxx_hal_conf.h
index c839acd5a..cfaf3f438 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Src/stm32wbxx_it.c
index d48d9854b..88f68cf00 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/RTC/RTC_TimeStamp/Src/stm32wbxx_it.c
@@ -60,9 +60,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern RTC_HandleTypeDef hrtc;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Src/stm32wbxx_it.c
index b37b43fc6..228861cca 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Master/Src/stm32wbxx_it.c
@@ -59,15 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_spi1_tx;
-
-
extern DMA_HandleTypeDef hdma_spi1_rx;
-
-
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Src/stm32wbxx_it.c
index 123d45533..5909d7586 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/Src/stm32wbxx_it.c
@@ -59,15 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_spi1_tx;
-
-
extern DMA_HandleTypeDef hdma_spi1_rx;
-
-
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Src/stm32wbxx_it.c
index 70c6104c2..7c212c3e2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Master/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern SPI_HandleTypeDef hspi1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Src/stm32wbxx_it.c
index ec4ff433d..43fc2f622 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComIT_Slave/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern SPI_HandleTypeDef hspi1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c
index 6b2bc226f..a7a9204fd 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c
index ab315d186..fa1c29ff5 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Src/stm32wbxx_it.c
index 79e0c296a..12aef31fb 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMA/Src/stm32wbxx_it.c
@@ -59,12 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_tim1_ch3;
-
-
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Src/stm32wbxx_it.c
index 1306ed603..9090451ba 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_DMABurst/Src/stm32wbxx_it.c
@@ -59,12 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_tim2_up;
-
-
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Src/stm32wbxx_it.c
index 021630bdf..69c0b2008 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_InputCapture/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern TIM_HandleTypeDef htim2;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Src/stm32wbxx_it.c
index bbda5f1be..6e8a977ce 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCActive/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Src/stm32wbxx_it.c
index 9f1446322..ebd5ca9ac 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCInactive/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern TIM_HandleTypeDef htim2;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Src/stm32wbxx_it.c
index e629e4c6d..d65afd724 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_OCToggle/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern TIM_HandleTypeDef htim2;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Src/stm32wbxx_it.c
index e1ed1b853..bd715dcec 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMInput/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern TIM_HandleTypeDef htim2;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Src/stm32wbxx_it.c
index cdd91b1ee..b4fcb55b2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_PWMOutput/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Src/stm32wbxx_it.c
index 8c7ed508e..5f10aacbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/TIM/TIM_TimeBase/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern TIM_HandleTypeDef htim2;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Inc/stm32wbxx_hal_conf.h
index 70bb35d4d..79bca81f9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Src/stm32wbxx_it.c
index 355acf0df..988e8c7df 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_DMA/Src/stm32wbxx_it.c
@@ -60,15 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_usart1_rx;
-
-
extern DMA_HandleTypeDef hdma_usart1_tx;
-
-
extern UART_HandleTypeDef huart1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h
index 70bb35d4d..79bca81f9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c
index 08a35a41d..d9c590e34 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c
@@ -60,9 +60,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern UART_HandleTypeDef huart1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Inc/stm32wbxx_hal_conf.h
index 70bb35d4d..79bca81f9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Src/stm32wbxx_it.c
index ae2d02c0c..f8ce40884 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_Printf/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h
index 70bb35d4d..79bca81f9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Src/stm32wbxx_it.c
index 71f085cd6..46f93345e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComDMA/Src/stm32wbxx_it.c
@@ -59,15 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_usart1_rx;
-
-
extern DMA_HandleTypeDef hdma_usart1_tx;
-
-
extern UART_HandleTypeDef huart1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h
index 70bb35d4d..79bca81f9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Src/stm32wbxx_it.c
index ad34c2297..e5355e966 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComIT/Src/stm32wbxx_it.c
@@ -59,9 +59,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern UART_HandleTypeDef huart1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h
index 70bb35d4d..79bca81f9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Src/stm32wbxx_it.c
index 7afa98234..b3c2d6ef6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/UART/UART_TwoBoards_ComPolling/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Inc/stm32wbxx_hal_conf.h
index 491b544fe..e43bb968a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
#define HAL_WWDG_MODULE_ENABLED
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Src/stm32wbxx_it.c
index bae1566cf..bebe002d8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples/WWDG/WWDG_Example/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_LowPower_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_LowPower_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_LowPower_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_LowPower_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_Oversampling_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_Oversampling_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_Oversampling_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_Oversampling_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Src/stm32wbxx_it.c
index 53868f438..b1063b157 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_IT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Src/stm32wbxx_it.c
index e99c06ebe..038987a6a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_OutputGpio_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Src/stm32wbxx_it.c
index 56decf02c..c417f1fb3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/COMP/COMP_CompareGpioVsVrefInt_Window_IT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CORTEX/CORTEX_MPU/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CORTEX/CORTEX_MPU/Src/stm32wbxx_it.c
index 367d4b77d..82a3930ef 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CORTEX/CORTEX_MPU/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CORTEX/CORTEX_MPU/Src/stm32wbxx_it.c
@@ -24,7 +24,6 @@
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32wbxx_it.h"
-
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
@@ -61,6 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
+
/* USER CODE BEGIN EV */
extern uint32_t accessPermitted;
@@ -70,7 +70,6 @@ extern uint32_t accessPermitted;
/******************************************************************************/
/* Cortex Processor Interruption and Exception Handlers */
/******************************************************************************/
-
/**
* @brief This function handles Non maskable interrupt.
*/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Src/stm32wbxx_it.c
index 6847ade08..41c1bb1ea 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c
index ab9aedb42..5827ab9d3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRC/CRC_UserDefinedPolynomial/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Src/stm32wbxx_it.c
index 773b4c759..1c95847b5 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_IT/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Src/stm32wbxx_it.c
index d56970c57..53f9f4188 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/CRS/CRS_Synchronization_Polling/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Src/stm32wbxx_it.c
index c7082416e..aa36d0117 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/EWARM/Project.ewp b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/EWARM/Project.ewp
index e2d614fb6..a1a37968b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/EWARM/Project.ewp
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/EWARM/Project.ewp
@@ -600,15 +600,15 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>0</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
- <state>0</state>
+ <state>1</state>
</option>
<option>
<name>OOCOutputFile</name>
- <state>Project.srec</state>
+ <state>EXTI_ToggleLedOnIT.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -616,7 +616,7 @@
</option>
<option>
<name>OOCObjCopyEnable</name>
- <state>0</state>
+ <state>1</state>
</option>
</data>
</settings>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Src/stm32wbxx_it.c
index d474f66c0..d27984cb9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Src/stm32wbxx_it.c
index e95673392..bb8dbf89a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Src/stm32wbxx_it.c
index 081aa4dec..b74da4392 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Src/stm32wbxx_it.c
index 130eae8a6..c2668df71 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/HSEM/HSEM_DualProcess_IT/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Src/stm32wbxx_it.c
index 3480789a5..a3c147182 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT_Init/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Src/stm32wbxx_it.c
index 78283aec8..81b4fd623 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Src/stm32wbxx_it.c
index 827f313aa..afb5cb0c9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Src/stm32wbxx_it.c
index a9cf39de8..b25a64884 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Src/stm32wbxx_it.c
index 7fe19634c..e2d08ce13 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT_Init/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Src/stm32wbxx_it.c
index 4b4576c66..d827b35af 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Src/stm32wbxx_it.c
index 16fd6b37e..a750e7913 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Src/stm32wbxx_it.c
index 5389066ec..c036b1fbd 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop2_IT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Src/stm32wbxx_it.c
index e6786277c..913f38c72 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/I2C/I2C_TwoBoards_WakeUpFromStop_IT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c
index 4f5162ae4..dcd5d58e8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Src/stm32wbxx_it.c
index 2935a59fd..1d11ed7c0 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Src/stm32wbxx_it.c
index 3e2611330..4d4ad1e23 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop2_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Src/stm32wbxx_it.c
index 1bf231fce..5fb3842c9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/LPUART/LPUART_WakeUpFromStop_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c
index 8b9c84548..586304697 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ECDSA_Sign/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c
index 31954a42e..34833c6f1 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PKA/PKA_ModularExponentiation/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Src/stm32wbxx_it.c
index f866aa954..0bf16a318 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Src/stm32wbxx_it.c
index 9e5e70161..ffc44fa70 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_EnterStopMode/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Src/stm32wbxx_it.c
index a0e130af6..8e650c19a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_OptimizedRunMode/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Src/stm32wbxx_it.c
index 78949cf71..fa8774880 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_16MHZ_HSI/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Src/stm32wbxx_it.c
index c1a3db0d1..60821e59c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/PWR/PWR_SMPS_64MHZ_MSI_PLL/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Src/stm32wbxx_it.c
index 47b63a45b..34db019af 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_HWAutoMSICalibration/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Src/stm32wbxx_it.c
index 2f776c114..1fad7efef 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Src/stm32wbxx_it.c
index bde8c152c..abe510e91 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
extern __IO uint8_t ubReadyState ;
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Src/stm32wbxx_it.c
index 5b2915eae..a61a53320 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Src/stm32wbxx_it.c
index 107190e8b..db6f7f229 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Src/stm32wbxx_it.c
index a2c4fe07d..703d59085 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Src/stm32wbxx_it.c
index 3bfde1393..e8a4a873b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Alarm_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Src/stm32wbxx_it.c
index 070408ed9..e4cc88333 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Calendar_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Src/stm32wbxx_it.c
index 030700195..feac6b292 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Src/stm32wbxx_it.c
index 9f9275e25..ba1d8c2c3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_Tamper_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Src/stm32wbxx_it.c
index 9559e734e..4edf9c539 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/RTC/RTC_TimeStamp_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Src/stm32wbxx_it.c
index cc7f11ddf..1a2c6d14c 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Src/stm32wbxx_it.c
index d3aba2b0e..15b228f72 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Src/stm32wbxx_it.c
index 16abe30cb..a3cb7fe5a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Master_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Src/stm32wbxx_it.c
index 9dd850d65..0e98494f6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA_Slave_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Src/stm32wbxx_it.c
index a504c23ca..eddcb9677 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Master_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Src/stm32wbxx_it.c
index bd0ac9daa..47ff8b956 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT_Slave_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Src/stm32wbxx_it.c
index 7e6c0c4dc..d37b6161e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_DMA_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Src/stm32wbxx_it.c
index 4e11cbcd9..6714711db 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_InputCapture_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Src/stm32wbxx_it.c
index f7f9be360..bba9a6dc2 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_OutputCompare_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Src/stm32wbxx_it.c
index 699fcaae7..5112e3a34 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Src/stm32wbxx_it.c
index 7d51134c1..e56d63f57 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/TIM/TIM_TimeBase_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Src/stm32wbxx_it.c
index 4a29ab4f2..67c3bea53 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/USART_Communication_Rx_IT_Continuous_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/USART_Communication_Rx_IT_Continuous_Init.ioc
index 04fa5f837..e7ed8a4a6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/USART_Communication_Rx_IT_Continuous_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_Init/USART_Communication_Rx_IT_Continuous_Init.ioc
@@ -23,6 +23,7 @@ MxDb.Version=DB.5.0.10
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,22 +33,24 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PA10.GPIOParameters=GPIO_Speed
+PA10.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA10.GPIO_PuPd=GPIO_PULLUP
PA10.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
-PA9.GPIOParameters=GPIO_Speed
+PA9.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA9.GPIO_PuPd=GPIO_PULLUP
PA9.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PC4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI,GPIO_PuPd
+PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PC4.GPIO_Label=USER_BUTTON
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PC4.GPIO_PuPd=GPIO_PULLUP
@@ -100,7 +103,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -118,7 +121,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Src/stm32wbxx_it.c
index 205d9b486..949de2017 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/USART_Communication_Rx_IT_Continuous_VCP_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/USART_Communication_Rx_IT_Continuous_VCP_Init.ioc
index 35a30c169..f1ea501b6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/USART_Communication_Rx_IT_Continuous_VCP_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous_VCP_Init/USART_Communication_Rx_IT_Continuous_VCP_Init.ioc
@@ -18,11 +18,12 @@ Mcu.PinsNb=5
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.1.0
-MxDb.Version=DB.5.0.10
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,32 +33,50 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PB6.GPIOParameters=GPIO_Speed
+PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB6.GPIO_PuPd=GPIO_PULLUP
PB6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB6.Mode=Asynchronous
PB6.Signal=USART1_TX
-PB7.GPIOParameters=GPIO_Speed
+PB7.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB7.GPIO_PuPd=GPIO_PULLUP
PB7.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB7.Mode=Asynchronous
PB7.Signal=USART1_RX
-PC4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
+PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PC4.GPIO_Label=USER_BUTTON
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
+PC4.GPIO_PuPd=GPIO_PULLUP
PC4.Locked=true
PC4.Signal=GPXTI4
+PCC.Ble.ConnectionInterval=1000.0
+PCC.Ble.DataLength=6
+PCC.Ble.Mode=Advertising
+PCC.Ble.PowerLevel=Min
+PCC.Checker=true
+PCC.Line=STM32WBx5
+PCC.MCU=STM32WB55RGVx
+PCC.PartNumber=STM32WB55RGVx
+PCC.Seq0=0
+PCC.Series=STM32WB
+PCC.Temperature=25
+PCC.Vdd=3.0
PinOutPanel.RotationAngle=0
ProjectManager.AskForMigrate=true
ProjectManager.BackupPrevious=false
ProjectManager.CompilerOptimize=3
ProjectManager.ComputerToolchain=false
ProjectManager.CoupleFile=false
+ProjectManager.CustomerFirmwarePackage=
+ProjectManager.DefaultFWLocation=true
ProjectManager.DeletePrevious=true
ProjectManager.DeviceId=STM32WB55RGVx
+ProjectManager.FirmwarePackage=STM32Cube FW_WB V1.4.0RC2
ProjectManager.FreePins=false
ProjectManager.HalAssertFull=false
ProjectManager.HeapSize=0x200
@@ -97,7 +116,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -115,7 +134,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Src/stm32wbxx_it.c
index 70fda6bf7..343ce3861 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/USART_Communication_Rx_IT_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/USART_Communication_Rx_IT_Init.ioc
index 9d49b02a3..247e9c0a6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/USART_Communication_Rx_IT_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/USART_Communication_Rx_IT_Init.ioc
@@ -18,11 +18,12 @@ Mcu.PinsNb=5
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.1.0
-MxDb.Version=DB.5.0.10
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,24 +33,27 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PA10.GPIOParameters=GPIO_Speed
+PA10.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA10.GPIO_PuPd=GPIO_PULLUP
PA10.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
-PA9.GPIOParameters=GPIO_Speed
+PA9.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA9.GPIO_PuPd=GPIO_PULLUP
PA9.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PC4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
+PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PC4.GPIO_Label=USER_BUTTON
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
+PC4.GPIO_PuPd=GPIO_PULLUP
PC4.Locked=true
PC4.Signal=GPXTI4
PinOutPanel.RotationAngle=0
@@ -99,7 +103,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -117,7 +121,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Src/stm32wbxx_it.c
index 084198d0d..88705f36a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/USART_Communication_Rx_IT_VCP_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/USART_Communication_Rx_IT_VCP_Init.ioc
index 260e4570f..4f9355c6d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/USART_Communication_Rx_IT_VCP_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_VCP_Init/USART_Communication_Rx_IT_VCP_Init.ioc
@@ -23,6 +23,7 @@ MxDb.Version=DB.5.0.10
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,22 +33,25 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PB6.GPIOParameters=GPIO_Speed
+PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB6.GPIO_PuPd=GPIO_PULLUP
PB6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB6.Mode=Asynchronous
PB6.Signal=USART1_TX
-PB7.GPIOParameters=GPIO_Speed
+PB7.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB7.GPIO_PuPd=GPIO_PULLUP
PB7.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB7.Mode=Asynchronous
PB7.Signal=USART1_RX
-PC4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
+PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PC4.GPIO_Label=USER_BUTTON
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
+PC4.GPIO_PuPd=GPIO_PULLUP
PC4.Locked=true
PC4.Signal=GPXTI4
PinOutPanel.RotationAngle=0
@@ -97,7 +101,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -115,7 +119,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Src/stm32wbxx_it.c
index 238ffdcf0..9e80be28d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/USART_Communication_TxRx_DMA_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/USART_Communication_TxRx_DMA_Init.ioc
index 7877d5880..7f1a10f01 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/USART_Communication_TxRx_DMA_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA_Init/USART_Communication_TxRx_DMA_Init.ioc
@@ -55,12 +55,13 @@ Mcu.PinsNb=4
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.1.0
-MxDb.Version=DB.5.0.10
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DMA1_Channel6_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DMA1_Channel7_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -70,16 +71,18 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PB6.GPIOParameters=GPIO_Speed
+PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB6.GPIO_PuPd=GPIO_PULLUP
PB6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB6.Mode=Asynchronous
PB6.Signal=USART1_TX
-PB7.GPIOParameters=GPIO_Speed
+PB7.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB7.GPIO_PuPd=GPIO_PULLUP
PB7.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB7.Mode=Asynchronous
PB7.Signal=USART1_RX
@@ -130,7 +133,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -148,7 +151,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Src/stm32wbxx_it.c
index 88d5cace2..188dd85b1 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/USART_Communication_Tx_IT_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/USART_Communication_Tx_IT_Init.ioc
index 8d191276b..f0fec5a47 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/USART_Communication_Tx_IT_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_Init/USART_Communication_Tx_IT_Init.ioc
@@ -18,11 +18,12 @@ Mcu.PinsNb=5
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.1.0
-MxDb.Version=DB.5.0.10
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,22 +33,24 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PA10.GPIOParameters=GPIO_Speed
+PA10.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA10.GPIO_PuPd=GPIO_PULLUP
PA10.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
-PA9.GPIOParameters=GPIO_Speed
+PA9.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA9.GPIO_PuPd=GPIO_PULLUP
PA9.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PC4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI,GPIO_PuPd
+PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PC4.GPIO_Label=USER_BUTTON
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PC4.GPIO_PuPd=GPIO_PULLUP
@@ -100,7 +103,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -118,7 +121,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Src/stm32wbxx_it.c
index f58df917f..04e577ded 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/USART_Communication_Tx_IT_VCP_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/USART_Communication_Tx_IT_VCP_Init.ioc
index a8eb1d573..04e310950 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/USART_Communication_Tx_IT_VCP_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_IT_VCP_Init/USART_Communication_Tx_IT_VCP_Init.ioc
@@ -18,11 +18,12 @@ Mcu.PinsNb=5
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.1.0
-MxDb.Version=DB.5.0.10
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,20 +33,22 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PB6.GPIOParameters=GPIO_Speed
+PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB6.GPIO_PuPd=GPIO_PULLUP
PB6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB6.Mode=Asynchronous
PB6.Signal=USART1_TX
-PB7.GPIOParameters=GPIO_Speed
+PB7.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB7.GPIO_PuPd=GPIO_PULLUP
PB7.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB7.Mode=Asynchronous
PB7.Signal=USART1_RX
-PC4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI,GPIO_PuPd
+PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PC4.GPIO_Label=USER_BUTTON
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PC4.GPIO_PuPd=GPIO_PULLUP
@@ -98,7 +101,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -116,7 +119,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Src/stm32wbxx_it.c
index 8802feb72..7b4a69dea 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/USART_Communication_Tx_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/USART_Communication_Tx_Init.ioc
index 77ed72ef9..550aa0eca 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/USART_Communication_Tx_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_Init/USART_Communication_Tx_Init.ioc
@@ -23,6 +23,7 @@ MxDb.Version=DB.5.0.10
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -31,22 +32,24 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PA10.GPIOParameters=GPIO_Speed
+PA10.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA10.GPIO_PuPd=GPIO_PULLUP
PA10.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
-PA9.GPIOParameters=GPIO_Speed
+PA9.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA9.GPIO_PuPd=GPIO_PULLUP
PA9.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PC4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI,GPIO_PuPd
+PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PC4.GPIO_Label=USER_BUTTON
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PC4.GPIO_PuPd=GPIO_PULLUP
@@ -99,7 +102,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -117,7 +120,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Src/stm32wbxx_it.c
index 33cc3581a..9be87fe08 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/USART_Communication_Tx_VCP_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/USART_Communication_Tx_VCP_Init.ioc
index 830316536..3eea6f2c8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/USART_Communication_Tx_VCP_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_Communication_Tx_VCP_Init/USART_Communication_Tx_VCP_Init.ioc
@@ -18,11 +18,12 @@ Mcu.PinsNb=5
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.1.0
-MxDb.Version=DB.5.0.10
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,20 +33,22 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
PB0.Signal=GPIO_Output
-PB6.GPIOParameters=GPIO_Speed
+PB6.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB6.GPIO_PuPd=GPIO_PULLUP
PB6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB6.Mode=Asynchronous
PB6.Signal=USART1_TX
-PB7.GPIOParameters=GPIO_Speed
+PB7.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PB7.GPIO_PuPd=GPIO_PULLUP
PB7.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB7.Mode=Asynchronous
PB7.Signal=USART1_RX
-PC4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI,GPIO_PuPd
+PC4.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PC4.GPIO_Label=USER_BUTTON
PC4.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PC4.GPIO_PuPd=GPIO_PULLUP
@@ -98,7 +101,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=64000000
RCC.I2C3Freq_Value=64000000
-RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
@@ -116,7 +119,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=64000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.USART1Freq_Value=64000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Src/stm32wbxx_it.c
index 3f4c55dc1..0dfb2ddd6 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/USART_WakeUpFromStop1_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/USART_WakeUpFromStop1_Init.ioc
index b6ad6157d..8dfcebe5e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/USART_WakeUpFromStop1_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop1_Init/USART_WakeUpFromStop1_Init.ioc
@@ -18,11 +18,12 @@ Mcu.PinsNb=5
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.1.0
-MxDb.Version=DB.5.0.10
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,17 +33,19 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PA10.GPIOParameters=GPIO_Speed
+PA10.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA10.GPIO_PuPd=GPIO_PULLUP
PA10.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
-PA9.GPIOParameters=GPIO_Speed
+PA9.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA9.GPIO_PuPd=GPIO_PULLUP
PA9.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
@@ -97,7 +100,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=16000000
RCC.I2C3Freq_Value=16000000
-RCC.IPParameters=ADCFreq_Value,AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=16000000
RCC.LPTIM2Freq_Value=16000000
RCC.LPUART1Freq_Value=16000000
@@ -115,7 +118,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=16000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=16000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSI
RCC.USART1Freq_Value=16000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Src/stm32wbxx_it.c
index ef0178056..057778a07 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/USART_WakeUpFromStop_Init.ioc b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/USART_WakeUpFromStop_Init.ioc
index c2caaf992..138a8c07d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/USART_WakeUpFromStop_Init.ioc
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/USART/USART_WakeUpFromStop_Init/USART_WakeUpFromStop_Init.ioc
@@ -18,11 +18,12 @@ Mcu.PinsNb=5
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32WB55RGVx
-MxCube.Version=5.1.0
-MxDb.Version=DB.5.0.10
+MxCube.Version=5.5.0
+MxDb.Version=DB.5.0.50
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.EXTI4_IRQn=true\:15\:0\:true\:false\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -32,17 +33,19 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PA10.GPIOParameters=GPIO_Speed
+PA10.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA10.GPIO_PuPd=GPIO_PULLUP
PA10.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
-PA9.GPIOParameters=GPIO_Speed
+PA9.GPIOParameters=GPIO_Speed,GPIO_PuPd
+PA9.GPIO_PuPd=GPIO_PULLUP
PA9.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
-PB0.GPIOParameters=GPIO_Label,GPIO_PuPd
+PB0.GPIOParameters=GPIO_PuPd,GPIO_Label
PB0.GPIO_Label=LED2
PB0.GPIO_PuPd=GPIO_NOPULL
PB0.Locked=true
@@ -97,7 +100,7 @@ RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=16000000
RCC.I2C3Freq_Value=16000000
-RCC.IPParameters=ADCFreq_Value,AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
+RCC.IPParameters=ADCFreq_Value,AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CodegenConfigPeriph,Cortex2Freq_Value,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.LPTIM1Freq_Value=16000000
RCC.LPTIM2Freq_Value=16000000
RCC.LPUART1Freq_Value=16000000
@@ -115,7 +118,8 @@ RCC.PLLSAI1RoutputFreq_Value=16000000
RCC.PWRFreq_Value=16000000
RCC.RNGFreq_Value=32000
RCC.SAI1Freq_Value=16000000
-RCC.SMPS1Freq_Value=16000000
+RCC.SMPS1Freq_Value=8000000
+RCC.SMPSFreq_Value=4000000
RCC.SYSCLKFreq_VALUE=16000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSI
RCC.USART1Freq_Value=16000000
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Src/stm32wbxx_it.c
index 4404595c0..af1cb2ecf 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Src/stm32wbxx_it.c
index 097abf4df..bb52e3cb8 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c
index 35f978c13..72af0ce57 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent_Init/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h
index f866f56fc..8d5d09a58 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/Inc/stm32wbxx_hal_conf.h
@@ -337,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Inc/stm32wbxx_hal_conf.h
index d7f365210..2ba1ad4ad 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Src/stm32wbxx_it.c
index 16f28e298..1d65aa3b7 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/CRC/CRC_PolynomialUpdate/Src/stm32wbxx_it.c
@@ -60,9 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c
index 81f8f3c85..6e388db2e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/Src/stm32wbxx_it.c
@@ -60,9 +60,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern DMA_HandleTypeDef hdma_memtomem_dma1_channel1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Inc/stm32wbxx_hal_conf.h
index bdc3fe53a..9abcabf4b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Inc/stm32wbxx_hal_conf.h
@@ -199,6 +199,10 @@
/**
* @brief Include module's header file
*/
+#ifdef HAL_DMA_MODULE_ENABLED
+ #include "stm32wbxx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
#ifdef HAL_ADC_MODULE_ENABLED
#include "stm32wbxx_hal_adc.h"
#endif /* HAL_ADC_MODULE_ENABLED */
@@ -219,10 +223,6 @@
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
-#ifdef HAL_DMA_MODULE_ENABLED
- #include "stm32wbxx_hal_dma.h"
-#endif /* HAL_DMA_MODULE_ENABLED */
-
#ifdef HAL_EXTI_MODULE_ENABLED
#include "stm32wbxx_hal_exti.h"
#endif /* HAL_EXTI_MODULE_ENABLED */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Src/stm32wbxx_it.c
index 07c059893..3a6b0907f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/Src/stm32wbxx_it.c
@@ -78,11 +78,7 @@ extern I2C_HandleTypeDef hi2c1;
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Src/stm32wbxx_it.c
index e8fcb92f7..03ada183a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/PWR/PWR_STOP1/Src/stm32wbxx_it.c
@@ -60,8 +60,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c
index 387b0de3f..d571c3d8e 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Master/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c
index 57e09da38..534223acf 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling_Slave/Src/stm32wbxx_it.c
@@ -59,9 +59,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Src/stm32wbxx_it.c
index 09ffda625..89308dc31 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Master/Src/stm32wbxx_it.c
@@ -58,9 +58,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Inc/stm32wbxx_hal_conf.h
index bc5fa4b92..58a75bdbc 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Src/stm32wbxx_it.c
index fd590b0e1..5fd099e1d 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT_Slave/Src/stm32wbxx_it.c
@@ -58,9 +58,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern SPI_HandleTypeDef hspi1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h
index 3208c1155..e4d3bbde9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Src/stm32wbxx_it.c
index beb5b7214..9b2df0b19 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/TIM/TIM_PWMInput/Src/stm32wbxx_it.c
@@ -60,11 +60,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
-
-
+
/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h
index 70bb35d4d..79bca81f9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c
index 1e1ad74b4..d10112538 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/Src/stm32wbxx_it.c
@@ -61,9 +61,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern UART_HandleTypeDef huart1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Inc/stm32wbxx_hal_conf.h
index 70bb35d4d..79bca81f9 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Src/stm32wbxx_it.c
index e3a28244c..2aca3942b 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/Src/stm32wbxx_it.c
@@ -61,9 +61,6 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
-
-
extern UART_HandleTypeDef huart1;
/* USER CODE BEGIN EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html b/Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html
index a3487e59b..81ef71532 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html
@@ -48,9 +48,23 @@
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
-<input type="checkbox" id="collapse-section4" checked aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.3.0 / 11-September-2019</label>
+<input type="checkbox" id="collapse-section5" checked aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V1.4.0 / 06-December-2019</label>
<div>
<h2 id="main-changes">Main Changes</h2>
+<h3 id="maintenance">Maintenance</h3>
+<ul>
+<li>Add SW4STM32 and MDK-ARM IDE files for:
+<ul>
+<li>Projects-NUCLEO-WB55.Nucleo_802_15_4_802_15_4_FFD</li>
+<li>Projects-NUCLEO-WB55.Nucleo_802_15_4_802_15_4_RFD</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.3.0 / 11-September-2019</label>
+<div>
+<h2 id="main-changes-1">Main Changes</h2>
<h3 id="introduction-of-zigbee-support">Introduction of ZIGBEE support</h3>
<ul>
<li>Ensure compatibility with <strong>STM32CubeMX V5.4</strong>.</li>
@@ -80,7 +94,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.2.0 / 26-June-2019</label>
<div>
-<h2 id="main-changes-1">Main Changes</h2>
+<h2 id="main-changes-2">Main Changes</h2>
<h3 id="addition-of-new-application">Addition of new application</h3>
<p><strong>Add CKS (Customer Key Storage) application</strong></p>
<ul>
@@ -95,7 +109,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 05-April-2019</label>
<div>
-<h2 id="main-changes-2">Main Changes</h2>
+<h2 id="main-changes-3">Main Changes</h2>
<h3 id="remove-binaries-addition-of-new-examples">Remove binaries, Addition of new examples</h3>
<p>Change directory name to reflect board RPN: <a href="https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/stm32-nucleo-expansion-boards/p-nucleo-wb55.html">P-NUCLEO-WB55</a></p>
<p>Add QSPI examples:</p>
@@ -118,7 +132,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 06-February-2019</label>
<div>
-<h2 id="main-changes-3">Main Changes</h2>
+<h2 id="main-changes-4">Main Changes</h2>
<h3 id="first-release">First release</h3>
<p>First official release.</p>
</div>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Templates/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.Nucleo/Templates/Inc/stm32wbxx_hal_conf.h
index 646f83c44..a7a27f335 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Templates/Inc/stm32wbxx_hal_conf.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Templates/Inc/stm32wbxx_hal_conf.h
@@ -58,6 +58,7 @@
/*#define HAL_UART_MODULE_ENABLED */
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
@@ -221,6 +222,10 @@
#ifdef HAL_CRYP_MODULE_ENABLED
#include "stm32wbxx_hal_cryp.h"
#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
#ifdef HAL_FLASH_MODULE_ENABLED
#include "stm32wbxx_hal_flash.h"
@@ -271,7 +276,6 @@
#endif /* HAL_PWR_MODULE_ENABLED */
#ifdef HAL_QSPI_MODULE_ENABLED
- #define USE_HAL_QSPI_REGISTER_CALLBACKS 0U
#include "stm32wbxx_hal_qspi.h"
#endif /* HAL_QSPI_MODULE_ENABLED */
@@ -333,9 +337,9 @@
* If expr is true, it returns no value.
* @retval None
*/
-#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
-void assert_failed(uint8_t* file, uint32_t line);
+ void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Templates/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Templates/Src/stm32wbxx_it.c
index 5e367b8ab..b6ff4e47a 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Templates/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Templates/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Inc/stm32_assert.h b/Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Inc/stm32_assert.h
index 8cfaa7669..f086878e3 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Inc/stm32_assert.h
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Inc/stm32_assert.h
@@ -3,7 +3,7 @@
* @file stm32_assert.h
* @brief STM32 assert file.
******************************************************************************
- * @attention
+ * @attention
*
* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Src/stm32wbxx_it.c
index 82c7d41ea..c326d0bd5 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Src/stm32wbxx_it.c
+++ b/Projects/P-NUCLEO-WB55.Nucleo/Templates_LL/Src/stm32wbxx_it.c
@@ -59,8 +59,8 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
-
- /* USER CODE BEGIN EV */
+
+/* USER CODE BEGIN EV */
/* USER CODE END EV */
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c
index b2d131301..8bd9f0586 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/Core/Src/app_entry.c
@@ -231,6 +231,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
/**< Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewd b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewd
index 3e9aa30cb..2671dd046 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewd
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_HeartRate</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewp b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewp
index 7e111ca75..180990dda 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewp
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/EWARM/BLE_HeartRate.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_HeartRate</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_HeartRate\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_HeartRate\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_HeartRate\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -656,7 +656,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -664,7 +664,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>STM32WB55CG_nucleo_BLE_HeartRate.bin</state>
+ <state>BLE_HeartRate.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1051,9 +1051,6 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
@@ -1063,6 +1060,9 @@
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
</file>
</group>
@@ -1077,13 +1077,13 @@
<group>
<name>app</name>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\app_ble.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\app_ble.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\dis_app.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\dis_app.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\hrs_app.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\hrs_app.c</name>
</file>
</group>
<group>
@@ -1239,10 +1239,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvoptx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvoptx
index e928cf525..b40cc01e1 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvoptx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvoptx
@@ -1,7 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_HeartRate</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -51,11 +73,11 @@
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
- <CpuCode>0</CpuCode>
+ <CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CGUx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CGUx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,840 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>Application/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/dis_app.c</PathWithFileName>
+ <FilenameWithoutPath>dis_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/hrs_app.c</PathWithFileName>
+ <FilenameWithoutPath>hrs_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.USBDongle</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle/stm32wbxx_usb_dongle.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_usb_dongle.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pcd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pcd_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_usb.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_ll_usb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_USB_Device_Library</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_cdc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_ctlreq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/blesvc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/dis.c</PathWithFileName>
+ <FilenameWithoutPath>dis.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/hrs.c</PathWithFileName>
+ <FilenameWithoutPath>hrs.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/vcp</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/usbd_conf.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_conf.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/usbd_desc.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/vcp.c</PathWithFileName>
+ <FilenameWithoutPath>vcp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>56</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>57</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvprojx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvprojx
index 6b583dd57..9c39a0485 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvprojx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/MDK-ARM/BLE_HeartRate.uvprojx
@@ -1,41 +1,45 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
- <TargetName>Production</TargetName>
+ <Target>
+ <TargetName>BLE_HeartRate</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55CGUx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55CGUx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -43,45 +47,49 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_HeartRate\Exe\</OutputDirectory>
<OutputName>BLE_HeartRate</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>0</CreateHexFile>
+ <CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +103,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +125,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +137,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +174,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +189,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +242,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +272,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +297,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fffc</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +306,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +323,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls/>
+ <MiscControls></MiscControls>
<Define>USE_STM32WBXX_USB_DONGLE,STM32WB55xx,CORE_CM4,USE_HAL_DRIVER</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/ble;../Core/Inc;../STM32_WPAN/app;../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp;../../../../../../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc;../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp</IncludePath>
</VariousControls>
</Cads>
@@ -371,11 +347,14 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
- <IncludePath/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
@@ -387,22 +366,18 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
- <Group>
+ <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -439,7 +414,7 @@
</Group>
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -767,20 +742,24 @@
</File>
</Files>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ </Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_HeartRate"/>
</targetInfos>
</component>
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/.cproject
index 9b6173118..169f62b65 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.978116042" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.638347099" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1021101242" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.107277107" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_HeartRate}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.107277107" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -143,7 +143,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.430570822" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_HeartRate.fr.ac6.managedbuild.target.gnu.cross.exe.430570822" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -154,7 +154,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_HeartRate"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/.project
index ce1e85866..3e1c76e71 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_HeartRate</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_HeartRate/SW4STM32/BLE_HeartRate/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd
index c0a0ebd4d..2c34928be 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_MeshLightingDemo</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp
index afbd35352..79b14dcf3 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/EWARM/BLE_MeshLightingDemo.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_MeshLightingDemo</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_MeshLightingDemo\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_MeshLightingDemo\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_MeshLightingDemo\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -661,7 +661,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -669,7 +669,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>BLE_Lighting_Demo.bin</state>
+ <state>BLE_MeshLightingDemo.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1179,16 +1179,16 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_gpio.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pcd.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_i2c.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pcd_ex.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_i2c_ex.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_i2c.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pcd.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_i2c_ex.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pcd_ex.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr.c</name>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx
index a00e69f10..bcdb33728 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvoptx
@@ -22,7 +22,7 @@
</DaveTm>
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_MeshLightingDemo</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx
index 174b8d030..e9f68fa89 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/MDK-ARM/BLE_MeshLightingDemo.uvprojx
@@ -7,7 +7,7 @@
<Targets>
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_MeshLightingDemo</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
@@ -16,7 +16,7 @@
<TargetCommonOption>
<Device>STM32WB55CGUx</Device>
<Vendor>STMicroelectronics</Vendor>
- <PackID>Keil.STM32WBxx_DFP.1.0.0</PackID>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
<PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@@ -48,13 +48,13 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_MeshLightingDemo\Exe\</OutputDirectory>
<OutputName>BLE_MeshLightingDemo</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
- <DebugInformation>0</DebugInformation>
- <BrowseInformation>0</BrowseInformation>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
<ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
@@ -80,9 +80,9 @@
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
+ <UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -184,7 +184,6 @@
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>2</RvdsVP>
- <RvdsMve>0</RvdsMve>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
@@ -887,7 +886,7 @@
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_MeshLightingDemo"/>
</targetInfos>
</component>
</components>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c
index 73469c113..5ed404094 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/appli_generic.c
@@ -76,10 +76,18 @@ MOBLE_RESULT Appli_Generic_OnOff_Set(Generic_OnOffStatus_t* pGeneric_OnOffParam,
/* This condition is applicable when user want to on off the light with some default
* transition value, or optionalValid =IN_TRANSITION , transition is in progress.
*/
- if((OptionalValid == DEFAULT_TRANSITION) || (OptionalValid == IN_TRANSITION))
+ if((OptionalValid == DEFAULT_TRANSITION) || (OptionalValid == IN_TRANSITION))
{
Appli_LightPwmValue.IntensityValue = AppliOnOffSet.Present_OnOffValue;
Light_UpdateLedValue(LOAD_STATE ,Appli_LightPwmValue);
+ if(AppliOnOffSet.Present_OnOffValue > 16000)
+ {
+ BSP_LED_On(LED_BLUE);
+ }
+ else
+ {
+ BSP_LED_Off(LED_BLUE);
+ }
}
else
{
@@ -87,23 +95,16 @@ MOBLE_RESULT Appli_Generic_OnOff_Set(Generic_OnOffStatus_t* pGeneric_OnOffParam,
{
Appli_LightPwmValue.IntensityValue = PWM_TIME_PERIOD;
Light_UpdateLedValue(LOAD_STATE , Appli_LightPwmValue);
+ BSP_LED_On(LED_BLUE);
}
else
{
Appli_LightPwmValue.IntensityValue = PWM_VALUE_OFF;
Light_UpdateLedValue(RESET_STATE , Appli_LightPwmValue);
+ BSP_LED_Off(LED_BLUE);
}
}
- if(AppliOnOffSet.Present_OnOffValue > 16000)
- {
- BSP_LED_On(LED_BLUE);
- }
- else
- {
- BSP_LED_Off(LED_BLUE);
- }
-
TRACE_M(TF_SERIAL_CTRL,"#8202%02hx!\n\r",AppliOnOffSet.Present_OnOff);
/* set the flag value for NVM store */
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h
index 72a069391..520553c69 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/STM32_WPAN/app/mesh_cfg_usr.h
@@ -277,9 +277,9 @@ This may result into excessive flash erase operations, this should be avoided to
USER_BOARD_COOL_WHITE_LED ,USER_BOARD_RGB_LED
Default transition is provided only for one led.
*/
-//#define USER_BOARD_1LED
+#define USER_BOARD_1LED
//#define USER_BOARD_COOL_WHITE_LED
-#define USER_BOARD_RGB_LED
+//#define USER_BOARD_RGB_LED
#if defined(STEVAL_BLUEMIC_1_BOARD_PWM_SELECTION)
#define SINGLE_LED PWM1
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.cproject b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.cproject
index 20e75fef1..623d9caa2 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.cproject
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.34648766" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.2011975885" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.softfp" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.60872405" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" errorParsers="org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator" id="fr.ac6.managedbuild.builder.gnu.cross.714815385" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_MeshLightingDemo}/Debug" errorParsers="org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator" id="fr.ac6.managedbuild.builder.gnu.cross.714815385" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -167,7 +167,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.218145818" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_MeshLightingDemo.fr.ac6.managedbuild.target.gnu.cross.exe.218145818" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -178,7 +178,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="/Production"/>
+ <resource resourceType="PROJECT" workspacePath="/BLE_MeshLightingDemo"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.project b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.project
index ed0339e7a..9ce5339b6 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.project
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/SW4STM32/BLE_Lighting_Demo/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>BLE_Lighting_Demo</name>
+ <name>BLE_MeshLightingDemo</name>
<comment></comment>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/TrueSTUDIO/.metadata/.lock b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/TrueSTUDIO/.metadata/.lock
deleted file mode 100644
index e69de29bb..000000000
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_MeshLightingDemo/TrueSTUDIO/.metadata/.lock
+++ /dev/null
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/Binary/BLE_TransparentModeVCP_reference.hex b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/Binary/BLE_TransparentModeVCP_reference.hex
index f7e1b092d..d28df8d75 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/Binary/BLE_TransparentModeVCP_reference.hex
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/Binary/BLE_TransparentModeVCP_reference.hex
@@ -1,980 +1,1015 @@
:020000040800F2
-:10000000A81E0020193B0008ED390008EF39000850
-:10001000353B0008393B00083D3B0008000000006C
-:10002000000000000000000000000000F13900089E
-:10003000F339000800000000F5390008F73900081E
-:10004000413B0008453B0008493B00080D3A0008C9
-:100050004D3B0008513B0008553B0008593B000848
-:100060005D3B0008613B0008653B0008693B0008F8
-:100070006D3B0008713B0008753B0008793B0008A8
-:100080007D3B0008813B0008853B0008FD390008E6
-:10009000FB390008893B00088D3B0008913B0008B4
-:1000A000953B0008993B00089D3B0008A13B0008D8
-:1000B000A53B0008A93B0008AD3B0008B13B000888
-:1000C000B53B0008B93B0008BD3B0008C13B000838
-:1000D000C53B0008C93B0008CD3B0008D13B0008E8
-:1000E000D53B0008D93B0008DD3B0008E13B000898
-:1000F000153A0008113A0008E53B0008E93B000802
-:10010000ED3B0008F13B0008F53B0008F93B000817
-:10011000FD3B0008013C0008053C0008093C0008C4
-:100120000D3C0008113C0008153C0008193C000873
-:100130001D3C0008213C0008253C000830B50400A7
+:10000000D01E0020513D0008253C0008273C000878
+:100010006D3D0008713D0008753D000800000000BE
+:10002000000000000000000000000000293C000863
+:100030002B3C0008000000002D3C00082F3C00086D
+:10004000793D00087D3D0008813D0008453C0008E1
+:10005000853D0008893D00088D3D0008913D000860
+:10006000953D0008993D00089D3D0008A13D000810
+:10007000A53D0008A93D0008AD3D0008B13D0008C0
+:10008000B53D0008B93D0008BD3D0008353C0008FD
+:10009000333C0008C13D0008C53D0008C93D0008CB
+:1000A000CD3D0008D13D0008D53D0008D93D0008F0
+:1000B000DD3D0008E13D0008E53D0008E93D0008A0
+:1000C000ED3D0008F13D0008F53D0008F93D000850
+:1000D000FD3D0008013E0008053E0008093E0008FD
+:1000E0000D3E0008113E0008153E0008193E0008AC
+:1000F0004D3C0008493C00081D3E0008213E000818
+:10010000253E0008293E00082D3E0008313E00082B
+:10011000353E0008393E00083D3E0008413E0008DB
+:10012000453E0008493E00084D3E0008513E00088B
+:10013000553E0008593E00085D3E000830B50400F9
:1001400085B008BF012042D004F50A75687820B94F
-:1001500000212970204600F067FB032068702068AA
-:1001600000F033FC00200AE004EB401128310122AA
+:1001500000212970204600F069FB032068702068A8
+:1001600000F035FC00200AE004EB401128310122A8
:100170004A700870C8810022401C00F02AF86168AB
:100180008842F1D30020002208E004EB401101F581
:1001900094710870401C4A7000F01BF86168884236
-:1001A000F3D383B0211D6846202200F03DFF0EBC32
-:1001B000206800F00FFC002084F824000120687003
-:1001C000E069012804BF204600F089FF002005B047
+:1001A000F3D383B0211D6846202200F03FFF0EBC30
+:1001B000206800F011FC002084F824000120687001
+:1001C000E069012804BF204600F08BFF002005B045
:1001D00030BDCA700A614A618A61C0B2704710B509
:1001E00000F0CAF801D1022010BD00F0BFF820686D
-:1001F00000F0E4FBFFE7002084F8280210BD38B5CA
+:1001F00000F0E6FBFFE7002084F8280210BD38B5C8
:10020000044600F0B0F8010444BF204600F09AF91B
:1002100000F0A9F840050CD500F0A1F84FF6FF302A
-:1002200000F099F8204600F02DFB0021204600F058
+:1002200000F099F8204600F02FFB0021204600F056
:10023000A8F800F098F8400405D500F090F84BF6C7
:10024000FF7000F088F800F08EF8800405D500F00B
:1002500086F84DF6FF7000F07EF804F5187500F092
:1002600082F8C0041FD52168B1F840204FF6FB701A
:100270000240A1F840204FF6F770B1F8402002404C
:10028000A1F840202878012804D1002129702046B7
-:10029000C046C046204600F006FB00F060F84EF66F
+:10029000C046C046204600F008FB00F060F84EF66D
:1002A000FF7000F058F800F05EF8000516D52068E1
:1002B00000F14002118841F0080111804FF2FF71F6
:1002C00093880B409380118841F004011180B0F8AD
-:1002D0004400C0045CBF204600F0E1FA00F043F89F
+:1002D0004400C0045CBF204600F0E3FA00F043F89D
:1002E000000620D5206800F140014FF67F708A8813
:1002F00002408A80287898B90A8842F004020A806D
:100300000122088840F0080008802A70888A800846
:1003100000F03C00686001212046C046C04602E073
-:10032000204600F0BCFA00F01EF8800508D500F069
-:1003300016F84FF6FF5000F00EF8204600F09EFA37
+:10032000204600F0BEFA00F01EF8800508D500F067
+:1003300016F84FF6FF5000F00EF8204600F0A0FA35
:1003400000F011F8C00505D500F009F84FF6FF6080
:1003500000F001F831BD0240A1F844207047216847
-:10036000B1F844207047206800F01DBE012184F8D8
-:100370002812206800F00EBE044694F828020128D6
+:10036000B1F844207047206800F01FBE012184F8D6
+:100370002812206800F010BE044694F828020128D4
:10038000704710B5FFF7F8FF01D1022010BD012220
-:1003900084F8282284F82410206800F0F5FD2AE76C
+:1003900084F8282284F82410206800F0F7FD2AE76A
:1003A00038B5054601F0070005EB40100C0647BFC5
:1003B00000F12804012000F59474002001F00701E9
:1003C000607021702261E370607808B12178E1816A
:1003D000022B04BF0020207195F82802012801D1CA
:1003E000022032BD012185F828122146286800F03C
-:1003F00003FB72E010B5044600F098F847BF2830C0
+:1003F00005FB72E010B5044600F098F847BF2830BE
:10040000012200F59470002201F007014270017092
:1004100094F82812012901D1022010BD00F08CF8B7
-:1004200000F01DFCE7E61CB501F0070400EB4414E6
+:1004200000F01FFCE7E61CB501F0070400EB4414E4
:1004300004F5947400F01BF86270217011E001F073
:10044000070100EB4110D0F8440170471CB501F0E2
:10045000070400EB4414283400F009F8217001224D
-:1004600062702146006800F080FC002016BD01F09B
+:1004600062702146006800F082FC002016BD01F099
:1004700007016261A3610022E261704738B5054659
:100480000C46696804F00700814201D2012032BDA8
:10049000210605D505EB401000F12801012204E0FA
:1004A00005EB441000F5947100224A700120887019
:1004B00004F007040C7095F82802012801D10220ED
-:1004C00032BD012285F82822286800F007FD24B9F2
+:1004C00032BD012285F82822286800F009FD24B9F0
:1004D000286805F50C710020C046002085F8280228
:1004E00032BD1CB5044601F00F0362689A4201D286
:1004F000012016BD00F01AF847BF2830012200F590
:100500009470002201F00701427000228270017095
:1005100094F82812012901D1022016BD00F00CF830
-:1005200000F0F5FC002084F8280216BD01F0070059
+:1005200000F0F7FC002084F8280216BD01F0070057
:1005300004EB40100A067047012284F82822014685
:10054000206870472DE9F84F00F59475064627E0BE
:1005500001880AEA010141F40041018006F1240406
:100560003068B0F85010227901EBC201401800F257
:1005700002400088A169C0F3090020620844A0611C
-:100580000021304600F073F9217849B1E06938B9AB
+:100580000021304600F075F9217849B1E06938B9A9
:100590002178306841F08001A0F84C1000212170D2
-:1005A000306800F144010A88130440F1E7800A88AA
-:1005B00012F00F0440F68F7748F60F7A57D1D20623
-:1005C000C6D50288130511D5898900F0E0F8EA88BC
-:1005D000C3F30903EB6106F50C7100F001FD30680F
-:1005E00000F0CFF8304600F034F9D9E71104D7D540
-:1005F00000F0C7F83068B0F8501000F0C8F8C3F346
-:100600000903002BEB6107D0EA88696900F0E8FC78
-:100610006869E969084468610021304600F01FF903
-:100620003068B0F850104118286901F2064120B92D
-:10063000088848F2FF32104009E03E2805D24208FF
-:10064000C00748BF521C900203E04009800240F4FA
-:10065000004008804BF68F7230680188114081F4A9
-:10066000405141F4004141F08001018098E730F8A9
-:1006700024805FEA084106EB441957D530F824106E
-:100680000F4047F0800720F8247009F59477306810
-:10069000397B71B9B0F85030397803EBC103C21817
-:1006A00000F07DF82DD0FA8879695B4600F098FC5F
-:1006B00027E039780B4630F823305A04B0F8503030
-:1006C00003EBC10107D5421802F2024200F069F8BB
-:1006D0000AD03A8904E0421800F061F804D07A891F
-:1006E0005B46796900F07CFC3168387831F820206D
-:1006F00048F68F731A4042F4004242F0C00221F8DB
-:100700002020F9695944F961796901EB0B027A619A
-:10071000BB6913B139698B4504D23978304600F092
-:100720009EF803E039783046FFF77DFE5FEA086007
-:1007300020D5316831F824200AEA020242F400424E
-:1007400009F1280021F8242032680178B2F85030ED
-:1007500003EBC103D21802F2024212884369C2F3CA
-:100760000902C2611A4483694261002B304602D1FA
-:1007700000F07DF814E7FFF769FE11E70020BDE8FF
-:10078000F28F01880F4047F08007078070472A7872
-:1007900001EBC201411801F206410B88704702F2D9
-:1007A00006421188C1F3090BBBF1000F7047F0B48A
-:1007B0000246106895681318506803EB5004C00790
-:1007C00021D54D441FE0F0BC02F10C00704713F836
-:1007D000017B05F8017B491EF9D1A0B1B60813F8D9
-:1007E000011B06F00306032E08BF13F8016B01EB93
-:1007F00006214942801C294405D011F8016B05F8F7
-:10080000016B401EF9D1A342DDD013F8016B16F045
-:10081000030104BF13F8011BC91C30090F28DAD1EA
-:1008200013F8010B0F30D6E780B56048016841F03E
-:10083000806101600022006800F080600090062165
-:100840000098142000F07CFCBDE80240142000F069
-:1008500094BC00F50C71D0F8700200F0FFBC00EB06
-:100860004112D0F87002D2F83C2100F021BD00EB1B
-:100870004112D0F87002D26B00F059BDD0F870026E
-:1008800000F0E2BD10B50446D4F8700200F0A4FDFB
-:10089000D4F87002BDE81040012100F0C6BDD0F8C8
-:1008A000700200F0C5BDD0F8700200F0C7BD10B5F1
-:1008B0003F4C40492160C4F870020821616000216A
-:1008C000E16002212161A1600021A161C0F898428C
-:1008D0002046FFF733FC18230022002100F012F815
-:1008E00058230022802100F00DF8C023002281212E
-:1008F00000F008F84FF488730022012100F002F89C
-:10090000002010BD204600F0D2BB80B5D0F8980280
-:10091000FFF765FC002002BD10B51C461346D0F859
-:1009200098022246FFF73CFD002010BD80B5D0F8AC
-:100930009802FFF75FFD002002BD80B5D0F8980255
-:10094000FFF79CFD002002BD80B5D0F89802FFF7AC
-:10095000C8FD002002BD81B0D0F8980201F07F02EE
-:1009600000EB421009064CBF90F82A0090F82A01CB
-:1009700001B0704780B5D0F89802FFF702FD002063
-:1009800002BD80B5D0F89802FFF760FD002002BDDF
-:1009900080B5D0F89802FFF746FD002002BDD0F8E0
-:1009A0009802FFF74CBD04487047000058000058FB
-:1009B000600400200068004004090020B0F84010E6
-:1009C00041F43F4141F08001F0E2B0F8402044F2B0
-:1009D0007F01EFE20EB4012120F8401F00210180C9
-:1009E00081800182018841F43F4141F08001018012
-:1009F000002003B0704700002DE9F8470B4648F689
-:100A00008F111D780246002032F825600E40D978FB
-:100A100003290CD8DFE801F002080C0546F4007643
-:100A200006E046F4C06603E046F4806600E001207C
-:100A300048F28004264322F8256048F68F7519781D
-:100A40000E4632F826702F403943214322F82610F3
-:100A50004BF68F76197B93F8009000294CF28007B3
-:100A600048F6BF7C48F2C00E67D1B3F806A04FF637
-:100A7000FE7101EA0A0A59780029B2F850101144AF
-:100A80001ED001EBC90101F58061A1F800A0197821
-:100A900032F82160760606D532F8216035404EEAFC
-:100AA000050522F821501978DB78012B32F8213026
-:100AB0000CEA03030EBF1C4383F020031C43CAE06F
-:100AC00001EBC90909F20449A9F800A0B2F85010D5
-:100AD00002EB010C19780CEBC10C19690CF2064CF5
-:100AE00031B9BCF800E048F2FF3101EA0E010CE038
-:100AF0003E2908D24FEA510EC90748BF0EF1010E38
-:100B00004FEA8E2E03E04909890241F4004EACF809
-:100B100000E0197832F821C05FEA4C4C06D532F873
-:100B200021C005EA0C053D4322F82150197832F81E
-:100B300021301E4086F440568CE032F829102940BE
-:100B400041F4014141F0800122F82910B2F850101F
-:100B5000B3F808A002EB0109197809EBC10101F50E
-:100B600080694FF6FE7101EA0A01A9F80010B2F897
-:100B70005010B3F80A9002EB0108197808EBC1088D
-:100B800008F204484FF6FE7101EA0901A8F80010C6
-:100B9000597893F80080002932F828102BD14904A5
-:100BA00005D532F8281029400F4322F8287019780B
-:100BB00032F821707F0606D532F821702F404EEAB8
-:100BC000070722F82170197832F821703D404EEA6B
-:100BD000050522F82150197832F821502E4086F46C
-:100BE0004056264322F82160197832F821300CEA69
-:100BF00003031C432FE0490405D532F8281029408F
-:100C0000394322F82810197832F821805FEA4868C1
-:100C100007D532F8218005EA08084EEA080E22F8C6
-:100C200021E0197832F821E005EA0E053D4322F86B
-:100C30002150DD781978012D32F821500CEA050594
-:100C400018BF85F02005254322F82150197832F885
-:100C500021301E40344322F82140BDE8F2872DE9BF
-:100C6000F041024691F800C048780B7B4BF68F7E2E
-:100C70004CF2800448F2800848F6BF7548F2C0067E
-:100C800048F68F77ABB9002832F82C0008D0400620
-:100C900036D532F82C0007403E4322F82C602FE076
-:100CA000400456D532F82C0007403C4322F82C4033
-:100CB0004FE0002832F82C0029D1400405D532F845
-:100CC0002C003840044322F82C40087832F82030B9
-:100CD0005B0605D532F820303B40334322F8203004
-:100CE000087832F820301F403E4322F82060087810
-:100CF00032F820300EEA030348EA030322F82030DA
-:100D0000087832F820100D4048EA050128E0400438
-:100D100005D532F82C003840204322F82C00087802
-:100D200032F820305B0605D532F820303B401E43B8
-:100D300022F82060087832F820301F403C4322F827
-:100D40002040087832F820301D4048EA050522F896
-:100D50002050087832F820100EEA010148EA01011B
-:100D600022F820100020BDE8F081F8B50E460546B7
-:100D700072783469B069012A48F2800748D1844208
-:100D800032BF001B04460020B061307B40B9F288BE
-:100D900000F0A0F800F097F800F2024004802EE086
-:100DA0003078C10035F820004206B5F850002844DC
-:100DB00005D5091801F206410C80728904E0091872
-:100DC00001F202410C80328900F084F8707848F614
-:100DD0008F7140B9307835F82020114041F400413E
-:100DE00041F0C00109E0012809D1307835F8202010
-:100DF000114041F4404141F0800125F82010317844
-:100E000035F8212048F6BF70024082F030024EE0F3
-:100E1000844232BF001B04460020B0616009317B70
-:100E20008302002943F4004304F001004FEA540C0C
-:100E300018D0AAB900F040F801F202413CB9B1F86B
-:100E400000E0202262F38F2EA1F800E008E03E2CA3
-:100E500005D2624600B1521C92020A8000E00B806B
-:100E60007178A9B900F028F801F206412CB90A8876
-:100E7000202060F38F220A8011E03E2C06D208B1B8
-:100E80000CF1010C4FEA8C20088008E00B8006E092
-:100E9000012904D100F017F800F2064004804BF657
-:100EA0008F70317835F82120024082F44052174388
-:100EB00025F821700020F2BDB5F85010327869187D
-:100EC00001EBC2017047B5F850003178281800EBEB
-:100ED000C10070477169A3B2284670E018B50A785E
-:100EE000497830F82240002948F2800305D048F6BE
-:100EF000BF710C4084F0100404E04BF68F710C407D
-:100F000084F48054234320F82230002012BD30B5F1
-:100F10000A7B002A36D14A780C78002A30F824203F
-:100F200048F2800348F68F7516D0520608D530F87F
-:100F30002420154045F4004545F0C00520F8245014
-:100F4000CA78012A1ED00A7830F8224048F6BF71CC
-:100F50000C4084F0200412E0520408D530F824201C
-:100F6000154045F4404545F0800520F824500A78A6
-:100F700030F822404BF68F710C4084F440542343E8
-:100F800020F82230002030BD11B98021A0F84C108B
-:100F900000207047B0F8581041F40041FFE7A0F876
-:100FA000581000207047B0F844007047A0F8401077
-:100FB000002070470A40A0F840200020704710B57C
-:100FC00080185B1C00F580605B0807E00A784C78AD
-:100FD00042EA0422891C20F8022B5B1EF6D110BDC8
-:100FE00010B5821802F58062580806E032F8024B0C
-:100FF0000C70240A4C70891C401EF7D1D80744BFDE
-:101000001088087010BD000062B38B0708D0521E14
-:1010100011F8013B00F8013B00F024808B07F6D16A
-:10102000830740F0208000BF103A07D330B4B1E806
-:101030003810103AA0E83810F9D230BC530724BF5A
-:10104000B1E80810A0E8081044BF51F8043B40F88C
-:10105000043BD20724BF31F8022B20F8022B44BFF7
-:101060000B7803707047121F17D35B0009D151F83A
-:10107000043B20F8023B1B0C121F20F8023BF6D267
-:101080000BE051F8043B00F8013B1B0A20F8023B3F
-:101090001B0C121F00F8013BF3D238BF121D521E69
-:1010A00024BF11F8013B00F8013BF8D8704710B598
-:1010B0000C0605D501F0070100EB4110283003E0D4
-:1010C00000EB411101F5947012B90273C38004E082
-:1010D000038101211B0C01734381002010BD0168B5
-:1010E00000F518700122826000220270B1F85400ED
-:1010F00040F00100A1F85400B1F8540040F00200A3
-:10110000A1F85400002070470901020081B002D408
-:101110003248815405E0324802F00F02104400F8D2
-:10112000041C01B070472F4A13684FF6FF010002FC
-:101130000B4000F4E06018432B49084310607047EF
-:1011400038B5284B1C68C4F30223C3F10704052CEF
-:1011500028BF04241D1D072D34BF0023DB1E0125DD
-:1011600005FA04F4641E2140994005FA03F35B1E5E
-:101170001A401143BDE83440C6E7010007D40122FC
-:1011800000F01F01194B8A40400943F820207047A6
-:1011900001000BD4012200F01F01154B8A404009C9
-:1011A00043F82020BFF34F8FBFF36F8F70470100CC
-:1011B00007D4012200F01F010E4B8A40400943F87A
-:1011C00020207047010007D4012200F01F010A4BC4
-:1011D0008A40400943F820207047000000E400E006
-:1011E00018ED00E00CED00E00000FA0500E100E081
-:1011F00080E100E000E200E080E200E038B508B9FC
-:10120000022032BD00F51D74A3690BB10025A56154
-:1012100001B16161012121700270FFF748FB0020DC
-:1012200032BD0246002011B1C2F88C127047022074
-:10123000704780B5FFF769FB002002BD10B5D0F8FC
-:101240008C2202241AB11268904700B9002420466B
-:1012500010BD80B5D0F88C22536801E138B5044642
-:1012600004F52075284600F0F7FA04F51B700121FB
-:101270000160418B4160017D11F01F0003D0022805
-:101280000BD005D30EE02946204600F0EDF80DE026
-:101290002946204600F060F908E02946204600F083
-:1012A00080F903E001F0800100F03EF8002032BD3B
-:1012B00038B5044610460A0004F51B7328D1196896
-:1012C00003291DD104F5A6714A680D68AA420BD204
-:1012D000AD1A0D60954238BF2A46014692B22046AB
-:1012E00000F017FB002032BD186A016921B1187A9D
-:1012F000032804BF20468847204600F012FBF1E790
-:101300000529EFD100201860002100F00DF8E9E771
-:10131000186A82692AB1187A032802D120469047B8
-:10132000E0E7022032BD80212046FFF706BB38B53A
-:1013300004460800134604F51B7542D128680228AC
-:1013400032D1226A616A914207D2521A2262194648
-:1013500092B2204600F0CBFA11E0E269B2FBF1F064
-:1013600001FB102090B98A4210D3686882420DD2E6
-:1013700000220021204600F0BAFA00206860002315
-:10138000002200212046FFF703FB13E0286AC16812
-:1013900021B1287A032804BF20468847FFF7C3FFFE
-:1013A000204600F0C5FA05E0042818BF002801D146
-:1013B000FFF7B9FF287B012804BF00212973002013
-:1013C00032BD286A42692AB1287A032802D1204610
-:1013D0009047F4E7022032BD10B5044640230022B6
-:1013E0000021FFF799FA04F5A27001210160402362
-:1013F0004021C160002280212046FFF78DFA0120A4
-:10140000A06104F51B724020606201201072002070
-:10141000106060601061506A28B1126A6168536898
-:10142000C9B220469847002010BD017400207047C3
-:1014300000F51D7001784170042102E000F51D7077
-:10144000417801700020704780B500F51D710A7861
-:10145000032A03D18969C96901B18847002002BD07
-:101460009847002002BD00007CB50446087810F0C3
-:10147000600004F51D7508D0202818BF40282DD124
-:10148000AA6993682046984764E04878092825D8D7
-:10149000DFE800F03D552450240905242B27204681
-:1014A00000F014F956E08A88002A04BFC888002892
-:1014B00014D14E88802E11D22878032806F07F069A
-:1014C0000CD0AE7031462046FFF754FA00F0FBF81E
-:1014D000002E14BF0220012028703BE000F072F9BA
-:1014E00038E0204600F070F934E0C8880128F5D1D2
-:1014F0002A78521E012A04D9921EEFD10122211D01
-:1015000014E00020A060012204F108010EE0287818
-:10151000401E0228E2D8C8880228DFD1A86801212D
-:1015200000B10321E160022204F10C01204600F029
-:10153000D6F90FE0488801280CD1012107E028786E
-:10154000401E0228CAD84888012803D10021A9607A
-:1015500000F0B9F8002076BD38B50D46044628786D
-:1015600010F060001CBF2028402816D104F51D7221
-:101570001178491E022910D8287902280DDA9269BB
-:1015800093682946204698470146E888002808BF06
-:10159000002904D100F097F801E000F012F90020D2
-:1015A00032BD7CB50446084604F51D730278017906
-:1015B00012F0600509D0202D18BF402D6BD19A691B
-:1015C000936801462046984768E002F06002202AAE
-:1015D00007D19A6993680146204602B0BDE8704081
-:1015E000184742788AB3012A12D0032A53D11A78B5
-:1015F000022A13D0032A4ED142881ABB002918BFF1
-:1016000080291FD0C088E8B92046FFF796F919E075
-:101610001A78022A02D0032A0CD03CE0002918BF15
-:10162000802938D02046FFF788F980212046FFF72F
-:1016300084F933E0408888BB11F07F0F1CBF20463F
-:10164000FFF782F900F03FF828E0142201F07F054F
-:101650001B7855436619022B06F5A07502D0032BA3
-:1016600010D018E0002918BF802914D1080648BFFF
-:1016700006F114050020286002222946204600F0C9
-:101680002EF90BE001F00F0312FB03F20B062244CC
-:1016900006D5926972B9014600F094F8002076BD33
-:1016A000D2F84421002AF6D0002918BF802904D19D
-:1016B0000020E0E706F11405F6E72046FFF74BF9B6
-:1016C00000B10120D7E7204600F02BB938B50D4610
-:1016D00004466888010A012904F5227208D002290B
-:1016E00023D003292ED0062958D007295DD065E0E4
-:1016F0001268207C136869469847BDF8001079B1DC
-:10170000E98879B1BDF80010EA88914288BF114696
-:10171000ADF800100146BDF80020204600F0DFF8CB
-:10172000E88808B9FFF7CFFF31BD207C5168002859
-:10173000684604D1896A884702214170DDE7C96A99
-:101740008847F9E7C0B2052838D8DFE800F0030978
-:101750000F151B211268207C536869469847CCE717
-:101760001268207C936869469847C6E71268207C17
-:10177000D36869469847C0E71268207C13696946B8
-:101780009847BAE71268207C536969469847B4E7DE
-:101790001268207C936969469847AEE7207C68B957
-:1017A00051684A6B68469047A7E7207C30B951687A
-:1017B0000A6B68469047072242709EE700F001F8E6
-:1017C00031BD294620465BE07CB50D460446214EDE
-:1017D000688830703178084602282DDA94F874222F
-:1017E000022A02D0032A0FD02BE041B1606003200F
-:1017F00084F874022046FFF721FD02281CD0204601
-:10180000BDE8764000F08DB841B9022084F874023A
-:10181000002060602046FFF71CFDF0E76168884209
-:10182000EDD0C9B22046FFF714FD31786160204643
-:10183000FFF704FD0228E2D129462046BDE87C409E
-:101840001EE0FFF7BEFF31782046BDE87C40FFF781
-:1018500000BD0000A40E00200A7802704A78427091
-:10186000CB788A7802EB032242804B790A7902EB2B
-:10187000032282808A79C97902EB0122C2807047F3
-:1018800010B504468021FFF758F82046BDE8104007
-:101890000021FFF752B800280B4600D1704730B541
-:1018A0000146002400E0641C11F8015B002DFAD110
-:1018B0002406E40DA41C148011781970022203215F
-:1018C000597008E010F8011BD4B2521C1955D4B25B
-:1018D00000211955521C01780029F3D130BD80B583
-:1018E00013460222C0F86C22C361036201E080B596
-:1018F00013460A460021FFF744F8002002BD80B5D8
-:1019000013460322C0F86C2200F5A47213605360E2
-:1019100001E080B513460A460021FFF739F80020A0
-:1019200002BD80B50421C0F86C1200230022E1E75B
-:1019300080B50521C0F86C1200230022ECE70000FE
-:10194000DFF8F0140A6892B200E00246086880B23C
-:101950008242FAD170472DE9FC4104461825DFF890
-:10196000D884DFF8D864684308EB0007307806288D
-:1019700008D131787170347078754FF0FF30706035
-:10198000002039E000F077F8B9680918B96008F16B
-:101990000803B96832786A439A589142327813D36F
-:1019A00008F1150315FB02FC13F80C30062B25D0AB
-:1019B00008F108066B43F358994222BF08F115035A
-:1019C0006A439A5CEED219E01146337869439A4231
-:1019D0000BD008F1140308F1150C5B5C15FB03F543
-:1019E0000CF805407A753B7500E07A7508F1140231
-:1019F0005454317871703470BDE8F68111466943F2
-:101A000008F115035B5C062B04D008F1140615FBE6
-:101A100003F574557B753A7508F115025454EBE7DC
-:101A2000F8B5DFF81834DFF810541E781824024691
-:101A30006243B0422A4404D118785870507D18701F
-:101A40000FE0167D507D92F815C005F1150766432D
-:101A5000062807F806C004D0167D143514FB00F4E0
-:101A60002E55012010731878062802BF00294FF068
-:101A7000FF315960F1BD10B5DFF8C043606810F167
-:101A8000010F0FD0FFF75CFF6168DFF8B4238142DC
-:101A900061683CBF5388C918081A517848431178C7
-:101AA000C84000E0002080B210BD2DE9F84FDFF8FB
-:101AB0009053DFF890B3D5F80880D8F80000DBF831
-:101AC00000104A0500F06AF9DFF87063DFF868A3D8
-:101AD00021F4806181604FF0180934780AF1080020
-:101AE00019FB04F14758FFF7C6FF874217D20027BA
-:101AF0000121B170062C3DD019FB04F40AF1080154
-:101B00000AF108020959814223BF0AF10801095963
-:101B1000091A002111510AEB04014C7DEAE7A9885A
-:101B20004118B94202D2AF880021E2E73F1ADFE74D
-:101B3000022802DA2878012800D07F1ED8F8000099
-:101B4000C1684A07FAD500F02FF9DBF80C00000C49
-:101B5000BFB247EA0047CBF80C70FFF7F1FE7060A8
-:101B6000A8680068816841F480618160AFF30080FB
-:101B7000BDE8F18FB8B20028DAD1FFF7E1FE70605E
-:101B80000320BDE8F24FFFF712BB2DE9F843EFF356
-:101B9000108872B6AA4DA84BA8680168CA224A628A
-:101BA00053204862A54A886820F480608860182025
-:101BB0001678374647431F44387B022826D13C68B5
-:101BC000D7F810909078F0B17A7B012A0AD10121E0
-:101BD0003046FFF725FF88F310887968304600F01B
-:101BE000F0F804E088F31088304600F09BF8A8680D
-:101BF0000068CA214162224653214162484631466B
-:101C000000F02AF90BE0FFF750FF06E0C868420732
-:101C1000FCD500F07EF88C49086088F31088FF211D
-:101C2000A86802685162BDE8F183F8B5844CA160F0
-:101C3000CA2209684A6253224A62824A136843F000
-:101C400020031360136803F00703C3F10403237038
-:101C500095682D0C05F07F056D1C6570EDB29268DE
-:101C6000C2F30E02521C628092B2521E6A43A2F567
-:101C7000A072DA404FF6FF739A422CBFA380A28075
-:101C8000724A136843F400231360714B1D6845F4D6
-:101C900000251D6048BB6948674E012383701825E5
-:101CA0004FF0FF33436000235FFA83FC06F10C071B
-:101CB00015FB0CFC4FF0000E07F80CE05B1CDFB2CC
-:101CC000062FF1DB06230370886820F480608860AB
-:101CD00000F01FF8D0600320FFF774FAA1680868CD
-:101CE000826842F48042826005E0C868410544BFD2
-:101CF0000320FFF75CFAA1680A68FF205062002207
-:101D000003210320FFF71CFABDE8F2400320FFF790
-:101D100034BAC86800F0800060F49060C8604FF486
-:101D200000207047F8B50746EFF3108472B6032021
-:101D3000FFF72EFA424DAE683068CA2141623A463A
-:101D400053214162182043494243895C02291BD137
-:101D500000213846FFF764FE3848017806290ED185
-:101D6000306838490A68530500F018F821F480619A
-:101D70008160C1684A07FCD500F016F804E040789D
-:101D8000884218BFFFF791FEA9680A68FF205062D9
-:101D90000320FFF7F2F984F31088F1BD02D5C16882
-:101DA0004A07FCD481687047C16801F0800161F482
-:101DB0009061C1604FF40020234908600320FFF7C1
-:101DC00001BA2DE9F04180460F46424618201A49D3
-:101DD00042438C18207B022804BF4046FFF7A2FF35
-:101DE000EFF3108572B60320FFF7D2F9144EB068F6
-:101DF0000068CA2141625321416202202073A7601A
-:101E000067604046FFF7A7FD0C490A784978914280
-:101E100002D0FFF74AFE02E0A168081AA060FF2086
-:101E2000B1680A6850620320FFF7A7F985F31088AC
-:101E3000BDE8F08128280040300D0020980E0020D9
-:101E4000640E0020082800400C08005800080058C4
-:101E5000800800583C0D00201047000010B590B0DD
-:101E600004A80FF21C31BD4C3022FFF7DDF82068CA
-:101E7000BB4C4FF6FC7101EA8001BA484118BA48E0
-:101E80000290616100F5867003900FF22D210FF230
-:101E9000792001900091684600F0A5F90121022007
-:101EA00000F081FA00202073207204A800F0A4FA48
-:101EB0000FF2B1120021082000F009FBAB4A00210B
-:101EC000012000F004FB0FF261120021102000F04D
-:101ED000FEFAA74A0021022000F0F9FAA54A0021E3
-:101EE000042000F0F4FA0020206104F118000060E2
-:101EF000406004F1200104F5927000F059FB10B02D
-:101F000010BD80B5964A117B31B1002010730120BD
-:101F1000BDE8024000F00ABB014602F11800CFE024
-:101F20002DE9F0410F68DFF850828D4E054605E03F
-:101F3000BC4225D200F060F825443F1B307A0128CE
-:101F40000DD17268BA424AD230682946FFF75CF870
-:101F500000F052F800203072706805443F1AEC78A7
-:101F6000391F8C422CBF3C46241D0CE04068C168E0
-:101F700017E0C06814E008F108003060224615E060
-:101F8000BDE8F04138E0297870697172012906D006
-:101F90000229EBD01029ECD02029ECD009E04068D0
-:101FA000016801F108023260224630682946FFF7D5
-:101FB0002BF8E878001D8442BAD201213172E8780A
-:101FC0003168001D001B70600819306005E0FFF7E4
-:101FD0001BF800F011F800203072BDE8F081974244
-:101FE00030683A462946F2D2FFF70EF87068C01BF7
-:101FF000706030683844E8E75948417A01290FD0C9
-:10200000022904D0102905D0202906D070470021CC
-:10201000042007E00021022004E00021082001E064
-:102020000021012000F060BA1CB5102000F06CFA0D
-:102030004B4C04F1100104F1180000F085FB2069FD
-:102040000FF28D02017A022907BFB0F80B10491D6B
-:10205000817AC91C02B0BDE8104089B2083000F096
-:10206000C9BA000010B5444CB4F809004FF66052EC
-:10207000811A04D0491E06D0491E08D00BE0204624
-:1020800000F074FB11E0204600F0ABFB0DE02046B1
-:1020900000F0CDFB09E0A0810120A073E0720420D4
-:1020A00020720E2060720420A0722146334800F096
-:1020B00035FBBDE8104007E080B50146DFF8BC0005
-:1020C00000F02CFBBDE804400021102000F00CBA09
-:1020D0001CB5234C6069016920698A68904205D368
-:1020E000C9681144884238BF00F00AF904F11800A9
-:1020F00000F00BFB18B90021102000F0F5F9BDE845
-:102100001640102000F008BA704770B51446134A04
-:10211000134E12681D46012333734FF6FC7303EA16
-:102120008203104AD3180A46DE683668A6F809000A
-:10213000F17206F10C002146FEF766FF0021002037
-:1021400000F0A4F8012000F0F9F9314605F108008B
-:10215000B278BDE87040D21CFEF756BF3C40005834
-:10216000D40600200000032080080320112200086C
-:102170008D2200084B220008240B0020EC060020D2
-:10218000000000000000000000000000000000004F
-:102190000000000044000800400508013A799C0056
-:1021A000F4010001FFFFFFFF4801010000000000F3
-:1021B00000F006BC70487149016001F120024260E4
-:1021C00001F13002826001F13C02C26001F144027F
-:1021D000026101F16002426101F1640282617031C9
-:1021E000C16100F0F5BB38B50446654D05F110003E
-:1021F00000F088FA60494868A1680160E168C16040
-:10220000456005F11001816000F0FEFB5D4837E09C
-:1022100080B559494A6813680120187200F0FAFB2A
-:10222000002002BD38B5574C554D07E0694605F111
-:10223000100000F089FA00982168884705F1100025
-:1022400000F063FA0028F1D031BD80B54A494A68F0
-:10225000D1680220087200F0E2FB002002BD49486C
-:102260004168084738B50446474D2846006040603D
-:102270004148C068A1680160456000F0D9FB43484F
-:102280002168016061684160002032BD80B53A4933
-:10229000CA6813681020187200F0D0FB002002BD3D
-:1022A0003549CA68394910680B68184738B5374C42
-:1022B000354D06E06946284600F046FA0098616808
-:1022C0008847284600F021FA0028F3D031BD38B500
-:1022D00004462F4D2846006040602E480060406054
-:1022E00025480069A1688160E168C16005612168D5
-:1022F000016061684160216941616169816131BD4D
-:1023000080B50146234800F009FABDE802400FF20B
-:10231000090000F0A3BB000038B5174C1D4D08E0C4
-:102320006946284600F010FA00992069006900F01B
-:10233000F5F9284600F0E9F90028F1D031BD10B5D3
-:10234000154C2046006040600B4841690C60BDE8B8
-:10235000104000F097BB1CB50F4C06E069462046C4
-:1023600000F0F2F90098C046C046204600F0CDF9D2
-:102370000028F3D013BD000000000320B40A03209E
-:10238000940A0320880E0020AC0A0320900E00203F
-:102390002C0B0320800E0020340B03201248002158
-:1023A00001604160704710B500F019F81C6819B160
-:1023B000012904D1204301E024EA000018600BE069
-:1023C00010B500F00CF85C6819B1012904D1204364
-:1023D00001E024EA0000586082F3108810BDEFF39A
-:1023E000108272B6004B7047780E0020FFF78DFE0A
-:1023F0009DF80E0005B000BDF8B500F10C026B466B
-:1024000021214FF66640F1E72DE9FC47554CDFF8F6
-:102410005891A5692840A0614FF0010A4FF0FF389C
-:1024200030E0491C54F831000642FAD004EBC107F1
-:10243000184079681040014208BFC7F804807E68E0
-:10244000304000F093F860620AFA00F086437E6044
-:10245000EFF3108172B6626A20690AFA02F2D2437F
-:1024600010402061022004EBC00353F8086C1640B2
-:10247000401E43F8086CF6D181F31088606A59F861
-:102480002010884763692069A2691840104207D06C
-:10249000E069216A084203D1002103EA0206C1E78C
-:1024A000C046C046EFF3108972B6216960690140E9
-:1024B000A069014201BFE169206A014200F074FB9A
-:1024C00089F31088C046C046A561BDE8F38738B5DA
-:1024D0001446EFF3108572B600F048F8224941F82F
-:1024E000204085F3108831BD10B5EFF3108272B62D
-:1024F0001C4B1C6904431C6153F83140204343F8D2
-:10250000310082F3108810BDEFF3108172B6154AC6
-:10251000536923EA000005E0EFF3108172B6114A17
-:1025200053691843506181F310887047EFF31081AD
-:1025300072B60C4AD3691843D061F4E770B5094C00
-:10254000656A266A2062012101FA05F502E0284643
-:1025500000F02BFB216AE0690842F8D0884326622C
-:10256000E06170BD04000020C00D00200246002084
-:10257000110C090404BF1020120412F07F4F04BF95
-:10258000083012020FF2180112F0704F04BF001D44
-:102590001201120FC0F11F00895C401A7047000041
-:1025A000040302020101010100000000000000001C
-:1025B00010B54F4C002220606160A28104F114002C
-:1025C0004C49FEF71BFE4C4904F11400FEF729FEAE
-:1025D00004F52C7104F1140000F00EFC04F1140059
-:1025E000FEF727FEBDE810400FF23D02002120203B
-:1025F000FFF76DBFF8B50C461546EFF310863C4F5C
-:10260000014638682246FEF7FFFCBD60FC8172B6C9
-:10261000387B20B101212020FFF766FF01E0012077
-:10262000787386F31088F1BD10B5314CE2892168CA
-:1026300004F1140000F0E7FB04F1140000F0F1FBDA
-:1026400028B1BDE8104001212020FFF74DBFA06850
-:10265000BDE81040004738B5254D696805F1140004
-:1026600000F0D9FB05F1140000F0F3FBEFF3108448
-:1026700072B601202873687B18B101212020FFF772
-:1026800033FF84F31088002032BD0020704710B55E
-:1026900020281A4A02D0212812D01FE008784B784F
-:1026A0008C7840EA0320CB7840EA044040EA03609B
-:1026B00010600879107148795071887990710DE037
-:1026C00010680870030A4B70030C000EC8708B7002
-:1026D000107908715079487190798871002010BD87
-:1026E00080B5FFF71DFC064800F0B3FB002002BDDB
-:1026F00090010020580100205400002050040020C8
-:10270000A4010020006040607047EFF3108172B6B2
-:10271000026882420CBF0120002012E0EFF3108219
-:1027200072B6086043684B6041604868016019E018
-:10273000EFF3108172B6436802681A60426800685D
-:10274000426081F31088704710B5EFF3108472B6C1
-:1027500002680A600068FFE7FFF7EAFF84F3108869
-:1027600010BD086082F310887047000070B5EFF369
-:102770001081027B012A02D0022A07D00DE000F06E
-:1027800028F8137800F01FF814700CE000F021F81E
-:10279000138800F018F8148005E000F01AF81368A8
-:1027A00000F011F8146081F31088212101720E21CC
-:1027B0004172042181724FF6605181810021817341
-:1027C0000121C17270BD264623EA040435402C4322
-:1027D000704772B6D0F81120D0F80D40D0F81550DF
-:1027E000704781B0017B012902D0022904D008E0A2
-:1027F000D0F80D10097807E0D0F80D100A88009283
-:1028000003E0D0F80D10096800910E2141722122D9
-:102810000821817202724FF6615181810121C172DA
-:1028200000218173009A40F80F2F01B0704738B52E
-:102830000446212020720E2060724220A0724FF6C2
-:102840006250A0810120E0720020A0731D4D1E483F
-:102850000168090CA4F80F100068C0F30B00A4F87D
-:1028600011001A4801781A4801F01F01E17441680B
-:1028700021754168090AC4F815100268C4F81920C6
-:102880000169C4F81D104169C4F8211004F129013F
-:102890008069C4F82500286802680A600C222B6849
-:1028A000191D04F12D00FEF7AFFB286800F110019F
-:1028B000102204F13900FEF7A7FB06480168C4F8AE
-:1028C000491031BD00000320002004E00075FF1F07
-:1028D0008075FF1F283C0008C0680840884201D16D
-:1028E0000120704700207047C0690840884201D12C
-:1028F000012070470020704710B5654C022120462A
-:10290000FFF7F2FF38B16068C043810703D5FFF7D6
-:10291000CDFC022018E001212046FFF7E5FF38B189
-:102920006068C043C10703D5FFF77CFC01200BE0C2
-:1029300008212046FFF7D8FF38B16068C04301077F
-:1029400003D5FFF708FD0820A06010BD10B5504C5E
-:1029500000F033F818B96068C043810306D400F072
-:102960002CF830B96068C043810302D5BDE810403F
-:102970006DE0082100F022F870B96068C0430103DF
-:102980000AD56068434940F40020606008688047C9
-:102990004FF40020A06010BD202100F00FF858B9BE
-:1029A0006068C043810207D5606840F40010606031
-:1029B000BDE81040FFF753BC10BD022120468BE755
-:1029C00040BF20BF3448016841F4004101607047B6
-:1029D00080B53248016841F480110160006800F45C
-:1029E0008010009000982A48016841F001010160C0
-:1029F000026842F4803202602C20FEF7BEFBBDE884
-:102A000002402D20FEF7B9BB25480168490849005E
-:102A10000160704723494FF48030086070472048B8
-:102A20004FF400114160016821F40011016070470A
-:102A30001B48016821F002010160704718484FF4FB
-:102A400000314160016821F4003101607047144891
-:102A5000016841F400310160FFF722BC38B504463B
-:102A60000B4D08212846FFF737FF30B109480460B5
-:102A7000686820F40020686031BDA0474FF4002151
-:102A8000A96031BD0648016821F008010160704766
-:102A9000000C0058A00E00200C04005850000058F4
-:102AA000040C0058080C005818B53948394C89B046
-:102AB000016841F400410160FFF770FC00F0DCF9AF
-:102AC00035490020FFF7B1F800F0EFF9334801680D
-:102AD00041F4803101600121026C42F480320264D1
-:102AE0000120FFF76DFC002000F0F5F9012000F057
-:102AF000F2F9022000F0EFF9012000F01DFA0121A7
-:102B0000002000F023FAFFF755FB254800604060E5
-:102B10000FF2590200214020FFF7D9FC04F23C508B
-:102B2000029020490FF22D00019000916846FFF7B6
-:102B300099FB04F25470039004F5C96140F23C50D3
-:102B400006900491059403A8FFF7C1FBFFF730FB43
-:102B50000AB010BD80B501461148FFF7DFFDBDE8A2
-:102B6000044000214020FFF7BFBC000080B5FFF704
-:102B7000E6FB00210120FFF723FC69460848FFF728
-:102B8000E3FD0098FFF7BCFBFFF768F901BD00000B
-:102B90000800005820000320400E00209008005834
-:102BA000700E0020031F000870474FF0FF30FFF742
-:102BB0002BBC00007CB505460026287C40B94FF4AC
-:102BC000007300F03AF80120E8624FF4007305E06A
-:102BD000402300F032F80120E86240230222012164
-:102BE0002846FDF799FE0120C5F858010823032265
-:102BF00082212846FDF790FE012028644FF40770DB
-:102C0000FDF7D1FE040005F5247008BF012604601D
-:102C100011D040680168884704F50170066146617B
-:102C20000268287C00280CBF4FF400734023012168
-:102C30002846FDF7ADFE304676BD022281212846AA
-:102C4000FDF76ABE10B504468121FDF76FFE002036
-:102C5000E06201212046FDF769FE0020C4F858011A
-:102C600082212046FDF762FE0020206404F52474D2
-:102C7000206838B16168486880472068C046C0460F
-:102C800000202060002010BDF8B5044604F51D7337
-:102C90000D46DE6900208DF80000ADF80200002727
-:102CA000297811F0600022D020283AD1EA88C2B1F8
-:102CB000687809060AD51B6AD3F808C03146E04790
-:102CC000EA8831462046FEF70AFE2FE006F500713D
-:102CD0000870E88848703146EA882046FEF70FFE03
-:102CE00024E01B6A68789C682946A0471EE0687843
-:102CF00020B10A2809D00B2810D012E01878032838
-:102D00000FD102220DF1020104E01878032808D146
-:102D1000012269462046FEF7E2FD07E01878032805
-:102D200004D029462046FEF7ABFD02273846F2BD07
-:102D300070B5044604F5247002688368CAB1142093
-:102D400010FB01F02618F06970B103EB41139B6B87
-:102D5000B0FBF3F503FB150030B9F061002300224E
-:102D60002046FDF70EFE02E00020C2F8140200200B
-:102D700070BD022070BD70B500F52474256805F59E
-:102D80000176FDF70CFEB060206838B162683068EB
-:102D9000D36805F503719847002070BD022070BD0F
-:102DA00010B500F5247043680168002B1EBF01F5C3
-:102DB00000742078FF2804D062789B689847FF2031
-:102DC0002070002010BD4321018007487047432137
-:102DD00001800648704743210180054870470A2159
-:102DE0000180044870470000D00000208C000020C3
-:102DF00014010020480000200246022011B1C2F850
-:102E0000941200207047D0F8900200F50270016023
-:102E1000826000207047D0F89002C0F804120020B1
-:102E2000704780B5D0F8901289B101F50272D1686F
-:102E300059B90123D36091680163812193681268B5
-:102E40009BB2FDF79EFD002002BD012002BD0220C5
-:102E500002BD80B5D0F8901261B1D1F80422017C96
-:102E600000290CBF4FF4007340230121FDF790FDB2
-:102E7000002002BD022002BDDFF80C00FFE7016860
-:102E800041F480610160704704040058032010B5CC
-:102E9000FEF749F90F200020C0460024002814BF87
-:102EA000012400F00BF8204610BD0348FFE701683D
-:102EB00041F0010101607047042004E07047000008
-:102EC0003B4981B00A6802430A60096808400090E3
-:102ED000009801B0704778B585B004466846142163
-:102EE00000F076F80CB9012004E0012C18BF022C88
-:102EF00002D10220FFF7E4FF00F012F80095012054
-:102F0000019000210220039000F004F800F00EF878
-:102F100006B070BD0291694656F8240000F05CB816
-:102F20000FF29C00234E30F81450704756F82400DE
-:102F30000022294600F014B90FF284011D4B31F82C
-:102F4000101053F82000012200F00AB9F0B585B046
-:102F500004460D466846142100F03AF80120FFF7B8
-:102F6000AFFF2800144E0FF260070AD137F81400A3
-:102F70000090002101910120029002210391FFF7AE
-:102F8000CAFF012D12D137F81400009001210B481F
-:102F90000190FFF7BFFF0FF23400045D00220F2104
-:102FA00060B2FEF7CDF860B2FEF7E7F805B0F0BD0D
-:102FB0004C00005838000020440000200000211080
-:102FC00010000100020000000004000028000000C2
-:102FD000002200F0DBB800002DE9F84F4FF0000CA4
-:102FE000634A644BDFF890814FF00F0982460F4629
-:102FF00033E0624DAA4514BF072504258D402543C3
-:1030000048F82E50C1431C6801EA040E7C68E503B1
-:1030100048BF40EA0E0EC3F800E05C6801EA040E07
-:103020007C68A50348BF40EA0E0EC3F804E01468AC
-:1030300001EA040E7C68E50248BF40EA0E0EC2F8C1
-:1030400000E0546801EA040E79688C0248BF40EA47
-:103050000E0EC2F804E00CF1010C396831FA0CF0E4
-:1030600000F07C80012000FA0CFE1EEA0100F2D084
-:103070007C68022C18BF122C4FEA8C0110D14FEA49
-:10308000DC040AEB840401F01C05266A09FA05FB3E
-:1030900026EA0B06D7F810B00BFA05F53543256282
-:1030A0004FEA4C040325DAF8006097F804B0A54015
-:1030B000ED430BF0030B2E400BFA04FB4BEA060624
-:1030C000CAF800607E68012E18BF022E03D0112EB0
-:1030D00018BF122E17D1DAF80860D7F80CB02E40BE
-:1030E0000BFA04FB4BEA0606CAF80860DAF804603B
-:1030F00026EA0E0E7E68C6F3001606FA0CF646EABD
-:103100000E06CAF80460DAF80C603540BE6806FAAC
-:1031100004F42C43CAF80C407C68E4009BD54FEAC9
-:103120009C0E58F82E5001F00C0109FA01F425EA22
-:103130000404BAF1904F08BF00250ED0104DAA45E7
-:1031400008BF012509D00F4DAA4508BF022504D0AC
-:103150000D4DAA457FF44DAF03254FE7BDE8F18F34
-:1031600081B0002A14BF8161816201B07047000004
-:10317000000800588008005808000140001000486E
-:103180000004004800080048000C004800B500BFDB
-:10319000130096469446103928BFA0E80C50FAD880
-:1031A0005FEA417C28BF0CC048BF40F8042BC90728
-:1031B00028BF20F8022B48BF00F8012B00BD0000FB
-:1031C000DFF830130A68030903F47F2300019A43F0
-:1031D00000F47F2000F068B9DFF818231368010CB1
-:1031E00023EA014343EA0043136070472DE9F843A3
-:1031F000054600262878DFF8FC724106B0464FF0FD
-:10320000B0442DD5286B70B1B0F5800F06D0B0F565
-:10321000000F18BFB0F5400F17D01FE0E06840F472
-:103220008030E060C5E0206820F08060206000F021
-:1032300067F981462068000140F1A88000F060F93C
-:10324000A0EB09000228F5D90326AFE000F058F9F9
-:10325000A0EB0900022840F2A180F5E70126B04664
-:103260002868010531D5B86800F44078286C80459D
-:103270002AD000F04BF9B8F1000FB96805D1286CDD
-:1032800021F440710143B9601EE0B86840F4803019
-:10329000B86021F44071B86820F48030B860286CC0
-:1032A0000143B960B868C0070ED500F029F980461F
-:1032B00041F28939B868800706D400F021F9A0EB03
-:1032C00008004845F6D30326B0462878C10705D53F
-:1032D0003968A869890840EA81013960287881073E
-:1032E00005D53968E86921F44061014339602878DF
-:1032F000C10644BFA86AFFF76FFF2878810644BF64
-:10330000E86AFFF769FF2878410744BF286AFFF79A
-:1033100057FF2878010744BF686AFFF751FF286804
-:10332000C1055CD53968686B21F0406101433960A3
-:10333000686BB0F1006F03D1E16841F08071E1602A
-:10334000686BB0F1806F4AD100F0A0F806462068A3
-:10335000000135D500F0D4F8801B0228F7D94FF0D2
-:1033600003083CE000F0CCF8801B022830D9F6E7D7
-:1033700000F0C6F8801B022852D94FF0030861E024
-:1033800000F0BEF8801B022855D9F6E700F075F86A
-:10339000A86821F4781100F07FF8814620680001C8
-:1033A0007FF554AF216968690143216130007FF4E2
-:1033B00056AF3968286B21F44001014339604FE76B
-:1033C00000F05BF8E86821F0606100F065F80646FF
-:1033D00020680001C6D52169686901432161286818
-:1033E000810505D53968A86B21F04041014339605A
-:1033F0002868410526D53968E86B21F04051014322
-:103400003960E86BB0F1005F03D1E16841F48031CD
-:10341000E160E86BB0F1805F14D100F037F8064648
-:1034200020680001A4D400F028F8286921F0604148
-:1034300000F032F8064620680001A1D521696869CC
-:10344000014321612868C10405D5F968686C21F43D
-:1034500040410143F960286881040BD5616AE86C3A
-:1034600021F0300101436162616AA86C890840EA79
-:10347000810161624046BDE8F2832069696820F4F9
-:10348000FE4040EA0120206121697047216821F057
-:103490008061216000F034B801432161206840F070
-:1034A0008060206000F02CB810430860704710B5B1
-:1034B00011490A6842F080720A600B680F4A23F0D3
-:1034C00080730B60046841680C4381680C43C168D9
-:1034D0000C43016944EA014454601368406923F4D1
-:1034E0007C5343EA00231360116841F060011160CE
-:1034F00010BD0000880000583800005800600040EF
-:1035000001480068704700BF2C0000200248016895
-:1035100041F48071016070470004005818B59BB0F9
-:10352000FFF7B4FC574CE06B40010ED5E06BC000D8
-:103530000BD4FFF7EBFFFFF7E9FFA06B40F48030FF
-:10354000A063A06B20F48030A06300F07AF807A895
-:103550005021FFF73DFD68461821FFF739FD00F0C7
-:1035600068F84FF4807007900021149107A8FFF7C6
-:103570003DFE206840F0807020604FF000522168CE
-:1035800001F0807106910021069800914BF67F3082
-:1035900003902221049100200290202101920591A4
-:1035A0006846FFF784FFFFF7B1FFFFF7AFFFA06B9F
-:1035B00040F00100A063A06B8007FCD5E06B20F415
-:1035C000404040F48040E063E06B40084000E0632E
-:1035D00000F02FF80022206B20F0406020632A4882
-:1035E00001680260026902F050020261FFF78EFF7B
-:1035F000FFF78CFFA06B20F4407040F48070A06354
-:103600000F21A06B40F40040A063204C2048816053
-:1036100047F6FF71C160046000F040F8A068C00880
-:10362000C000A060FFF740FA4FF0FF30FEF7ECFE5D
-:10363000FAE7206C40F001002064206C8007FCD584
-:103640007047144881B0016841F4801101603F2146
-:10365000006800F48010009000980F4841604161BC
-:10366000016841F47C110160026942F47C1202613C
-:10367000016841F03F010160026942F03F020261CE
-:1036800001B07047580000588008005800280040DA
-:10369000400E002050000058040C005838B50400BB
-:1036A00044D094F8210028B9002184F82010204645
-:1036B000C046C04600F049F8FF2510B100F03FF8C1
-:1036C00034E02168DFF8B0008A6802408A6021682F
-:1036D0008A68636820690343A06903431A438A60C8
-:1036E0002168E068086120680169A26841EA024136
-:1036F00001612068C16821F08001C1602068C16C4F
-:1037000089088900C1642168CA6CE3696069034360
-:103710001A43CA6420688168880609D400F020F83A
-:1037200030B120684562042100F01FF8012032BD4D
-:1037300020684562012184F82110002032BD2068F4
-:103740004562042184F821107047022084F821008A
-:10375000CA2021684862532022685062204626E031
-:1037600020460BE02068C0F8248084F82110002057
-:1037700084F8200070470000BFFF8FFF70B504463B
-:1037800040F2E9362068C16821F0A001C160FFF76E
-:10379000B7FE05462068C168880606D4FFF7B0FE6C
-:1037A000401BB042F6D3032070BD002070BD70B541
-:1037B00004462068C1684A0612D44FF0FF32C26046
-:1037C00040F2E936FFF79CFE05462068C1684806CE
-:1037D00006D4FFF795FE401BB042F6D3032070BD20
-:1037E000002070BD122008800FF2001070470420E6
-:1037F00008800FF20C10704710B500F029F80FF296
-:10380000980004E010B500F023F80FF2B000214654
-:10381000FEF741F8204610BD38B51A2008800E4941
-:103820004C68086889680D4D081809D00822A91C41
-:1038300000F01EF8042205F11201204600F018F8ED
-:10384000284632BD10B500F003F80FF28400DEE721
-:103850000A46034C70470000107AFF1F74010020D5
-:10386000300C002010B5FFF7F3FF0FF27000CEE729
-:1038700030B5002393420DDA040F0A2C2CBF3734E5
-:10388000303401F8134001EB4305002400016C7053
-:103890005B1CEFE730BD000053544D3332205669B6
-:1038A000727475616C20436F6D506F727420696E15
-:1038B000204653204D6F64650000000053544D694D
-:1038C00063726F656C656374726F6E696373000019
-:1038D00056435020436F6E66696700005643502080
-:1038E000496E746572666163650000001201000232
-:1038F000020200408304405700020102030100005D
-:103900000403090480B51C48016841F4700101609A
-:10391000002000F039F848B180791849184A0A6047
-:103920000A6822F47C5242EA00220A604FF0B0405A
-:10393000016841F48031016012490A68D208D2005E
-:1039400042F001020A600A6802F00702012AFAD175
-:1039500001688903FCD581688908890041F002016A
-:103960008160816801F00C010829FAD101684908D9
-:103970004900016001BD000088ED00E09C00005896
-:10398000FECAFECA0040005801460648064AC379EE
-:103990008B4218BF904218BF0838F8D18B4218BF2D
-:1039A00000207047F873FF1F0070FF1F19E050F8E8
-:1039B000042BD30744BFA9F101039A18091F002360
-:1039C000042942F8043BF9D25FEA817C134604D50E
-:1039D0004FF0000CA2F800C09B1CC90744BF002197
-:1039E000197050F8041B0029E1D170477047FEE7B9
-:1039F00070477047704700F00FB800E000BF024802
-:103A0000FCF7FDBB0000000060040020FEF7BDB81D
-:103A1000FEF79CBFFEF770BF02490A6888688218EB
-:103A20000A6070472C00002010B500F013F8020067
-:103A30000023DB4300241068984203D011000220C9
-:103A4000ABBE14605068984203D0111D0220ABBE7B
-:103A5000546010BD01487047000000005804002069
-:103A600010B5074979441831064C7C44163404E0FB
-:103A70000A68081D114488470146A142F8D110BDCB
-:103A80002C000000500000004EF68851CEF20001DC
-:103A9000086840F470000860BFF34F8FBFF36F8F6A
-:103AA0004FF00070E1EE100A7047000001FFFFFFC9
-:103AB000480A000060040020940A0000200003204F
-:103AC00000000000EBCCFFFF64010000B601000025
-:103AD000040000200120C046002801D0FFF7C0FFED
-:103AE000AFF300800020AFF30080FFF717FD00F078
-:103AF00000F800F001B800000746384600F002F870
-:103B0000FBE7000080B5FFF78FFF024A1100182085
-:103B1000ABBEFBE726000200014880470148004792
-:103B200005390008293B0008AFF30080FFF7ACFF20
-:103B3000FFF7D0FFFFF7FEBFFFF7FEBFFFF7FEBFA7
-:103B4000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA9
-:103B5000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF99
-:103B6000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF89
-:103B7000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF79
-:103B8000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF69
-:103B9000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF59
-:103BA000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF49
-:103BB000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF39
-:103BC000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF29
-:103BD000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF19
-:103BE000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF09
-:103BF000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF9
-:103C0000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFE8
-:103C1000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFD8
-:103C2000FFF7FEBFFFF7FEBF00010000F202000138
-:103C300052FF01E11C12101142011550014800040D
-:103C400004110C10020A0600020822401C1007B5DD
-:103C50002B0008452C00088904212B1003A12D00FE
-:103C600008310443772D10610112CF1012C70412DE
-:103C7000D70412DF04100909024300020100C03218
-:103C800009046512020B101E052400100105240111
-:103C9000000104240202052406000107058203082E
-:103CA000001009040100020A4E1002070501027B00
-:103CB000200107058107F2280044224007228107DE
-:103CC000200100090744F22C04441003E5370008E2
-:103CD000EF04100305380008F9081219081245040A
-:103CE000126504F001FF1A030001F1FF01F19801D0
-:103CF0001003572600088B04128F0412E1042F00D2
-:073D0000C202047E0840042A
-:0400000508003B298B
+:1005A000306800F144010A88130440F1E9800A88A8
+:1005B00012F00F0440F68F7748F60F7A59D1D20621
+:1005C000C6D50288130511D5898900F0E2F8EA88BA
+:1005D000C3F30903EB6106F50C7100F003FD30680D
+:1005E00000F0D1F8304600F036F9D9E71104D7D53C
+:1005F00000F0C9F83068B0F8501000F0CAF8C3F342
+:100600000903002BEB611CBF696900290AD0EA8845
+:1006100000F0E8FC6869E969084468610021304637
+:1006200000F01FF93068B0F850104118286901F245
+:10063000064120B9088848F2FF32104009E03E2800
+:1006400005D24208C00748BF521C900203E040098F
+:10065000800240F4004008804BF68F7230680188B9
+:10066000114081F4405141F4004141F0800101808A
+:1006700096E730F824805FEA084106EB441957D525
+:1006800030F824100F4047F0800720F8247009F557
+:1006900094773068397B71B9B0F85030397803EB12
+:1006A000C103C21800F07DF82DD0FA8879695B4645
+:1006B00000F098FC27E039780B4630F823305A04D4
+:1006C000B0F8503003EBC10107D5421802F20242E4
+:1006D00000F069F80AD03A8904E0421800F061F8A5
+:1006E00004D07A895B46796900F07CFC31683878FF
+:1006F00031F8202048F68F731A4042F4004242F04D
+:10070000C00221F82020F9695944F961796901EBA7
+:100710000B027A61BB6913B139698B4504D2397810
+:10072000304600F09EF803E039783046FFF77BFE54
+:100730005FEA086020D5316831F824200AEA020215
+:1007400042F4004209F1280021F82420326801789F
+:10075000B2F8503003EBC103D21802F20242128801
+:100760004369C2F30902C2611A4483694261002BE2
+:10077000304602D100F07DF812E7FFF767FE0FE781
+:100780000020BDE8F28F01880F4047F08007078006
+:1007900070472A7801EBC201411801F206410B882B
+:1007A000704702F206421188C1F3090BBBF1000F3A
+:1007B0007047F0B40246106895681318506803EB50
+:1007C0005004C00721D54D441FE0F0BC02F10C00DD
+:1007D000704713F8017B05F8017B491EF9D1A0B1E0
+:1007E000B60813F8011B06F00306032E08BF13F822
+:1007F000016B01EB06214942801C294405D011F808
+:10080000016B05F8016B401EF9D1A342DDD013F84E
+:10081000016B16F0030104BF13F8011BC91C30095A
+:100820000F28DAD113F8010B0F30D6E780B56048F6
+:10083000016841F0806101600022006800F0806082
+:10084000009006210098142000F07CFCBDE80240D6
+:10085000142000F094BC00F50C71D0F8700200F088
+:1008600015BD00EB4112D0F87002D2F83C2100F027
+:1008700037BD00EB4112D0F87002D26B00F06FBDB3
+:10088000D0F8700200F0FDBD10B50446D4F8700237
+:1008900000F0BAFDD4F87002BDE81040012100F06C
+:1008A000DCBDD0F8700200F0DBBDD0F8700200F0C3
+:1008B000DFBD10B53F4C40492160C4F870020821EB
+:1008C00061600021E16002212161A1600021A1613C
+:1008D000C0F8C0422046FFF731FC18230022002157
+:1008E00000F012F858230022802100F00DF8C023F8
+:1008F0000022812100F008F84FF4887300220121C2
+:1009000000F002F8002010BD204600F0D2BB80B5F8
+:10091000D0F8C002FFF763FC002002BD10B51C46F2
+:100920001346D0F8C0022246FFF73AFD002010BD62
+:1009300080B5D0F8C002FFF75DFD002002BD80B594
+:10094000D0F8C002FFF79AFD002002BD80B5D0F8B4
+:10095000C002FFF7C6FD002002BD81B0D0F8C00282
+:1009600001F07F0200EB421009064CBF90F82A000C
+:1009700090F82A0101B0704780B5D0F8C002FFF7A7
+:1009800000FD002002BD80B5D0F8C002FFF75EFD7B
+:10099000002002BD80B5D0F8C002FFF744FD002062
+:1009A00002BDD0F8C002FFF74ABD044870470000FE
+:1009B0005800005888040020006800402C090020DE
+:1009C000B0F8401041F43F4141F08001F0E2B0F84E
+:1009D000402044F27F01EFE20EB4012120F8401FD5
+:1009E0000021018081800182018841F43F4141F072
+:1009F00080010180002003B0704700002DE9F84716
+:100A00000B4648F68F111D780246002032F825600B
+:100A10000E40D97803290CD8DFE801F002080C0554
+:100A200046F4007606E046F4C06603E046F48066CD
+:100A300000E0012048F28004264322F8256048F6B1
+:100A40008F7519780E4632F826702F4039432143AE
+:100A500022F826104BF68F76197B93F80090002928
+:100A60004CF2800748F6BF7C48F2C00E67D1B3F85D
+:100A700006A04FF6FE7101EA0A0A59780029B2F879
+:100A8000501011441ED001EBC90101F58061A1F89D
+:100A900000A0197832F82160760606D532F8216078
+:100AA00035404EEA050522F821501978DB78012BF4
+:100AB00032F821300CEA03030EBF1C4383F02003FD
+:100AC0001C43CAE001EBC90909F20449A9F800A0D6
+:100AD000B2F8501002EB010C19780CEBC10C19693B
+:100AE0000CF2064C31B9BCF800E048F2FF3101EAE3
+:100AF0000E010CE03E2908D24FEA510EC90748BF4B
+:100B00000EF1010E4FEA8E2E03E04909890241F4ED
+:100B1000004EACF800E0197832F821C05FEA4C4C86
+:100B200006D532F821C005EA0C053D4322F82150D4
+:100B3000197832F821301E4086F440568CE032F8A5
+:100B40002910294041F4014141F0800122F8291087
+:100B5000B2F85010B3F808A002EB0109197809EBBC
+:100B6000C10101F580694FF6FE7101EA0A01A9F899
+:100B70000010B2F85010B3F80A9002EB010819788F
+:100B800008EBC10808F204484FF6FE7101EA0901BA
+:100B9000A8F80010597893F80080002932F828103E
+:100BA0002BD1490405D532F8281029400F4322F8EB
+:100BB0002870197832F821707F0606D532F8217036
+:100BC0002F404EEA070722F82170197832F8217079
+:100BD0003D404EEA050522F82150197832F821509F
+:100BE0002E4086F44056264322F82160197832F8C8
+:100BF00021300CEA03031C432FE0490405D532F8E9
+:100C000028102940394322F82810197832F8218019
+:100C10005FEA486807D532F8218005EA08084EEAFD
+:100C2000080E22F821E0197832F821E005EA0E05D5
+:100C30003D4322F82150DD781978012D32F82150FA
+:100C40000CEA050518BF85F02005254322F8215040
+:100C5000197832F821301E40344322F82140BDE893
+:100C6000F2872DE9F041024691F800C048780B7BED
+:100C70004BF68F7E4CF2800448F2800848F6BF7530
+:100C800048F2C00648F68F77ABB9002832F82C003E
+:100C900008D0400636D532F82C0007403E4322F8F3
+:100CA0002C602FE0400456D532F82C0007403C431E
+:100CB00022F82C404FE0002832F82C0029D14004C3
+:100CC00005D532F82C003840044322F82C4008782F
+:100CD00032F820305B0605D532F820303B403343F4
+:100CE00022F82030087832F820301F403E4322F8A6
+:100CF0002060087832F820300EEA030348EA030344
+:100D000022F82030087832F820100D4048EA05011A
+:100D100028E0400405D532F82C003840204322F862
+:100D20002C00087832F820305B0605D532F82030E8
+:100D30003B401E4322F82060087832F820301F40E4
+:100D40003C4322F82040087832F820301D4048EA21
+:100D5000050522F82050087832F820100EEA01012B
+:100D600048EA010122F820100020BDE8F081F8B522
+:100D70000E46054672783469B069012A48F2800748
+:100D800048D1844232BF001B04460020B061307B52
+:100D900040B9F28800F0A0F800F097F800F20240A5
+:100DA00004802EE03078C10035F820004206B5F806
+:100DB0005000284405D5091801F206410C807289BB
+:100DC00004E0091801F202410C80328900F084F835
+:100DD000707848F68F7140B9307835F8202011408E
+:100DE00041F4004141F0C00109E0012809D1307807
+:100DF00035F82020114041F4404141F0800125F8B0
+:100E00002010317835F8212048F6BF70024082F07A
+:100E100030024EE0844232BF001B04460020B06125
+:100E20006009317B8302002943F4004304F0010090
+:100E30004FEA540C18D0AAB900F040F801F2024170
+:100E40003CB9B1F800E0202262F38F2EA1F800E057
+:100E500008E03E2C05D2624600B1521C92020A8084
+:100E600000E00B807178A9B900F028F801F2064182
+:100E70002CB90A88202060F38F220A8011E03E2CD2
+:100E800006D208B10CF1010C4FEA8C20088008E072
+:100E90000B8006E0012904D100F017F800F20640AB
+:100EA00004804BF68F70317835F82120024082F4AF
+:100EB0004052174325F821700020F2BDB5F85010BC
+:100EC0003278691801EBC2017047B5F850003178EB
+:100ED000281800EBC10070477169A3B2284670E082
+:100EE00018B50A78497830F82240002948F2800382
+:100EF00005D048F6BF710C4084F0100404E04BF6B6
+:100F00008F710C4084F48054234320F82230002059
+:100F100012BD30B50A7B002A36D14A780C78002AF7
+:100F200030F8242048F2800348F68F7516D0520618
+:100F300008D530F82420154045F4004545F0C0059B
+:100F400020F82450CA78012A1ED00A7830F82240AE
+:100F500048F6BF710C4084F0200412E0520408D51A
+:100F600030F82420154045F4404545F0800520F830
+:100F700024500A7830F822404BF68F710C4084F4EC
+:100F80004054234320F82230002030BD11B9802185
+:100F9000A0F84C1000207047B0F8581041F4004100
+:100FA000FFE7A0F8581000207047B0F844007047E1
+:100FB000A0F84010002070470A40A0F84020002010
+:100FC000704710B580185B1C00F580605B0807E077
+:100FD0000A784C7842EA0422891C20F8022B5B1E16
+:100FE000F6D110BD10B5821802F58062580806E0EF
+:100FF00032F8024B0C70240A4C70891C401EF7D149
+:10100000D80744BF1088087010BD000062B38B077A
+:1010100008D0521E11F8013B00F8013B00F024807B
+:101020008B07F6D1830740F0208000BF103A07D32A
+:1010300030B4B1E83810103AA0E83810F9D230BC1A
+:10104000530724BFB1E80810A0E8081044BF51F8C6
+:10105000043B40F8043BD20724BF31F8022B20F8B0
+:10106000022B44BF0B7803707047121F17D35B002D
+:1010700009D151F8043B20F8023B1B0C121F20F849
+:10108000023BF6D20BE051F8043B00F8013B1B0A8F
+:1010900020F8023B1B0C121F00F8013BF3D238BFB3
+:1010A000121D521E24BF11F8013B00F8013BF8D875
+:1010B000704710B50C0605D501F0070100EB411093
+:1010C000283003E000EB411101F5947012B902736E
+:1010D000C38004E0038101211B0C017343810020C4
+:1010E00010BD016800F518700122826000220270B4
+:1010F000B1F8540040F00100A1F85400B1F85400D8
+:1011000040F00200A1F854000020704709010200DD
+:1011100081B002D43C48815405E03C4802F00F0203
+:10112000104400F8041C01B07047394A13684FF6A8
+:10113000FF0100020B4000F4E0601843354908430A
+:101140001060704738B5324B1C68C4F30223C3F1FA
+:101150000704052C28BF04241D1D072D34BF0023C0
+:10116000DB1E012505FA04F4641E2140994005FAAE
+:1011700003F35B1E1A401143BDE83440C6E701008B
+:1011800007D4012200F01F01234B8A40400943F895
+:101190002020704701000BD4012200F01F011F4BDB
+:1011A0008A40400943F82020BFF34F8FBFF36F8F71
+:1011B000704710B5401EB0F1807F01D3012010BDF3
+:1011C000174C60600F214FF0FF30FFF79FFF0022A8
+:1011D000A26007202060002010BD010007D401227A
+:1011E00000F01F010F4B8A40400943F82020704750
+:1011F000010007D4012200F01F010B4B8A40400977
+:1012000043F820207047000000E400E018ED00E003
+:101210000CED00E00000FA0500E100E080E100E0F4
+:1012200010E000E000E200E080E200E038B508B93C
+:10123000022032BD00F52774A3690BB10025A5611A
+:1012400001B16161012121700270FFF732FB0020C2
+:1012500032BD0246002011B1C2F8B412704702201C
+:10126000704780B5FFF753FB002002BD10B5D0F8E2
+:10127000B42202241AB11268904700B90024204613
+:1012800010BD80B5D0F8B422536806E138B50446E5
+:1012900004F52A75284600F005FB04F525700121A8
+:1012A0000160418B4160017D11F01F0003D00228D5
+:1012B0000BD005D30EE02946204600F0F1F80DE0F2
+:1012C0002946204600F064F908E02946204600F04F
+:1012D00084F903E001F0800100F03EF8002032BD07
+:1012E00038B5044610460A0004F5257328D119685C
+:1012F00003291DD104F5B0714A680D68AA420BD2CA
+:10130000AD1A0D60954238BF2A46014692B220467A
+:1013100000F025FB002032BD186A016921B1187A5E
+:10132000032804BF20468847204600F020FBF1E751
+:101330000529EFD100201860002100F00DF8E9E741
+:10134000186A82692AB1187A032802D12046904788
+:10135000E0E7022032BD80212046FFF7F0BA38B521
+:1013600004460800134604F5257542D12868022872
+:1013700032D1226A616A914207D2521A2262194618
+:1013800092B2204600F0D9FA11E0E269B2FBF1F026
+:1013900001FB102090B98A4210D3686882420DD2B6
+:1013A00000220021204600F0C8FA002068600023D7
+:1013B000002200212046FFF7EDFA13E0286AC168F9
+:1013C00021B1287A032804BF20468847FFF7C3FFCE
+:1013D000204600F0D3FA05E0042818BF002801D108
+:1013E000FFF7B9FF287B012804BF002129730020E3
+:1013F00032BD286A42692AB1287A032802D12046E0
+:101400009047F4E7022032BD10B504464023002285
+:101410000021FFF783FA04F5AC700121016040233D
+:101420004021C160002280212046FFF777FA012089
+:10143000A06104F525724020606201201072002036
+:10144000106060601061506A28B1126A6168536868
+:10145000C9B220469847002010BD01740020704793
+:1014600000F5277001784170042101700020704759
+:1014700000F527700178042904BF4278027000202B
+:10148000704780B500F527710A78032A03D189696E
+:10149000C96901B18847002002BD9847002002BDFC
+:1014A0007CB50446087810F0600004F5277508D074
+:1014B000202818BF40282DD1AA6993682046984754
+:1014C00064E04878092825D8DFE800F03D5524502D
+:1014D000240905242B27204600F014F956E08A88B9
+:1014E000002A04BFC888002814D14E88802E11D24B
+:1014F0002878032806F07F060CD0AE7031462046CF
+:10150000FFF73AFA00F0FBF8002E14BF022001208A
+:1015100028703BE000F07CF938E0204600F07AF9D2
+:1015200034E0C8880128F5D12A78521E012A04D94E
+:10153000921EEFD10122211D14E00020A0600122A3
+:1015400004F108010EE02878401E0228E2D8C8887D
+:101550000228DFD1A868012100B10321E160022245
+:1015600004F10C01204600F0E0F90FE04888012862
+:101570000CD1012107E02878401E0228CAD84888EB
+:10158000012803D10021A96000F0B9F8002076BD40
+:1015900038B50D460446287810F060001CBF20289E
+:1015A000402816D104F527721178491E022910D857
+:1015B000287902280DDA92699368294620469847CF
+:1015C0000146E888002808BF002904D100F097F8F8
+:1015D00001E000F01CF9002032BD7CB5044608464D
+:1015E00004F527730278017912F0600509D0202DE7
+:1015F00018BF402D6BD19A699368014620469847E1
+:1016000068E002F06002202A07D19A6993680146D7
+:10161000204602B0BDE87040184742788AB3012ADC
+:1016200012D0032A53D11A78022A13D0032A4ED19A
+:1016300042881ABB002918BF80291FD0C088E8B98A
+:101640002046FFF77CF919E01A78022A02D0032A13
+:101650000CD03CE0002918BF802938D02046FFF785
+:101660006EF980212046FFF76AF933E0408888BB95
+:1016700011F07F0F1CBF2046FFF768F900F03FF81C
+:1016800028E0142201F07F051B7855436619022BD0
+:1016900006F5AA7502D0032B10D018E0002918BF58
+:1016A000802914D1080648BF06F1140500202860DF
+:1016B00002222946204600F038F90BE001F00F0322
+:1016C00012FB03F20B06224406D5926972B9014659
+:1016D00000F09EF8002076BDD2F85821002AF6D0FE
+:1016E000002918BF802904D10020E0E706F1140585
+:1016F000F6E72046FFF731F900B10120D7E7204691
+:1017000000F035B938B5044600200D46ADF80000AC
+:1017100004F52C726888010A012908D0022923D017
+:1017200003292ED006295FD0072964D06CE0126807
+:10173000207C136869469847BDF8001079B1E988A4
+:1017400079B1BDF80010EA88914288BF1146ADF822
+:1017500000100146BDF80020204600F0E6F8E888B9
+:1017600008B9FFF7CCFF31BD207C516800286846DE
+:1017700004D1896A884702214170DDE7C96A884738
+:10178000F9E7C0B205283FD8DFE800F0030B1219D3
+:10179000202710684268002A36D0207C694690478E
+:1017A000CAE7106882687AB3207C69469047C3E72D
+:1017B0001068C26842B3207C69469047BCE7106855
+:1017C00002690AB3207C69469047B5E71068426910
+:1017D000D2B1207C69469047AEE7106882699AB121
+:1017E000207C69469047A7E7207C68B951684A6B1E
+:1017F00068469047A0E7207C30B951680A6B68467C
+:1018000090470722427097E700F001F831BD294662
+:1018100020465BE07CB50D460446214E688830705A
+:101820003178084602282DDA94F89C22022A02D048
+:10183000032A0FD02BE041B16060032084F89C02A2
+:101840002046FFF713FD02281CD02046BDE8764055
+:1018500000F08DB841B9022084F89C02002060603D
+:101860002046FFF70EFDF0E761688842EDD0C9B26F
+:101870002046FFF706FD317861602046FFF7F6FC51
+:101880000228E2D129462046BDE87C401EE0FFF751
+:10189000BEFF31782046BDE87C40FFF7F2BC000077
+:1018A000CC0E00200A7802704A784270CB788A7891
+:1018B00002EB032242804B790A7902EB03228280F9
+:1018C0008A79C97902EB0122C280704710B50446BB
+:1018D0008021FFF734F82046BDE810400021FFF7D3
+:1018E0002EB800280B4600D1704730B501460024C1
+:1018F00000E0641C11F8015B002DFAD12406E40D10
+:10190000A41C14801178197002220321597008E078
+:1019100010F8011BD4B2521C1955D4B2002119552C
+:10192000521C01780029F3D130BD80B51346022244
+:10193000C0F89422C361036201E080B513460A46F1
+:101940000021FFF720F8002002BD80B513460322D6
+:10195000C0F8942200F5AE721360536001E080B5C8
+:1019600013460A460021FFF715F8002002BD80B596
+:101970000421C0F8941200230022E1E780B505217C
+:10198000C0F8941200230022ECE70000DFF8F01406
+:101990000A6892B200E00246086880B28242FAD138
+:1019A00070472DE9FC4104461825DFF8D884DFF89C
+:1019B000D864684308EB00073078062808D13178EE
+:1019C0007170347078754FF0FF307060002039E02E
+:1019D00000F077F8B9680918B96008F10803B96828
+:1019E00032786A439A589142327813D308F115033A
+:1019F00015FB02FC13F80C30062B25D008F1080665
+:101A00006B43F358994222BF08F115036A439A5C6D
+:101A1000EED219E01146337869439A420BD008F1AF
+:101A2000140308F1150C5B5C15FB03F50CF805407D
+:101A30007A753B7500E07A7508F1140254543178D8
+:101A400071703470BDE8F6811146694308F11503E1
+:101A50005B5C062B04D008F1140615FB03F57455E6
+:101A60007B753A7508F115025454EBE7F8B5DFF8C9
+:101A70001834DFF810541E78182402466243B0422E
+:101A80002A4404D118785870507D18700FE0167DE4
+:101A9000507D92F815C005F115076643062807F832
+:101AA00006C004D0167D143514FB00F42E55012019
+:101AB00010731878062802BF00294FF0FF315960D3
+:101AC000F1BD10B5DFF8C043606810F1010F0FD011
+:101AD000FFF75CFF6168DFF8B423814261683CBFB7
+:101AE0005388C918081A517848431178C84000E053
+:101AF000002080B210BD2DE9F84FDFF89053DFF8D9
+:101B000090B3D5F80880D8F80000DBF800104A053B
+:101B100000F06AF9DFF87063DFF868A321F48061F0
+:101B200081604FF0180934780AF1080019FB04F1BC
+:101B30004758FFF7C6FF874217D200270121B1702F
+:101B4000062C3DD019FB04F40AF108010AF1080241
+:101B50000959814223BF0AF108010959091A0021D4
+:101B600011510AEB04014C7DEAE7A9884118B942FA
+:101B700002D2AF880021E2E73F1ADFE7022802DA4B
+:101B80002878012800D07F1ED8F80000C1684A07D5
+:101B9000FAD500F02FF9DBF80C00000CBFB247EAD1
+:101BA0000047CBF80C70FFF7F1FE7060A868006882
+:101BB000816841F480618160AFF30080BDE8F18FFE
+:101BC000B8B20028DAD1FFF7E1FE70600320BDE86B
+:101BD000F24FFFF702BB2DE9F843EFF3108872B61E
+:101BE000AA4DA84BA8680168CA224A6253204862DD
+:101BF000A54A886820F480608860182016783746E7
+:101C000047431F44387B022826D13C68D7F8109000
+:101C10009078F0B17A7B012A0AD101213046FFF792
+:101C200025FF88F310887968304600F0F0F804E06A
+:101C300088F31088304600F09BF8A8680068CA2135
+:101C400041622246532141624846314600F02AF95A
+:101C50000BE0FFF750FF06E0C8684207FCD500F034
+:101C60007EF88C49086088F31088FF21A868026814
+:101C70005162BDE8F183F8B5844CA160CA220968BD
+:101C80004A6253224A62824A136843F02003136077
+:101C9000136803F00703C3F10403237095682D0C48
+:101CA00005F07F056D1C6570EDB29268C2F30E02FF
+:101CB000521C628092B2521E6A43A2F5A072DA40B0
+:101CC0004FF6FF739A422CBFA380A280724A13681A
+:101CD00043F400231360714B1D6845F400251D601B
+:101CE00048BB6948674E0123837018254FF0FF33C6
+:101CF000436000235FFA83FC06F10C0715FB0CFC24
+:101D00004FF0000E07F80CE05B1CDFB2062FF1DB92
+:101D100006230370886820F48060886000F01FF854
+:101D2000D0600320FFF764FAA1680868826842F473
+:101D30008042826005E0C868410544BF0320FFF788
+:101D40004CFAA1680A68FF20506200220321032098
+:101D5000FFF7F8F9BDE8F2400320FFF710BAC868B2
+:101D600000F0800060F49060C8604FF4002070477D
+:101D7000F8B50746EFF3108472B60320FFF70AFAAE
+:101D8000424DAE683068CA2141623A4653214162F1
+:101D9000182043494243895C02291BD1002138465F
+:101DA000FFF764FE3848017806290ED130683849BB
+:101DB0000A68530500F018F821F480618160C16859
+:101DC0004A07FCD500F016F804E04078884218BFB6
+:101DD000FFF791FEA9680A68FF2050620320FFF711
+:101DE000CEF984F31088F1BD02D5C1684A07FCD44E
+:101DF00081687047C16801F0800161F49061C16041
+:101E00004FF40020234908600320FFF7F1B92DE9C2
+:101E1000F04180460F46424618201A4942438C182A
+:101E2000207B022804BF4046FFF7A2FFEFF3108596
+:101E300072B60320FFF7AEF9144EB0680068CA21ED
+:101E400041625321416202202073A76067604046CF
+:101E5000FFF7A7FD0C490A784978914202D0FFF7B5
+:101E60004AFE02E0A168081AA060FF20B1680A6873
+:101E700050620320FFF783F985F31088BDE8F081F5
+:101E800028280040580D0020C00E00208C0E002095
+:101E9000082800400C080058000800588008005826
+:101EA000640D002010470000DFF864130A6803097E
+:101EB00003F47F2300019A4300F47F2000F082B9ED
+:101EC000DFF84C231368010C23EA014343EA004383
+:101ED000136070472DE9F843054600242878DFF8A1
+:101EE00030634106A0464FF0B0472DD5286B70B146
+:101EF000B0F5800F06D0B0F5000F18BFB0F5400F59
+:101F000017D01FE0F86840F48030F860EDE03868E2
+:101F100020F08060386000F081F981463868000167
+:101F200040F1D08000F07AF9A0EB09000228F5D941
+:101F30000324D7E000F072F9A0EB0900022840F278
+:101F4000C980F5E70124A0462868010531D5B068AD
+:101F500000F44078286C80452AD000F065F9B8F18B
+:101F6000000FB16805D1286C21F440710143B160C4
+:101F70001EE0B06840F48030B06021F44071B06879
+:101F800020F48030B060286C0143B160B068C007B5
+:101F90000ED500F043F9804641F28939B0688007D8
+:101FA00006D400F03BF9A0EB08004845F6D3032423
+:101FB000A0462878C10705D53168A869890840EA94
+:101FC000810131602878810705D53168E86921F4FD
+:101FD0004061014331602878C10644BFA86AFFF719
+:101FE0006FFF2878810644BFE86AFFF769FF287809
+:101FF000410744BF286AFFF757FF2878010744BF0D
+:10200000686AFFF751FF2868C1051BD53168686B06
+:1020100021F0406101433160686BB0F1006F00F066
+:10202000BDF8686BB0F1806F75D100F0BDF8044663
+:102030003868000160D500F0F1F8001B0228F7D9DC
+:102040004FF0030867E000F0E9F8001B02285BD9B5
+:10205000F6E7316821F04041316020F0805032686D
+:1020600022F0406210433060A86BB0F1C05F00F016
+:1020700095F8286841056DD53168E86B21F040512D
+:1020800001433160E86BB0F1005F03D1F96841F4BE
+:102090008031F960E86BB0F1805F5BD100F084F8CB
+:1020A00004463868000146D500F0B8F8001B022845
+:1020B000F7D94FF003084DE000F0B0F8001B0228FC
+:1020C00041D9F6E700F061F8A86821F4781100F032
+:1020D00071F88146386800017FF52CAF396968696D
+:1020E00001433961002C7FF42EAF3168286B21F455
+:1020F00040010143316027E700F047F8E86821F02C
+:10210000606100F057F80446386800019BD53969D2
+:1021100068690143396128688105AAD5A86BB0F1C7
+:10212000804F1CBFB0F1004F002892D1316821F0E0
+:102130004041084397E700F028F8286921F0604102
+:1021400000F038F8044638680001B5D53969686987
+:10215000014339612868C10405D5F168686C21F430
+:1021600040410143F160286881040BD5796AE86C2D
+:1021700021F0300101437962796AA86C890840EA4C
+:10218000810179624046BDE8F2833869696820F4CC
+:10219000FE4040EA012038613969704703D1F9688F
+:1021A00041F08071F9607047396821F080613960D1
+:1021B00000F034B801433961386840F0806038601D
+:1021C00000F02CB810430860704710B511490A6838
+:1021D00042F080720A600B680F4A23F080730B6034
+:1021E000046841680C4381680C43C1680C43016971
+:1021F00044EA014454601368406923F47C5343EA81
+:1022000000231360116841F06001116010BD0000EF
+:1022100088000058380000580060004001480068FD
+:10222000704700BF2C0000200248016841F4807113
+:10223000016070470004005810B590B004A80FF278
+:102240001C31BD4C3022FEF7F1FE2068BB4C4FF62E
+:10225000FC7101EA8001BA484118BA4802906161F4
+:1022600000F5867003900FF22D210FF27920019076
+:102270000091684600F0A8F90121022000F083FADD
+:1022800000202073207204A800F0A6FA0FF2B11209
+:102290000021082000F00BFBAB4A0021012000F0D8
+:1022A00006FB0FF261120021102000F000FBA74A8C
+:1022B0000021022000F0FBFAA54A0021042000F0D2
+:1022C000F6FA0020206104F118000060406004F17B
+:1022D000200104F5927000F063FB10B010BD80B5D2
+:1022E000964A117B31B1002010730120BDE80240F5
+:1022F00000F00CBB014602F11800CFE02DE9F041DF
+:102300000F68DFF850828D4E054605E0BC4225D2AD
+:1023100000F060F825443F1B307A01280DD1726827
+:10232000BA424AD230682946FEF770FE00F052F8F1
+:1023300000203072706805443F1AEC78391F8C42D7
+:102340002CBF3C46241D0CE04068C16817E0C06803
+:1023500014E008F108003060224615E0BDE8F041C5
+:1023600038E0297870697172012906D00229EBD012
+:102370001029ECD02029ECD009E04068016801F177
+:1023800008023260224630682946FEF73FFEE878B0
+:10239000001D8442BAD201213172E8783168001DF3
+:1023A000001B70600819306005E0FEF72FFE00F09A
+:1023B00011F800203072BDE8F081974230683A464B
+:1023C0002946F2D2FEF722FE7068C01B70603068AA
+:1023D0003844E8E75948417A01290FD0022904D04E
+:1023E000102905D0202906D070470021042007E0DD
+:1023F0000021022004E00021082001E0002101204A
+:1024000000F062BA1CB5102000F06EFA4B4C04F1DB
+:10241000100104F1180000F08FFB20690FF28D020B
+:10242000017A022907BFB0F80B10491D817AC91C37
+:1024300002B0BDE8104089B2083000F0D3BA000005
+:1024400010B5444CB4F809004FF66052811A04D01C
+:10245000491E06D0491E08D00BE0204600F07EFB46
+:1024600011E0204600F0B5FB0DE0204600F0D7FB60
+:1024700009E0A0810120A073E072212020720E20CB
+:1024800060720420A0722146334800F03FFBBDE893
+:10249000104007E080B50146DFF8BC0000F036FBD5
+:1024A000BDE804400021102000F00EBA1CB5234CFA
+:1024B0006069016920698A68904205D3C96811443E
+:1024C000884238BF00F00DF904F1180000F015FB48
+:1024D00018B90021102000F0F7F9BDE816401020CF
+:1024E00000F00ABA704770B51446134A134E1268CA
+:1024F0001D46012333734FF6FC7303EA8203104A2F
+:10250000D3180A46DE683668A6F80900F17206F1AB
+:102510000C002146FEF77AFD0021002000F0A7F80C
+:10252000012000F0FBF9314605F10800B278BDE862
+:102530007040D21CFEF76ABD3C400058FC060020EB
+:102540000000032084080320F32500086F260008FC
+:102550002D2600084C0B002014070020000000006E
+:10256000000000000000000000000000000000006B
+:1025700044000800400508013A799C00F40100007D
+:10258000FFFFFFFF480101000000000000F010BC49
+:1025900071487249016001F12002426001F130028C
+:1025A000826001F13C02026201F14402C26001F169
+:1025B0004C02026101F16802426101F16C02826128
+:1025C0007831C16100F006BC38B50446644D05F1B0
+:1025D000100000F08FFA60494868A1680160E16866
+:1025E000C160456005F11001816000F00FFC5D489D
+:1025F00037E080B558494A6813680120187200F026
+:102600000BFC002002BD38B5564C554D07E069461D
+:1026100005F1100000F090FA00982168884705F154
+:10262000100000F06AFA0028F1D031BD80B54A49A7
+:102630004A68D1680220087200F0F3FB002002BD56
+:1026400048484168084738B50446474D2846006069
+:1026500040604148C068A1680160456000F0EAFB45
+:1026600042482168016061684160002032BD80B548
+:102670003949CA6813681020187200F0E1FB002085
+:1026800002BD3549CA68394910680B68184738B522
+:10269000364C354D06E06946284600F04DFA009864
+:1026A00061688847284600F028FA0028F3D031BD39
+:1026B00038B504462E4D2846006040602D48006025
+:1026C000406025480069A1688160E168C1600561DA
+:1026D00021680160616841602169416161698161CE
+:1026E00031BD80B50146234800F010FABDE8024034
+:1026F0000FF2050000F0B4BB38B5174C1D4D08E0D3
+:102700006946284600F018FA00992069006900F02F
+:10271000FDF9284600F0F1F90028F1D031BD10B5DF
+:10272000154C2046006040600B4841690C60BDE8D4
+:10273000104000F0A9BB1CB50F4C06E069462046CE
+:1027400000F0FAF90098C046C046204600F0D5F9DE
+:102750000028F3D013BD000000000320B80A0320B6
+:10276000980A0320B00E0020B00A0320B80E002003
+:102770003C0B0320A80E0020440B0320124800212C
+:1027800001604160704710B500F019F81C6819B17C
+:10279000012904D1204301E024EA000018600BE085
+:1027A00010B500F00CF85C6819B1012904D1204380
+:1027B00001E024EA0000586082F3108810BDEFF3B6
+:1027C000108272B6004B7047A00E0020FFF78BFE00
+:1027D0009DF80E0005B000BDF8B500F10C026B4687
+:1027E00021214FF66640F1E72DE9FC47594CDFF80F
+:1027F0006891A5692840A0614FF0010A4FF0FF38A9
+:1028000030E0491C54F831000642FAD004EBC1070D
+:10281000184079681040014208BFC7F804807E68FC
+:10282000304000F09BF860620AFA00F086437E6058
+:10283000EFF3108172B6626A20690AFA02F2D2439B
+:1028400010402061022004EBC00353F8086C1640CE
+:10285000401E43F8086CF6D181F31088606A59F87D
+:102860002010884763692069A2691840104207D088
+:10287000E069216A084203D1002103EA0206C1E7A8
+:10288000C046C046EFF3108972B621696069014005
+:10289000A069014201BFE169206A014200F08AFBA0
+:1028A00089F31088C046C046A561BDE8F38738B5F6
+:1028B0001446EFF3108572B600F050F8264941F83F
+:1028C000204085F3108831BD10B5EFF3108272B649
+:1028D000204B1C6904431C6153F83140204343F8EA
+:1028E000310082F3108810BDEFF3108172B6194ADF
+:1028F000536923EA000005E0EFF3108172B6154A30
+:1029000053691843506181F310887047EFF31081C9
+:1029100072B6104AD3691843D061F4E72DE9F0414B
+:102920000C4C626A266A2062012101FA02F803E077
+:102930003946404600F03FFB276AE5693D42F7D043
+:10294000404600F00BF825EA0707E761266260625F
+:10295000BDE8F08104000020E80D002002460020C0
+:10296000110C090404BF1020120412F07F4F04BFA1
+:10297000083012020FF2180112F0704F04BF001D50
+:102980001201120FC0F11F00895C401A704700004D
+:102990000403020201010101000000000000000028
+:1029A00010B54F4C002220606160A28104F1140038
+:1029B0004C49FEF73BFC4C4904F11400FEF749FC7E
+:1029C00004F5367104F1140000F01CFC04F114004D
+:1029D000FEF747FCBDE810400FF23D020021202029
+:1029E000FFF765BFF8B50C461546EFF310863C4F70
+:1029F000014638682246FEF709FBBD60FC8172B6CD
+:102A0000387B20B101212020FFF75EFF01E001208B
+:102A1000787386F31088F1BD10B5314CE2892168D6
+:102A200004F1140000F0F5FB04F1140000F0FFFBCA
+:102A300028B1BDE8104001212020FFF745BFA06864
+:102A4000BDE81040004738B5254D696805F1140010
+:102A500000F0E7FB05F1140000F001FCEFF3108437
+:102A600072B601202873687B18B101212020FFF77E
+:102A70002BFF84F31088002032BD0020704710B572
+:102A800020281A4A02D0212812D01FE008784B785B
+:102A90008C7840EA0320CB7840EA044040EA0360A7
+:102AA00010600879107148795071887990710DE043
+:102AB00010680870030A4B70030C000EC8708B700E
+:102AC000107908715079487190798871002010BD93
+:102AD00080B5FFF713FC064800F0C1FB002002BDE3
+:102AE00090010020580100205400002078040020AC
+:102AF000A4010020006040607047EFF3108172B6BF
+:102B0000026882420CBF0120002012E0EFF3108225
+:102B100072B6086043684B6041604868016019E024
+:102B2000EFF3108172B6436802681A604268006869
+:102B3000426081F31088704710B5EFF3108472B6CD
+:102B400002680A600068FFE7FFF7EAFF84F3108875
+:102B500010BD086082F310887047000070B5EFF375
+:102B60001081027B012A02D0022A07D00DE000F07A
+:102B700028F8137800F01FF814700CE000F021F82A
+:102B8000138800F018F8148005E000F01AF81368B4
+:102B900000F011F8146081F31088212101720E21D8
+:102BA0004172042181724FF660518181002181734D
+:102BB0000121C17270BD264623EA040435402C432E
+:102BC000704772B6D0F81120D0F80D40D0F81550EB
+:102BD000704781B0017B012902D0022904D008E0AE
+:102BE000D0F80D10097807E0D0F80D100A8800928F
+:102BF00003E0D0F80D10096800910E2141722122E6
+:102C00000821817202724FF6615181810121C172E6
+:102C100000218173009A40F80F2F01B0704738B53A
+:102C20000446212020720E2060724220A0724FF6CE
+:102C30006250A0810120E0720020A0731D4D1E484B
+:102C40000168090CA4F80F100068C0F30B00A4F889
+:102C500011001A4801781A4801F01F01E174416817
+:102C600021754168090AC4F815100268C4F81920D2
+:102C70000169C4F81D104169C4F8211004F129014B
+:102C80008069C4F82500286802680A600C222B6855
+:102C9000191D04F12D00FEF7B9F9286800F11001A3
+:102CA000102204F13900FEF7B1F906480168C4F8B2
+:102CB000491031BD00000320002004E00075FF1F13
+:102CC0008075FF1F603E0008C0680840884201D13F
+:102CD0000120704700207047C0690840884201D138
+:102CE000012070470020704710B56A4C0221204631
+:102CF000FFF7F2FF38B16068C043810703D5FFF7E3
+:102D0000C6FC022018E001212046FFF7E5FF38B19C
+:102D10006068C043C10703D5FFF775FC01200BE0D5
+:102D200008212046FFF7D8FF38B16068C04301078B
+:102D300003D5FFF700FD0820A06010BD10B5554C6D
+:102D400000F033F818B96068C043810306D400F07E
+:102D50002CF830B96068C043810302D5BDE810404B
+:102D600077E0082100F022F870B96068C0430103E1
+:102D70000AD56068484940F40020606008688047D0
+:102D80004FF40020A06010BD202100F00FF858B9CA
+:102D90006068C043810207D5606840F4001060603D
+:102DA000BDE81040FFF74CBC10BD022120468BE768
+:102DB0003A48016841F4007101603948026842F400
+:102DC0000072026040BF20BF3648016841F40041F4
+:102DD0000160704780B53448016841F4801101609A
+:102DE000006800F48010009000982A48016841F0C3
+:102DF00001010160026842F4803202602C20FEF77B
+:102E0000BEF9BDE802402D20FEF7B9B92748016898
+:102E1000490849000160704725494FF48030086037
+:102E2000704722484FF400114160016821F40011FD
+:102E3000016070471D48016821F002010160704780
+:102E40001A484FF400314160016821F400310160FB
+:102E500070471648016841F400310160FFF711BC6A
+:102E600038B504460B4D08212846FFF72DFF30B139
+:102E700009480460686820F40020686031BDA047FC
+:102E80004FF40021A96031BD0848016821F0080114
+:102E900001607047000C0058C80E0020D40800588C
+:102EA000200800580C04005850000058040C00582A
+:102EB000080C005818B53948394C89B0016841F4FC
+:102EC00000410160FFF75AFC00F0DCF935490020B1
+:102ED000FEF7D1FE00F0EFF93348016841F480318C
+:102EE00001600121026C42F4803202640120FFF78C
+:102EF00057FC002000F0F5F9012000F0F2F9022063
+:102F000000F0EFF9012000F01DFA0121002000F08F
+:102F100023FAFFF73DFB2548006040600FF259029D
+:102F200000214020FFF7C3FC04F23C5002902049EE
+:102F30000FF22D00019000916846FFF784FB04F228
+:102F40005470039004F5C96140F23C50069004911E
+:102F5000059403A8FFF7ACFBFFF718FB0AB010BD00
+:102F600080B501461148FFF7D1FDBDE804400021BE
+:102F70004020FFF7A9BC000080B5FFF7D0FB00217F
+:102F80000120FFF70DFC69460848FFF7D5FD0098C2
+:102F9000FFF7A7FBFFF750F901BD0000080000583C
+:102FA00024000320680E002090080058980E00208E
+:102FB000DF22000870474FF0FF30FFF715BC00001C
+:102FC0007CB505460026287C40B94FF4007300F01C
+:102FD0003AF80120E8624FF4007305E0402300F066
+:102FE00032F80120E8624023022201212846FDF741
+:102FF00095FC0120C5F86C01082303228221284694
+:10300000FDF78CFC012028644FF40770FDF7CDFC20
+:10301000040005F52E7008BF0126046011D0406839
+:103020000168884704F50170066146610268287CE2
+:1030300000280CBF4FF40073402301212846FDF700
+:10304000A9FC304676BD022281212846FDF766BCE8
+:1030500010B504468121FDF76BFC0020E0620121E0
+:103060002046FDF765FC0020C4F86C018221204653
+:10307000FDF75EFC0020206404F52E74206838B152
+:103080006168486880472068C046C04600202060CC
+:10309000002010BDF8B5044604F527730D46DE691F
+:1030A00000208DF80000ADF802000027297811F00B
+:1030B000600022D020283AD1EA88C2B16878090697
+:1030C0000AD51B6AD3F808C03146E047EA88314682
+:1030D0002046FEF72AFC2FE006F500710870E8880C
+:1030E00048703146EA882046FEF72FFC24E01B6A30
+:1030F00068789C682946A0471EE0687820B10A28B5
+:1031000009D00B2810D012E0187803280FD1022222
+:103110000DF1020104E01878032808D10122694664
+:103120002046FEF702FC07E01878032804D0294661
+:103130002046FEF7CBFB02273846F2BD70B50446A9
+:1031400004F52E7002688368CAB1142010FB01F0E8
+:103150002618F06970B103EB41139B6BB0FBF3F5DC
+:1031600003FB150030B9F061002300222046FDF773
+:103170000AFC02E00020C2F81402002070BD022008
+:1031800070BD70B500F52E74256805F50176FDF764
+:1031900008FCB060206838B162683068D36805F513
+:1031A00003719847002070BD022070BD10B500F576
+:1031B0002E7043680168002B1EBF01F50074207853
+:1031C000FF2804D062789B689847FF202070002079
+:1031D00010BD432101800748704743210180064804
+:1031E000704743210180054870470A210180044847
+:1031F00070470000D00000208C0000201401002047
+:10320000480000200246022011B1C2F8BC12002082
+:103210007047D0F8B80200F50270016082600020AB
+:103220007047D0F8B802C0F804120020704780B58B
+:10323000D0F8B81289B101F50272D16859B90123E9
+:10324000D360916801638121936812689BB2FDF796
+:103250009AFB002002BD012002BD022002BD80B504
+:10326000D0F8B81261B1D1F80422017C00290CBF5A
+:103270004FF4007340230121FDF78CFB002002BDB9
+:10328000022002BDDFF80C00FFE7016841F4806115
+:103290000160704704040058032010B5FDF745FF96
+:1032A0000F2000F09BF80024002814BF012400F038
+:1032B0000BF8204610BD0348FFE7016841F001010B
+:1032C00001607047042004E0704700003B4981B072
+:1032D0000A6802430A60096808400090009801B03B
+:1032E000704778B585B004466846142100F098F818
+:1032F0000CB9012004E0012C18BF022C02D10220DD
+:10330000FFF7E4FF00F012F8009501200190002182
+:103310000220039000F004F800F00EF806B070BD33
+:103320000291694656F8240000F07EB80FF29C0026
+:10333000234E30F81450704756F8240000222946D6
+:1033400000F036B90FF284011D4B31F8101053F81C
+:103350002000012200F02CB9F0B585B004460D46DE
+:103360006846142100F05CF80120FFF7AFFF280049
+:10337000144E0FF260070AD137F8140000900021B4
+:1033800001910120029002210391FFF7CAFF012D54
+:1033900012D137F81400009001210B480190FFF77B
+:1033A000BFFF0FF23400045D00220F2160B2FDF771
+:1033B000C9FE60B2FDF7E3FE05B0F0BD4C00005859
+:1033C00038000020440000200000211010000100FF
+:1033D00002000000000400002800000070B50F4E3D
+:1033E0000446B0680025A8B100F03DF9B2684FF47A
+:1033F0007A71B1FBF2F1B0FBF1F0FDF7DAFE48B9FA
+:10340000102C07D2002221464FF0FF30FDF79AFE24
+:10341000746000E00125284670BD00BF2C0000202C
+:10342000002200F039B900002DE9F84F4FF0000CF0
+:10343000634A644BDFF890814FF00F0982460F46D4
+:1034400033E0624DAA4514BF072504258D4025436E
+:1034500048F82E50C1431C6801EA040E7C68E5035D
+:1034600048BF40EA0E0EC3F800E05C6801EA040EB3
+:103470007C68A50348BF40EA0E0EC3F804E0146858
+:1034800001EA040E7C68E50248BF40EA0E0EC2F86D
+:1034900000E0546801EA040E79688C0248BF40EAF3
+:1034A0000E0EC2F804E00CF1010C396831FA0CF090
+:1034B00000F07C80012000FA0CFE1EEA0100F2D030
+:1034C0007C68022C18BF122C4FEA8C0110D14FEAF5
+:1034D000DC040AEB840401F01C05266A09FA05FBEA
+:1034E00026EA0B06D7F810B00BFA05F5354325622E
+:1034F0004FEA4C040325DAF8006097F804B0A540C1
+:10350000ED430BF0030B2E400BFA04FB4BEA0606CF
+:10351000CAF800607E68012E18BF022E03D0112E5B
+:1035200018BF122E17D1DAF80860D7F80CB02E4069
+:103530000BFA04FB4BEA0606CAF80860DAF80460E6
+:1035400026EA0E0E7E68C6F3001606FA0CF646EA68
+:103550000E06CAF80460DAF80C603540BE6806FA58
+:1035600004F42C43CAF80C407C68E4009BD54FEA75
+:103570009C0E58F82E5001F00C0109FA01F425EACE
+:103580000404BAF1904F08BF00250ED0104DAA4593
+:1035900008BF012509D00F4DAA4508BF022504D058
+:1035A0000D4DAA457FF44DAF03254FE7BDE8F18FE0
+:1035B00081B0002A14BF8161816201B070470000B0
+:1035C000000800588008005808000140001000481A
+:1035D0000004004800080048000C00484FF0B040CC
+:1035E000006800F0F000B02888BFB020704738B500
+:1035F0004FF0B044244DA16811F00C0106D1FFF743
+:10360000EDFFC0F3031055F8200032BD04291F4A16
+:1036100005D008291E4804D12168C90222D51046C8
+:1036200032BDE16801F00301022904D0032904D16D
+:103630002168C90207D5104605E0FFF7CFFFC0F3A8
+:10364000031055F82000E168E268E368C1F3062141
+:103650004843C2F30211491C5B0FB0FBF1F05B1C45
+:10366000B0FBF3F032BD80B5FFF7C1FF0549FFE7BE
+:10367000084A0968C1F3031152F82110B0FBF1F0B8
+:1036800002BD000008000058803B00080024F40040
+:103690000048E801403B000800B500BF1300964613
+:1036A0009446103928BFA0E80C50FAD85FEA417C54
+:1036B00028BF0CC048BF40F8042BC90728BF20F81A
+:1036C000022B48BF00F8012B00BD000018B59BB0CD
+:1036D000FFF7E2FD574CE06B40010ED5E06BC000F8
+:1036E0000BD4FEF7A1FDFEF79FFDA06B40F48030E8
+:1036F000A063A06B20F48030A06300F055F807A809
+:103700005021FFF78DFE68461821FFF789FE4A48D1
+:103710000168216C41F001012164206C8007FCD517
+:103720004FF4807007900021149107A8FEF7D2FB98
+:10373000206840F0807020604FF00052216801F056
+:10374000807106910021069800914BF67F3003901E
+:1037500022210491002002902021019205916846C7
+:10376000FEF733FDFEF760FDFEF75EFDA06B40F057
+:103770000100A063A06B8007FCD50022E06B20F461
+:10378000404040F48040E0632C48016802600269D8
+:1037900002F05002026100F028F8FFF78BFB4FF0B7
+:1037A000FF30FFF721F8FAE7254881B0016841F4BE
+:1037B000801101603F21006800F4801000900098A3
+:1037C000204841604161016841F47C110160026957
+:1037D00042F47C120261016841F03F01016002691C
+:1037E00042F03F02026101B0704710B5FEF71CFDC8
+:1037F000FEF71AFD1448154C016821F4407141F49C
+:10380000807101600F21026842F40042026010489A
+:10381000816047F6FF71C160046000F01BF8CA20A8
+:103820006062FF2153206062A068C008C000A060F1
+:10383000616210BD58000058941400588008005868
+:1038400050000058040C0058900000580028004018
+:10385000680E002038B5040044D094F8210028B93F
+:10386000002184F820102046C046C04600F049F8E8
+:10387000FF2510B100F03FF834E02168DFF8B00018
+:103880008A6802408A6021688A6863682069034305
+:10389000A06903431A438A602168E06808612068D0
+:1038A0000169A26841EA024101612068C16821F012
+:1038B0008001C1602068C16C89088900C1642168E9
+:1038C000CA6CE369606903431A43CA64206881686B
+:1038D000880609D400F020F830B120684562042140
+:1038E00000F01FF8012032BD20684562012184F8F4
+:1038F0002110002032BD20684562042184F8211087
+:103900007047022084F82100CA20216848625320B1
+:1039100022685062204626E020460BE02068C0F86E
+:10392000248084F82110002084F8200070470000D3
+:10393000BFFF8FFF70B5044640F2E9362068C168CA
+:1039400021F0A001C160FEF769FC05462068C1684E
+:10395000880606D4FEF762FC401BB042F6D3032073
+:1039600070BD002070BD70B504462068C1684A066D
+:1039700012D44FF0FF32C26040F2E936FEF74EFC3F
+:1039800005462068C168480606D4FEF747FC401B80
+:10399000B042F6D3032070BD002070BD1220088015
+:1039A0000FF200107047042008800FF20C107047CF
+:1039B00010B500F029F80FF2980004E010B500F0FF
+:1039C00023F80FF2B0002146FDF78BFF204610BD13
+:1039D00038B51A2008800E494C68086889680D4D72
+:1039E000081809D00822A91C00F01EF8042205F1CD
+:1039F0001201204600F018F8284632BD10B500F03C
+:103A000003F80FF28400DEE70A46034C704700001B
+:103A1000107AFF1F74010020580C002010B5FFF72A
+:103A2000F3FF0FF27000CEE730B5002393420DDABA
+:103A3000040F0A2C2CBF3734303401F8134001EB4B
+:103A40004305002400016C705B1CEFE730BD0000F3
+:103A500053544D3332205669727475616C20436F34
+:103A60006D506F727420696E204653204D6F6465EF
+:103A70000000000053544D6963726F656C65637498
+:103A8000726F6E696373000056435020436F6E6619
+:103A90006967000056435020496E74657266616321
+:103AA000650000001201000202020040830440573A
+:103AB00000020102030100000403090480B51C4850
+:103AC000016841F470010160002000F079F848B10C
+:103AD00080791849184A0A600A6822F47C5242EA3E
+:103AE00000220A604FF0B040016841F4803101606B
+:103AF00012490A68D208D20042F001020A600A683C
+:103B000002F00702012AFAD101688903FCD5816815
+:103B10008908890041F002018160816801F00C018F
+:103B20000829FAD1016849084900016001BD000077
+:103B300088ED00E09C000058FECAFECA0040005814
+:103B4000010000000300000005000000010000006B
+:103B500001000000060000000A0000002000000034
+:103B60000200000004000000080000001000000037
+:103B70004000000080000000000100000002000082
+:103B8000A0860100400D0300801A060000350C00DD
+:103B900040420F0080841E0000093D0000127A00A0
+:103BA0000024F40000366E010048E801006CDC02DD
+:103BB0000000000000000000000000000000000005
+:103BC00001460648064AC3798B4218BF904218BF87
+:103BD0000838F8D18B4218BF00207047F873FF1FD8
+:103BE0000070FF1F19E050F8042BD30744BFA9F160
+:103BF00001039A18091F0023042942F8043BF9D253
+:103C00005FEA817C134604D54FF0000CA2F800C097
+:103C10009B1CC90744BF0021197050F8041B0029E0
+:103C2000E1D170477047FEE770477047704700F07A
+:103C30000FB800E000BF0248FCF7E1BA0000000046
+:103C400088040020FDF7C7BFFFF778B8FFF74CB82E
+:103C500002490A68886882180A6070472C000020B0
+:103C600010B500F013F802000023DB4300241068B5
+:103C7000984203D011000220ABBE146050689842F5
+:103C800003D0111D0220ABBE546010BD0148704727
+:103C9000000000008004002010B507497944183165
+:103CA000064C7C44163404E00A68081D1144884719
+:103CB0000146A142F8D110BD2C00000050000000C8
+:103CC0004EF68851CEF20001086840F4700008609A
+:103CD000BFF34F8FBFF36F8F4FF00070E1EE100A0C
+:103CE0007047000001FFFFFF480A00008804002021
+:103CF000940A00002400032000000000B7CAFFFF60
+:103D000064010000B4010000040000200120C0464E
+:103D1000002801D0FFF7C0FFAFF300800020AFF311
+:103D20000080FFF7D3FC00F000F800F001B80000BD
+:103D30000746384600F002F8FBE7000080B5FFF7C1
+:103D40008FFF024A11001820ABBEFBE726000200DD
+:103D50000148804701480047BD3A0008613D00081E
+:103D6000AFF30080FFF7ACFFFFF7D0FFFFF7FEBF18
+:103D7000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF77
+:103D8000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF67
+:103D9000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF57
+:103DA000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF47
+:103DB000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF37
+:103DC000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF27
+:103DD000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF17
+:103DE000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF07
+:103DF000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF7
+:103E0000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFE6
+:103E1000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFD6
+:103E2000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFC6
+:103E3000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFB6
+:103E4000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA6
+:103E5000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF96
+:103E600000010000F202000152FF01E11C121011DA
+:103E7000420115500148000404110C10020A06000A
+:103E8000020822401C1007C12F000851300008957D
+:103E900004212B1003AD3100083D04438331106130
+:103EA0000112DB1012D30412E30412EB041009090F
+:103EB000024300020100C03209046512020B101E09
+:103EC0000524001001052401000104240202052438
+:103ED0000600010705820308001009040100020A18
+:103EE0004E1002070501027B200107058107F22819
+:103EF0000044224007228107200100090744F22CD8
+:103F0000044410039D390008A70412BD0412B10433
+:103F100012D10412FD04F005FF1D3A00081A030037
+:103F200001F1FF01F1C0011003472A00087B0412D0
+:0E3F30007F0412D1042F00C22A047E08680408
+:0400000508003D6151
:00000001FF
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewd b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewd
index da272b89a..0980d2ae5 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewd
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_TransparentModeVCP</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewp b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewp
index 1cc116f15..0168e50de 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewp
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/EWARM/BLE_TransparentModeVCP.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_TransparentModeVCP</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_TransparentModeVCP\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_TransparentModeVCP\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_TransparentModeVCP\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -665,7 +665,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>STM32WB55CG_nucleo_BLE_TransparentModeVCP.hex</state>
+ <state>BLE_TransparentModeVCP.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1052,15 +1052,15 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
</file>
</group>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvoptx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvoptx
index e928cf525..a1c40651b 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvoptx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvoptx
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_TransparentModeVCP</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvprojx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvprojx
index 36ea6e547..c534aacdb 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvprojx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/MDK-ARM/BLE_TransparentModeVCP.uvprojx
@@ -6,7 +6,7 @@
<Targets>
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_TransparentModeVCP</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -43,14 +43,14 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_TransparentModeVCP\Exe\</OutputDirectory>
<OutputName>BLE_TransparentModeVCP</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath>BLE_TransparentModeVCP\List</ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
@@ -707,7 +707,7 @@
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_TransparentModeVCP"/>
</targetInfos>
</component>
</components>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/.cproject
index 5e213b6e2..d91ccd015 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1193280092" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.2120714555" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1675518660" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1139119431" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_TransparentModeVCP}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1139119431" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -145,7 +145,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.844374701" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_TransparentModeVCP.fr.ac6.managedbuild.target.gnu.cross.exe.844374701" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -156,7 +156,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_TransparentModeVCP"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/.project
index 593107da5..7284b38d1 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_TransparentModeVCP</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_TransparentModeVCP/SW4STM32/BLE_TransparentModeVCP/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex
index c1de72b1a..ce177897e 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Binary/BLE_p2pClient_reference.hex
@@ -1,1071 +1,1090 @@
:020000040800F2
-:100000009815002095410008494000084B40000821
-:10001000B1410008B5410008B941000800000000E6
-:100020000000000000000000000000004D4000083B
-:100030004F400008000000005140000853400008F5
-:10004000BD410008C1410008C54100086D400008DD
-:10005000C9410008CD410008D1410008D541000840
-:10006000D9410008DD410008E1410008E5410008F0
-:10007000E9410008ED410008F1410008F5410008A0
-:10008000F9410008FD4100080142000861400008F4
-:100090005F40000805420008094200080D420008C0
-:1000A0001142000815420008194200081D420008CC
-:1000B0002142000825420008294200082D4200087C
-:1000C0003142000835420008394200083D4200082C
-:1000D0004142000845420008494200084D420008DC
-:1000E0005740000851420008554200085942000894
-:1000F00075400008714000085D4200086142000838
-:1001000065420008694200086D420008714200081B
-:1001100075420008794200087D42000881420008CB
-:1001200085420008894200088D420008914200087B
-:1001300095420008994200089D420008002084F87A
-:10014000280210BD70B5044600F0B0F8000444BFAA
-:10015000204600F076F900F0A9F840050CD500F033
-:10016000A1F84FF6FF3000F099F8204600F0BDFAF4
+:1000000098150020B94200087141000873410008AA
+:10001000D5420008D9420008DD4200080000000077
+:100020000000000000000000000000007541000812
+:100030007741000800000000794100087B4100087A
+:10004000E1420008E5420008E94200089541000845
+:10005000ED420008F1420008F5420008F9420008AC
+:10006000FD42000801430008054300080943000859
+:100070000D43000811430008154300081943000808
+:100080001D4300082143000825430008894100085A
+:1000900087410008294300082D4300083143000828
+:1000A00035430008394300083D4300084143000838
+:1000B00045430008494300084D43000851430008E8
+:1000C00055430008594300085D4300086143000898
+:1000D00065430008694300086D4300087143000848
+:1000E0007F41000875430008794300087D430008FC
+:1000F0009D4100089941000881430008854300089C
+:10010000894300088D430008914300089543000887
+:10011000994300089D430008A1430008A543000837
+:10012000A9430008AD430008B1430008B5430008E7
+:10013000B9430008BD430008C1430008002084F80B
+:10014000280210BD38B5044600F0B0F8010444BFE1
+:10015000204600F074F900F0A9F840050CD500F035
+:10016000A1F84FF6FF3000F099F8204600F0B7FAFA
:100170000021204600F0A2F800F098F8400405D5D0
:1001800000F090F84BF6FF7000F088F800F08EF861
:10019000800405D500F086F84DF6FF7000F07EF87B
-:1001A00004F5187500F082F8C00420D52168B1F874
+:1001A00004F5187500F082F8C0041FD52168B1F875
:1001B00040204FF6FB700240A1F840204FF6F77048
-:1001C000B1F840200240A1F840202978012905D14A
-:1001D0000020287000212046C046C046204600F07E
-:1001E00095FA00F05FF84EF6FF7000F057F800F057
-:1001F0005DF8000516D5206800F14002118841F035
-:10020000080111804FF2FF7193880B40938016888C
-:1002100046F004061680B0F84400C0045CBF2046D7
-:1002200000F070FA00F042F800061FD5216801F1D5
-:1002300040024FF67F7193880B409380287890B9E5
-:10024000118841F0040111800121108840F008005C
-:1002500010802970908A800800F03C006860204679
-:10026000C046C04602E0204600F04CFA00F01EF8FE
+:1001C000B1F840200240A1F840202878012804D14D
+:1001D000002129702046C046C046204600F090FA13
+:1001E00000F060F84EF6FF7000F058F800F05EF88E
+:1001F000000516D5206800F14002118841F0080181
+:1002000011804FF2FF7193880B409380118841F069
+:1002100004011180B0F84400C0045CBF204600F027
+:100220006BFA00F043F8000620D5206800F1400189
+:100230004FF67F708A8802408A80287898B90A88A9
+:1002400042F004020A800122088840F00800088079
+:100250002A70888A800800F03C00686001212046EE
+:10026000C046C04602E0204600F046FA00F01EF804
:10027000800508D500F016F84FF6FF5000F00EF894
-:10028000204600F02EFA00F011F8C00505D500F068
-:1002900009F84FF6FF6000F001F870BD0240A1F8C8
+:10028000204600F028FA00F011F8C00505D500F06E
+:1002900009F84FF6FF6000F001F831BD0240A1F807
:1002A000442070472168B1F844207047206800F06E
-:1002B000C6BC044694F828020128704710B5FFF721
-:1002C000F8FF01D1022010BD012084F8280284F833
-:1002D0002410206800F0ADFC30E738B5054601F089
+:1002B000AFBC044694F828020128704710B5FFF738
+:1002C000F8FF01D1022010BD012284F8282284F811
+:1002D0002410206800F096FC30E738B5054601F0A0
:1002E000070005EB40100C0647BF00F12804012071
:1002F00000F59474002001F0070160702170226104
:10030000E370607808B12178E181022B04BF0020FE
-:10031000207195F82802012801D1022032BD012068
-:1003200085F828022146286800F04CFA52E010B502
-:1003300001F0070400EB441404F5947401F0070184
-:100340006261A3610022E26162700DE010B501F00C
-:10035000070400EB441428346261A36100220123E6
-:1003600001F00701E261637021702146006800F02E
-:1003700051FB002010BD38B505460C46696804F0F5
+:10031000207195F82802012801D1022032BD012167
+:1003200085F828122146286800F02AFA52E01CB508
+:1003300001F0070400EB441404F5947400F014F881
+:10034000627021700AE01CB501F0070400EB441450
+:10035000283400F009F821700122627021460068FB
+:1003600000F041FB002016BD01F007016261A361AE
+:100370000022E261704738B505460C46696804F012
:100380000700814201D2012032BD210605D505EBCF
:10039000401000F12801012204E005EB441000F5B3
:1003A000947100224A700120887004F007040C70D8
-:1003B00095F82802012801D1022032BD012085F8DC
-:1003C0002802286800F0DFFB24B9286805F50C71C5
-:1003D0000020C046002085F8280232BD10B5044632
-:1003E00001F00F0362689A4201D2012010BD00F0B3
-:1003F00013F80023837000F008F801D1022010BD2B
-:1004000000F019F800F0D8FB98E601F00701017040
-:1004100094F828120129704701F007000A0604EB3E
-:10042000401003D5283001234370704700F59470C5
-:10043000002242707047012284F828220146206879
-:1004400070472DE9F84F00F5947500F12406074632
-:1004500026E0018848F60F72114041F40041018006
-:100460003868B0F85010327901EBC203C01800F2BE
-:1004700002400088B269C0F3090030620244B261F0
-:100480000021384600F026F932784AB1F06938B9CF
-:100490003178386841F08001A0F84C1000213170AB
-:1004A000386800F144010A88130440F1E9800A88A1
-:1004B00012F00F0A59D1D206CBD50288130511D5F7
-:1004C000898900F0E0F8EA88C3F30903EB6107F5D6
-:1004D0000C7100F0C8FB386800F0DDF8384600F019
-:1004E000EBF8DDE71104DBD500F0D5F83868B0F89B
-:1004F000501000F0C8F8C3F30903002BEB611CBFD8
-:10050000696900290AD0EA8800F0ADFB6869E969E9
-:10051000014469613846002100F0D4F83868B0F829
-:1005200050104118286901F2064120B9088848F2A4
-:10053000FF32104009E03E2805D24208C00748BFFC
-:10054000521C900203E04009800240F40040088001
-:100550004BF68F7238680188114081F4405141F4A4
-:10056000004141F0800101809AE730F82A805FEA7B
-:10057000084207EB4A195AD530F82A1040F68F7214
-:10058000114041F0800120F82A1009F59474386870
-:10059000217B69B9B0F85010237801EBC30100F05A
-:1005A00082F830D0E28861695B4600F05CFB2AE0AB
-:1005B00021780B4630F8232053040BD5B0F8502097
-:1005C00002EBC101421802F2024200F06FF80DD0B6
-:1005D000228907E0B0F8503003EBC10100F063F866
-:1005E00004D062895B46616900F03DFB3968207880
-:1005F00031F8202048F68F731A4042F4004242F04E
-:10060000C00221F82020E1695944E16162695A443D
-:100610006261A36913B121698B4504D22178384600
-:1006200000F050F803E021783846FFF780FE5FEADB
-:10063000086021D5396831F82A2048F60F731A402E
-:1006400042F4004209F1280021F82A203A68017892
-:10065000B2F8503003EBC1031A4402F2024212888E
-:100660004369C2F30902C2611A4483694261002BE3
-:10067000384602D100F02EF812E7FFF767FE0FE7C9
-:100680000020BDE8F28F2A7801EBC203C31803F201
-:1006900006431B887047018840F68F72114041F075
-:1006A000800101807047421802F206421188C1F3AE
-:1006B000090BBBF1000F704700F50C71D0F8700208
-:1006C00000F0F4BA00EB4112D0F87002D2F83C21ED
-:1006D00000F016BB00EB4112D0F87002D26B00F0B4
-:1006E00050BBD0F8700200F0E0BB10B50446D4F85F
-:1006F000700200F09DFBD4F87002BDE810400121AB
-:1007000000F0BFBBD0F8700200F0BEBBD0F87002A2
-:1007100000F0C2BB10B51C461346D0F8C0022246FA
-:10072000FFF7DBFD002010BD80B5D0F8C002FFF759
-:1007300022FE002002BD80B5D0F8C002FFF74EFEB9
-:10074000002002BDD0F8C00201F07F02090600EBD4
-:10075000421002D590F82A00704790F82A0170479D
-:1007600080B5D0F8C002FFF7A9FD002002BD80B51A
-:10077000D0F8C002FFF7EAFD002002BD80B5D0F836
-:10078000C002FFF7D4FD002002BD30B4002513E005
-:1007900050F8042BD30744BFA9F101039A18091F8D
-:1007A000042942F8045BFAD213468C0744BF158033
-:1007B0009B1CC90748BF1D7050F8041B0029E7D1D6
-:1007C00030BC70472DE9F0470B4602461C7832F8E2
-:1007D0002460DD7848F68F1100200E40032D0CD8E0
-:1007E000DFE805F002080C0546F4007606E046F462
-:1007F000C06603E046F4806600E0012048F2800510
-:100800002E4322F8246048F68F7619780C4632F889
-:10081000247037403943294322F824104BF68F7750
-:10082000197B93F800A000294CF2800C48F6BF7E9B
-:1008300048F2C00862D1D9884FF6FE740C4059784E
-:100840000029B2F8501011441DD001EBCA0101F586
-:1008500080610C80197832F82140640606D532F8A0
-:100860002140264048EA060622F821601978DB7804
-:10087000012B32F821300EEA03030EBF1D4383F033
-:1008800020031D43C2E001EBCA0A0AF2044AAAF897
-:100890000040B2F850105418197804EBC1041969DB
-:1008A00004F2064431B9B4F800E048F2FF3101EA3D
-:1008B0000E010CE03E2908D24FEA510EC90748BF8D
-:1008C0000EF1010E4FEA8E2E03E04909890241F430
-:1008D000004EA4F800E0197832F82140640406D5EF
-:1008E00032F8214026404CEA060622F821601978A9
-:1008F00032F821301F4087F4405786E032F82A1042
-:10090000314041F4014141F0800122F82A10B2F84F
-:100910005010B3F808A05418197804EBC10404F57A
-:1009200080644FF6FE7101EA0A012180B2F850108E
-:100930001C78511801EBC409598909F204494FF692
-:10094000FE742140A9F8001059781C78002932F86B
-:1009500024102CD1490406D532F8241031404CEA39
-:10096000010122F82410197832F82140640606D5D6
-:1009700032F82140344048EA040422F82140197832
-:1009800032F82140264048EA060622F8216019780C
-:1009900032F82140274087F440572F4322F8217036
-:1009A000197832F821300EEA03031D432EE0490482
-:1009B00006D532F8241031404CEA010122F8241007
-:1009C000197832F82140640606D532F821403440C7
-:1009D00048EA040422F82140197832F821402640E0
-:1009E0004CEA060622F82160DC781978012C32F8EE
-:1009F00021400EEA040418BF84F020042C4322F89E
-:100A00002140197832F821301F403D4322F821500F
-:100A1000BDE8F087F8B50E46054672783469B069CE
-:100A2000012A48F2800748D1844232BF001B0446A5
-:100A30000020B061307B40B9F28800F099F800F0F6
-:100A40009BF800F2024004802EE03078C10035F8B7
-:100A500020004206B5F85000284405D5091801F2D7
-:100A600006410C80728904E0091801F202410C80F1
-:100A7000328900F07DF8707848F68F7140B930788F
-:100A800035F82020114041F4004141F0C00109E057
-:100A9000012809D1307835F82020114041F4404137
-:100AA00041F0800125F82010317835F8212048F6F2
-:100AB000BF70024082F030024EE0844232BF001B21
-:100AC00004460020B0616009317B8302002943F4B1
-:100AD000004304F001004FEA540C18D0AAB900F00A
-:100AE00040F801F202413CB9B1F800E0202262F383
-:100AF0008F2EA1F800E008E03E2C05D2624600B13E
-:100B0000521C92020A8000E00B807178A9B900F0B3
-:100B100028F801F206412CB90A88202060F38F22C0
-:100B20000A8011E03E2C06D208B10CF1010C4FEA0C
-:100B30008C20088008E00B8006E0012904D100F039
-:100B40001BF800F2064004804BF68F70317835F8C0
-:100B50002120024082F44052174325F821700020E2
-:100B6000F2BDB5F850103278691801EBC201704738
-:100B70007169A3B2284665E0B5F8500031782818AD
-:100B800000EBC100704710B50A78497830F8224070
-:100B9000002948F2800305D048F6BF710C4084F06C
-:100BA000100404E04BF68F710C4084F4805423430E
-:100BB00020F82230002010BD30B50A7B002A36D143
-:100BC0004A780C78002A30F8242048F2800348F64E
-:100BD0008F7516D0520608D530F82420154045F4FC
-:100BE000004545F0C00520F82450CA78012A1ED0DF
-:100BF0000A7830F8224048F6BF710C4084F0200497
-:100C000012E0520408D530F82420154045F4404540
-:100C100045F0800520F824500A7830F822404BF641
-:100C20008F710C4084F44054234320F8223000207C
-:100C300030BD11B98021A0F84C1000207047B0F8E9
-:100C40004400704710B580185B1C00F580605B089D
-:100C500007E00A784C7842EA0422891C20F8022B2B
-:100C60005B1EF6D110BD10B5821802F580625808DF
-:100C700006E032F8024B0C70240A4C70891C401EAE
-:100C8000F7D1D80744BF1088087010BD10B5D0F850
-:100C9000B42202241AB11268904700B900242046F9
-:100CA00010BD80B5D0F8B42253680AE138B50446C7
-:100CB00004F52A75284600F0F5FA04F5257001219F
-:100CC0000160428B017D426011F01F0003D00228B9
-:100CD0000BD005D30EE02946204600F0F5F80DE0D4
-:100CE0002946204600F09AF908E02946204600F0FF
-:100CF000BCF903E001F0800100F040F8002032BDB3
-:100D000038B5044610460A0004F5257329D1196840
-:100D100003291ED104F5B0714A680D68AA420BD2AE
-:100D2000AD1A0D60954238BF2A46014692B2204660
-:100D300000F0E8FA002032BD196A086928B1187A73
-:100D4000032802D1096920468847204600F0E2FACC
-:100D5000F0E70529EED100201860002100F00EF820
-:100D6000E8E71A6A906930B1187A032803D19269CA
-:100D700020469047DEE7022032BD80212046FFF763
-:100D8000D3BC38B504460800134604F5257543D195
-:100D90002868022833D1226A616A914207D2521A26
-:100DA0002262194692B2204600F0A4FA11E0E269EC
-:100DB000B2FBF1F001FB102090B98A4210D36868B1
-:100DC00082420DD200220021204600F093FA00203A
-:100DD00068600023002200212046FFF7CFFC14E0CA
-:100DE000296AC86828B1287A032802D1C968204630
-:100DF0008847FFF7C2FF204600F093FA05E0042879
-:100E000018BF002801D1FFF7B8FF287B012804BFD5
-:100E100000212973002032BD2A6A506930B1287A36
-:100E2000032803D1526920469047F3E7022032BDE0
-:100E300038B50446402300220021FFF76BFC04F57F
-:100E4000AC70012140220160C26040230022802159
-:100E50002046FFF75FFC0120402104F52572A061C8
-:100E6000616210720021116061600025506A156195
-:100E700028B1126A61685368C9B2204698470020B9
-:100E800032BD01740020704700F5277004220178FC
-:100E9000417002700020704700F527700178042926
-:100EA00004BF417801700020704780B500F52771BC
-:100EB0000A78032A03D18969C96901B188470020EA
-:100EC00002BD9847002002BDF8B500F0C8F804F54F
-:100ED000277608D0202818BF402850D1B2699368DF
-:100EE0002046984795E06878092848D8DFE800F060
-:100EF0006E864780470905475C25204600F04AF981
-:100F000087E0A888002804BFE888002837D16F88C8
-:100F1000802F34D23078032807F07F072FD0B770A6
-:100F200039462046FFF71CFC00F031F9002F07BFBF
-:100F300001213170022030706BE0374F68883870C3
-:100F4000397802291BDA3378022B08461AD0032B92
-:100F500023D131B90220307061602046FFF7A1FE35
-:100F600055E06168884252D0C9B22046FFF799FE29
-:100F7000397861602046FFF789FE022847D100F0EA
-:100F80008EF946E0002942D0606003203070204690
-:100F9000FFF77CFE0228F2D039E000F080F93978C2
-:100FA0002046FFF77EFE34E0E8880128E7D131785B
-:100FB000491E012904D9891EE1D10122211D13E016
-:100FC0000020A060012204F108010DE03078401EED
-:100FD0000228D4D8EA88022AD1D1B068012100B110
-:100FE0000321E16004F10C01204600F07BF910E0E0
-:100FF000688801280DD10121B16008E03078401ED9
-:101000000228BCD86A88012A03D10020B06000F011
-:10101000BEF80020F2BD00009405002038B500F0B5
-:101020001EF81CBF2028402815D104F5277210781F
-:10103000401E02280FD82B79022B0CDA9269936894
-:10104000204698470146E888002808BF002904D1B7
-:1010500000F09DF801E000F023F9002032BD0D46BC
-:101060000446287810F060007047F8B5044608463A
-:1010700004F527730278017912F0600509D0202D5C
-:1010800018BF402D6AD19A69936801462046984757
-:1010900067E002F06002202A06D19A69936801464F
-:1010A0002046BDE8F440184742788AB3012A12D09E
-:1010B000032A53D11B78022B13D0032B4ED1428825
-:1010C0001ABB002918BF80291FD0C088E8B9204664
-:1010D000FFF72AFB19E01A78022A02D0032A0CD063
-:1010E0003CE0002918BF802938D02046FFF71CFBC0
-:1010F00080212046FFF718FB33E0408888BB11F0C1
-:101100007F0F1CBF2046FFF716FB00F040F828E0D9
-:10111000142201F07F051B7855436619022B06F552
-:10112000AA7502D0032B10D018E0002918BF80291F
-:1011300014D1080648BF06F11405002028600222D9
-:101140002946204600F0CEF80BE001F00F0312FB19
-:1011500003F20F06224406D5926972B9014600F0E7
-:101160009FF80020F2BDD2F85821002AF6D00029BD
-:1011700018BF802904D10020E0E706F11405F6E746
-:101180002046FFF7DFFA0028D8D00120D6E7204616
-:1011900000F0C0B838B5044600200D46ADF8000098
-:1011A00004F52C726888030A012B08D0022B23D087
-:1011B000032B2ED0062B5FD0072B64D06CE0126877
-:1011C000207C136869469847BDF8001079B1E9881A
-:1011D00079B1BDF80010EA88914288BF1146ADF898
-:1011E00000100146BDF80020204600F07BF8E8889A
-:1011F00008B9FFF7CCFF31BD207C51680028684654
-:1012000004D1896A884702224270DDE7C96A8847AB
-:10121000F9E7C0B205283FD8DFE800F0030B121948
-:10122000202710684268002A36D0207C6946904703
-:10123000CAE7106882687AB3207C69469047C3E7A2
-:101240001068C26842B3207C69469047BCE71068CA
-:1012500002690AB3207C69469047B5E71068426985
-:10126000D2B1207C69469047AEE7106882699AB196
-:10127000207C69469047A7E7207C68B951684A6B93
-:1012800068469047A0E7207C30B951680A6B6846F1
-:1012900090470721417097E700F002F831BD2946D9
-:1012A000204614E010B50A7802704B7843708A78B3
-:1012B000CB7802EB032444800A794B7902EB0324B8
-:1012C00084808A79C97902EB0123C38010BD10B5EF
-:1012D00004468021FFF728FA2046BDE8104000218F
-:1012E000FFF722BA80B513460222C0F89422C361E8
-:1012F000036201E080B513460A460021FFF737FA82
-:10130000002002BD80B513460A460021FFF736FAD9
-:10131000002002BD80B50421C0F8941200230022F1
-:10132000EBE780B50521C0F8941200230022ECE71A
-:10133000DFF84C150A6892B200E00246086880B2F5
-:101340008242FAD170472DE9F041DFF83865DFF8C5
-:1013500038853178044618256843062908EB0007CC
-:1013600008D130787070347079754FF0FF3070604C
-:1013700000203DE000F07BF8B9680918B96008F179
-:101380000803B96832786A439A589142327813D385
-:1013900008F1150315FB02FC13F80C30062B29D0BD
-:1013A00008F108066B43F358994222BF08F1150370
-:1013B0006A439A5CECD21DE01146337869439A4245
-:1013C0000FD008F1140C08F1150E1CF8013015FBB4
-:1013D00003F50EF805407A753B7508F11402545474
-:1013E00003E008F114037A755C543178717034703D
-:1013F000BDE8F0811146694308F115035B5C062BDB
-:1014000004D008F1140615FB03F574557B753A7585
-:1014100008F115025454EBE7F0B5DFF86834DFF853
-:1014200068541E78182402466243B0422A4404D10C
-:1014300018785870547D1C700FE0167D507D92F81E
-:1014400015C005F115076643062807F806C004D045
-:10145000167D143514FB00F42E55012010731A78F4
-:10146000062A02BF00294FF0FF305860F0BD10B5CA
-:10147000DFF81044606810F1010F10D0FFF758FF3B
-:101480006168DFF8082481422FBF63686168538870
-:10149000CB1851781278181A4843D04000E0002049
-:1014A00080B210BD2DE9F84FDFF8E053DFF8E0B36C
-:1014B000D5F80880D8F80000DBF800104A0500F0E5
-:1014C000A2F9DFF8C063DFF8C0A321F48061816076
-:1014D0004FF0180934780AF1080019FB04F1475855
-:1014E000FFF7C5FF874211D200270121B170062CFA
-:1014F0003FD019FB04F40AF108010A59824210D2C4
-:1015000000230B510AEB04014C7DF0E7A988411838
-:10151000B94202D2AF880021E8E701223F1AB27037
-:10152000E5E70A590AF10803121A1A51EAE70228F4
-:1015300002DA2878012800D07F1ED8F80000C168A0
-:101540004A07FAD500F052F9DBF80C00000CBFB2E4
-:1015500047EA0047CBF80C70FFF7EAFE7060A86816
-:101560000068816841F480618160AFF30080BDE86C
-:10157000F18FB8B20028DAD1FFF7DAFE70600320ED
-:10158000BDE8F24F00F0F5B92DE9F843EFF310880C
-:1015900072B6BE4DBC4BA8680168CA224A6253208D
-:1015A000486218208A6822F480628A60B54A1678F8
-:1015B000374647431F44387B022823D13C68D7F87D
-:1015C00010909078D8B17A7B012A0AD10121304657
-:1015D000FFF722FF88F310887968304600F019F988
-:1015E00004E088F31088304600F0C6F8A86800F0E0
-:1015F0001AF831462246484600F054F90DE0FFF74C
-:1016000051FF08E0C8684207FCD500F086F84FF4A7
-:101610000020A049086088F31088FF22A8680168AC
-:101620004A62BDE8F1830068CA21416253224262E6
-:101630007047F8B5954CA160CA2209684A625323E5
-:10164000934A4B62156845F020051560136803F056
-:101650000703C3F10403237095682D0C05F07F0583
-:101660006D1C6570EDB29268C2F30E02521C62806E
-:1016700092B2521E6A43A2F5A072DA404FF6FF738F
-:101680009A422CBFA380A280834A136843F40023AC
-:101690001360824B1D6845F400251D6048BB7948E6
-:1016A000012383704FF0FF3545600023764D0026FF
-:1016B0000C355FFA83FC182717FB0CFC5B1CDFB2B0
-:1016C00005F80C60062FF4DB06230370886820F40D
-:1016D0008060886000F021F84FF40021D160032081
-:1016E00000F052F9A0680068816841F4804181608F
-:1016F00005E0C868410544BF032000F03AF9A1683D
-:101700000A68FF20506200220321032000F0E6F85F
-:10171000BDE8F240032000F0FEB8C86800F0800089
-:1017200060F49060C86070472DE9F04104460025E0
-:10173000EFF3108672B61827DFF84CC10CF10C0ECF
-:1017400007FB05F81EF8080010B16D1C062DF5DB2F
-:10175000062D0CD06F430CEB07000127077386F3AF
-:1017600010880461427303600D70002002E086F36C
-:1017700010880120BDE8F081F8B50746EFF310842A
-:1017800072B6032000F0D2F8404DAE683068FFF723
-:101790004BFF3B46182042494343CA5C022A1BD1F7
-:1017A00000213846FFF738FE3648017806290ED169
-:1017B000306837490A68530500F025F821F4806144
-:1017C0008160C1684A07FCD500F010F804E0407859
-:1017D000884218BFFFF766FEA9680A68FF205062BA
-:1017E000032000F098F884F31088F1BDC16801F07F
-:1017F000800161F49061C1604FF4002025490860C8
-:10180000032000F0C1B802D5C1684A07FCD4816842
-:1018100070472DE9F04180460F46424618201A498C
-:1018200042438C18237B022B04BF4046FFF7A4FFE2
-:10183000EFF3108572B6032000F078F8134EB0680D
-:10184000FFF7F1FE02202073A76067604046FFF7B4
-:101850007AFD0C490A784978914202D0FFF722FEBE
-:1018600002E0A168081AA060FF20B1680A6850620F
-:10187000032000F050F885F31088BDE8F0810000E7
-:101880002828004088050020580300204C0500202F
-:10189000082800400C08005800080058800800582C
-:1018A00064030020104700000901020002D43C48F4
-:1018B000815470473B4B02F00F021A4402F8041C9B
-:1018C0007047394B19684FF6FF020002114000F4CF
-:1018D000E0600843354908431860704738B5324B1B
-:1018E0001C68C4F30223C3F10704052C28BF042499
-:1018F0001D1D072D34BF0023DB1E012505FA04F44E
-:10190000641E2140994005FA03F35B1E1A401143FF
-:10191000BDE83440C8E7010007D4012200F01F01F0
-:10192000234B8A40400943F82020704701000BD424
-:10193000012200F01F011F4B8A40400943F820207C
-:10194000BFF34F8FBFF36F8F704710B5401EB0F1DC
-:10195000807F01D3012010BD174C60600F214FF034
-:10196000FF30FFF7A1FF0021A160072020600020C9
-:1019700010BD010007D4012200F01F010F4B8A4067
-:10198000400943F820207047010007D4012200F0ED
-:101990001F010B4B8A40400943F82020704700008C
-:1019A00000E400E018ED00E00CED00E00000FA05B6
-:1019B00000E100E080E100E010E000E000E200E093
-:1019C00080E200E038B58EB002A8DFF8A013DFF89F
-:1019D000A0430FF2ED35302200F014FA0094019587
-:1019E00069460FF2C530DFF88C4300F017FA012189
-:1019F000022000F0F6FADFF880230021202000F01A
-:101A000083FB02A800F0F6FB00F0E0F800F0FAFB20
-:101A10000FF2D9220021012000F076FB0FF2FD2207
-:101A20000021022000F070FB002084F890002020AC
-:101A300000F086FC00F0C0FC0FF25133002204F1EC
-:101A400091010020FFF770FE0FB030BDF0B50646E3
-:101A500085B07078C74FC94D0021052807F1900463
-:101A600050D03E2859D0FF280DD101212972B6F857
-:101A7000030004283ED040F20742904204D040F6D2
-:101A80000202904214D07FE07179022904BFB1793B
-:101A9000002979D1002000F013FEA078012873D12D
-:101AA0002178062970D00021022000F03AFB6BE07B
-:101AB000002000F045FCF079287301243189E98188
-:101AC00071892982B2896A82F389AB82308AE8827D
-:101AD000009010262D7BF88C0494039502960196B5
-:101AE00000F047FE10B1022000F0E2FD202000F0DF
-:101AF00027FC49E0012000F0DBFD60780A21FFF7B8
-:101B000088FE41E0B088F98C88423DD10020F884FD
-:101B10002070012200F03BF836E0F078012802D076
-:101B200002280CD030E0B6F80500F88406212170B8
-:101B3000002200F02CF8F88C00F096FE24E0727B76
-:101B4000707908BB1EE073187018DF7B807BFF2F55
-:101B500016D1072814DB1B7C012B02BF73185B7C9A
-:101B6000832B0DD10127A770F3792B70377A6F7013
-:101B7000737AAB70B77AEF70F37A2B71377B6F7132
-:101B8000401C41189142DEDB012005B0F0BD6881A8
-:101B90002A7205F1080000F02BBC7649CA8C8242FB
-:101BA00002D191F8900070470020704780B500F096
-:101BB00040FD062805D0BDE804400021012000F0CA
-:101BC000B0BABDE8014000F024BC000018B589B0EF
-:101BD0000020ADF81A0000F02BFF694C216811F1CC
-:101BE000010F0DD0674862680170120A0B0A090CD8
-:101BF0008170437061680271C170120A427104E021
-:101C0000002000F041FF00B974A002460621002028
-:101C100000F067FB4EF66E51089107AA2068554CFC
-:101C2000079006212E2000F05CFB00BF6DA2102162
-:101C3000182000F056FB00BF6EA21021082000F013
-:101C400050FB1821012000F06DFB00F0D4FD0DF1D8
-:101C5000160006A90190009105AB0722002105207E
-:101C600000F069FF5BA0BDF8181000900723BDF8D5
-:101C70001400002200F0D5FD0DF11A00009002239F
-:101C8000BDF81610BDF81400002200F0CAFD0020B7
-:101C9000207000F00DFF012060700021E17008202D
-:101CA00060751021A17501202075A07000203649B3
-:101CB000A161C1B221440871401CC1B21029F8DBF6
-:101CC000002004900023A169207D0391029000224E
-:101CD000A17D607D019100906178A07800F0FCFE0C
-:101CE000A07808B100F063FF0AB010BD214890F859
-:101CF0009010062900D1704780B5002000F0D8FC74
-:101D00004FF4487101230022084600F069FF20B11A
-:101D1000BDE80240022000F0CBBC01BD30B5154C3F
-:101D200094F89000062887B01ED0102106910591E6
-:101D30004FF4FA7250210023029128200492039359
-:101D4000019000254FF44871009500220B4B084686
-:101D500000F07BFF18B9042084F8900004E0022012
-:101D600000F0A6FC84F8905007B030BD1840000881
-:101D7000A4080320C40200205B1E0008FC0400200D
-:101D80008075FF1F5805002007B20100012000F0F8
-:101D900097BC0021202000F0C4B9012000F0E3B975
-:101DA000012000F0E8B9000010B50446616801F1B7
-:101DB000080000F037FA00B10120207010BD0000CB
-:101DC00010B1012803D070473F2000F0BAB93F207E
-:101DD00000F0BFB953544D3332574200AA55443333
-:101DE00022AA0000123456789ABCDEF012345678DB
-:101DF0009ABCDEF0FEDCBA0987654321FEDCBA0935
-:101E0000876543214AB1000011F8013B521E00F8DA
-:101E1000013B1CBF11F8013BF8E770477FB50C464A
-:101E20006A4D61686A4EE8612962284600F07CFFCD
-:101E3000246805F1240000604060746006F1080029
-:101E40000060406001203070296829B10FF249120A
-:101E500000920294684688477FBD1FB55C4C04F130
-:101E6000080000F06EFFE8B92078D8B1694604F1A7
-:101E7000080000F08FFF012054492070C96941B16A
-:101E80000098029001A888479DF80410217008006E
-:101E900003D0009801F031F804E0009904F1080043
-:101EA00000F058FF04F1080000F04BFF28B920783B
-:101EB00018B104F10800FFF76CFF1FBD2DE9FC41CC
-:101EC0000446002000F05EF866882088A268DFF8EB
-:101ED000FC80C6F3090646EA8026E068B6B2C1B2C5
-:101EE000304600F03BF8002548F2E800FFF758FFC5
-:101EF00008E07888B04202D1226939781170787888
-:101F000000B1012508F1240000F01BFFF0B969467B
-:101F100008F1240000F03EFF0098014600F10B0795
-:101F2000487A0F28E5D0B7F80100B0420CD1887A82
-:101F30006169C01EC0B28842C8BF084660610246DF
-:101F40002069F91CFFF75EFF3878D9E72800CBD06D
-:101F5000012000F017F80020BDE8F68110B5134607
-:101F60001B4A5468A4F80900E1720A46194604F1B4
-:101F70000C00FFF747FF154A1369BDE81040002128
-:101F8000002018471149096A08B921B108470029FA
-:101F90001CBF01200847704710B50146487A0F283A
-:101FA00018BF0E2807D10B4800F0DEFEBDE8104038
-:101FB0000020FFF7F2BE064C04F1080000F0D4FE4A
-:101FC00004F10800BDE81040FFF7E3BE68040020FC
-:101FD0002C0500208C04002019480021016041607C
-:101FE000704710B500F00CF85C6819B1012904D1F4
-:101FF000204301E024EA0000586082F3108810BDFD
-:10200000EFF3108272B60E4B704738B5EFF31084C1
-:1020100072B60B490B4D086820B1296888476A6879
-:1020200090470AE0486820B1A8688047E968884777
-:1020300003E0286980476969884784F3108831BDC7
-:10204000600500207C4100082DE9F041544CDFF888
-:102050005481A5692840A06131E0491C54F8310041
-:102060000742FAD004EBC1071840796810400142DA
-:1020700004BF4FF0FF327A607E68304000F094F881
-:102080006062012101FA00F086437E60EFF3108266
-:1020900072B6606A23698140C9430B402361022004
-:1020A00004EBC00353F8087C0F40401E43F8087C43
-:1020B000F6D182F31088606A58F820108847636967
-:1020C0002069A2691840104207D0E069216A0842DD
-:1020D00003D1002103EA0207C0E7C046C046EFF380
-:1020E000108872B621696069A2690140114201BF7E
-:1020F000E069216A084200F0B6FF88F31088C04604
-:10210000C046A561BDE8F08138B51446EFF31085EF
-:1021100072B600F049F8234941F8204085F3108851
-:1021200031BD30B5EFF3108272B61D4B1C6904430C
-:102130001C6153F83150284343F8310082F3108872
-:1021400030BDEFF3108172B6154A536923EA0000DF
-:1021500005E0EFF3108172B6114A536918435061DC
-:1021600081F310887047EFF3108172B60C4AD3697F
-:102170001843D061F4E770B5094C656A266A20629D
-:10218000012101FA05F502E0284600F06EFF216A00
-:10219000E0690842F8D088432662E06170BD000023
-:1021A00004000020E803002002460020110C09046E
-:1021B00004BF1020120412F07F4F04BF0830120237
-:1021C00005A312F0704F04BF001D1201120FC0F1E1
-:1021D0001F00995C401A70470403020201010101CB
-:1021E000000000000000000000F0A6FF9DF80E00B7
-:1021F00005B000BDF8B500F10C026B4621214FF689
-:102200006640F1E723490020087700222248027146
-:1022100000F044B820490A7941F822000879401CAE
-:102220000871704770B504466078FF2802BFB4F8A3
-:10223000030000F47F40B0F5406F1FD10025154E1C
-:10224000317FE8B2884222D2E9B256F821202046F6
-:102250009047002808BF6D1CF2D018E0761C297941
-:10226000F0B288420AD2F1B255F8212020469047B8
-:102270000100F3D002D0022805D006E02046BDE8D8
-:102280007040FFF7E3BB002070BD012070BD002649
-:10229000014DE4E7DC0400208005002080B5C04645
-:1022A000C046C046C046C046C046C046C046C046FE
-:1022B000C046C046C046C046C046C046C046C046EE
-:1022C000C046C046C046C046C046C046C046C046DE
-:1022D000C046C046C046C046C046BDE8014000F00A
-:1022E0007BBF18B50C46C7B0114600F04EF88DF80C
-:1022F0001D4022460DF11E0000F06FFF00F03AF87D
-:102300003F21ADF804100C2200F039F8A41C06920D
-:10231000049400F04BF800284CBFFF209DF800000B
-:1023200048B010BD00B5C7B000F01DF80F2200F096
-:1023300032F800284CBFFF209DF8000047B000BDD8
-:1023400000B5C7B000228DF80020ADF81C0000F0E9
-:1023500011F8182200F01FF800284CBFFF209DF84C
-:10236000000047B000BD00238DF81C008DF81D1043
-:102370008DF800301822002101A800F034BFADF81C
-:10238000062007A903910122704700228DF8002042
-:102390008DF81C007047ADF806203F21ADF8041001
-:1023A0000222049207A9039101220692CDF814D0CB
-:1023B000002101A8FFF782BD80B50FF2192200218C
-:1023C0000420FFF7A1FE0FF2E91200210820FFF719
-:1023D0009BFE9948002101220180C1808170C2705A
-:1023E000017101720FF23500BDE80240FFF712BF24
-:1023F0000278914912B1012A03D070474088C88001
-:1024000070470022087ACA8000B10A72002000F0EA
-:1024100057B900210820FFF784BE0000F8B5044634
-:102420006078FF2811D1844DB4F80300698940F623
-:102430000442801A70D0801E3FD0001F06D0401F7B
-:1024400000F09080401E00F0A680ABE0B4F805607C
-:10245000287A58B10846FFF7A0FB297A062908BF59
-:102460000028F2D14FF6FF71287269816E81E179FF
-:10247000207A90FBF1F01429C0B2E6D1102100229D
-:102480004FF6406CD3B28342DFDA63185E7A9F7AEC
-:1024900046EA072666450CD113F8076D5F7846EAD1
-:1024A0000726AE819E78DB7846EA0326EE81082671
-:1024B0002E72891DC9B2521CE4E700F075F802BF04
-:1024C0001121E07915286DD1207A421E2272207ADE
-:1024D000002867D0621804F10A03507A5E5C531F2B
-:1024E00040EA06201A785B784FF64166B04242EA2D
-:1024F000032207D04FF64263984206D10A20287281
-:10250000AA8202E0092028722A821531207AA0F1DD
-:1025100015022272C9B2DAE700F046F801BF207A4C
-:102520000021E279012A3DD10022D3B2B3EB900F12
-:1025300038DA661804F10A07737A7F5C43EA0723E6
-:10254000F77A367B47EA062742F60216B74204BFFF
-:102550002E7A0A2E02D1EB820B232B72091DC9B2EF
-:10256000521CE2E700F020F802BFB4F80710A88A76
-:10257000814217D1617A022902BFA07A68700128CE
-:1025800010D1E07AA87010B900F09AF80AE00020A3
-:1025900000F08EF806E000F007F803D100210420D7
-:1025A000FFF7BFFD0020F2BDB4F80500814270477F
-:1025B00010B5214C2079401E8041C00F2071207A37
-:1025C00038B1218A6089E31CBDE81040022200F086
-:1025D000EFB910BD1CB5184C227A0120ADF80000EF
-:1025E00032B3083A6089E18A042A21D8DFE802F090
-:1025F00003080A101A00E289A18900F05BF913BDF3
-:10260000218A00E0A18A8A1C92B200F073F913BDFE
-:102610006B46022200F09FF906202072022000F093
-:102620004FF813BD6B46022200F095F90620207288
-:1026300013BD0148007A704714050020454981B058
-:102640000A6802430A60096808400090009801B0D7
-:102650007047000078B585B004466846142100F044
-:10266000CDFD210008BF012005D02046012C0CBF64
-:102670000220022C01D1FFF7E1FF00BF39A1364E45
-:1026800031F814500095012101910022022102929B
-:102690000391694656F8240000F0B4FD00F002F8FA
-:1026A00006B070BD56F824000022294600F059BE3D
-:1026B00010B500F00FF8BDE81040012200F051BE47
-:1026C00010B500F007F8BDE81040002200F049BE48
-:1026D0000000000023A3204C33F8101054F8200011
-:1026E0007047000030B585B004460D466846142199
-:1026F00000F084FD0120FFF7A1FF2900DFF85C2036
-:102700001AA00BD130F8141000910023019301217D
-:1027100002230291039300F017F813E0012D11D169
-:1027200030F814000E4B00900295019300F00CF865
-:102730000FA0045D00220F2160B2FFF7CFF860B256
-:10274000FFF7E9F805B030BD694652F8240000F003
-:1027500059BD00004C000058380000204400002003
-:102760000000211010000100020000000004000021
-:1027700028002DE9F842C7B04FF00009ADF81C0061
-:10278000DDF838C14F9E509F519D529C8DF80090AE
-:1027900007A84180ADF82020ADF82230A0F808C08D
-:1027A000ADF8266087818DF82A508DF82B4000F017
-:1027B00017F84FF4C172ADF806203F21ADF80410B0
-:1027C0001022049207A903910122069200F00DF84D
-:1027D00000284CBFFF209DF8000048B0BDE8F08203
-:1027E0001822002101A800F0FEBCCDF814D0002171
-:1027F00001A8FFF763BB00B587B000208DF800008B
-:1028000000F09CF840F2011200F00CF9012206924F
-:1028100000F09BF800284CBFFF209DF8000007B097
-:1028200000BD78B5C7B01D464C9B00F0EEF8002601
-:102830008DF800608DF821502A4619460DF12200CE
-:1028400000F0CBFC00F07AF800F067F84FF48372E8
-:1028500000F0E2F8AD1D00F076F800284CBFFF2034
-:102860009DF8000049B060BD00B5C7B000F011F898
-:1028700000F064F800F051F84FF4897200F00FF89E
-:1028800000F063F800284CBFFF209DF8000047B01F
-:1028900000BD00228DF80020ADF81C0070470F210C
-:1028A0000291ADF806200221049107AA01210691A8
-:1028B0000392704718B5C7B000F00FF800F02DF87C
-:1028C00040F2151200F02DF800F03FF800284CBF40
-:1028D000FF209DF8000048B010BD0024ADF81C009A
-:1028E0008DF8004007A8418082800021182201A8AD
-:1028F00000F079BC18B5C7B0FFF7EFFF00F00DF896
-:1029000040F2171200F00DF800F01FF800284CBF3D
-:10291000FF209DF8000048B010BD3F21ADF8041025
-:1029200070470F210291ADF806200621049107AAF5
-:1029300001210691039270478DF800301822002182
-:1029400001A800F050BC06920495CDF814D00021E7
-:1029500001A8FFF7B3BA30B5C7B000F011F800F026
-:1029600046F8FFF7EBFF40F2211100F013F8FFF7F4
-:10297000ECFF00284CBFFF209DF8000047B030BDA1
-:102980001446ADF81C00002507A88DF800504180C2
-:1029900004717047ADF806100F2202923F2007A97C
-:1029A000ADF8040003910122641D0692049470475F
-:1029B00030B5C7B000F011F8FFF7C0FFFFF7ADFF6B
-:1029C00040F2231200F018F8FFF7BFFF00284CBFB9
-:1029D000FF209DF8000047B030BDADF81C00ADF8F9
-:1029E0001E10144600258DF800508DF82040194621
-:1029F0000DF1210000F0F1BBADF8062007A903910D
-:102A00000122641D069204947047ADF81C00ADF8D5
-:102A10001E108DF820207047ADF8062007A90391FD
-:102A200001227047ADF806203F21ADF80410704731
-:102A300000B587B000F013F800F020F8032100F093
-:102A400009F800F013F800284CBFFF209DF80000A3
-:102A500007B000BDADF80410ADF8061070470020B7
-:102A60008DF800007047049207A903910122069295
-:102A7000CDF814D0002101A8FFF720BA18220021B8
-:102A800001A800F0B0BB000020B501460648074D84
-:102A9000C2798A4218BFA84218BF0838F8D18A42C2
-:102AA00018BF002020BD00BFF873FF1F0070FF1F7C
-:102AB00000B5C7B000F06EF800F0C2F800F0AFF853
-:102AC000852200F06DF800F012F900284CBFFF20BD
-:102AD0009DF8000047B000BD2DE9F043C7B0DDF818
-:102AE00038814F9E509D519F529C8DF81C004FF095
-:102AF000000907A88DF80090417082700DF1230144
-:102B00008DF81F308DF820808DF821608DF82250CF
-:102B10000F608DF8274000F093F8862200F05AF8F5
-:102B20000C2200F0E0F800284CBFFF209DF80000C8
-:102B300047B0BDE8F083F8B5C8B005460E46174665
-:102B40001C4600F022F808A8467087708DF82050C7
-:102B500000F0E5F88A2200F0D1F8032200F0D4F862
-:102B6000002848BFFF200ED49DF8000058B94F99A7
-:102B70004E98BDF801202280BDF803300380BDF8D7
-:102B800005000880002049B0F0BD072200216846FA
-:102B900000F029BB00228DF800208DF81C00704742
-:102BA000ADF8062007A9039101220492704700B5F1
-:102BB00087B000208DF8000000F042F8922200F06B
-:102BC00009F800F093F800284CBFFF209DF80000A2
-:102BD00007B000BDADF806203F21ADF804107047E6
-:102BE00030B5C7B000F010F800F02AF800F017F880
-:102BF000972200F018F800F07BF800284CBFFF2067
-:102C00009DF8000048B020BD0025ADF81C008DF8EF
-:102C1000213007A8418002718DF8005070473F2194
-:102C2000ADF8041070470F210291ADF8062006217F
-:102C3000049107AA01210691039270478DF8003094
-:102C40001822002101A800F0CEBA2DE9F04F00268D
-:102C5000C7B000F01DF800F00FF8FFF7F1FF0F22EA
-:102C600002929C2100F02EF800284CBFFF209DF816
-:102C7000000047B0BDE8F08F8DF82790B581ADF822
-:102C80002AB03782ADF82E80B482ADF832A07047FA
-:102C90008446559CDDF84091519DDDF848B1539F25
-:102CA000DDF85081DDF858A18DF80060ADF81CC04A
-:102CB00007AE084670803271194606220DF12100D8
-:102CC00000F08BBAADF80610182204923F2007A935
-:102CD000ADF80400039101220692CDF814D0002132
-:102CE00001A8FFF7EBB8049207A90391012206920D
-:102CF000CDF814D0002101A8FFF7E0B8ADF80A2004
-:102D00003F21ADF808107047059208A904910722E9
-:102D10000792CDF818D0002102A8FFF7CFB81822EB
-:102D2000002102A800F05FBA0249034A0160026173
-:102D3000704700BFF52D00081F2E0008006040609E
-:102D40007047EFF3108172B6026882420CBF012017
-:102D500000201CE0EFF3108272B603680B6048603D
-:102D600001600868416023E0EFF3108272B60860EA
-:102D700043684B6041604868016019E0EFF31081DF
-:102D800072B6436802681A6042680068426081F364
-:102D90001088704710B5EFF3108472B602680A60AD
-:102DA0000068FFE7FFF7EAFF84F3108810BD0860B2
-:102DB00082F310887047000000F066BB6C486D49D4
-:102DC000016001F12002426001F13003836001F1F2
-:102DD0003C02026201F14403C36001F14C02026152
-:102DE00001F16803436101F16C0282617831C161D4
-:102DF00000F052BB38B504465F4D05F11000FFF7F7
-:102E00009DFF5B494868A168016005F11001E26817
-:102E1000C2608160456000F05BFB58482DE080B5E2
-:102E200053494A6813680120187200F057FB0020CC
-:102E300002BD38B5514C504D07E0694605F1100010
-:102E4000FFF7A8FF00982168884705F11000FFF7F9
-:102E500078FF0028F1D031BD48484168084738B5AF
-:102E60000446474D2846006040604149C868A16853
-:102E70000160456000F037FB4248216801606268EC
-:102E80004260002032BD80B53949CA6813681020FD
-:102E9000187200F02EFB002002BD3549CA6839497E
-:102EA00010680B68184738B5364C354D06E0694652
-:102EB0002846FFF76FFF0098616888472846FFF7AC
-:102EC00040FF0028F3D031BD38B504462E4D2846CA
-:102ED000006040602D480060406025480069A1689E
-:102EE0008160E268C26005612168016062684260D9
-:102EF000216941616269826131BD80B50146234823
-:102F0000FFF732FFBDE802400FF2050000F001BB01
-:102F100038B5174C1D4D08E069462846FFF73AFFC3
-:102F2000009920690069FFF71FFF2846FFF709FF96
-:102F30000028F1D031BD10B5154C2046006040602E
-:102F40000B4948690460BDE8104000F0F6BA1CB5B2
-:102F50000F4C06E069462046FFF71CFF0098C0466C
-:102F6000C0462046FFF7EDFE0028F3D013BD000059
-:102F700000000320B009032084080320700500200E
-:102F80009C08032078050020340A032068050020EF
-:102F90003C0A032010B52848284C88B0016841F449
-:102FA00000410160FFF718F800F0DAFA2449002028
-:102FB000FEF73FFB00F0EDFA2248016841F4803152
-:102FC00001600121026C42F4803202640120FFF7AB
-:102FD00008F80020FFF73EFB0120FFF73BFB022033
-:102FE000FFF738FB0120FFF763FB01210020FFF70B
-:102FF00079FBFFF7E3FE144A00214020FFF784F835
-:1030000004F23C51009169460FF241020FF2410077
-:10301000019200F03FF804F25471029104F5C96284
-:1030200040F23C5103920591049402A8FFF74CFF33
-:10303000FFF7C2FE08B010BD0800005824000320AE
-:103040009404002090080058D73000087047000012
-:1030500080B5FFF770FF00210120FEF7C2FFBDE839
-:103060000140FEF7AFBCFEF7D0BF4FF0FF30FEF7D8
-:10307000EBBF00214020FFF754B80220FFF773B8E0
-:103080000220FFF778B8B0F5806F08BFFEF78EBD5D
-:10309000704700007FB50C464C4D61684C4EE861AE
-:1030A0002962284600F080FA2468746006F108005E
-:1030B00000604060012000F065F801203070296850
-:1030C00041B10FF2E5020FF2E9030092019302947D
-:1030D000684688477FBD1FB53D4C04F10800FFF7E7
-:1030E00030FEE8B92078D8B1694604F10800FFF74E
-:1030F00051FE012035492070C96941B10098029004
-:1031000001A888479DF804102170080003D000989A
-:10311000FFF7F3FE04E0009904F10800FFF71AFE40
-:1031200004F10800FFF70DFE28B9207818B104F16A
-:103130000800FFF79EFF1FBD2DE9F04105460E4632
-:1031400090461C46002000F01DF8214F7868A0F83A
-:103150000950C672324641460C30FEF753FE1B4AF8
-:10316000136900210020984748F2E800FFF788FF24
-:1031700079688A78D21C04F10800FEF743FEBDE8A6
-:10318000F041012010B51149124C096A20B901B172
-:1031900088470021217010BD0120207011B1BDE8C9
-:1031A0001040084710BD00000020FFF766BF000078
-:1031B00010B50146064C04F10800FFF7D5FD04F1F7
-:1031C0000800BDE81040FFF754BF0000B80400201D
-:1031D0003C05002095050020704710B50446FEF719
-:1031E00011FE204610BD10B5044610460A460146A1
-:1031F000204600F0E3F9204610BD0000002200F058
-:10320000E7B900002DE9F04106460A464FF0000CF0
-:103210004FF00F082CE05A4FBE4214BF4FF0070E7C
-:103220004FF0040E0EFA01F1294344F82310C14374
-:10323000544C236855680B40ED0348BF034323609B
-:10324000636855680B40AD0348BF034363604E4C51
-:10325000236855680B40ED0248BF03432360636851
-:103260000B4051688D0248BF034363600CF1010CB1
-:10327000106830FA0CF172D0012303FA0CF31840F5
-:10328000F4D05468022C18BF122C4FEA8C010ED1D6
-:103290004FEADC0406EB840401F01C0E256A08FAF0
-:1032A0000EF7BD43176907FA0EF73D4325624FEA53
-:1032B0004C0403253768A540ED4305EA070E17794E
-:1032C00007F00307A74047EA0E0737605768012F4A
-:1032D00018BF022F03D0112F18BF122F11D1B768BA
-:1032E00005EA070ED768A74047EA0E07B760776878
-:1032F00027EA03035768C7F3001707FA0CF73B43A5
-:103300007360F3681D40936803FA04F42C43F4607F
-:103310005468E300AAD51D4C4FEA9C0354F823706F
-:1033200001F00C0108FA01F5B6F1904F27EA050506
-:1033300008BF4FF0000E11D0154FBE4208BF4FF02E
-:10334000010E0BD0134FBE4208BF4FF0020E05D046
-:10335000114FBE427FF45FAF4FF0030E62E7BDE84E
-:10336000F0810AB181617047816270470B4A13682E
-:1033700003421CBF1060FFF786BE704700000000CC
-:10338000001000488008005800080058080001405C
-:103390000004004800080048000C00480C080058D1
-:1033A000C0680840884201D1012070470020704762
-:1033B000C0690840884201D1012070470020704751
-:1033C00010B5614C02212046FFF7F2FF38B160686A
-:1033D000C043810703D5FFF766FD022018E00121F5
-:1033E0002046FFF7E5FF38B16068C043C10703D549
-:1033F000FFF71FFD01200BE008212046FFF7D8FF53
-:1034000038B16068C043010703D5FFF7A0FD08206D
-:10341000A06010BD10B54C4C00F033F818B96068CE
-:10342000C043810306D400F02CF830B96068C04373
-:10343000810302D5BDE8104064E0082100F022F8C5
-:1034400070B96068C04301030AD560683F4940F421
-:1034500000206060086880474FF40022A26010BD21
-:10346000202100F00FF858B96068C043810207D5E9
-:10347000606840F400106060BDE81040FFF7ECBCED
-:1034800010BD022120468BE740BF20BF30480168B5
-:1034900041F400410160704780B52E48016841F455
-:1034A00080110160006800F48010009000982648A8
-:1034B000016841F001010160026842F4803202605B
-:1034C0002C20FEF728FABDE802402D20FEF723BA93
-:1034D0002148016849084900016070471F494FF4BD
-:1034E0008030086070471C48016821F002010160CB
-:1034F000704719484FF400314160026822F40032ED
-:10350000026070471448016841F400310160FFF720
-:10351000C4BC38B504460C4D08212846FFF740FFCF
-:1035200030B10A480460696821F40021696031BD46
-:10353000A0474FF40020A86031BD0748016821F082
-:103540000801016070470000000C00589005002041
-:103550000C04005850000058040C0058080C005887
-:10356000DFF80C00FFE7016841F4806101607047FB
-:1035700004040058032010B5FEF7A3F90F2000F053
-:1035800041F80024002814BF012400F00BF8204665
-:1035900010BD0348FFE7016841F001010160704779
-:1035A000042004E0704700000249034A0160026100
-:1035B000704700BF5F2E0008872E00084018491C86
-:1035C0001CBFB1F1010100F8012DF9D170470000D5
-:1035D00000B500BF130096469446103928BFA0E8F6
-:1035E0000C50FAD85FEA417C28BF0CC048BF40F8B5
-:1035F000042BC90728BF20F8022B48BF00F8012B75
-:1036000000BD000070B50F4E0446B0680025A8B19B
-:1036100000F05FF8B2684FF47A71B1FBF2F2B0FBE0
-:10362000F2F0FEF792F948B9102C07D20022214699
-:103630004FF0FF30FEF752F9746000E00125284694
-:1036400070BD00BF2C0000204FF0B040006800F0BB
-:10365000F000B02888BFB020704738B54FF0B044B4
-:10366000244DA16811F00C0106D1FFF7EDFFC0F366
-:10367000031055F8200032BD04291F4A05D008293F
-:103680001E4804D12168C90222D5104632BDE16826
-:1036900001F00301022904D0032904D12168C902E1
-:1036A00007D5104605E0FFF7CFFFC0F3031055F82C
-:1036B0002000E168E268E368C1F306214843C2F3F1
-:1036C0000211491C5B0FB0FBF1F05B1CB0FBF3F087
-:1036D00032BD80B5FFF7C1FF0549FFE7084A096819
-:1036E000C1F3031152F82110B0FBF1F002BD00004C
-:1036F00008000058A03F00080024F4000048E8013A
-:10370000603F0008DFF870130A68030903F47F23A1
-:1037100000019A4300F47F2000F088B9DFF85823B5
-:103720001368010C23EA014343EA00431360704726
-:103730002DE9F843054600242878DFF83C6341066C
-:10374000A0464FF0B0472DD5286B70B1B0F5800F73
-:1037500006D0B0F5000F18BFB0F5400F17D01FE02E
-:10376000F96841F48031F960F3E0386820F0806056
-:10377000386000F087F981463868000140F1D68052
-:1037800000F080F9A0EB09000228F5D90324DDE060
-:1037900000F078F9A0EB0900022840F2CF80F5E7AD
-:1037A0000124A0462868010531D5B06800F44078AE
-:1037B000286C80452AD000F06BF9B8F1000FB16891
-:1037C00005D1286C21F440710143B1601EE0B0685E
-:1037D00040F48030B06021F44071B06820F4803053
-:1037E000B060286C0143B160B068C0070ED500F02E
-:1037F00049F98046B068800708D400F043F9A0EB8F
-:10380000080041F289318842F4D30324A046287885
-:10381000C10705D53268A869920840EA8202326081
-:103820002978880705D53168E86921F440610143AA
-:1038300031602978C80644BFA86AFFF76FFF28786F
-:10384000810644BFE86AFFF769FF2878410744BF53
-:10385000286AFFF757FF2878010744BF686AFFF717
-:1038600051FF2868C1051ED53268686B22F040629E
-:1038700002433260696BB1F1006F00F0C9F8686B08
-:10388000B0F1806F0FD1396821F0806100F0CBF882
-:1038900004463868000163D500F0F4F8001B0228E4
-:1038A000F7D94FF0030870E000F0ECF8001B022895
-:1038B00064D9F6E7316821F04041316020F0805052
-:1038C000326822F0406210433060A86BB0F1C05FF4
-:1038D00000F09EF82868410576D53268E86B22F042
-:1038E000405202433260E96BB1F1005F03D1F868E6
-:1038F00040F48030F860E86BB0F1805F64D13968E3
-:1039000021F0806100F08FF80446386800014CD542
-:1039100000F0B8F8001B0228F7D94FF0030853E075
-:1039200000F0B0F8001B022847D9F6E700F067F86E
-:10393000A86821F4781100F071F881463868000118
-:103940007FF526AF3969686901433961002C7FF43E
-:1039500028AF3168286B21F440010143316021E731
-:103960003969686821F4FE4141EA00213961396909
-:10397000E86821F0606100F051F804463868000101
-:1039800092D5396968690143396129688805A1D5EB
-:10399000A86BB0F1804F1CBFB0F1004F002889D157
-:1039A000316821F0404108438EE700F028F828698B
-:1039B00021F0604100F032F8044638680001AFD5CC
-:1039C00039696869014339612968C80405D5F16816
-:1039D000686C21F440410143F160296888040BD5EB
-:1039E000796AE86C21F0300101437962796AA86C48
-:1039F000890840EA810179624046BDE8F28338696E
-:103A0000696820F4FE4040EA012038613969704756
-:103A100003D1F86840F08070F86070470143396165
-:103A2000396841F08061396000F02CB810430860BB
-:103A3000704710B511490A6842F080720A600B683D
-:103A400023F080730B600468416882680C4B0C4360
-:103A5000C168144302690C4344EA02445C6019687B
-:103A6000406921F47C5141EA00211960196841F054
-:103A70006001196010BD000088000058380000582F
-:103A80000060004001480068704700BF2C00002023
-:103A90000248016841F480710160704700040058D9
-:103AA00018B59BB0FFF766FD574CE06B40010ED593
-:103AB000E06BC0000BD4FFF7EBFFFFF7E9FFA06B53
-:103AC00040F48030A063A06B20F48030A06300F04D
-:103AD00055F807A85021FFF791FB68461821FFF71A
-:103AE0008DFB4A480168226C42F001022264206C7E
-:103AF0008107FCD54FF4807200210792149107A82A
-:103B0000FFF716FE206840F08070206000222168D8
-:103B100001F0807106914FF00053069900924BF628
-:103B20007F312222039104920021202201930291ED
-:103B300005926846FFF77DFFFFF7AAFFFFF7A8FF92
-:103B4000A06B40F00100A063A06B8007FCD50022B1
-:103B5000E16B2F4821F4404141F48041E163016869
-:103B60000260036903F05003036100F028F8FFF7D7
-:103B700011FA4FF0FF30FEF767FAFAE7254881B0F7
-:103B8000016841F4801101603F21006800F4801059
-:103B900000900098204841604161016841F47C1127
-:103BA0000160026942F47C120261016841F03F0148
-:103BB0000160026942F03F02026101B0704710B536
-:103BC000FFF766FFFFF764FF1448154C016821F406
-:103BD000407141F4807101600F21026842F400429B
-:103BE000026047F6FF720F488160C260046000F017
-:103BF0001BF8CA20606253216162FF21A068C008DF
-:103C0000C000A060616210BD5800005894140058B4
-:103C10008008005850000058040C005890000058CC
-:103C2000002800409404002070B5040049D094F8A6
-:103C3000210028B9002184F820102046C046C04643
-:103C400000F04EF853202168486200F052F8FF253A
-:103C500010B100F03FF834E02168DFF8AC008A686A
-:103C600002408A602268936866682169A0690E43F1
-:103C70000643334393602068E1680161206801696D
-:103C8000A26841EA024101612068C16821F0800117
-:103C9000C1602068C16C89088900C1642168CA6C50
-:103CA000E369606903431A43CA642168886881062E
-:103CB00009D400F01CF830B120684562042100F0FE
-:103CC0001DF8012070BD20684562012184F8211093
-:103CD000002070BD20684562042184F821107047DF
-:103CE000022084F82100CA212268516270472046D0
-:103CF0000CE0204623E02068C0F8248084F82110DE
-:103D0000002084F820007047BFFF8FFF38B50446BD
-:103D10002068C16821F0A001C160FFF7B3FE05462D
-:103D20002068C168880608D4FFF7ACFE401B40F24B
-:103D3000E9318842F4D3032032BD002032BD38B5CA
-:103D400004462068C1684A0612D44FF0FF31C160B2
-:103D5000FFF798FE05462068C168480608D4FFF7BB
-:103D600091FE401B40F2E9318842F4D3032032BD7A
-:103D7000002032BD00EB81003D4AD0F88010914216
-:103D800001D0012070470020704742F4806240F863
-:103D90002120704737481F2181610268D208D20074
-:103DA00042F0030202603448016841F004010160FE
-:103DB00030BF7047704710B5304C00F048F800280D
-:103DC000FBD1042100F044F828B92D480068010413
-:103DD00003D500F03FF800F057F8002203212046F9
-:103DE000FFF7D3FF23480168C908C90041F0020169
-:103DF00001602148016841F00401016030BF10BD3D
-:103E000010B51E4C00F026F800F021F80028FBD178
-:103E10004FF0B040816801F00C01042911D1016814
-:103E200041F48031016001688903FCD58268920801
-:103E3000920042F002028260816801F00C010829C0
-:103E4000FAD12046BDE81040002203219DE703215E
-:103E500020468FE700220421204696E780B500F037
-:103E60002DF80548016821F00401016030BF01BD53
-:103E7000000400800004005810ED00E00014005819
-:103E80008804005800F022B84FF0B040016841F4B7
-:103E90008071016001684905FCD582689208920032
-:103EA00042F001028260416A8908890041628168AA
-:103EB00001F00C010429FAD17047000002480168A2
-:103EC00021F002010160704710E000E00248016843
-:103ED00041F002010160704710E000E080B51C482D
-:103EE000016841F4700101600020FEF7CDFD48B18A
-:103EF00080791849184A0A600B6823F47C5343EA16
-:103F000000230B604FF0B040016841F48031016044
-:103F100012490A68D208D20042F001020A600A6817
-:103F200002F00702012AFAD101688903FCD58268F0
-:103F30009208920042F002028260816801F00C0156
-:103F40000829FAD1016849084900016001BD000053
-:103F500088ED00E09C000058FECAFECA00400058F0
-:103F60000100000003000000050000000100000047
-:103F700001000000060000000A0000002000000010
-:103F80000200000004000000080000001000000013
-:103F9000400000008000000000010000000200005E
-:103FA000A0860100400D0300801A060000350C00B9
-:103FB00040420F0080841E0000093D0000127A007C
-:103FC0000024F40000366E010048E801006CDC02B9
-:103FD00000000000000000000000000000000000E1
-:103FE00030B5016884684218416802EB5103C90783
-:103FF0000BD54C4409E012F9011B12F8015B0029B2
-:1040000004F8015B05D5491CF9D19A42F3D10C3073
-:1040100030BD491EF1D5F8E70000000000000000A7
-:104020000000000000000000000000004400080044
-:10403000400508013A799C00F4010000FFFFFFFFF2
-:1040400048010100000000007047FEE7704770471C
-:10405000704700F011B84FF48060FFF787B900E0B7
-:1040600000BF0148FCF76EB850000020FDF78CBA85
-:10407000FFF7D0B9FFF7A4B902490A688868821827
-:104080000A6070472C00002080B500F015F802008F
-:104090000023DB431068984204D011000220ABBE1D
-:1040A000002010605068984204D0111D0220ABBE61
-:1040B0000020506001BD0000014870470000000072
-:1040C0004800002010B5074979441831064C7C445B
-:1040D000163404E00A68081D114488470146A142CD
-:1040E000F8D110BD2C000000500000004EF68851A1
-:1040F000CEF20001086840F470000860BFF34F8FF3
-:10410000BFF36F8F4FF00070E1EE100A70470000B0
-:104110007BC6FFFF4805000050000020800800001B
-:104120002400032000000000B9FEFFFF740100001E
-:104130003C000000040000200120C046002801D0FF
-:10414000FFF7C0FFAFF300800020AFF30080FFF760
-:10415000A7FC00F000F800F001B800000746384660
-:1041600000F002F8FBE7000080B5FFF78DFF024A80
-:1041700011001820ABBEFBE7260002005D3E0008E0
-:10418000853E0008B73D0008013E0008953D000847
-:10419000B53D00080148804701480047DD3E000862
-:1041A000A5410008AFF30080FFF7A0FFFFF7C4FFB1
-:1041B000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF33
-:1041C000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF23
-:1041D000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF13
-:1041E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF03
-:1041F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF3
-:10420000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFE2
-:10421000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFD2
-:10422000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFC2
-:10423000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFB2
-:10424000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA2
-:10425000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF92
-:10426000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF82
-:10427000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF72
-:10428000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF62
-:10429000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF52
-:1042A000EC00F8FFF0000010FD000001FA000848E3
-:0E42B0000004004800040048FD000048F8FF2C
-:04000005080041A509
+:1003B00095F82802012801D1022032BD012285F8DA
+:1003C0002822286800F0C8FB24B9286805F50C71BC
+:1003D0000020C046002085F8280232BD1CB5044626
+:1003E00001F00F0362689A4201D2012016BD00F0AD
+:1003F0001AF847BF2830012200F59470002201F05E
+:100400000701427000228270017094F828120129BD
+:1004100001D1022016BD00F00CF800F0B6FB002060
+:1004200084F8280216BD01F0070004EB40100A060C
+:100430007047012284F828220146206870472DE980
+:10044000F84F00F59475064627E001880AEA010195
+:1004500041F40041018006F124043068B0F85010E6
+:10046000227901EBC201401800F202400088A16924
+:10047000C0F3090020620844A0610021304600F06A
+:1004800023F9217849B1E06938B92178306841F021
+:100490008001A0F84C1000212170306800F1440167
+:1004A0000A88130440F1E9800A8812F00F0440F62C
+:1004B0008F7748F60F7A59D1D206C6D50288130530
+:1004C00011D5898900F0E2F8EA88C3F30903EB61EA
+:1004D00006F50C7100F0B0FB306800F0D1F8304642
+:1004E00000F0E4F8D9E71104D7D500F0C9F8306876
+:1004F000B0F8501000F0CAF8C3F30903002BEB6109
+:100500001CBF696900290AD0EA8800F095FB686978
+:10051000E969084468610021304600F0CDF8306890
+:10052000B0F850104118286901F2064120B9088836
+:1005300048F2FF32104009E03E2805D24208C007C9
+:1005400048BF521C900203E04009800240F4004082
+:1005500008804BF68F7230680188114081F4405159
+:1005600041F4004141F08001018096E730F8248099
+:100570005FEA084106EB441957D530F824100F40C4
+:1005800047F0800720F8247009F594773068397BAC
+:1005900071B9B0F85030397803EBC103C21800F0DC
+:1005A0007DF82DD0FA8879695B4600F045FB27E09D
+:1005B00039780B4630F823305A04B0F8503003EB4A
+:1005C000C10107D5421802F2024200F069F80AD0D0
+:1005D0003A8904E0421800F061F804D07A895B4659
+:1005E000796900F029FB3168387831F8202048F625
+:1005F0008F731A4042F4004242F0C00221F82020DA
+:10060000F9695944F961796901EB0B027A61BB69B7
+:1006100013B139698B4504D23978304600F04CF873
+:1006200003E039783046FFF782FE5FEA086020D5A4
+:10063000316831F824200AEA020242F4004209F14A
+:10064000280021F8242032680178B2F8503003EBFA
+:10065000C103D21802F2024212884369C2F30902AE
+:10066000C2611A4483694261002B304602D100F016
+:100670002BF812E7FFF767FE0FE70020BDE8F28FC7
+:1006800001880F4047F08007078070472A7801EB08
+:10069000C201411801F206410B88704702F206427E
+:1006A0001188C1F3090BBBF1000F704700F50C7105
+:1006B000D0F8700200F0E3BA00EB4112D0F87002FB
+:1006C000D2F83C2100F005BB00EB4112D0F87002DB
+:1006D000D26B00F03DBBD0F8700200F0CBBB10B580
+:1006E0000446D4F8700200F088FBD4F87002BDE82C
+:1006F0001040012100F0AABBD0F8700200F0A9BBA5
+:10070000D0F8700200F0ADBB10B51C461346D0F80F
+:10071000C0022246FFF7E1FD002010BD80B5D0F8F1
+:10072000C002FFF728FE002002BD80B5D0F8C0024D
+:10073000FFF754FE002002BD81B0D0F8C00201F0E6
+:100740007F0200EB421009064CBF90F82A0090F897
+:100750002A0101B0704780B5D0F8C002FFF7AEFDA6
+:10076000002002BD80B5D0F8C002FFF7ECFD0020EC
+:1007700002BD80B5D0F8C002FFF7D9FD002002BD50
+:100780002DE9F8470B4648F68F111D7802460020E8
+:1007900032F825600E40D97803290CD8DFE801F043
+:1007A00002080C0546F4007606E046F4C06603E055
+:1007B00046F4806600E0012048F28004264322F8D7
+:1007C000256048F68F7519780E4632F826702F404E
+:1007D0003943214322F826104BF68F76197B93F884
+:1007E000009000294CF2800748F6BF7C48F2C00E0A
+:1007F00067D1B3F806A04FF6FE7101EA0A0A5978EC
+:100800000029B2F8501011441ED001EBC90101F5C6
+:100810008061A1F800A0197832F82160760606D52B
+:1008200032F8216035404EEA050522F8215019784A
+:10083000DB78012B32F821300CEA03030EBF1C4396
+:1008400083F020031C43CAE001EBC90909F2044903
+:10085000A9F800A0B2F8501002EB010C19780CEBCB
+:10086000C10C19690CF2064C31B9BCF800E048F231
+:10087000FF3101EA0E010CE03E2908D24FEA510E89
+:10088000C90748BF0EF1010E4FEA8E2E03E0490959
+:10089000890241F4004EACF800E0197832F821C02A
+:1008A0005FEA4C4C06D532F821C005EA0C053D4301
+:1008B00022F82150197832F821301E4086F4405633
+:1008C0008CE032F82910294041F4014141F08001C7
+:1008D00022F82910B2F85010B3F808A002EB010971
+:1008E000197809EBC10101F580694FF6FE7101EA43
+:1008F0000A01A9F80010B2F85010B3F80A9002EB00
+:100900000108197808EBC10808F204484FF6FE7197
+:1009100001EA0901A8F80010597893F8008000292D
+:1009200032F828102BD1490405D532F82810294077
+:100930000F4322F82870197832F821707F0606D507
+:1009400032F821702F404EEA070722F821701978FB
+:1009500032F821703D404EEA050522F82150197801
+:1009600032F821502E4086F44056264322F821606A
+:10097000197832F821300CEA03031C432FE04904B4
+:1009800005D532F828102940394322F82810197863
+:1009900032F821805FEA486807D532F8218005EAFD
+:1009A00008084EEA080E22F821E0197832F821E012
+:1009B00005EA0E053D4322F82150DD781978012D16
+:1009C00032F821500CEA050518BF85F020052543B3
+:1009D00022F82150197832F821301E40344322F891
+:1009E0002140BDE8F287F8B50E46054672783469B5
+:1009F000B069012A48F2800748D1844232BF001B07
+:100A000004460020B061307B40B9F28800F0A0F8C5
+:100A100000F097F800F2024004802EE03078C10028
+:100A200035F820004206B5F85000284405D50918CD
+:100A300001F206410C80728904E0091801F20241BA
+:100A40000C80328900F084F8707848F68F7140B9D4
+:100A5000307835F82020114041F4004141F0C001C8
+:100A600009E0012809D1307835F82020114041F4FF
+:100A7000404141F0800125F82010317835F82120DF
+:100A800048F6BF70024082F030024EE0844232BF2E
+:100A9000001B04460020B0616009317B83020029FD
+:100AA00043F4004304F001004FEA540C18D0AAB9F3
+:100AB00000F040F801F202413CB9B1F800E0202218
+:100AC00062F38F2EA1F800E008E03E2C05D26246CA
+:100AD00000B1521C92020A8000E00B807178A9B923
+:100AE00000F028F801F206412CB90A88202060F3B2
+:100AF0008F220A8011E03E2C06D208B10CF1010CC5
+:100B00004FEA8C20088008E00B8006E0012904D120
+:100B100000F017F800F2064004804BF68F70317831
+:100B200035F82120024082F44052174325F8217005
+:100B30000020F2BDB5F850103278691801EBC201FF
+:100B40007047B5F850003178281800EBC1007047A5
+:100B50007169A3B228465EE018B50A78497830F882
+:100B60002240002948F2800305D048F6BF710C40AE
+:100B700084F0100404E04BF68F710C4084F4805430
+:100B8000234320F82230002012BD30B50A7B002A12
+:100B900036D14A780C78002A30F8242048F28003B5
+:100BA00048F68F7516D0520608D530F82420154027
+:100BB00045F4004545F0C00520F82450CA78012AC4
+:100BC0001ED00A7830F8224048F6BF710C4084F0FD
+:100BD000200412E0520408D530F82420154045F4D2
+:100BE000404545F0800520F824500A7830F822402E
+:100BF0004BF68F710C4084F44054234320F822308C
+:100C0000002030BD11B98021A0F84C1000207047A1
+:100C1000B0F84400704710B580185B1C00F5806088
+:100C20005B0807E00A784C7842EA0422891C20F825
+:100C3000022B5B1EF6D110BD10B5821802F5806242
+:100C4000580806E032F8024B0C70240A4C70891CDC
+:100C5000401EF7D1D80744BF1088087010BD10B5EA
+:100C6000D0F8B42202241AB11268904700B90024C7
+:100C7000204610BD80B5D0F8B422536806E138B5DF
+:100C8000044604F52A75284600F006FB04F5257095
+:100C900001210160418B4160017D11F01F0003D0F3
+:100CA00002280BD005D30EE02946204600F0F2F8CA
+:100CB0000DE02946204600F065F908E02946204667
+:100CC00000F085F903E001F0800100F03EF800201B
+:100CD00032BD38B5044610460A0004F5257328D104
+:100CE000196803291DD104F5B0714A680D68AA423C
+:100CF0000BD2AD1A0D60954238BF2A46014692B21A
+:100D0000204600F0F8FA002032BD186A016921B1CE
+:100D1000187A032804BF20468847204600F0F3FADB
+:100D2000F1E70529EFD100201860002100F00DF84F
+:100D3000E9E7186A82692AB1187A032802D12046A5
+:100D40009047E0E7022032BD80212046FFF7E6BC55
+:100D500038B504460800134604F5257542D12868C5
+:100D6000022832D1226A616A914207D2521A226263
+:100D7000194692B2204600F0B6FA11E0E269B2FBE1
+:100D8000F1F001FB102090B98A4210D368688242CA
+:100D90000DD200220021204600F0A5FA0020686054
+:100DA0000023002200212046FFF7E3FC13E0286A1D
+:100DB000C16821B1287A032804BF20468847FFF77D
+:100DC000C3FF204600F0A6FA05E0042818BF00285B
+:100DD00001D1FFF7B9FF287B012804BF0021297347
+:100DE000002032BD286A42692AB1287A032802D13C
+:100DF00020469047F4E7022032BD10B50446402358
+:100E000000220021FFF780FC04F5AC700121016095
+:100E100040234021C160002280212046FFF774FC5E
+:100E20000120A06104F5257240206062012010724B
+:100E30000020106060601061506A28B1126A616819
+:100E40005368C9B220469847002010BD01740020A5
+:100E5000704700F52770017841700421017000206F
+:100E6000704700F527700178042904BF42780270AA
+:100E70000020704780B500F527710A78032A03D156
+:100E80008969C96901B18847002002BD98470020DF
+:100E900002BD00007CB50446087810F0600004F53F
+:100EA000277508D0202818BF40282DD1AA6993683B
+:100EB0002046984764E04878092825D8DFE800F004
+:100EC0003D552450240905242B27204600F014F911
+:100ED00056E08A88002A04BFC888002814D14E88AA
+:100EE000802E11D22878032806F07F060CD0AE7031
+:100EF00031462046FFF72FFC00F0FBF8002E14BF10
+:100F00000220012028703BE000F07CF938E0204608
+:100F100000F07AF934E0C8880128F5D12A78521E09
+:100F2000012A04D9921EEFD10122211D14E00020D4
+:100F3000A060012204F108010EE02878401E02287A
+:100F4000E2D8C8880228DFD1A868012100B10321B6
+:100F5000E160022204F10C01204600F0BCF90FE030
+:100F6000488801280CD1012107E02878401E02287A
+:100F7000CAD84888012803D10021A96000F0B9F837
+:100F8000002076BD38B50D460446287810F0600084
+:100F90001CBF2028402816D104F527721178491E5D
+:100FA000022910D8287902280DDA92699368294617
+:100FB000204698470146E888002808BF002904D148
+:100FC00000F097F801E000F01CF9002032BD7CB57C
+:100FD0000446084604F527730278017912F060058B
+:100FE00009D0202D18BF402D6BD19A699368014616
+:100FF0002046984768E002F06002202A07D19A69EB
+:1010000093680146204602B0BDE870401847427818
+:101010008AB3012A12D0032A53D11A78022A13D094
+:10102000032A4ED142881ABB002918BF80291FD03D
+:10103000C088E8B92046FFF771FB19E01A78022A48
+:1010400002D0032A0CD03CE0002918BF802938D0F8
+:101050002046FFF763FB80212046FFF75FFB33E06C
+:10106000408888BB11F07F0F1CBF2046FFF75DFB57
+:1010700000F03FF828E0142201F07F051B7855436B
+:101080006619022B06F5AA7502D0032B10D018E0C2
+:10109000002918BF802914D1080648BF06F114059D
+:1010A0000020286002222946204600F014F90BE0B7
+:1010B00001F00F0312FB03F20B06224406D59269DE
+:1010C00072B9014600F09EF8002076BDD2F8582192
+:1010D000002AF6D0002918BF802904D10020E0E7BB
+:1010E00006F11405F6E72046FFF726FB00B10120C4
+:1010F000D7E7204600F007B938B5044600200D4672
+:10110000ADF8000004F52C726888010A012908D0A6
+:10111000022923D003292ED006295FD0072964D0C5
+:101120006CE01268207C136869469847BDF800108F
+:1011300079B1E98879B1BDF80010EA88914288BF99
+:101140001146ADF800100146BDF80020204600F021
+:10115000C2F8E88808B9FFF7CCFF31BD207C5168A0
+:101160000028684604D1896A884702214170DDE77A
+:10117000C96A8847F9E7C0B205283FD8DFE800F020
+:10118000030B1219202710684268002A36D0207CF1
+:1011900069469047CAE7106882687AB3207C69463E
+:1011A0009047C3E71068C26842B3207C6946904705
+:1011B000BCE7106802690AB3207C69469047B5E72E
+:1011C00010684269D2B1207C69469047AEE710684A
+:1011D00082699AB1207C69469047A7E7207C68B96C
+:1011E00051684A6B68469047A0E7207C30B9516847
+:1011F0000A6B684690470722427097E700F001F8B3
+:1012000031BD294620465BE07CB50D460446214EA3
+:10121000688830703178084602282DDA94F89C22CC
+:10122000022A02D0032A0FD02BE041B160600320D4
+:1012300084F89C022046FFF712FD02281CD02046AD
+:10124000BDE8764000F05FB841B9022084F89C0206
+:10125000002060602046FFF70DFDF0E761688842DE
+:10126000EDD0C9B22046FFF705FD31786160204618
+:10127000FFF7F5FC0228E2D129462046BDE87C4074
+:101280001EE0FFF7BEFF31782046BDE87C40FFF747
+:10129000F1BC0000940500200A7802704A78427080
+:1012A000CB788A7802EB032242804B790A7902EBF1
+:1012B000032282808A79C97902EB0122C2807047B9
+:1012C00010B504468021FFF729FA2046BDE81040FA
+:1012D0000021FFF723BA80B513460222C0F89422FA
+:1012E000C361036201E080B513460A460021FFF79F
+:1012F00039FA002002BD80B513460A460021FFF7E7
+:1013000038FA002002BD80B50421C0F894120023F1
+:101310000022EBE780B50521C0F8941200230022DB
+:10132000ECE70000DFF83C150A6892B200E00246E4
+:10133000086880B28242FAD170472DE9FC41044628
+:101340001825DFF82485DFF82465684308EB0007DB
+:101350003078062808D131787170347078754FF084
+:10136000FF307060002039E000F077F8B9680918A4
+:10137000B96008F10803B96832786A439A58914213
+:10138000327813D308F1150315FB02FC13F80C3067
+:10139000062B25D008F108066B43F358994222BF6B
+:1013A00008F115036A439A5CEED219E011463378CE
+:1013B00069439A420BD008F1140308F1150C5B5CE9
+:1013C00015FB03F50CF805407A753B7500E07A755E
+:1013D00008F114025454317871703470BDE8F6810C
+:1013E0001146694308F115035B5C062B04D008F134
+:1013F000140615FB03F574557B753A7508F1150253
+:101400005454EBE7F8B5DFF86434DFF85C541E7829
+:10141000182402466243B0422A4404D11878587016
+:10142000507D18700FE0167D507D92F815C005F1C3
+:1014300015076643062807F806C004D0167D143544
+:1014400014FB00F42E55012010731878062802BFF3
+:1014500000294FF0FF315960F1BD10B5DFF80C44A1
+:10146000606810F1010F0FD0FFF75CFF6168DFF8D3
+:101470000024814261683CBF5388C918081A51781A
+:1014800048431178C84000E0002080B210BD2DE92B
+:10149000F84FDFF8DC53DFF8DCB3D5F80880D8F874
+:1014A0000000DBF800104A0500F090F9DFF8BC639B
+:1014B000DFF8B4A321F4806181604FF0180934781B
+:1014C0000AF1080019FB04F14758FFF7C6FF8742ED
+:1014D00017D200270121B170062C3DD019FB04F46E
+:1014E0000AF108010AF108020959814223BF0AF1F1
+:1014F00008010959091A002111510AEB04014C7D18
+:10150000EAE7A9884118B94202D2AF880021E2E790
+:101510003F1ADFE7022802DA2878012800D07F1E70
+:10152000D8F80000C1684A07FAD500F055F9DBF891
+:101530000C00000CBFB247EA0047CBF80C70FFF775
+:10154000F1FE7060A8680068816841F48061816084
+:10155000AFF30080BDE8F18FB8B20028DAD1FFF711
+:10156000E1FE70600320BDE8F24F00F0F6B92DE90E
+:10157000F843EFF3108872B6BD4DBB4BA868016805
+:10158000CA224A6253204862B84A886820F48060C0
+:10159000886018201678374647431F44387B022856
+:1015A00026D13C68D7F810909078F0B17A7B012A68
+:1015B0000AD101213046FFF725FF88F310887968AA
+:1015C000304600F016F904E088F31088304600F049
+:1015D000C1F8A8680068CA214162224653214162CD
+:1015E0004846314600F050F90BE0FFF750FF06E0A7
+:1015F000C8684207FCD500F07EF89F49086088F370
+:101600001088FF21A86802685162BDE8F183F8B52F
+:10161000974CA160CA2209684A6253224A62954ADD
+:10162000136843F020031360136803F00703C3F14A
+:101630000403237095682D0C05F07F056D1C657003
+:10164000EDB29268C2F30E02521C628092B2521E38
+:101650006A43A2F5A072DA404FF6FF739A422CBF9C
+:10166000A380A280854A136843F400231360844B4F
+:101670001D6845F400251D6048BB7C487A4E012357
+:10168000837018254FF0FF33436000235FFA83FC1B
+:1016900006F10C0715FB0CFC4FF0000E07F80CE0F0
+:1016A0005B1CDFB2062FF1DB06230370886820F491
+:1016B0008060886000F01FF8D060032000F058F9C7
+:1016C000A1680868826842F48042826005E0C868C8
+:1016D000410544BF032000F040F9A1680A68FF20DB
+:1016E000506200220321032000F0ECF8BDE8F24034
+:1016F000032000F004B9C86800F0800060F4906036
+:10170000C8604FF400207047F0B504460025EFF3A1
+:10171000108672B61827DFF850C10CF10C0007FBD9
+:1017200005FE10F80E0010B16D1C062DF5DB062D20
+:101730000CD06F430CEB07000127077386F310886A
+:101740000461427303600D700020F0BD86F31088C1
+:101750000120F0BDF8B50746EFF3108472B6032000
+:1017600000F0D8F8424DAE683068CA2141623A466E
+:1017700053214162182043494243895C02291BD10D
+:1017800000213846FFF73EFE3848017806290ED181
+:10179000306838490A68530500F018F821F4806170
+:1017A0008160C1684A07FCD500F016F804E0407873
+:1017B000884218BFFFF76BFEA9680A68FF205062D5
+:1017C000032000F09CF884F31088F1BD02D5C168B5
+:1017D0004A07FCD481687047C16801F0800161F458
+:1017E0009061C1604FF4002023490860032000F09D
+:1017F000BFB82DE9F04180460F46424618201A49ED
+:1018000042438C18207B022804BF4046FFF7A2FF0A
+:10181000EFF3108572B6032000F07CF8144EB06828
+:101820000068CA2141625321416202202073A760EF
+:1018300067604046FFF781FD0C490A78497891427C
+:1018400002D0FFF724FE02E0A168081AA060FF2082
+:10185000B1680A685062032000F051F885F31088DF
+:10186000BDE8F081282800405803002088050020AA
+:101870004C050020082800400C08005800080058BB
+:10188000800800586403002010470000090102008E
+:1018900081B002D43C48815405E03C4802F00F027C
+:1018A000104400F8041C01B07047394A13684FF621
+:1018B000FF0100020B4000F4E06018433549084383
+:1018C0001060704738B5324B1C68C4F30223C3F173
+:1018D0000704052C28BF04241D1D072D34BF002339
+:1018E000DB1E012505FA04F4641E2140994005FA27
+:1018F00003F35B1E1A401143BDE83440C6E7010004
+:1019000007D4012200F01F01234B8A40400943F80D
+:101910002020704701000BD4012200F01F011F4B53
+:101920008A40400943F82020BFF34F8FBFF36F8FE9
+:10193000704710B5401EB0F1807F01D3012010BD6B
+:10194000174C60600F214FF0FF30FFF79FFF002220
+:10195000A26007202060002010BD010007D40122F2
+:1019600000F01F010F4B8A40400943F820207047C8
+:10197000010007D4012200F01F010B4B8A404009EF
+:1019800043F820207047000000E400E018ED00E07C
+:101990000CED00E00000FA0500E100E080E100E06D
+:1019A00010E000E000E200E080E200E010B58EB060
+:1019B00002A80FF24441DFF8AC43302200F044FAB1
+:1019C0000FF2F1300190009469460FF2D130DFF848
+:1019D000984300F07DFA0121022000F062FBDFF85D
+:1019E0008C230021202000F0F2FB02A800F06EFC06
+:1019F00000F0E3F800F072FC0FF2E5220021012074
+:101A000000F0E5FB0FF209320021022000F0DFFBBD
+:101A1000002084F89000202000F004FD00F036FD46
+:101A20000FF25D33002204F191010020FFF76CFEFC
+:101A30000EB010BDF0B5064685B07078CA4FCC4DDB
+:101A40000021052807F1900450D03E285ED0FF28E1
+:101A50000DD101202872B6F8030004283ED040F2D0
+:101A60000741884204D040F60201884214D089E040
+:101A70007079022804BFB1790029F8D1002000F064
+:101A800093FEA17801297DD1207806287AD0002103
+:101A9000022000F0A9FB75E0002000F0C3FCF07903
+:101AA000287301243089E88171892982B2896A8288
+:101AB000F389AB82308A04940090E8822C7BF88C06
+:101AC000039410250295019500F0B9FE10B1022093
+:101AD00000F060FE202000F0A5FC53E0012000F0A3
+:101AE00059FE60780A21FFF784FE4BE0B088F98C3C
+:101AF000884247D10020F8842070012028720020FD
+:101B0000688105F1080000F0DEFC3BE0F078012878
+:101B100002D0022810D035E00621B6F80500217069
+:101B2000F88400216881297205F1080000F0CBFCDF
+:101B3000F88C00F00DFF25E0727B707910BB1FE080
+:101B400073187018DB7B807BFF2B17D1072815DB00
+:101B500073181B7C012B02BF73185F7C832F0DD180
+:101B60000123A370F3792B70337A6B70737AAB70A7
+:101B7000B37AEB70F37A2B71337B6B71401C411895
+:101B80009142DDDB012005B0F0BD7749CA8C82426D
+:101B900002D191F8900070470020704780B500F0A6
+:101BA000B8FD062805D0BDE804400021012000F062
+:101BB0001BBBBDE8014000F098BC18B589B00020FF
+:101BC000ADF81A0000F082FF6A4C216811F1010F94
+:101BD0000DD0694862680170120A0B0A090C817005
+:101BE000437061680271C170120A427105E0002001
+:101BF00000F090FF08B90FF2D8100246062100202D
+:101C000000F0DBFB4EF66E50089007AA2068564C99
+:101C1000079006212E2000F0D0FB0FF2BC121021FD
+:101C2000182000F0CAFB0FF2C0121021082000F0AB
+:101C3000C4FB1821012000F0E7FB00F042FE0DF18B
+:101C4000160006A90190009105AB0722002105208E
+:101C500000F0BEFF0FF27010BDF8181000900723BF
+:101C6000BDF81400002200F043FE0DF11A000090B0
+:101C70000223BDF81610BDF81400002200F038FE53
+:101C80000020207000F058FF012060700020E070FC
+:101C9000082060751020A075012020753748A061CC
+:101CA0000120A0700020C1B221440871401CC1B2C3
+:101CB0001029F8DB002004900023A06961780390CC
+:101CC0000022207D0290A07D0190607D0090A07890
+:101CD00000F04BFFA07808B100F0B2FF0AB010BDD1
+:101CE000214890F89010062900D1704780B5002057
+:101CF00000F050FD4FF4487101230022084600F027
+:101D0000BAFF20B1BDE80240022000F043BD01BD92
+:101D100030B5154C94F89000062887B01FD01021DC
+:101D2000069105914FF4FA7004905021002302911E
+:101D300000200393009028254FF44871019500225C
+:101D40000B4B084600F0BCFF18B9042184F8901032
+:101D500005E0022000F01EFD002084F8900007B08E
+:101D600030BD0000A4080320C40200200F1F00089B
+:101D7000FC0400208075FF1F5805002007B20100F9
+:101D8000012000F011BD0021202000F02DBA01201B
+:101D900000F04CBA012000F051BA000010B5044622
+:101DA000616801F1080000F0A9FA00B1012020707B
+:101DB00010BD000010B1012803D070473F2000F093
+:101DC00023BA3F2000F028BA53544D333257420013
+:101DD000AA55443322AA0000123456789ABCDEF089
+:101DE000123456789ABCDEF0FEDCBA0987654321CE
+:101DF000FEDCBA09876543210000000000000000F6
+:101E00000000000000000000000000004400080086
+:101E1000400508013A799C00F4010000FFFFFFFF34
+:101E2000480101000000000062B38B0708D0521E79
+:101E300011F8013B00F8013B00F024808B07F6D13C
+:101E4000830740F0208000BF103A07D330B4B1E8D8
+:101E50003810103AA0E83810F9D230BC530724BF2C
+:101E6000B1E80810A0E8081044BF51F8043B40F85E
+:101E7000043BD20724BF31F8022B20F8022B44BFC9
+:101E80000B7803707047121F17D35B0009D151F80C
+:101E9000043B20F8023B1B0C121F20F8023BF6D239
+:101EA0000BE051F8043B00F8013B1B0A20F8023B11
+:101EB0001B0C121F00F8013BF3D238BF121D521E3B
+:101EC00024BF11F8013B00F8013BF8D8704700002F
+:101ED0007FB50C466D4D61686D4EE86129622846FC
+:101EE00000F066FF246805F1240000604060746023
+:101EF00006F108000060406001203070296829B1B7
+:101F00000FF2551000900294684688477FBD1FB5B8
+:101F10005F4C04F1080000F058FF00BB2178F1B1DC
+:101F2000694604F1080000F079FF5848C16949B1D9
+:101F30000098029001228DF8042001A888479DF89E
+:101F4000040000E001202070207818B1009801F012
+:101F500018F804E0009904F1080000F03FFF04F1D4
+:101F6000080000F032FF28B9207818B104F1080009
+:101F7000FFF709FF1FBD2DE9F8430646002000F0DA
+:101F80005FF874883088B268DFF80081C4F3090410
+:101F900044EA8024F068A4B2C1B2204600F03CF8C4
+:101FA000002748F2E8094846FFF7F4FE08E0688891
+:101FB000A04202D1316928780870687800B1012701
+:101FC00008F1240000F001FFF0B9694608F124008F
+:101FD00000F024FF009800F10B05407A0F28E6D0AE
+:101FE000B5F80110A1420DD10098817AC81E71691F
+:101FF000C0B28842C8BF0846706102463069E91C19
+:10200000FFF712FF2878D9E73800CCD0012000F084
+:1020100017F80020BDE8F28310B513461C4A546837
+:10202000A4F80900E1720A46194604F10C00FFF712
+:10203000FBFE164A1369BDE8104000210020184736
+:102040001249096A82B008B921B101E011B1012039
+:1020500002B0084702B0704710B50146487A0F2811
+:1020600018BF0E2807D10B4800F0C2FEBDE8104093
+:102070000020FFF78CBE064C04F1080000F0B8FE0B
+:1020800004F10800BDE81040FFF77DBE68040020A1
+:102090002C0500208C0400201948002101604160BB
+:1020A000704710B500F00CF85C6819B1012904D133
+:1020B000204301E024EA0000586082F3108810BD3C
+:1020C000EFF3108272B60E4B704738B5EFF3108401
+:1020D00072B60B490B4D086820B1296888476868BB
+:1020E00080470AE0486820B1A9688847E8688047C7
+:1020F00003E0286980476869804784F3108831BD10
+:1021000060050020A04200082DE9FC47594CDFF88B
+:102110006891A5692840A0614FF0010A4FF0FF388F
+:1021200030E0491C54F831000642FAD004EBC107F4
+:10213000184079681040014208BFC7F804807E68E3
+:10214000304000F09BF860620AFA00F086437E603F
+:10215000EFF3108172B6626A20690AFA02F2D24382
+:1021600010402061022004EBC00353F8086C1640B5
+:10217000401E43F8086CF6D181F31088606A59F864
+:102180002010884763692069A2691840104207D06F
+:10219000E069216A084203D1002103EA0206C1E78F
+:1021A000C046C046EFF3108972B6216960690140EC
+:1021B000A069014201BFE169206A014200F097FF76
+:1021C00089F31088C046C046A561BDE8F38738B5DD
+:1021D0001446EFF3108572B600F050F8264941F826
+:1021E000204085F3108831BD10B5EFF3108272B630
+:1021F000204B1C6904431C6153F83140204343F8D1
+:10220000310082F3108810BDEFF3108172B6194AC5
+:10221000536923EA000005E0EFF3108172B6154A16
+:1022200053691843506181F310887047EFF31081B0
+:1022300072B6104AD3691843D061F4E72DE9F04132
+:102240000C4C626A266A2062012101FA02F803E05E
+:102250003946404600F04DFF276AE5693D42F7D018
+:10226000404600F00BF825EA0707E7612662606246
+:10227000BDE8F08104000020E803002002460020B1
+:10228000110C090404BF1020120412F07F4F04BF88
+:10229000083012020FF2180112F0704F04BF001D37
+:1022A0001201120FC0F11F00895C401A7047000034
+:1022B000040302020101010100000000000000000F
+:1022C00000F081FF9DF80E0005B000BDF8B500F1EB
+:1022D0000C026B4621214FF66640F1E723490020AE
+:1022E000087700222248027100F044B820490A7998
+:1022F00041F822000879401C0871704770B5044607
+:102300006078FF2802BFB4F8031001F47F41B1F5F3
+:10231000406F1FD10025154E317FE8B2884222D28E
+:10232000E9B256F8211020468847002808BF6D1CE6
+:10233000F2D018E0761C2979F0B288420AD2F1B2C4
+:1023400055F82110204688470100F3D002D002281A
+:1023500005D006E02046BDE87040FFF76BBB0020CB
+:1023600070BD012070BD0026014DE4E7DC040020B3
+:102370008005002080B5C046C046C046C046C04665
+:10238000C046C046C046C046C046C046C046C0461D
+:10239000C046C046C046C046C046C046C046C0460D
+:1023A000C046C046C046C046C046C046C046C046FD
+:1023B000C046BDE8014000F055BF18B50C46C7B097
+:1023C000114600228DF800208DF81C008DF81D406C
+:1023D00022460DF11E0000F046FF00F03BF83F20C2
+:1023E0000C21ADF80400ADF8061007A801210390F8
+:1023F0000691A41C049400F043F800284CBFFF2071
+:102400009DF8000048B010BD00B5C7B000F01BF843
+:102410000F2000F02AF800284CBFFF209DF8000094
+:1024200047B000BD00B5C7B00021ADF81C0000F0FA
+:1024300016F8182000F019F800284CBFFF209DF86E
+:10244000000047B000BD00228DF800208DF81C0070
+:102450008DF81D101822002101A800F00ABF8DF888
+:102460000010182201A800F004BFADF8060007A96B
+:10247000022004903F22012003910690ADF8042031
+:10248000CDF814D0002101A8FFF775BD80B50FF27B
+:10249000252200210420FFF79AFE0FF2F5120021F9
+:1024A0000820FFF794FE9C4800210180C1808170C4
+:1024B0000121C1700021017101720FF23900BDE8E4
+:1024C0000240FFF713BF0278934912B1012A03D0EB
+:1024D00070474088C88070470020C880087A08B1DB
+:1024E00000220A72002000F05FB900210820FFF7E7
+:1024F0007BBE0000F8B504466078FF2811D1864DF8
+:10250000B4F80300698940F60442801A72D0801E34
+:1025100041D0001F06D0401F00F09480401E00F004
+:10252000AA80AFE0B4F80560287A58B10846FFF7F2
+:102530002CFB297A062908BF0028F2D128724FF611
+:10254000FF7068816E81E179207A90FBF1F01429A7
+:10255000C0B2E6D1102200234FF64061DEB28642BF
+:10256000DFDAA618777A96F80AC047EA0C278F4276
+:102570000DD116F8077D96F801C047EA0C27AF8108
+:10258000B778F67847EA0627EF8108272F72921D61
+:10259000D2B25B1CE2E700F077F802BF1121E079CC
+:1025A00015286FD1227A501E20724FF642624FF6E4
+:1025B0004163207A002865D0661804F10A07707A12
+:1025C0007F5C40EA0720771F98423E787F7846EA92
+:1025D000072605D0904206D10A202872AE8202E07A
+:1025E000092028722E821531207AA0F11506267254
+:1025F000C9B2DEE700F048F801BF207A0021E27995
+:10260000012A3FD1002342F60212DEB2B6EB900F50
+:1026100038DA671804F10A0C97F80BE07E7A3F7BF2
+:102620001CF801C04EEA0727974204BF2F7A0A2FF1
+:1026300046EA0C2602D1EE820B262E72091DC9B283
+:102640005B1CE2E700F020F802BFB4F80700A98A9B
+:10265000884217D1607A022802BFA07A68700128E8
+:1026600010D1E07AA87010B900F09EF80AE00020BE
+:1026700000F090F806E000F007F803D100210420F4
+:10268000FFF7B2FD0020F2BDB4F8050081427047AB
+:1026900010B5214C2079401E8041C00F2071207A56
+:1026A00038B1218A6089E31CBDE81040022200F0A5
+:1026B000BDB910BD1CB5184C227A0120ADF8000040
+:1026C00032B3083A6089E18A042A21D8DFE802F0AF
+:1026D00003080A101A00E289A18900F053F913BD1A
+:1026E000218A00E0A18A8A1C92B200F05CF913BD35
+:1026F0006B46022200F06DF906202072022000F0E5
+:1027000053F813BD6B46022200F063F906202072D5
+:1027100013BD0148007A704714050020404981B07C
+:102720000A6802430A60096808400090009801B0F6
+:10273000704778B585B004466846142100F0A4FDC2
+:102740000CB9012004E0012C18BF022C02D1022098
+:10275000FFF7E4FF00F012F800950120019000213E
+:102760000220039000F004F800F00EF806B070BDEF
+:102770000291694656F8240000F08ABD0FF2B000BD
+:10278000284E30F81450704756F82400002229468D
+:1027900000F042BE0FF29801224B31F8101053F8AE
+:1027A0002000012200F038BE0FF284011D4B31F8E9
+:1027B000101053F82000002200F02EBEF0B585B0B6
+:1027C00004460D466846142100F05EFD0120FFF727
+:1027D000A5FF2800144E0FF260070AD137F8140045
+:1027E0000090002101910120029002210391FFF746
+:1027F000C0FF012D12D137F81400009001210B48C1
+:102800000190FFF7B5FF0FF23400045D00220F21A5
+:1028100060B2FFF757F860B2FFF771F805B0F0BD8E
+:102820004C00005838000020440000200000211017
+:1028300010000100020000000004000028002DE943
+:10284000F841C7B04FF00008ADF81C00DDF838C102
+:102850004F9E509F519D529C8DF8008007A841804B
+:10286000ADF82020ADF82230A0F808C0ADF8266001
+:1028700087818DF82A508DF82B4000F015F84FF421
+:10288000C170ADF8060007A9102004903F22012076
+:102890000391069000F00DF800284CBFFF209DF832
+:1028A000000048B0BDE8F0811822002101A800F026
+:1028B000E0BCADF80420CDF814D0002101A8FFF74A
+:1028C0005ABB00B587B000208DF8000000F07CF8FE
+:1028D00040F20110ADF806003F220120069000F002
+:1028E000EDF800284CBFFF209DF8000007B000BDA8
+:1028F00030B5C7B01C464A9B00F0C7F800258DF8DC
+:1029000000508DF82140224619460DF1220000F0BA
+:10291000AAFC00F059F83F204FF4837100F0BCF896
+:10292000A41D049400F0CCF800284CBFFF209DF8B3
+:10293000000047B030BD0023ADF81C008DF800301A
+:1029400007A8418082800021182201A800F091BCD4
+:1029500000B5C7B000F010F8FFF7F6FF0F210291A5
+:102960004FF48970022100F0A1F800284CBFFF202D
+:102970009DF8000047B000BD0021ADF81C008DF8A7
+:102980000010704700B5C7B0FFF7D5FF0F210291C7
+:1029900040F2151000F089F800284CBFFF209DF888
+:1029A000000047B000BD00B5C7B0FFF7C4FF0F215E
+:1029B000029140F2171000F078F800284CBFFF2079
+:1029C0009DF8000047B000BD1822002101A800F0CA
+:1029D00050BC18B5C7B000F011F800F045F8FFF78B
+:1029E000F3FF40F2211100F013F800F069F800281D
+:1029F0004CBFFF209DF8000048B010BD1446ADF854
+:102A00001C00002207A88DF8002041800471704747
+:102A1000ADF806103F2007A9ADF8040003910F2080
+:102A2000012102900691641D0494704718B5C7B047
+:102A300000F010F8FFF7C8FF3F2040F2231100F02C
+:102A400019F800F03DF800284CBFFF209DF8000069
+:102A500048B010BD144600228DF80020ADF81C00CF
+:102A6000ADF81E108DF82040224619460DF12100C8
+:102A700000F0F9BBADF80400ADF8061007A801217D
+:102A800003900691641D04947047ADF81C00ADF8E6
+:102A90001E108DF820207047ADF80400ADF8061028
+:102AA00007A801210390069170470621ADF80600A2
+:102AB000049107A801213F2203900691ADF804205C
+:102AC000CDF814D0002101A8FFF755BA00B587B0A2
+:102AD00000F010F8012003220690ADF80420ADF8B4
+:102AE000062000F011F800284CBFFF209DF80000E0
+:102AF00007B000BD00208DF800001822002101A8B9
+:102B000000F0B7BB03900691CDF814D0002101A8C6
+:102B1000FFF731BA01460648064AC3798B4218BF0F
+:102B2000904218BF0838F8D18B4218BF0020704778
+:102B3000F873FF1F0070FF1F00B5C7B000F00CF85E
+:102B4000852000F075F800F014F900284CBFFF2034
+:102B50009DF8000047B000BD00218DF81C008DF8E5
+:102B60000010182201A800F084BB2DE9F841C7B07D
+:102B70004FF0000800F026F80DF12300DDF844E1E5
+:102B80004E9F4F9E509D529C8DF81F30C0F800E024
+:102B90008DF800808DF820708DF821608DF822501E
+:102BA0008DF8274000F087F88620ADF8060007A9C9
+:102BB0000C2000F0DAF800284CBFFF209DF8000040
+:102BC00000F0F2B88DF81C0007A8417082707047C1
+:102BD000F8B5C8B005460E4617461C4600F023F867
+:102BE00008A8467087708DF8205000F0D8F88A2128
+:102BF000ADF80A103F20032100F0C4F8002848BFB8
+:102C0000FF200ED49DF8000058B94F994E98BDF89A
+:102C100001202280BDF803200280BDF80500088055
+:102C2000002049B0F0BD07220021684600F021BB1A
+:102C3000ADF8060007A901203F22039104907047D8
+:102C400000B587B000F013F800F035F8922000F0DE
+:102C500009F800F08EF800284CBFFF209DF8000016
+:102C600007B000BDADF806003F22012070470020EC
+:102C70008DF80000704718B5C7B000F011F800F0EB
+:102C80001AF80F2102919720062100F065F800F054
+:102C900071F800284CBFFF209DF8000048B010BD1F
+:102CA0000024ADF81C008DF8213007A84180027186
+:102CB0008DF8004070471822002101A800F0D9BA11
+:102CC0002DE9F04F0646C7B000F020F800F012F8EA
+:102CD000FFF7F1FF3F20ADF804009C2100F030F831
+:102CE00000F04AF800284CBFFF209DF8000047B0D4
+:102CF000BDE8F08F8DF82790B581ADF82AB0378206
+:102D0000ADF82E80B482ADF832A07047084619465F
+:102D1000559CDDF84091519DDDF848B1539FDDF899
+:102D20005081DDF858A1ADF81C60002307AE8DF886
+:102D30000030708032710DF12100062200F093BA4C
+:102D40000F200290ADF806101820049007A901206A
+:102D50000391069070470321ADF80600049107A87F
+:102D600001213F2203900691704704903F220120E9
+:102D700003910690ADF80420CDF814D0002101A8ED
+:102D8000FFF7F9B8ADF80800059108A807210490ED
+:102D90000791CDF818D0002102A8FFF7ECB818224F
+:102DA000002102A800F065BA48B0BDE8F08100003B
+:102DB0000249016002490161704700BF7D2E000891
+:102DC000A72E0008006040607047EFF3108172B6D4
+:102DD000026882420CBF012000201CE0EFF3108249
+:102DE00072B603680B60486001600868416023E0C8
+:102DF000EFF3108272B6086043684B604160486828
+:102E0000016019E0EFF3108172B6436802681A603E
+:102E100042680068426081F31088704710B5EFF394
+:102E2000108472B602680A600068FFE7FFF7EAFFE5
+:102E300084F3108810BD086082F31088704700008A
+:102E400000F07EBB6C486D49016001F120024260D8
+:102E500001F13002826001F13C02026201F14402A0
+:102E6000C26001F14C02026101F16802426101F1AC
+:102E70006C0282617831C16100F074BB38B50446E0
+:102E80005F4D05F11000FFF79DFF5B494868A168A1
+:102E90000160E168C160456005F11001816000F0EA
+:102EA0007DFB58482DE080B553494A6813680120DE
+:102EB000187200F079FB002002BD38B5514C504D1E
+:102EC00007E0694605F11000FFF7A8FF00982168A8
+:102ED000884705F11000FFF778FF0028F1D031BDD9
+:102EE00048484168084738B50446474D28460060C1
+:102EF00040604148C068A1680160456000F059FB2E
+:102F000042482168016061684160002032BD80B59F
+:102F10003949CA6813681020187200F050FB00206D
+:102F200002BD3549CA68394910680B68184738B579
+:102F3000364C354D06E069462846FFF76FFF00988E
+:102F4000616888472846FFF740FF0028F3D031BD6D
+:102F500038B504462E4D2846006040602D4800607C
+:102F6000406025480069A1688160E168C160056131
+:102F70002168016061684160216941616169816125
+:102F800031BD80B501462348FFF732FFBDE802405E
+:102F90000FF2050000F023BB38B5174C1D4D08E0BB
+:102FA00069462846FFF73AFF009920690069FFF754
+:102FB0001FFF2846FFF709FF0028F1D031BD10B5EB
+:102FC000154C2046006040600B4841690C60BDE82C
+:102FD000104000F018BB1CB50F4C06E069462046B7
+:102FE000FFF71CFF0098C046C0462046FFF7EDFEE5
+:102FF0000028F3D013BD000000000320B009032017
+:1030000084080320700500209C0803207805002018
+:10301000340A0320680500203C0A032010B5284824
+:10302000284C88B0016841F400410160FFF734F892
+:1030300000F000FB24490020FEF7E9FA00F013FB42
+:103040002248016841F4803101600121026C42F4A0
+:10305000803202640120FFF724F80020FFF769FBAB
+:103060000120FFF766FB0220FFF763FB0120FFF75B
+:1030700091FB01210020FFF7A1FBFFF7E3FE144ABB
+:1030800000214020FFF7A3F804F23C500FF2450165
+:103090000090019169460FF2410000F03FF804F200
+:1030A0005470029004F5C96140F23C5005900391C0
+:1030B000049402A8FFF74CFFFFF7C2FE08B010BD52
+:1030C00008000058240003209404002090080058B1
+:1030D0005F3100087047000080B5FFF770FF0021E6
+:1030E0000120FEF7DEFFBDE80140FEF75FBCFEF702
+:1030F000ECBF4FF0FF30FFF707B800214020FFF78B
+:1031000073B80220FFF792B80220FFF797B8B0F526
+:10311000806F08BFFEF742BD704700007FB50C46C8
+:103120004D4D61684D4EE8612962284600F0A6FACF
+:103130002468746006F1080000604060012000F01F
+:1031400068F801203070296841B10FF2E9000FF2F0
+:10315000ED02009001920294684688477FBD1FB53A
+:103160003E4C04F10800FFF730FE00BB2178F1B1BE
+:10317000694604F10800FFF751FE3748C16949B1BB
+:103180000098029001228DF8042001A888479DF83C
+:10319000040000E001202070207818B10098FFF7AB
+:1031A000F0FE04E0009904F10800FFF717FE04F1B7
+:1031B0000800FFF70AFE28B9207818B104F10800CA
+:1031C000FFF79BFF1FBD2DE9F04105460E469046D7
+:1031D0001C46002000F01DF8204F7868A0F8095028
+:1031E000C672324641460C30FEF71EFE1A4A13697B
+:1031F00000210020984748F2E800FFF785FF796832
+:103200008A78D21C04F10800FEF70EFEBDE8F041FA
+:1032100001201CB51049124C096A20B901B1884738
+:103220000020207013BD0120207011B1BDE81C40AA
+:10323000084713BD0020FFF764BF000010B501462A
+:10324000064C04F10800FFF7D3FD04F10800BDE8C7
+:103250001040FFF752BF0000B80400203C050020DA
+:1032600095050020704710B50446FEF7DDFD2046A9
+:1032700010BD10B5044610460A460146204600F02F
+:1032800007FA204610BD0000002200F035BA000009
+:103290002DE9F84F4FF0000C674A684BDFF8A0812A
+:1032A0004FF00F0982460F4633E0664DAA4514BF22
+:1032B000072504258D40254348F82E50C1431C683E
+:1032C00001EA040E7C68E50348BF40EA0E0EC3F82D
+:1032D00000E05C6801EA040E7C68A50348BF40EA90
+:1032E0000E0EC3F804E0146801EA040E7C68E502DF
+:1032F00048BF40EA0E0EC2F800E0546801EA040E2E
+:1033000079688C0248BF40EA0E0EC2F804E00CF166
+:10331000010C396831FA0CF000F07C80012000FAD1
+:103320000CFE1EEA0100F2D07C68022C18BF122CA1
+:103330004FEA8C0110D14FEADC040AEB840401F05F
+:103340001C05266A09FA05FB26EA0B06D7F810B019
+:103350000BFA05F5354325624FEA4C040325DAF8EC
+:10336000006097F804B0A540ED430BF0030B2E402E
+:103370000BFA04FB4BEA0606CAF800607E68012ED1
+:1033800018BF022E03D0112E18BF122E17D1DAF853
+:103390000860D7F80CB02E400BFA04FB4BEA060687
+:1033A000CAF80860DAF8046026EA0E0E7E68C6F3F2
+:1033B000001606FA0CF646EA0E06CAF80460DAF8B9
+:1033C0000C603540BE6806FA04F42C43CAF80C4081
+:1033D0007C68E4009BD54FEA9C0E58F82E5001F013
+:1033E0000C0109FA01F425EA0404BAF1904F08BF70
+:1033F00000250ED0144DAA4508BF012509D0134D54
+:10340000AA4508BF022504D0114DAA457FF44DAF4F
+:1034100003254FE7BDE8F18F81B0002A14BF816119
+:10342000816201B070470B4A136803421CBF1060F1
+:10343000FFF76DBE70470000000800588008005874
+:10344000080001400010004800040048000800483F
+:10345000000C00480C080058C0680840884201D1A0
+:103460000120704700207047C0690840884201D1A0
+:10347000012070470020704710B5664C022120469D
+:10348000FFF7F2FF38B16068C043810703D5FFF74B
+:103490004EFD022018E001212046FFF7E5FF38B17C
+:1034A0006068C043C10703D5FFF707FD01200BE0AB
+:1034B00008212046FFF7D8FF38B16068C0430107F4
+:1034C00003D5FFF788FD0820A06010BD10B5514C52
+:1034D00000F033F818B96068C043810306D400F0E7
+:1034E0002CF830B96068C043810302D5BDE81040B4
+:1034F0006EE0082100F022F870B96068C043010353
+:103500000AD56068444940F400206060086880473C
+:103510004FF40020A06010BD202100F00FF858B932
+:103520006068C043810207D5606840F400106060A5
+:10353000BDE81040FFF7D4BC10BD022120468BE748
+:103540003648016841F4007101603548026842F470
+:103550000072026040BF20BF3248016841F4004160
+:103560000160704780B53048016841F48011016006
+:10357000006800F48010009000982648016841F02F
+:1035800001010160026842F4803202602C20FEF7E3
+:10359000B6F9BDE802402D20FEF7B1B92348016815
+:1035A000490849000160704721494FF480300860A4
+:1035B00070471E48016821F00201016070471B48F6
+:1035C0004FF400314160016821F40031016070471F
+:1035D0001648016841F400310160FFF7A2BC38B51C
+:1035E00004460C4D08212846FFF736FF30B10A4843
+:1035F0000460686820F40020686031BDA0474FF483
+:103600000021A96031BD0948016821F0080101606D
+:1036100070470000000C005890050020D4080058A6
+:10362000200800580C04005850000058040C0058A2
+:10363000080C0058DFF80C00FFE7016841F48061D6
+:103640000160704704040058032010B5FEF72DF9FF
+:103650000F2000F06BF80024002814BF012400F0B4
+:103660000BF8204610BD0348FFE7016841F0010157
+:1036700001607047042004E07047000002490160C7
+:1036800002490161704700BFE72E00080F2F0008B4
+:1036900062F30F2262F31F42401810F0030308D0B8
+:1036A000C91A1FD3DB0748BF00F8012D28BF20F837
+:1036B000022D130030B414461546103928BF20E9F6
+:1036C0003C00FAD8490728BF20E90C0048BF40F861
+:1036D000042D890028BF20F8022D48BF00F8012DD5
+:1036E00030BC7047C91818BF00F8012DCB0728BFA0
+:1036F00000F8012D7047000000B500BF130096468A
+:103700009446103928BFA0E80C50FAD85FEA417CF3
+:1037100028BF0CC048BF40F8042BC90728BF20F8B9
+:10372000022B48BF00F8012B00BD000070B50F4E02
+:103730000446B0680025A8B100F05FF8B2684FF405
+:103740007A71B1FBF2F1B0FBF1F0FEF7F2F848B993
+:10375000102C07D2002221464FF0FF30FEF7B2F8BE
+:10376000746000E00125284670BD00BF2C000020D9
+:103770004FF0B040006800F0F000B02888BFB020E3
+:10378000704738B54FF0B044244DA16811F00C01DA
+:1037900006D1FFF7EDFFC0F3031055F8200032BD4E
+:1037A00004291F4A05D008291E4804D12168C902EE
+:1037B00022D5104632BDE16801F00301022904D090
+:1037C000032904D12168C90207D5104605E0FFF797
+:1037D000CFFFC0F3031055F82000E168E268E3680A
+:1037E000C1F306214843C2F30211491C5B0FB0FB31
+:1037F000F1F05B1CB0FBF3F032BD80B5FFF7C1FF09
+:103800000549FFE7084A0968C1F3031152F821107E
+:10381000B0FBF1F002BD000008000058B8400008FD
+:103820000024F4000048E80178400008DFF8641341
+:103830000A68030903F47F2300019A4300F47F2000
+:1038400000F082B9DFF84C231368010C23EA01432E
+:1038500043EA0043136070472DE9F843054600240E
+:103860002878DFF830634106A0464FF0B0472DD5E9
+:10387000286B70B1B0F5800F06D0B0F5000F18BFFF
+:10388000B0F5400F17D01FE0F86840F48030F860C2
+:10389000EDE0386820F08060386000F081F9814602
+:1038A0003868000140F1D08000F07AF9A0EB0900FF
+:1038B0000228F5D90324D7E000F072F9A0EB090043
+:1038C000022840F2C980F5E70124A04628680105D6
+:1038D00031D5B06800F44078286C80452AD000F0DB
+:1038E00065F9B8F1000FB16805D1286C21F4407179
+:1038F0000143B1601EE0B06840F48030B06021F454
+:103900004071B06820F48030B060286C0143B16031
+:10391000B068C0070ED500F043F9804641F28939FE
+:10392000B068800706D400F03BF9A0EB08004845DA
+:10393000F6D30324A0462878C10705D53168A869C5
+:10394000890840EA810131602878810705D531680E
+:10395000E86921F44061014331602878C10644BF21
+:10396000A86AFFF76FFF2878810644BFE86AFFF76F
+:1039700069FF2878410744BF286AFFF757FF287876
+:10398000010744BF686AFFF751FF2868C1051BD5CE
+:103990003168686B21F0406101433160686BB0F1C0
+:1039A000006F00F0BDF8686BB0F1806F75D100F06A
+:1039B000BDF804463868000160D500F0F1F8001B3E
+:1039C0000228F7D94FF0030867E000F0E9F8001B80
+:1039D00002285BD9F6E7316821F04041316020F0E0
+:1039E0008050326822F0406210433060A86BB0F122
+:1039F000C05F00F095F8286841056DD53168E86B27
+:103A000021F0405101433160E86BB0F1005F03D118
+:103A1000F96841F48031F960E86BB0F1805F5BD107
+:103A200000F084F804463868000146D500F0B8F884
+:103A3000001B0228F7D94FF003084DE000F0B0F862
+:103A4000001B022841D9F6E700F061F8A86821F4CC
+:103A5000781100F071F88146386800017FF52CAFCD
+:103A60003969686901433961002C7FF42EAF3168F0
+:103A7000286B21F440010143316027E700F047F84B
+:103A8000E86821F0606100F057F8044638680001EA
+:103A90009BD5396968690143396128688105AAD5D0
+:103AA000A86BB0F1804F1CBFB0F1004F002892D13D
+:103AB000316821F04041084397E700F028F8286971
+:103AC00021F0604100F038F8044638680001B5D5AF
+:103AD00039696869014339612868C10405D5F1680D
+:103AE000686C21F440410143F160286881040BD5E2
+:103AF000796AE86C21F0300101437962796AA86C37
+:103B0000890840EA810179624046BDE8F28338695C
+:103B1000696820F4FE4040EA012038613969704745
+:103B200003D1F96841F08071F9607047396821F07C
+:103B30008061396000F034B801433961386840F081
+:103B40008060386000F02CB810430860704710B5F2
+:103B500011490A6842F080720A600B680F4A23F02C
+:103B600080730B60046841680C4381680C43C16832
+:103B70000C43016944EA014454601368406923F42A
+:103B80007C5343EA00231360116841F06001116027
+:103B900010BD000088000058380000580060004048
+:103BA00001480068704700BF2C00002002480168EF
+:103BB00041F48071016070470004005818B59BB053
+:103BC000FFF742FD574CE06B40010ED5E06BC000A3
+:103BD0000BD4FFF7EBFFFFF7E9FFA06B40F4803059
+:103BE000A063A06B20F48030A06300F055F807A814
+:103BF0005021FFF749FB68461821FFF745FB4A486B
+:103C00000168216C41F001012164206C8007FCD522
+:103C10004FF4807007900021149107A8FFF71CFE55
+:103C2000206840F0807020604FF00052216801F061
+:103C3000807106910021069800914BF67F30039029
+:103C400022210491002002902021019205916846D2
+:103C5000FFF77DFFFFF7AAFFFFF7A8FFA06B40F07B
+:103C60000100A063A06B8007FCD50022E06B20F46C
+:103C7000404040F48040E0632C48016802600269E3
+:103C800002F05002026100F028F8FFF7C7F94FF088
+:103C9000FF30FEF739FAFAE7254881B0016841F4B0
+:103CA000801101603F21006800F4801000900098AE
+:103CB000204841604161016841F47C110160026962
+:103CC00042F47C120261016841F03F010160026927
+:103CD00042F03F02026101B0704710B5FFF766FF86
+:103CE000FFF764FF1448154C016821F4407141F45A
+:103CF000807101600F21026842F4004202601048A6
+:103D0000816047F6FF71C160046000F01BF8CA20B3
+:103D10006062FF2153206062A068C008C000A060FC
+:103D2000616210BD58000058941400588008005873
+:103D300050000058040C0058900000580028004023
+:103D40009404002038B5040044D094F8210028B928
+:103D5000002184F820102046C046C04600F049F8F3
+:103D6000FF2510B100F03FF834E02168DFF8B00023
+:103D70008A6802408A6021688A6863682069034310
+:103D8000A06903431A438A602168E06808612068DB
+:103D90000169A26841EA024101612068C16821F01D
+:103DA0008001C1602068C16C89088900C1642168F4
+:103DB000CA6CE369606903431A43CA642068816876
+:103DC000880609D400F020F830B12068456204214B
+:103DD00000F01FF8012032BD20684562012184F8FF
+:103DE0002110002032BD20684562042184F8211092
+:103DF0007047022084F82100CA20216848625320BD
+:103E000022685062204626E020460BE02068C0F879
+:103E1000248084F82110002084F8200070470000DE
+:103E2000BFFF8FFF70B5044640F2E9362068C168D5
+:103E300021F0A001C160FFF7B3FE05462068C1680C
+:103E4000880606D4FFF7ACFE401BB042F6D3032031
+:103E500070BD002070BD70B504462068C1684A0678
+:103E600012D44FF0FF32C26040F2E936FFF798FEFD
+:103E700005462068C168480606D4FFF791FE401B3E
+:103E8000B042F6D3032070BD002070BD00EB81006E
+:103E90003D4AD0F88010914201D0012070470020A7
+:103EA000704742F4806240F82120704737481F2154
+:103EB00081610168C908C90041F00301016034480B
+:103EC000016841F00401016030BF7047704710B5D0
+:103ED000304C00F048F80028FBD1042100F044F8F1
+:103EE00028B92D480068010403D500F03FF800F020
+:103EF00057F8002203212046FFF7D3FF234801682B
+:103F0000C908C90041F0020101602148016841F07F
+:103F10000401016030BF10BD10B51E4C00F026F842
+:103F200000F021F80028FBD14FF0B040816801F08B
+:103F30000C01042911D1016841F48031016001684C
+:103F40008903FCD581688908890041F002018160FC
+:103F5000816801F00C010829FAD12046BDE8104023
+:103F6000002203219DE7032120468FE70022042140
+:103F7000204696E780B500F02DF80548016821F04D
+:103F80000401016030BF01BD00040080000400583E
+:103F900010ED00E0001400588804005800F022B82A
+:103FA0004FF0B040016841F480710160016849053B
+:103FB000FCD581688908890041F001018160416A6E
+:103FC000890889004162816801F00C010429FAD155
+:103FD000704700000248016821F00201016070474B
+:103FE00010E000E00248016841F002010160704702
+:103FF00010E000E080B51C48016841F470010160E8
+:104000000020FEF787FD48B180791849184A0A60F8
+:104010000A6822F47C5242EA00220A604FF0B04063
+:10402000016841F48031016012490A68D208D20067
+:1040300042F001020A600A6802F00702012AFAD17E
+:1040400001688903FCD581688908890041F0020173
+:104050008160816801F00C010829FAD101684908E2
+:104060004900016001BD000088ED00E09C0000589F
+:10407000FECAFECA00400058010000000300000014
+:104080000500000001000000010000000600000023
+:104090000A000000200000000200000004000000F0
+:1040A0000800000010000000400000008000000038
+:1040B0000001000000020000A0860100400D030086
+:1040C000801A060000350C0040420F0080841E005C
+:1040D00000093D0000127A000024F40000366E0151
+:1040E0000048E801006CDC02000000000000000055
+:1040F000000000000000000019E050F8042BD30776
+:1041000044BFA9F101039A18091F0023042942F8AA
+:10411000043BF9D25FEA817C134604D54FF0000CD2
+:10412000A2F800C09B1CC90744BF0021197050F8B9
+:10413000041B0029E1D1704730B50168846842183A
+:10414000416802EB5103C9070BD54C4409E012F951
+:10415000011B12F8015B002904F8015B05D5491C1D
+:10416000F9D19A42F3D10C3030BD491EF1D5F8E7B0
+:104170007047FEE770477047704700F011B84FF482
+:104180008060FFF750B900E000BF0148FBF7DABFDD
+:1041900050000020FDF7EBB9FFF798B9FFF76CB9B5
+:1041A00002490A68886882180A6070472C0000205B
+:1041B00010B500F013F802000023DB430024106860
+:1041C000984203D011000220ABBE146050689842A0
+:1041D00003D0111D0220ABBE546010BD01487047D2
+:1041E000000000004800002010B50749794418314C
+:1041F000064C7C44163404E00A68081D11448847C4
+:104200000146A142F8D110BD2C0000005000000072
+:104210004EF68851CEF20001086840F47000086044
+:10422000BFF34F8FBFF36F8F4FF00070E1EE100AB6
+:1042300070470000C5FEFFFF480500005000002049
+:10424000800800002400032000000000EDFEFFFFB6
+:10425000740100003C000000040000200120C04662
+:10426000002801D0FFF7C0FFAFF300800020AFF3BC
+:104270000080FFF7A3FC00F000F800F001B8000098
+:104280000746384600F002F8FBE7000080B5FFF76C
+:104290008FFF024A11001820ABBEFBE72600020088
+:1042A000753F00089D3F0008CF3E0008193F0008F9
+:1042B000AD3E0008CD3E0008014880470148004758
+:1042C000F53F0008C9420008AFF30080FFF7A0FFE8
+:1042D000FFF7C4FFFFF7FEBFFFF7FEBFFFF7FEBF0C
+:1042E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF02
+:1042F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF2
+:10430000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFE1
+:10431000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFD1
+:10432000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFC1
+:10433000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFB1
+:10434000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA1
+:10435000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF91
+:10436000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF81
+:10437000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF71
+:10438000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF61
+:10439000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF51
+:1043A000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF41
+:1043B000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF31
+:1043C000FFF7FEBFEC00F8FFF0000010FD00000159
+:1043D000FA0008480004004800040048FD000048B6
+:0243E000F8FFE4
+:04000005080042C9E4
:00000001FF
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c
index b2d131301..8bd9f0586 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/Core/Src/app_entry.c
@@ -231,6 +231,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
/**< Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewd b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewd
index da272b89a..0eef1b875 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewd
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_p2pClient</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewp b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewp
index 57692ee33..741886db1 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewp
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/EWARM/BLE_p2pClient.ewp
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_p2pClient\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_p2pClient\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_p2pClient\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -664,7 +664,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>STM32WB55CG_nucleo_BLE_p2pClient.hex</state>
+ <state>BLE_p2pClient.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1051,9 +1051,6 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
@@ -1063,6 +1060,9 @@
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
</file>
</group>
@@ -1230,10 +1230,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx
index e928cf525..5234906fe 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvoptx
@@ -1,7 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_p2pClient</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CGUx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CGUx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,804 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
+ <Group>
+ <GroupName>Application/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/p2p_client_app.c</PathWithFileName>
+ <FilenameWithoutPath>p2p_client_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.USBDongle</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle/stm32wbxx_usb_dongle.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_usb_dongle.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pcd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pcd_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_usb.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_ll_usb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_USB_Device_Library</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_cdc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_ctlreq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/blesvc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/vcp</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/usbd_conf.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_conf.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/usbd_desc.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/vcp.c</PathWithFileName>
+ <FilenameWithoutPath>vcp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>17</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>17</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx
index 6c49235d1..d3cc1ceb8 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/MDK-ARM/BLE_p2pClient.uvprojx
@@ -1,41 +1,45 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
- <TargetName>Production</TargetName>
+ <Target>
+ <TargetName>BLE_p2pClient</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55CGUx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55CGUx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -43,30 +47,32 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_p2pClient\Exe\</OutputDirectory>
<OutputName>BLE_p2pClient</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
@@ -75,13 +81,15 @@
<AfterMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +103,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +125,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +137,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +174,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +189,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +242,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +272,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +297,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +306,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +323,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls/>
+ <MiscControls></MiscControls>
<Define>USE_STM32WBXX_USB_DONGLE,STM32WB55xx,CORE_CM4,USE_HAL_DRIVER</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/ble;../Core/Inc;../STM32_WPAN/app;../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp;../../../../../../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc;../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp</IncludePath>
</VariousControls>
</Cads>
@@ -371,11 +347,14 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
- <IncludePath/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
@@ -387,22 +366,21 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
+ <Group>
<GroupName>::CMSIS</GroupName>
</Group>
- <Group>
+ <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -439,7 +417,7 @@
</Group>
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -753,19 +731,20 @@
</Files>
</Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_p2pClient"/>
</targetInfos>
</component>
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/.cproject
index eaca4166f..3cd47f318 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.38826697" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.557540676" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.272266150" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1226649051" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_p2pClient}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1226649051" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -143,7 +143,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.1153547358" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_p2pClient.fr.ac6.managedbuild.target.gnu.cross.exe.1153547358" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -154,7 +154,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="/Production"/>
+ <resource resourceType="PROJECT" workspacePath="/BLE_p2pClient"/>
</configuration>
<configuration configurationName="Release"/>
</storageModule>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/.project
index ce6b23b08..10f61aec6 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_p2pClient</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/SW4STM32/BLE_p2pClient/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c
index d793aa7ae..67ed3de15 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/Core/Src/app_entry.c
@@ -232,6 +232,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
/**< Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewd b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewd
index 947437223..0ee189788 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewd
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_p2pRouteur</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewp b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewp
index 1cec15aa0..bd025584d 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewp
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/EWARM/BLE_p2pRouteur.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_p2pRouteur</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_p2pRouteur\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_p2pRouteur\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_p2pRouteur\List</state>
</option>
<option>
<name>GEndianMode</name>
@@ -656,7 +656,7 @@
<option>
<name>OOCOutputFormat</name>
<version>3</version>
- <state>3</state>
+ <state>1</state>
</option>
<option>
<name>OCOutputOverride</name>
@@ -664,7 +664,7 @@
</option>
<option>
<name>OOCOutputFile</name>
- <state>STM32WB55CG_nucleo_BLE_p2pRouteur.bin</state>
+ <state>BLE_p2pRouteur.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@@ -1051,9 +1051,6 @@
<name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
- </file>
- <file>
<name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
</file>
<file>
@@ -1063,6 +1060,9 @@
<name>$PROJ_DIR$\..\Core\Src\main.c</name>
</file>
<file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32_lpm_if.c</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
</file>
</group>
@@ -1077,10 +1077,10 @@
<group>
<name>app</name>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\app_ble.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\app_ble.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\STM32_WPAN\app\p2p_routeur_app.c</name>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\p2p_routeur_app.c</name>
</file>
</group>
<group>
@@ -1236,10 +1236,10 @@
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
</file>
<file>
- <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvoptx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvoptx
index e928cf525..61625f91c 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvoptx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvoptx
@@ -1,7 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_p2pRouteur</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -51,11 +73,11 @@
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
- <CpuCode>0</CpuCode>
+ <CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CGUx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CGUx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,828 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>Application/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/app/p2p_routeur_app.c</PathWithFileName>
+ <FilenameWithoutPath>p2p_routeur_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.USBDongle</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle/stm32wbxx_usb_dongle.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_usb_dongle.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pcd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pcd_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_usb.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_ll_usb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_USB_Device_Library</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_cdc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_ctlreq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/blesvc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/eds_stm.c</PathWithFileName>
+ <FilenameWithoutPath>eds_stm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/p2p_stm.c</PathWithFileName>
+ <FilenameWithoutPath>p2p_stm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/vcp</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/usbd_conf.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_conf.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/usbd_desc.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/vcp.c</PathWithFileName>
+ <FilenameWithoutPath>vcp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>56</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvprojx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvprojx
index 17a1addb7..232211db4 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvprojx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/MDK-ARM/BLE_p2pRouteur.uvprojx
@@ -1,41 +1,45 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
- <TargetName>Production</TargetName>
+ <Target>
+ <TargetName>BLE_p2pRouteur</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55CGUx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55CGUx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -43,45 +47,49 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_p2pRouteur\Exe\</OutputDirectory>
<OutputName>BLE_p2pRouteur</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
- <CreateHexFile>0</CreateHexFile>
+ <CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
- <RunUserProg1>1</RunUserProg1>
+ <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name>fromelf #L --bin --output=$L@L.bin</UserProg1Name>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +103,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +125,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +137,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +174,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +189,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +242,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +272,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +297,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +306,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +323,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls/>
+ <MiscControls></MiscControls>
<Define>USE_STM32WBXX_USB_DONGLE,STM32WB55xx,CORE_CM4,USE_HAL_DRIVER</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/ble;../Core/Inc;../STM32_WPAN/app;../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp;../../../../../../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc;../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp</IncludePath>
</VariousControls>
</Cads>
@@ -371,11 +347,14 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
- <IncludePath/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
@@ -387,22 +366,18 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
- <GroupName>::CMSIS</GroupName>
- </Group>
- <Group>
+ <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -439,7 +414,7 @@
</Group>
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -762,20 +737,24 @@
</File>
</Files>
</Group>
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ </Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_p2pRouteur"/>
</targetInfos>
</component>
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/.cproject
index c21f3b64b..4ba14f1f0 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.909307930" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.278748351" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1943991985" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1120613366" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_p2pRouteur}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1120613366" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -143,7 +143,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.1871607802" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_p2pRouteur.fr.ac6.managedbuild.target.gnu.cross.exe.1871607802" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -154,7 +154,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_p2pRouteur"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/.project
index 92f53ab6c..e0f414c0f 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_p2pRouteur</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pRouteur/SW4STM32/BLE_p2pRouteur/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex
index c44d4b357..5c1d54cff 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Binary/BLE_p2pServer_reference.hex
@@ -1,1058 +1,1078 @@
:020000040800F2
-:1000000070150020B94000086D3F00086F3F0008E0
-:10001000D5400008D9400008DD400008000000007D
-:10002000000000000000000000000000713F000818
-:10003000733F000800000000753F0008773F00088C
-:10004000E1400008E5400008E9400008913F000851
-:10005000ED400008F1400008F5400008F9400008B4
-:10006000FD40000801410008054100080941000861
-:100070000D41000811410008154100081941000810
-:100080001D4100082141000825410008853F000866
-:10009000833F0008294100082D4100083141000834
-:1000A00035410008394100083D4100084141000840
-:1000B00045410008494100084D41000851410008F0
-:1000C00055410008594100085D41000861410008A0
-:1000D00065410008694100086D4100087141000850
-:1000E0007B3F000875410008794100087D41000808
-:1000F000993F0008953F00088141000885410008AC
-:10010000894100088D41000891410008954100088F
-:10011000994100089D410008A1410008A54100083F
-:10012000A9410008AD410008B1410008B5410008EF
-:10013000B9410008BD410008C1410008002084F811
-:10014000280210BD70B5044600F0B0F8000444BFAA
-:10015000204600F076F900F0A9F840050CD500F033
-:10016000A1F84FF6FF3000F099F8204600F0BDFAF4
+:1000000070150020FD410008B5400008B740000809
+:10001000194200081D4200082142000800000000AB
+:10002000000000000000000000000000B9400008CF
+:10003000BB40000800000000BD400008BF400008B1
+:1000400025420008294200082D420008D940000836
+:100050003142000835420008394200083D4200089C
+:100060004142000845420008494200084D4200084C
+:100070005142000855420008594200085D420008FC
+:10008000614200086542000869420008CD4000084E
+:10009000CB4000086D42000871420008754200081C
+:1000A000794200087D42000881420008854200082C
+:1000B000894200088D4200089142000895420008DC
+:1000C000994200089D420008A1420008A54200088C
+:1000D000A9420008AD420008B1420008B54200083C
+:1000E000C3400008B9420008BD420008C1420008F0
+:1000F000E1400008DD400008C5420008C942000890
+:10010000CD420008D1420008D5420008D94200087B
+:10011000DD420008E1420008E5420008E94200082B
+:10012000ED420008F1420008F5420008F9420008DB
+:10013000FD4200080143000805430008002084F840
+:10014000280210BD38B5044600F0B0F8010444BFE1
+:10015000204600F074F900F0A9F840050CD500F035
+:10016000A1F84FF6FF3000F099F8204600F0B7FAFA
:100170000021204600F0A2F800F098F8400405D5D0
:1001800000F090F84BF6FF7000F088F800F08EF861
:10019000800405D500F086F84DF6FF7000F07EF87B
-:1001A00004F5187500F082F8C00420D52168B1F874
+:1001A00004F5187500F082F8C0041FD52168B1F875
:1001B00040204FF6FB700240A1F840204FF6F77048
-:1001C000B1F840200240A1F840202978012905D14A
-:1001D0000020287000212046C046C046204600F07E
-:1001E00095FA00F05FF84EF6FF7000F057F800F057
-:1001F0005DF8000516D5206800F14002118841F035
-:10020000080111804FF2FF7193880B40938016888C
-:1002100046F004061680B0F84400C0045CBF2046D7
-:1002200000F070FA00F042F800061FD5216801F1D5
-:1002300040024FF67F7193880B409380287890B9E5
-:10024000118841F0040111800121108840F008005C
-:1002500010802970908A800800F03C006860204679
-:10026000C046C04602E0204600F04CFA00F01EF8FE
+:1001C000B1F840200240A1F840202878012804D14D
+:1001D000002129702046C046C046204600F090FA13
+:1001E00000F060F84EF6FF7000F058F800F05EF88E
+:1001F000000516D5206800F14002118841F0080181
+:1002000011804FF2FF7193880B409380118841F069
+:1002100004011180B0F84400C0045CBF204600F027
+:100220006BFA00F043F8000620D5206800F1400189
+:100230004FF67F708A8802408A80287898B90A88A9
+:1002400042F004020A800122088840F00800088079
+:100250002A70888A800800F03C00686001212046EE
+:10026000C046C04602E0204600F046FA00F01EF804
:10027000800508D500F016F84FF6FF5000F00EF894
-:10028000204600F02EFA00F011F8C00505D500F068
-:1002900009F84FF6FF6000F001F870BD0240A1F8C8
+:10028000204600F028FA00F011F8C00505D500F06E
+:1002900009F84FF6FF6000F001F831BD0240A1F807
:1002A000442070472168B1F844207047206800F06E
-:1002B000C6BC044694F828020128704710B5FFF721
-:1002C000F8FF01D1022010BD012084F8280284F833
-:1002D0002410206800F0ADFC30E738B5054601F089
+:1002B000AFBC044694F828020128704710B5FFF738
+:1002C000F8FF01D1022010BD012284F8282284F811
+:1002D0002410206800F096FC30E738B5054601F0A0
:1002E000070005EB40100C0647BF00F12804012071
:1002F00000F59474002001F0070160702170226104
:10030000E370607808B12178E181022B04BF0020FE
-:10031000207195F82802012801D1022032BD012068
-:1003200085F828022146286800F04CFA52E010B502
-:1003300001F0070400EB441404F5947401F0070184
-:100340006261A3610022E26162700DE010B501F00C
-:10035000070400EB441428346261A36100220123E6
-:1003600001F00701E261637021702146006800F02E
-:1003700051FB002010BD38B505460C46696804F0F5
+:10031000207195F82802012801D1022032BD012167
+:1003200085F828122146286800F02AFA52E01CB508
+:1003300001F0070400EB441404F5947400F014F881
+:10034000627021700AE01CB501F0070400EB441450
+:10035000283400F009F821700122627021460068FB
+:1003600000F041FB002016BD01F007016261A361AE
+:100370000022E261704738B505460C46696804F012
:100380000700814201D2012032BD210605D505EBCF
:10039000401000F12801012204E005EB441000F5B3
:1003A000947100224A700120887004F007040C70D8
-:1003B00095F82802012801D1022032BD012085F8DC
-:1003C0002802286800F0DFFB24B9286805F50C71C5
-:1003D0000020C046002085F8280232BD10B5044632
-:1003E00001F00F0362689A4201D2012010BD00F0B3
-:1003F00013F80023837000F008F801D1022010BD2B
-:1004000000F019F800F0D8FB98E601F00701017040
-:1004100094F828120129704701F007000A0604EB3E
-:10042000401003D5283001234370704700F59470C5
-:10043000002242707047012284F828220146206879
-:1004400070472DE9F84F00F5947500F12406074632
-:1004500026E0018848F60F72114041F40041018006
-:100460003868B0F85010327901EBC203C01800F2BE
-:1004700002400088B269C0F3090030620244B261F0
-:100480000021384600F026F932784AB1F06938B9CF
-:100490003178386841F08001A0F84C1000213170AB
-:1004A000386800F144010A88130440F1E9800A88A1
-:1004B00012F00F0A59D1D206CBD50288130511D5F7
-:1004C000898900F0E0F8EA88C3F30903EB6107F5D6
-:1004D0000C7100F0C8FB386800F0DDF8384600F019
-:1004E000EBF8DDE71104DBD500F0D5F83868B0F89B
-:1004F000501000F0C8F8C3F30903002BEB611CBFD8
-:10050000696900290AD0EA8800F0ADFB6869E969E9
-:10051000014469613846002100F0D4F83868B0F829
-:1005200050104118286901F2064120B9088848F2A4
-:10053000FF32104009E03E2805D24208C00748BFFC
-:10054000521C900203E04009800240F40040088001
-:100550004BF68F7238680188114081F4405141F4A4
-:10056000004141F0800101809AE730F82A805FEA7B
-:10057000084207EB4A195AD530F82A1040F68F7214
-:10058000114041F0800120F82A1009F59474386870
-:10059000217B69B9B0F85010237801EBC30100F05A
-:1005A00082F830D0E28861695B4600F05CFB2AE0AB
-:1005B00021780B4630F8232053040BD5B0F8502097
-:1005C00002EBC101421802F2024200F06FF80DD0B6
-:1005D000228907E0B0F8503003EBC10100F063F866
-:1005E00004D062895B46616900F03DFB3968207880
-:1005F00031F8202048F68F731A4042F4004242F04E
-:10060000C00221F82020E1695944E16162695A443D
-:100610006261A36913B121698B4504D22178384600
-:1006200000F050F803E021783846FFF780FE5FEADB
-:10063000086021D5396831F82A2048F60F731A402E
-:1006400042F4004209F1280021F82A203A68017892
-:10065000B2F8503003EBC1031A4402F2024212888E
-:100660004369C2F30902C2611A4483694261002BE3
-:10067000384602D100F02EF812E7FFF767FE0FE7C9
-:100680000020BDE8F28F2A7801EBC203C31803F201
-:1006900006431B887047018840F68F72114041F075
-:1006A000800101807047421802F206421188C1F3AE
-:1006B000090BBBF1000F704700F50C71D0F8700208
-:1006C00000F0F4BA00EB4112D0F87002D2F83C21ED
-:1006D00000F016BB00EB4112D0F87002D26B00F0B4
-:1006E00050BBD0F8700200F0E0BB10B50446D4F85F
-:1006F000700200F09DFBD4F87002BDE810400121AB
-:1007000000F0BFBBD0F8700200F0BEBBD0F87002A2
-:1007100000F0C2BB10B51C461346D0F8C0022246FA
-:10072000FFF7DBFD002010BD80B5D0F8C002FFF759
-:1007300022FE002002BD80B5D0F8C002FFF74EFEB9
-:10074000002002BDD0F8C00201F07F02090600EBD4
-:10075000421002D590F82A00704790F82A0170479D
-:1007600080B5D0F8C002FFF7A9FD002002BD80B51A
-:10077000D0F8C002FFF7EAFD002002BD80B5D0F836
-:10078000C002FFF7D4FD002002BD30B4002513E005
-:1007900050F8042BD30744BFA9F101039A18091F8D
-:1007A000042942F8045BFAD213468C0744BF158033
-:1007B0009B1CC90748BF1D7050F8041B0029E7D1D6
-:1007C00030BC70472DE9F0470B4602461C7832F8E2
-:1007D0002460DD7848F68F1100200E40032D0CD8E0
-:1007E000DFE805F002080C0546F4007606E046F462
-:1007F000C06603E046F4806600E0012048F2800510
-:100800002E4322F8246048F68F7619780C4632F889
-:10081000247037403943294322F824104BF68F7750
-:10082000197B93F800A000294CF2800C48F6BF7E9B
-:1008300048F2C00862D1D9884FF6FE740C4059784E
-:100840000029B2F8501011441DD001EBCA0101F586
-:1008500080610C80197832F82140640606D532F8A0
-:100860002140264048EA060622F821601978DB7804
-:10087000012B32F821300EEA03030EBF1D4383F033
-:1008800020031D43C2E001EBCA0A0AF2044AAAF897
-:100890000040B2F850105418197804EBC1041969DB
-:1008A00004F2064431B9B4F800E048F2FF3101EA3D
-:1008B0000E010CE03E2908D24FEA510EC90748BF8D
-:1008C0000EF1010E4FEA8E2E03E04909890241F430
-:1008D000004EA4F800E0197832F82140640406D5EF
-:1008E00032F8214026404CEA060622F821601978A9
-:1008F00032F821301F4087F4405786E032F82A1042
-:10090000314041F4014141F0800122F82A10B2F84F
-:100910005010B3F808A05418197804EBC10404F57A
-:1009200080644FF6FE7101EA0A012180B2F850108E
-:100930001C78511801EBC409598909F204494FF692
-:10094000FE742140A9F8001059781C78002932F86B
-:1009500024102CD1490406D532F8241031404CEA39
-:10096000010122F82410197832F82140640606D5D6
-:1009700032F82140344048EA040422F82140197832
-:1009800032F82140264048EA060622F8216019780C
-:1009900032F82140274087F440572F4322F8217036
-:1009A000197832F821300EEA03031D432EE0490482
-:1009B00006D532F8241031404CEA010122F8241007
-:1009C000197832F82140640606D532F821403440C7
-:1009D00048EA040422F82140197832F821402640E0
-:1009E0004CEA060622F82160DC781978012C32F8EE
-:1009F00021400EEA040418BF84F020042C4322F89E
-:100A00002140197832F821301F403D4322F821500F
-:100A1000BDE8F087F8B50E46054672783469B069CE
-:100A2000012A48F2800748D1844232BF001B0446A5
-:100A30000020B061307B40B9F28800F099F800F0F6
-:100A40009BF800F2024004802EE03078C10035F8B7
-:100A500020004206B5F85000284405D5091801F2D7
-:100A600006410C80728904E0091801F202410C80F1
-:100A7000328900F07DF8707848F68F7140B930788F
-:100A800035F82020114041F4004141F0C00109E057
-:100A9000012809D1307835F82020114041F4404137
-:100AA00041F0800125F82010317835F8212048F6F2
-:100AB000BF70024082F030024EE0844232BF001B21
-:100AC00004460020B0616009317B8302002943F4B1
-:100AD000004304F001004FEA540C18D0AAB900F00A
-:100AE00040F801F202413CB9B1F800E0202262F383
-:100AF0008F2EA1F800E008E03E2C05D2624600B13E
-:100B0000521C92020A8000E00B807178A9B900F0B3
-:100B100028F801F206412CB90A88202060F38F22C0
-:100B20000A8011E03E2C06D208B10CF1010C4FEA0C
-:100B30008C20088008E00B8006E0012904D100F039
-:100B40001BF800F2064004804BF68F70317835F8C0
-:100B50002120024082F44052174325F821700020E2
-:100B6000F2BDB5F850103278691801EBC201704738
-:100B70007169A3B2284665E0B5F8500031782818AD
-:100B800000EBC100704710B50A78497830F8224070
-:100B9000002948F2800305D048F6BF710C4084F06C
-:100BA000100404E04BF68F710C4084F4805423430E
-:100BB00020F82230002010BD30B50A7B002A36D143
-:100BC0004A780C78002A30F8242048F2800348F64E
-:100BD0008F7516D0520608D530F82420154045F4FC
-:100BE000004545F0C00520F82450CA78012A1ED0DF
-:100BF0000A7830F8224048F6BF710C4084F0200497
-:100C000012E0520408D530F82420154045F4404540
-:100C100045F0800520F824500A7830F822404BF641
-:100C20008F710C4084F44054234320F8223000207C
-:100C300030BD11B98021A0F84C1000207047B0F8E9
-:100C40004400704710B580185B1C00F580605B089D
-:100C500007E00A784C7842EA0422891C20F8022B2B
-:100C60005B1EF6D110BD10B5821802F580625808DF
-:100C700006E032F8024B0C70240A4C70891C401EAE
-:100C8000F7D1D80744BF1088087010BD10B5D0F850
-:100C9000B42202241AB11268904700B900242046F9
-:100CA00010BD80B5D0F8B42253680AE138B50446C7
-:100CB00004F52A75284600F0F5FA04F5257001219F
-:100CC0000160428B017D426011F01F0003D00228B9
-:100CD0000BD005D30EE02946204600F0F5F80DE0D4
-:100CE0002946204600F09AF908E02946204600F0FF
-:100CF000BCF903E001F0800100F040F8002032BDB3
-:100D000038B5044610460A0004F5257329D1196840
-:100D100003291ED104F5B0714A680D68AA420BD2AE
-:100D2000AD1A0D60954238BF2A46014692B2204660
-:100D300000F0E8FA002032BD196A086928B1187A73
-:100D4000032802D1096920468847204600F0E2FACC
-:100D5000F0E70529EED100201860002100F00EF820
-:100D6000E8E71A6A906930B1187A032803D19269CA
-:100D700020469047DEE7022032BD80212046FFF763
-:100D8000D3BC38B504460800134604F5257543D195
-:100D90002868022833D1226A616A914207D2521A26
-:100DA0002262194692B2204600F0A4FA11E0E269EC
-:100DB000B2FBF1F001FB102090B98A4210D36868B1
-:100DC00082420DD200220021204600F093FA00203A
-:100DD00068600023002200212046FFF7CFFC14E0CA
-:100DE000296AC86828B1287A032802D1C968204630
-:100DF0008847FFF7C2FF204600F093FA05E0042879
-:100E000018BF002801D1FFF7B8FF287B012804BFD5
-:100E100000212973002032BD2A6A506930B1287A36
-:100E2000032803D1526920469047F3E7022032BDE0
-:100E300038B50446402300220021FFF76BFC04F57F
-:100E4000AC70012140220160C26040230022802159
-:100E50002046FFF75FFC0120402104F52572A061C8
-:100E6000616210720021116061600025506A156195
-:100E700028B1126A61685368C9B2204698470020B9
-:100E800032BD01740020704700F5277004220178FC
-:100E9000417002700020704700F527700178042926
-:100EA00004BF417801700020704780B500F52771BC
-:100EB0000A78032A03D18969C96901B188470020EA
-:100EC00002BD9847002002BDF8B500F0C8F804F54F
-:100ED000277608D0202818BF402850D1B2699368DF
-:100EE0002046984795E06878092848D8DFE800F060
-:100EF0006E864780470905475C25204600F04AF981
-:100F000087E0A888002804BFE888002837D16F88C8
-:100F1000802F34D23078032807F07F072FD0B770A6
-:100F200039462046FFF71CFC00F031F9002F07BFBF
-:100F300001213170022030706BE0374F68883870C3
-:100F4000397802291BDA3378022B08461AD0032B92
-:100F500023D131B90220307061602046FFF7A1FE35
-:100F600055E06168884252D0C9B22046FFF799FE29
-:100F7000397861602046FFF789FE022847D100F0EA
-:100F80008EF946E0002942D0606003203070204690
-:100F9000FFF77CFE0228F2D039E000F080F93978C2
-:100FA0002046FFF77EFE34E0E8880128E7D131785B
-:100FB000491E012904D9891EE1D10122211D13E016
-:100FC0000020A060012204F108010DE03078401EED
-:100FD0000228D4D8EA88022AD1D1B068012100B110
-:100FE0000321E16004F10C01204600F07BF910E0E0
-:100FF000688801280DD10121B16008E03078401ED9
-:101000000228BCD86A88012A03D10020B06000F011
-:10101000BEF80020F2BD00002905002038B500F020
-:101020001EF81CBF2028402815D104F5277210781F
-:10103000401E02280FD82B79022B0CDA9269936894
-:10104000204698470146E888002808BF002904D1B7
-:1010500000F09DF801E000F023F9002032BD0D46BC
-:101060000446287810F060007047F8B5044608463A
-:1010700004F527730278017912F0600509D0202D5C
-:1010800018BF402D6AD19A69936801462046984757
-:1010900067E002F06002202A06D19A69936801464F
-:1010A0002046BDE8F440184742788AB3012A12D09E
-:1010B000032A53D11B78022B13D0032B4ED1428825
-:1010C0001ABB002918BF80291FD0C088E8B9204664
-:1010D000FFF72AFB19E01A78022A02D0032A0CD063
-:1010E0003CE0002918BF802938D02046FFF71CFBC0
-:1010F00080212046FFF718FB33E0408888BB11F0C1
-:101100007F0F1CBF2046FFF716FB00F040F828E0D9
-:10111000142201F07F051B7855436619022B06F552
-:10112000AA7502D0032B10D018E0002918BF80291F
-:1011300014D1080648BF06F11405002028600222D9
-:101140002946204600F0CEF80BE001F00F0312FB19
-:1011500003F20F06224406D5926972B9014600F0E7
-:101160009FF80020F2BDD2F85821002AF6D00029BD
-:1011700018BF802904D10020E0E706F11405F6E746
-:101180002046FFF7DFFA0028D8D00120D6E7204616
-:1011900000F0C0B838B5044600200D46ADF8000098
-:1011A00004F52C726888030A012B08D0022B23D087
-:1011B000032B2ED0062B5FD0072B64D06CE0126877
-:1011C000207C136869469847BDF8001079B1E9881A
-:1011D00079B1BDF80010EA88914288BF1146ADF898
-:1011E00000100146BDF80020204600F07BF8E8889A
-:1011F00008B9FFF7CCFF31BD207C51680028684654
-:1012000004D1896A884702224270DDE7C96A8847AB
-:10121000F9E7C0B205283FD8DFE800F0030B121948
-:10122000202710684268002A36D0207C6946904703
-:10123000CAE7106882687AB3207C69469047C3E7A2
-:101240001068C26842B3207C69469047BCE71068CA
-:1012500002690AB3207C69469047B5E71068426985
-:10126000D2B1207C69469047AEE7106882699AB196
-:10127000207C69469047A7E7207C68B951684A6B93
-:1012800068469047A0E7207C30B951680A6B6846F1
-:1012900090470721417097E700F002F831BD2946D9
-:1012A000204614E010B50A7802704B7843708A78B3
-:1012B000CB7802EB032444800A794B7902EB0324B8
-:1012C00084808A79C97902EB0123C38010BD10B5EF
-:1012D00004468021FFF728FA2046BDE8104000218F
-:1012E000FFF722BA80B513460222C0F89422C361E8
-:1012F000036201E080B513460A460021FFF737FA82
-:10130000002002BD80B513460A460021FFF736FAD9
-:10131000002002BD80B50421C0F8941200230022F1
-:10132000EBE780B50521C0F8941200230022ECE71A
-:10133000DFF84C150A6892B200E00246086880B2F5
-:101340008242FAD170472DE9F041DFF83865DFF8C5
-:1013500038853178044618256843062908EB0007CC
-:1013600008D130787070347079754FF0FF3070604C
-:1013700000203DE000F07BF8B9680918B96008F179
-:101380000803B96832786A439A589142327813D385
-:1013900008F1150315FB02FC13F80C30062B29D0BD
-:1013A00008F108066B43F358994222BF08F1150370
-:1013B0006A439A5CECD21DE01146337869439A4245
-:1013C0000FD008F1140C08F1150E1CF8013015FBB4
-:1013D00003F50EF805407A753B7508F11402545474
-:1013E00003E008F114037A755C543178717034703D
-:1013F000BDE8F0811146694308F115035B5C062BDB
-:1014000004D008F1140615FB03F574557B753A7585
-:1014100008F115025454EBE7F0B5DFF86834DFF853
-:1014200068541E78182402466243B0422A4404D10C
-:1014300018785870547D1C700FE0167D507D92F81E
-:1014400015C005F115076643062807F806C004D045
-:10145000167D143514FB00F42E55012010731A78F4
-:10146000062A02BF00294FF0FF305860F0BD10B5CA
-:10147000DFF81044606810F1010F10D0FFF758FF3B
-:101480006168DFF8082481422FBF63686168538870
-:10149000CB1851781278181A4843D04000E0002049
-:1014A00080B210BD2DE9F84FDFF8E053DFF8E0B36C
-:1014B000D5F80880D8F80000DBF800104A0500F0E5
-:1014C000A2F9DFF8C063DFF8C0A321F48061816076
-:1014D0004FF0180934780AF1080019FB04F1475855
-:1014E000FFF7C5FF874211D200270121B170062CFA
-:1014F0003FD019FB04F40AF108010A59824210D2C4
-:1015000000230B510AEB04014C7DF0E7A988411838
-:10151000B94202D2AF880021E8E701223F1AB27037
-:10152000E5E70A590AF10803121A1A51EAE70228F4
-:1015300002DA2878012800D07F1ED8F80000C168A0
-:101540004A07FAD500F052F9DBF80C00000CBFB2E4
-:1015500047EA0047CBF80C70FFF7EAFE7060A86816
-:101560000068816841F480618160AFF30080BDE86C
-:10157000F18FB8B20028DAD1FFF7DAFE70600320ED
-:10158000BDE8F24F00F0F5B92DE9F843EFF310880C
-:1015900072B6BE4DBC4BA8680168CA224A6253208D
-:1015A000486218208A6822F480628A60B54A1678F8
-:1015B000374647431F44387B022823D13C68D7F87D
-:1015C00010909078D8B17A7B012A0AD10121304657
-:1015D000FFF722FF88F310887968304600F019F988
-:1015E00004E088F31088304600F0C6F8A86800F0E0
-:1015F0001AF831462246484600F054F90DE0FFF74C
-:1016000051FF08E0C8684207FCD500F086F84FF4A7
-:101610000020A049086088F31088FF22A8680168AC
-:101620004A62BDE8F1830068CA21416253224262E6
-:101630007047F8B5954CA160CA2209684A625323E5
-:10164000934A4B62156845F020051560136803F056
-:101650000703C3F10403237095682D0C05F07F0583
-:101660006D1C6570EDB29268C2F30E02521C62806E
-:1016700092B2521E6A43A2F5A072DA404FF6FF738F
-:101680009A422CBFA380A280834A136843F40023AC
-:101690001360824B1D6845F400251D6048BB7948E6
-:1016A000012383704FF0FF3545600023764D0026FF
-:1016B0000C355FFA83FC182717FB0CFC5B1CDFB2B0
-:1016C00005F80C60062FF4DB06230370886820F40D
-:1016D0008060886000F021F84FF40021D160032081
-:1016E00000F052F9A0680068816841F4804181608F
-:1016F00005E0C868410544BF032000F03AF9A1683D
-:101700000A68FF20506200220321032000F0E6F85F
-:10171000BDE8F240032000F0FEB8C86800F0800089
-:1017200060F49060C86070472DE9F04104460025E0
-:10173000EFF3108672B61827DFF84CC10CF10C0ECF
-:1017400007FB05F81EF8080010B16D1C062DF5DB2F
-:10175000062D0CD06F430CEB07000127077386F3AF
-:1017600010880461427303600D70002002E086F36C
-:1017700010880120BDE8F081F8B50746EFF310842A
-:1017800072B6032000F0D2F8404DAE683068FFF723
-:101790004BFF3B46182042494343CA5C022A1BD1F7
-:1017A00000213846FFF738FE3648017806290ED169
-:1017B000306837490A68530500F025F821F4806144
-:1017C0008160C1684A07FCD500F010F804E0407859
-:1017D000884218BFFFF766FEA9680A68FF205062BA
-:1017E000032000F098F884F31088F1BDC16801F07F
-:1017F000800161F49061C1604FF4002025490860C8
-:10180000032000F0C1B802D5C1684A07FCD4816842
-:1018100070472DE9F04180460F46424618201A498C
-:1018200042438C18237B022B04BF4046FFF7A4FFE2
-:10183000EFF3108572B6032000F078F8134EB0680D
-:10184000FFF7F1FE02202073A76067604046FFF7B4
-:101850007AFD0C490A784978914202D0FFF722FEBE
-:1018600002E0A168081AA060FF20B1680A6850620F
-:10187000032000F050F885F31088BDE8F0810000E7
-:10188000282800405C05002070030020140500207B
-:10189000082800400C08005800080058800800582C
-:1018A0007C030020104700000901020002D43C48DC
-:1018B000815470473B4B02F00F021A4402F8041C9B
-:1018C0007047394B19684FF6FF020002114000F4CF
-:1018D000E0600843354908431860704738B5324B1B
-:1018E0001C68C4F30223C3F10704052C28BF042499
-:1018F0001D1D072D34BF0023DB1E012505FA04F44E
-:10190000641E2140994005FA03F35B1E1A401143FF
-:10191000BDE83440C8E7010007D4012200F01F01F0
-:10192000234B8A40400943F82020704701000BD424
-:10193000012200F01F011F4B8A40400943F820207C
-:10194000BFF34F8FBFF36F8F704710B5401EB0F1DC
-:10195000807F01D3012010BD174C60600F214FF034
-:10196000FF30FFF7A1FF0021A160072020600020C9
-:1019700010BD010007D4012200F01F010F4B8A4067
-:10198000400943F820207047010007D4012200F0ED
-:101990001F010B4B8A40400943F82020704700008C
-:1019A00000E400E018ED00E00CED00E00000FA05B6
-:1019B00000E100E080E100E010E000E000E200E093
-:1019C00080E200E038B58EB002A8C549C54C0FF2E0
-:1019D0007535302200F0DCF90094019569460FF26C
-:1019E0004D30C14C00F0E0F90121022000F0BFFAB7
-:1019F000BE4A0021042000F04DFB02A800F0C0FB0D
-:101A000000F072F800F0C4FB04F1260500204FF648
-:101A1000FF7184F89000298001200FF2A522002197
-:101A200000F038FB062000F03FFC00F0B4FC0FF2A1
-:101A3000D923002204F191010020FFF775FE0FF277
-:101A4000D123002204F192010020FFF76DFE002057
-:101A500068808022A648A02102804180012000F0F9
-:101A6000E9F80FB030BDF8B507469F4C7878A14D26
-:101A7000052804F1900604D03E2810D0FF2824D079
-:101A80002EE0B988E08C814202D10021E1843170DE
-:101A9000012000F0CFF801212970E08C10E0F878E7
-:101AA00001281DD17078FFF767FE307804280CBF3D
-:101AB0000620052030700021B7F80500E084297069
-:101AC0006880284600F061FC0AE0B7F803000428AB
-:101AD00006D1012000F0C6FCB0780A21FFF799FE7C
-:101AE0000120F2BD00F06FBC78B589B00020ADF8E0
-:101AF0001A0000F018FD804D804E286810F1010F8B
-:101B00000ED069683074090A020A000CB07472744D
-:101B100006F1100468683175F074090A717506E001
-:101B2000002000F04FFD040008BF0FF234242246CD
-:101B30000621002000F089FB607930724EF66E526B
-:101B400021797172E078B072A178F17260783073A7
-:101B500021787173089207AA2868634C07900621C0
-:101B60002E2000F072FB00BF7FA21021182000F091
-:101B70006CFB00BF80A21021082000F066FB18213A
-:101B8000012000F083FB00F031FD0DF1160006A9E5
-:101B90000190009105AB07220021012000F0D7FE43
-:101BA0006DA0BDF8181000900723BDF814000022A6
-:101BB00000F0D9FD0DF11A0000900223BDF81610B7
-:101BC000BDF81400002200F0CEFD02220221002008
-:101BD00000F0DBFC0020207000F076FE0120607039
-:101BE0000021E170082060751021A1750120207589
-:101BF000A07000204249A161C1B221440871401C7B
-:101C0000C1B21029F8DB002004900023A169207DD7
-:101C1000039102900022A17D607D01910090617886
-:101C2000A07800F065FEA07808B100F0EAFE0AB0E6
-:101C300070BD00002DE9F841012887B0044603D1AA
-:101C40002B480588468803E04FF4C8654FF47A6650
-:101C5000DFF8948008F190077878FFF78DFD022C6B
-:101C600005D13878012814BF022800F0C9FD3C7066
-:101C700000200690059008F1290204925FF0080206
-:101C800098F8280040A1039002910192002300934C
-:101C900032462946002000F0C6FD18490E2000F00B
-:101CA00085FE002808BF012C06D17878154908B0B8
-:101CB000BDE8F041FFF7ADBD08B0BDE8F081000020
-:101CC00010B5012000F0D6FB074C94F890000528D1
-:101CD00004D000F095FD002084F8900010BD0000B5
-:101CE0003C3F0008A4080320DC020020E71D000898
-:101CF0006C050020640500208075FF1F0400002093
-:101D000007B2010046E001000021012000F0CFB938
-:101D1000012000F0AFBB0021042000F0C8B9012071
-:101D200000F0E7B9012000F0ECB9000010B504465E
-:101D3000616801F1080000F039FA00B1012020705B
-:101D400010BD000010B1012803D07047072000F03B
-:101D5000BEB9072000F0C3B953544D333257420087
-:101D60006C7AD8AC57720000123456789ABCDEF008
-:101D7000123456789ABCDEF0FEDCBA09876543213E
-:101D8000FEDCBA098765432109503250535256315F
-:101D90004AB1000011F8013B521E00F8013B1CBF84
-:101DA00011F8013BF8E770477FB50C466A4D616852
-:101DB0006A4EE8612962284600F072FE246805F147
-:101DC000240000604060746006F10800006040601C
-:101DD00001203070296829B10FF249120092029453
-:101DE000684688477FBD1FB55C4C04F1080000F0D1
-:101DF00064FEE8B92078D8B1694604F1080000F023
-:101E000085FE012054492070C96941B100980290B3
-:101E100001A888479DF804102170080003D000989D
-:101E200000F027FF04E0009904F1080000F04EFEE6
-:101E300004F1080000F041FE28B9207818B104F13F
-:101E40000800FFF768FF1FBD2DE9FC410446002094
-:101E500000F05EF866882088A268DFF8FC80C6F390
-:101E6000090646EA8026E068B6B2C1B2304600F004
-:101E70003BF8002548F2E800FFF754FF08E07888B7
-:101E8000B04202D1226939781170787800B1012509
-:101E900008F1240000F011FEF0B9694608F12400B1
-:101EA00000F034FE0098014600F10B07487A0F2835
-:101EB000E5D0B7F80100B0420CD1887A6169C01E44
-:101EC000C0B28842C8BF0846606102462069F91C5A
-:101ED000FFF75EFF3878D9E72800CBD0012000F06B
-:101EE00017F80020BDE8F68110B513461B4A546868
-:101EF000A4F80900E1720A46194604F10C00FFF744
-:101F000047FF154A1369BDE810400021002018471B
-:101F10001149096A08B921B1084700291CBF0120ED
-:101F20000847704710B50146487A0F2818BF0E2899
-:101F300007D10B4800F0D4FDBDE810400020FFF7AA
-:101F4000EEBE064C04F1080000F0CAFD04F10800E2
-:101F5000BDE81040FFF7DFBE80040020F40400203D
-:101F6000A40400201948002101604160704710B5A9
-:101F700000F00CF85C6819B1012904D1204301E09C
-:101F800024EA0000586082F3108810BDEFF310823D
-:101F900072B60E4B704738B5EFF3108472B60B492A
-:101FA0000B4D086820B1296888476A6890470AE0A5
-:101FB000486820B1A8688047E968884703E0286935
-:101FC00080476969884784F3108831BD2C0500205B
-:101FD000A04000082DE9F041544CDFF85481A56978
-:101FE0002840A06131E0491C54F831000742FAD082
-:101FF00004EBC107184079681040014204BF4FF05C
-:10200000FF327A607E68304000F094F8606201210F
-:1020100001FA00F086437E60EFF3108272B6606AC8
-:1020200023698140C9430B402361022004EBC003B4
-:1020300053F8087C0F40401E43F8087CF6D182F329
-:102040001088606A58F82010884763692069A2697F
-:102050001840104207D0E069216A084203D10021EC
-:1020600003EA0207C0E7C046C046EFF3108872B625
-:1020700021696069A2690140114201BFE069216ADA
-:10208000084200F0ACFE88F31088C046C046A56147
-:10209000BDE8F08138B51446EFF3108572B600F054
-:1020A00049F8234941F8204085F3108831BD30B507
-:1020B000EFF3108272B61D4B1C6904431C6153F888
-:1020C0003150284343F8310082F3108830BDEFF3DC
-:1020D000108172B6154A536923EA000005E0EFF358
-:1020E000108172B6114A53691843506181F3108808
-:1020F0007047EFF3108172B60C4AD3691843D06170
-:10210000F4E770B5094C656A266A2062012101FA7C
-:1021100005F502E0284600F064FE216AE069084205
-:10212000F8D088432662E06170BD00001C000020EA
-:102130000004002002460020110C090404BF1020F6
-:10214000120412F07F4F04BF0830120205A312F0F0
-:10215000704F04BF001D1201120FC0F11F00995CE7
-:10216000401A70470403020201010101000000004F
-:102170000000000000F09CFE9DF80E0005B000BDC0
-:10218000F8B500F10C026B4621214FF66640F1E7ED
-:102190001B4800210171017200F034B818490A7916
-:1021A00041F822000879401C0871704770B5044658
-:1021B0006078FF2802BFB4F8030000F47F40B0F558
-:1021C000406F12D100260E4D00E0761C2979F0B246
-:1021D00088420AD2F1B255F82120204690470100EA
-:1021E000F3D002D0022805D006E02046BDE87040BA
-:1021F000FFF739BC002070BD012070BD0000000059
-:102200002005002080B5C046C046C046C046C04636
-:10221000C046C046C046C046C046C046C046C0468E
-:10222000C046C046C046C046C046C046C046C0467E
-:10223000C04600F0BDFEC046C046C046C046C046CF
-:10224000C046BDE8014000F059BF18B50C46C7B004
-:10225000114600F04EF88DF81D4022460DF11E008B
-:1022600000F04DFF00F03AF83F21ADF804100C22C9
-:1022700000F039F8A41C0692049400F04BF80028F2
-:102280004CBFFF209DF8000048B010BD00B5C7B09E
-:1022900000F01DF80F2200F032F800284CBFFF209C
-:1022A0009DF8000047B000BD00B5C7B000228DF812
-:1022B0000020ADF81C0000F011F8182200F01FF803
-:1022C00000284CBFFF209DF8000047B000BD002350
-:1022D0008DF81C008DF81D108DF80030182200219B
-:1022E00001A800F012BFADF8062007A90391012252
-:1022F000704700228DF800208DF81C007047ADF863
-:1023000006203F21ADF804100222049207A9039190
-:1023100001220692CDF814D0002101A8FFF794BD48
-:1023200038B50546314C287820B1012805D003285E
-:1023300006D031BD0121217031BD0020207031BD9A
-:102340006968087868B94978012903D100F08AF8EA
-:102350000121A1706968487818B900F08BF8002055
-:10236000A0706868017801290ED14078012804D155
-:10237000002000F077F80120A0706968487818B94B
-:1023800000F078F80020A07031BD0078012808BF67
-:1023900000F00DB8704780B50FF235020021022021
-:1023A000FFF778FE114800210170BDE8014080B5BB
-:1023B000002000F05FF80D4801210022417082707A
-:1023C000C170027101BD00210220FFF770BE000044
-:1023D00006490879401E8041C00F0871087820B175
-:1023E000C91C4FF6426000F073BE70474C050020D8
-:1023F000454981B00A6802430A60096808400090B4
-:10240000009801B07047000078B585B00446684672
-:10241000142100F085FE210008BF012005D02046D0
-:10242000012C0CBF0220022C01D1FFF7E1FF00BFFD
-:1024300039A1364E31F81450009501210191002246
-:10244000022102920391694656F8240000F06CFEC6
-:1024500000F002F806B070BD56F8240000222946AC
-:1024600000F011BF10B500F00FF8BDE810400122D8
-:1024700000F009BF10B500F007F8BDE810400022D9
-:1024800000F001BF0000000023A3204C33F810101F
-:1024900054F820007047000030B585B004460D4662
-:1024A0006846142100F03CFE0120FFF7A1FF29003F
-:1024B000DFF85C201AA00BD130F814100091002333
-:1024C0000193012102230291039300F017F813E016
-:1024D000012D11D130F814000E4B0090029501939C
-:1024E00000F00CF80FA0045D00220F2160B2FFF78E
-:1024F000F5F960B2FFF70FFA05B030BD694652F842
-:10250000240000F011BE00004C00005850000020D4
-:102510005C000020000021101000010002000000FB
-:1025200000040000280000B587B000F013F800F0A8
-:1025300020F8032100F009F800F013F800284CBF40
-:10254000FF209DF8000007B000BDADF80410ADF805
-:102550000610704700208DF800007047049207A90C
-:10256000039101220692CDF814D0002101A8FFF7B3
-:102570006BBC1822002101A800F0C7BDADF80620F1
-:102580000821ADF804100322704718B5C7B000F059
-:102590000CF83122FFF7F2FFFFF7E0FF00284CBFF5
-:1025A000FF209DF8000048B010BD00248DF81C00ED
-:1025B0008DF8004007A8417082700021182201A800
-:1025C00000F0A3BD20B501460648074DC2798A42F6
-:1025D00018BFA84218BF0838F8D18A4218BF002097
-:1025E00020BD00BFF873FF1F0070FF1F00B587B04C
-:1025F00000208DF8000000F0E3F840F2011200F036
-:10260000F9F80122069200F0E2F800284CBFFF2002
-:102610009DF8000007B000BD2DE9F84104460128EF
-:10262000C7B0884616461F4608BF022003D00228BE
-:102630000CBF102000200DF11D031D1800F035F80F
-:10264000012C8DF81C4002D0022C1AD01BE0022471
-:10265000224641460DF11D0000F051FD2E706F70B5
-:1026600000F0AEF800F0A6F84FF4817200F017F811
-:10267000E41C0692049400F0AAF8002805D5FF2077
-:1026800009E01024E4E7472005E09DF8000010B9B8
-:102690004E9800F063F8FFE748B0BDE8F081ADF870
-:1026A000062007A9039103227047032200216846F0
-:1026B00000F02BBD2DE9F64F0C460546012CC7B0A6
-:1026C0009B4608BF022003D0022C0CBF1020002024
-:1026D0000DF11F031E18FFF7E8FF012CADF81C5089
-:1026E0008DF81E4002D0022C2BD02CE00227569CE5
-:1026F000559DDDF85091DDF84CA1DDF848814899F1
-:102700003A4600F053F8A6F800B086F8028086F842
-:1027100003A086F804907571B47100F051F800F0D0
-:1027200049F84FF4827207A9ADF8062003910A37E1
-:1027300003220497069200F04AF8002805D5FF20EE
-:1027400009E01027D3E7472005E09DF8000010B905
-:10275000579800F003F849B0BDE8F08FBDF80110BC
-:1027600001800020704778B5C7B01D464C9B00F033
-:1027700034F800268DF800608DF821502A4619465D
-:102780000DF1220000F0BBFC00F01AF800F012F886
-:102790004FF4837200F028F8AD1D00F016F8002801
-:1027A0004CBFFF209DF8000049B060BD0DF11F0037
-:1027B00000F0A5BC3F21ADF8041070478DF8003043
-:1027C0001822002101A800F0A0BC06920495CDF8C3
-:1027D00014D0002101A8FFF737BBADF81C00ADF8FD
-:1027E0001E108DF820207047ADF8062007A9039130
-:1027F00001227047ADF806203F21ADF80410704764
-:1028000000B587B000208DF8000000F019F9812292
-:1028100000F00AF900F01CF900284CBFFF209DF8D9
-:10282000000007B000BD2DE9F84DC7B09446DDF8B3
-:1028300040E1519A559D569EDDF84CA1ADF81D1012
-:102840008DF81C004FF0000BADF81FC08DF8213043
-:102850008DF822E000F02CF800F01FF824F8095F52
-:10286000668000F0EDF83F20ADF8040083210120E0
-:10287000ADF8061000F00AF800F0ECF800284CBFA4
-:10288000FF209DF8000048B0BDE8F08D07AA57442E
-:10289000069003920D370497704788F800A007ACA4
-:1028A0005499E419524608F10100544400F027BC41
-:1028B0008DF82320174652998DF800B00DF12408A9
-:1028C00009A8B84400F01BBC00B5C7B000F08CF8F4
-:1028D00000F0B6F800F0AEF8852200F08BF800F0BA
-:1028E000B8F800284CBFFF209DF8000047B000BD9D
-:1028F0002DE9F043C7B0DDF838814F9E509D519FC0
-:10290000529C8DF81C004FF0000907A88DF800902C
-:10291000417082700DF123018DF81F308DF82080F9
-:102920008DF821608DF822500F608DF8274000F05F
-:1029300087F8862200F078F80C2200F086F800284C
-:102940004CBFFF209DF8000047B0BDE8F083F8B50C
-:10295000C8B005460E4617461C4600F022F808A8E7
-:10296000467087708DF8205000F08BF88A2200F0B6
-:1029700077F8032200F07AF8002848BFFF200ED431
-:102980009DF8000058B94F994E98BDF8012022805B
-:10299000BDF803300380BDF805000880002049B071
-:1029A000F0BD07220021684600F0AFBB18B5C7B0E4
-:1029B000002304468DF800308DF81C40224600F0BC
-:1029C00065F800F03DF800F035F88E2200F062F86E
-:1029D000641C0692049400F03DF800284CBFFF20D0
-:1029E0009DF8000048B010BD00228DF800208DF841
-:1029F0001C007047ADF8062007A90391012204923C
-:102A0000704700B587B000208DF8000000F018F87E
-:102A1000922200F009F800F01BF800284CBFFF20BC
-:102A20009DF8000007B000BDADF806203F21ADF8CD
-:102A3000041070473F21ADF8041070478DF8003046
-:102A40001822002101A800F060BB049207A903919D
-:102A500001220692CDF814D0002101A8FFF7F4B9A5
-:102A6000ADF80A203F21ADF808107047059208A97B
-:102A7000049107220792CDF818D0002102A8FFF791
-:102A8000E3B91822002102A800F03FBB0DF11D00A0
-:102A900000F035BBADF8062007A90391012270476D
-:102AA0000249034A01600261704700BF6D2B0008B4
-:102AB000972B0008006040607047EFF3108172B6FA
-:102AC000026882420CBF012000201CE0EFF310825C
-:102AD00072B603680B60486001600868416023E0DB
-:102AE000EFF3108272B6086043684B60416048683B
-:102AF000016019E0EFF3108172B6436802681A6052
-:102B000042680068426081F31088704710B5EFF3A7
-:102B1000108472B602680A600068FFE7FFF7EAFFF8
-:102B200084F3108810BD086082F31088704700009D
-:102B300000F03CBC6C486D49016001F1200242602C
-:102B400001F13003836001F13C02026201F14403B0
-:102B5000C36001F14C02026101F16803436101F1BC
-:102B60006C0282617831C16100F028BC38B504463E
-:102B70005F4D05F11000FFF79DFF5B494868A168B4
-:102B8000016005F11001E268C2608160456000F0FB
-:102B900031FC58482DE080B553494A68136801203C
-:102BA000187200F02DFC002002BD38B5514C504D7C
-:102BB00007E0694605F11000FFF7A8FF00982168BB
-:102BC000884705F11000FFF778FF0028F1D031BDEC
-:102BD00048484168084738B50446474D28460060D4
-:102BE00040604149C868A1680160456000F00DFC83
-:102BF00042482168016062684260002032BD80B5B1
-:102C00003949CA6813681020187200F004FC0020CB
-:102C100002BD3549CA68394910680B68184738B58C
-:102C2000364C354D06E069462846FFF76FFF0098A1
-:102C3000616888472846FFF740FF0028F3D031BD80
-:102C400038B504462E4D2846006040602D4800608F
-:102C5000406025480069A1688160E268C260056142
-:102C60002168016062684260216941616269826134
-:102C700031BD80B501462348FFF732FFBDE8024071
-:102C80000FF2050000F0D7BB38B5174C1D4D08E01A
-:102C900069462846FFF73AFF009920690069FFF767
-:102CA0001FFF2846FFF709FF0028F1D031BD10B5FE
-:102CB000154C2046006040600B4948690460BDE83F
-:102CC000104000F0CCBB1CB50F4C06E06946204616
-:102CD000FFF71CFF0098C046C0462046FFF7EDFEF8
-:102CE0000028F3D013BD000000000320B00903202A
-:102CF000840803203C0500209C0803204405002094
-:102D0000340A0320340500203C0A032010B528486B
-:102D1000284C88B0016841F400410160FFF722F9B6
-:102D200000F0B0FB24490020FEF783FC00F0C3FB59
-:102D30002248016841F4803101600121026C42F4B3
-:102D4000803202640120FFF712F90020FFF75CFBDC
-:102D50000120FFF759FB0220FFF756FB0120FFF788
-:102D600081FB01210020FFF797FBFFF7E3FE144AE8
-:102D700000210820FFF78EF904F23C5100916946CA
-:102D80000FF241020FF24100019200F03FF804F20D
-:102D90005471029104F5C96240F23C5103920591CD
-:102DA000049402A8FFF74CFFFFF7C2FE08B010BD65
-:102DB0000800005824000320AC04002090080058AC
-:102DC0004F2E00087047000080B5FFF770FF00210C
-:102DD0000120FFF7CCF8BDE80140FEF7F3BDFFF797
-:102DE000DAB84FF0FF30FFF7F5B800210820FFF701
-:102DF0005EB90220FFF77DB90220FFF782B9B0F576
-:102E0000806F08BFFEF76EBE704700007FB50C46AE
-:102E10004C4D61684C4EE8612962284600F056FB33
-:102E20002468746006F1080000604060012000F032
-:102E300065F801203070296841B10FF2E5020FF208
-:102E4000E903009201930294684688477FBD1FB54D
-:102E50003D4C04F10800FFF730FEE8B92078D8B106
-:102E6000694604F10800FFF751FE01203549207042
-:102E7000C96941B10098029001A888479DF80410E3
-:102E80002170080003D00098FFF7F3FE04E00099DA
-:102E900004F10800FFF71AFE04F10800FFF70DFE29
-:102EA00028B9207818B104F10800FFF79EFF1FBD74
-:102EB0002DE9F04105460E4690461C46002000F0E4
-:102EC0001DF8214F7868A0F80950C6723246414675
-:102ED0000C30FEF75DFF1B4A136900210020984764
-:102EE00048F2E800FFF788FF79688A78D21C04F17D
-:102EF0000800FEF74DFFBDE8F041012010B5114973
-:102F0000124C096A20B901B188470021217010BD17
-:102F10000120207011B1BDE81040084710BD00002D
-:102F20000020FFF766BF000010B50146064C04F113
-:102F30000800FFF7D5FD04F10800BDE81040FFF7D9
-:102F400054BF0000D0040020040500202A05002002
-:102F50001FB541780024FF2902BFB0F8031040F6E6
-:102F60000142914221D1634A9388B0F807109B1C1B
-:102F7000994209D1407B0124C10752BF8DF800401E
-:102F800000228DF800200DE05288521C91420CD195
-:102F900003218DF8001000F10D01B0F80B208DF821
-:102FA000082001916846FFF7BBF9204604B010BD28
-:102FB00010B58AB050484F4CFFF7F0F88F218DF8CC
-:102FC0001810E522B3218DF819208DF81A10D5229A
-:102FD0002E218DF81B208DF81C107F224A218DF8A0
-:102FE0001D208DF81E1098222A218DF81F208DF8A3
-:102FF000201048227A218DF821208DF82210CC2231
-:1030000040218DF823208DF82410FE2200218DF818
-:103010002520ADF8261000940823012206A90220DD
-:10302000FFF7FAFA00F034F8412100F026F8A01C6E
-:1030300000F018F8062100F00DF800F029F8422100
-:1030400000F01BF8201D00F00DF8102100F002F830
-:103050000AB010BD039200910223208806AA022123
-:10306000FFF728BBFE22059001218DF82520049151
-:10307000029100200A22019070478DF821208DF8DE
-:1030800024108E2200218DF82320ADF826107047E1
-:1030900019218DF81810ED2282218DF81A108DF863
-:1030A0001920ED218DF81C10AE224C218DF81B202B
-:1030B0008DF81E10212241218DF81D208DF8201041
-:1030C0009D2222218DF81F208DF822104522704765
-:1030D0001CB542224FF64264A04208D10548009137
-:1030E0000223818800880022FFF73DFB024610463C
-:1030F00016BD000054050020512F0008704710B580
-:103100000446FEF745FE204610BD10B504461046A5
-:103110000A460146204600F0E3F9204610BD0000B3
-:10312000002200F0E7B900002DE9F04106460A460A
-:103130004FF0000C4FF00F082CE05A4FBE4214BF66
-:103140004FF0070E4FF0040E0EFA01F1294344F838
-:103150002310C143544C236855680B40ED0348BF0E
-:1031600003432360636855680B40AD0348BF0343C6
-:1031700063604E4C236855680B40ED0248BF034323
-:10318000236063680B4051688D0248BF034363604E
-:103190000CF1010C106830FA0CF172D0012303FA23
-:1031A0000CF31840F4D05468022C18BF122C4FEACC
-:1031B0008C010ED14FEADC0406EB840401F01C0EF6
-:1031C000256A08FA0EF7BD43176907FA0EF73D4363
-:1031D00025624FEA4C0403253768A540ED4305EA14
-:1031E000070E177907F00307A74047EA0E07376075
-:1031F0005768012F18BF022F03D0112F18BF122FAD
-:1032000011D1B76805EA070ED768A74047EA0E074D
-:10321000B760776827EA03035768C7F3001707FA10
-:103220000CF73B437360F3681D40936803FA04F4A2
-:103230002C43F4605468E300AAD51D4C4FEA9C036C
-:1032400054F8237001F00C0108FA01F5B6F1904F23
-:1032500027EA050508BF4FF0000E11D0154FBE42FA
-:1032600008BF4FF0010E0BD0134FBE4208BF4FF006
-:10327000020E05D0114FBE427FF45FAF4FF0030E38
-:1032800062E7BDE8F0810AB18161704781627047F1
-:103290000B4A136803421CBF1060FFF7B0BD7047B4
-:1032A0000000000000100048800800580008005886
-:1032B000080001400004004800080048000C0048D5
-:1032C0000C080058C0680840884201D101207047AE
-:1032D00000207047C0690840884201D10120704732
-:1032E0000020704710B5614C02212046FFF7F2FF25
-:1032F00038B16068C043810703D5FFF790FC022016
-:1033000018E001212046FFF7E5FF38B16068C043AF
-:10331000C10703D5FFF749FC01200BE00821204637
-:10332000FFF7D8FF38B16068C043010703D5FFF746
-:10333000CAFC0820A06010BD10B54C4C00F033F85A
-:1033400018B96068C043810306D400F02CF830B986
-:103350006068C043810302D5BDE8104064E00821E5
-:1033600000F022F870B96068C04301030AD56068B4
-:103370003F4940F400206060086880474FF4002215
-:10338000A26010BD202100F00FF858B96068C0435A
-:10339000810207D5606840F400106060BDE810400D
-:1033A000FFF716BC10BD022120468BE740BF20BFAF
-:1033B0003048016841F400410160704780B52E48F3
-:1033C000016841F480110160006800F480100090F1
-:1033D00000982648016841F001010160026842F44A
-:1033E000803202602C20FEF796FABDE802402D20C4
-:1033F000FEF791BA21480168490849000160704709
-:103400001F494FF48030086070471C48016821F064
-:1034100002010160704719484FF4003141600268B1
-:1034200022F40032026070471448016841F4003110
-:103430000160FFF7EEBB38B504460C4D0821284665
-:10344000FFF740FF30B10A480460696821F40021A9
-:10345000696031BDA0474FF40020A86031BD074826
-:10346000016821F00801016070470000000C00585D
-:10347000680500200C04005850000058040C005847
-:10348000080C0058DFF80C00FFE7016841F4806188
-:103490000160704704040058032010B5FEF711FACC
-:1034A0000F2000F041F80024002814BF012400F090
-:1034B0000BF8204610BD0348FFE7016841F0010109
-:1034C00001607047042004E0704700000249034A8D
-:1034D00001600261704700BFD72B0008FF2B000876
-:1034E0004018491C1CBFB1F1010100F8012DF9D1B0
-:1034F0007047000000B500BF13009646944610398F
-:1035000028BFA0E80C50FAD85FEA417C28BF0CC065
-:1035100048BF40F8042BC90728BF20F8022B48BF3A
-:1035200000F8012B00BD000070B50F4E0446B068D6
-:103530000025A8B100F05FF8B2684FF47A71B1FBD2
-:10354000F2F2B0FBF2F0FEF700FA48B9102C07D205
-:10355000002221464FF0FF30FEF7C0F9746000E012
-:103560000125284670BD00BF440000204FF0B04048
-:10357000006800F0F000B02888BFB020704738B570
-:103580004FF0B044244DA16811F00C0106D1FFF7B3
-:10359000EDFFC0F3031055F8200032BD04291F4A87
-:1035A00005D008291E4804D12168C90222D5104639
-:1035B00032BDE16801F00301022904D0032904D1DE
-:1035C0002168C90207D5104605E0FFF7CFFFC0F319
-:1035D000031055F82000E168E268E368C1F30621B2
-:1035E0004843C2F30211491C5B0FB0FBF1F05B1CB6
-:1035F000B0FBF3F032BD80B5FFF7C1FF0549FFE72F
-:10360000084A0968C1F3031152F82110B0FBF1F028
-:1036100002BD000008000058C43E00080024F40069
-:103620000048E801843E0008DFF870130A680309C7
-:1036300003F47F2300019A4300F47F2000F088B94F
-:10364000DFF858231368010C23EA014343EA0043DF
-:10365000136070472DE9F843054600242878DFF809
-:103660003C634106A0464FF0B0472DD5286B70B1A2
-:10367000B0F5800F06D0B0F5000F18BFB0F5400FC1
-:1036800017D01FE0F96841F48031F960F3E0386841
-:1036900020F08060386000F087F9814638680001CA
-:1036A00040F1D68000F080F9A0EB09000228F5D99E
-:1036B0000324DDE000F078F9A0EB0900022840F2D5
-:1036C000CF80F5E70124A0462868010531D5B06810
-:1036D00000F44078286C80452AD000F06BF9B8F1EE
-:1036E000000FB16805D1286C21F440710143B1602D
-:1036F0001EE0B06840F48030B06021F44071B068E2
-:1037000020F48030B060286C0143B160B068C0071D
-:103710000ED500F049F98046B068800708D400F063
-:1037200043F9A0EB080041F289318842F4D3032425
-:10373000A0462878C10705D53268A869920840EAF2
-:10374000820232602978880705D53168E86921F45A
-:103750004061014331602978C80644BFA86AFFF779
-:103760006FFF2878810644BFE86AFFF769FF287871
-:10377000410744BF286AFFF757FF2878010744BF75
-:10378000686AFFF751FF2868C1051ED53268686B6B
-:1037900022F0406202433260696BB1F1006F00F0C9
-:1037A000C9F8686BB0F1806F0FD1396821F0806182
-:1037B00000F0CBF804463868000163D500F0F4F857
-:1037C000001B0228F7D94FF0030870E000F0ECF876
-:1037D000001B022864D9F6E7316821F040413160CE
-:1037E00020F08050326822F0406210433060A86BB5
-:1037F000B0F1C05F00F09EF82868410576D53268C8
-:10380000E86B22F0405202433260E96BB1F1005F95
-:1038100003D1F86840F48030F860E86BB0F1805F65
-:1038200064D1396821F0806100F08FF8044638686F
-:1038300000014CD500F0B8F8001B0228F7D94FF072
-:10384000030853E000F0B0F8001B022847D9F6E760
-:1038500000F067F8A86821F4781100F071F881464B
-:10386000386800017FF526AF39696869014339611D
-:10387000002C7FF428AF3168286B21F4400101430C
-:10388000316021E73969686821F4FE4141EA00218D
-:1038900039613969E86821F0606100F051F8044647
-:1038A0003868000192D5396968690143396129682E
-:1038B0008805A1D5A86BB0F1804F1CBFB0F1004FB7
-:1038C000002889D1316821F0404108438EE700F09B
-:1038D00028F8286921F0604100F032F80446386881
-:1038E0000001AFD539696869014339612968C804A5
-:1038F00005D5F168686C21F440410143F160296805
-:1039000088040BD5796AE86C21F0300101437962B3
-:10391000796AA86C890840EA810179624046BDE86D
-:10392000F2833869696820F4FE4040EA012038617A
-:103930003969704703D1F86840F08070F8607047CB
-:1039400001433961396841F08061396000F02CB879
-:1039500010430860704710B511490A6842F0807240
-:103960000A600B6823F080730B600468416882680A
-:103970000C4B0C43C168144302690C4344EA0244F3
-:103980005C601968406921F47C5141EA00211960AA
-:10399000196841F06001196010BD000088000058EE
-:1039A000380000580060004001480068704700BFC0
-:1039B000440000200248016841F4807101607047B2
-:1039C0000004005818B59BB0FFF766FD574CE06B3C
-:1039D00040010ED5E06BC0000BD4FFF7EBFFFFF703
-:1039E000E9FFA06B40F48030A063A06B20F480302E
-:1039F000A06300F055F807A85021FFF791FB684637
-:103A00001821FFF78DFB4A480168226C42F0010241
-:103A10002264206C8107FCD54FF48072002107924C
-:103A2000149107A8FFF716FE206840F08070206010
-:103A30000022216801F0807106914FF00053069931
-:103A400000924BF67F312222039104920021202222
-:103A50000193029105926846FFF77DFFFFF7AAFFE9
-:103A6000FFF7A8FFA06B40F00100A063A06B8007E8
-:103A7000FCD50022E16B2F4821F4404141F4804104
-:103A8000E16301680260036903F05003036100F021
-:103A900028F8FFF73BF94FF0FF30FEF79BFAFAE703
-:103AA000254881B0016841F4801101603F21006820
-:103AB00000F4801000900098204841604161016846
-:103AC00041F47C110160026942F47C1202610168D8
-:103AD00041F03F010160026942F03F02026101B022
-:103AE000704710B5FFF766FFFFF764FF1448154CE9
-:103AF000016821F4407141F4807101600F21026876
-:103B000042F40042026047F6FF720F488160C260D3
-:103B1000046000F01BF8CA20606253216162FF213B
-:103B2000A068C008C000A060616210BD58000058C5
-:103B3000941400588008005850000058040C005895
-:103B40009000005800280040AC04002070B504002C
-:103B500049D094F8210028B9002184F8201020468B
-:103B6000C046C04600F04EF853202168486200F07D
-:103B700052F8FF2510B100F03FF834E02168DFF87B
-:103B8000AC008A6802408A6022689368666821698E
-:103B9000A0690E430643334393602068E1680161E6
-:103BA00020680169A26841EA024101612068C16898
-:103BB00021F08001C1602068C16C89088900C1645E
-:103BC0002168CA6CE369606903431A43CA642168C7
-:103BD0008868810609D400F01CF830B1206845627D
-:103BE000042100F01DF8012070BD2068456201210C
-:103BF00084F82110002070BD20684562042184F8FB
-:103C000021107047022084F82100CA2122685162E5
-:103C1000704720460CE0204623E02068C0F824804E
-:103C200084F82110002084F820007047BFFF8FFF28
-:103C300038B504462068C16821F0A001C160FFF7D3
-:103C4000B3FE05462068C168880608D4FFF7ACFEBD
-:103C5000401B40F2E9318842F4D3032032BD0020FA
-:103C600032BD38B504462068C1684A0612D44FF008
-:103C7000FF31C160FFF798FE05462068C16848061D
-:103C800008D4FFF791FE401B40F2E9318842F4D39B
-:103C9000032032BD002032BD00EB81003D4AD0F848
-:103CA0008010914201D0012070470020704742F4FB
-:103CB000806240F82120704737481F2181610268E7
-:103CC000D208D20042F0030202603448016841F099
-:103CD0000401016030BF7047704710B5304C00F0F0
-:103CE00048F80028FBD1042100F044F828B92D48F9
-:103CF0000068010403D500F03FF800F057F80022F7
-:103D000003212046FFF7D3FF23480168C908C900F3
-:103D100041F0020101602148016841F004010160A5
-:103D200030BF10BD10B51E4C00F026F800F021F891
-:103D30000028FBD14FF0B040816801F00C0104294C
-:103D400011D1016841F48031016001688903FCD51B
-:103D500082689208920042F002028260816801F05B
-:103D60000C010829FAD12046BDE8104000220321A9
-:103D70009DE7032120468FE700220421204696E795
-:103D800080B500F02DF80548016821F004010160BC
-:103D900030BF01BD000400800004005810ED00E0B9
-:103DA000001400588804005800F022B84FF0B040CA
-:103DB000016841F48071016001684905FCD58268A1
-:103DC0009208920042F001028260416A89088900EB
-:103DD0004162816801F00C010429FAD170470000AA
-:103DE0000248016821F002010160704710E000E024
-:103DF0000248016841F002010160704710E000E0F4
-:103E000080B51C48016841F4700101600020FEF794
-:103E1000D9FB48B180791849184A0A600B6823F425
-:103E20007C5343EA00230B604FF0B040016841F43B
-:103E30008031016012490A68D208D20042F00102C2
-:103E40000A600A6802F00702012AFAD101688903B0
-:103E5000FCD582689208920042F00202826081687A
-:103E600001F00C010829FAD10168490849000160F4
-:103E700001BD000088ED00E09C000058FECAFECAAB
-:103E80000040005801000000030000000500000091
-:103E90000100000001000000060000000A00000010
-:103EA00020000000020000000400000008000000E4
-:103EB0001000000040000000800000000001000031
-:103EC00000020000A0860100400D0300801A0600D9
-:103ED00000350C0040420F0080841E0000093D00A8
-:103EE00000127A000024F40000366E010048E80158
-:103EF000006CDC0200000000000000000000000078
-:103F00000000000030B5016884684218416802EB87
-:103F10005103C9070BD54C4409E012F9011B12F8F3
-:103F2000015B002904F8015B05D5491CF9D19A42CF
-:103F3000F3D10C3030BD491EF1D5F8E70000000088
-:103F40000000000000000000000000000000000071
-:103F500044000800400508013A799C00F401000083
-:103F6000FFFFFFFF48010100000000007047FEE76F
-:103F700070477047704700F011B84FF48060FFF74A
-:103F800087B900E000BF0148FCF7DCB868000020FA
-:103F9000FDF7FABAFFF7D0B9FFF7A4B902490A68EA
-:103FA000886882180A6070474400002080B500F0DD
-:103FB00015F802000023DB431068984204D011007A
-:103FC0000220ABBE002010605068984204D0111D42
-:103FD0000220ABBE0020506001BD000001487047C8
-:103FE000000000006000002010B507497944183136
-:103FF000064C7C44163404E00A68081D11448847C6
-:104000000146A142F8D110BD2C0000005000000074
-:104010004EF68851CEF20001086840F47000086046
-:10402000BFF34F8FBFF36F8F4FF00070E1EE100AB8
-:104030007047000057C7FFFF080500006800002018
-:10404000800800002400032000000000B9FEFFFFEC
-:104050007401000046000000040000200120C0465A
-:10406000002801D0FFF7C0FFAFF300800020AFF3BE
-:104070000080FFF7A7FC00F000F800F001B8000096
-:104080000746384600F002F8FBE7000080B5FFF76E
-:104090008DFF024A11001820ABBEFBE7260002008C
-:1040A000813D0008A93D0008DB3C0008253D0008D3
-:1040B000B93C0008D93C0008014880470148004746
-:1040C000013E0008C9400008AFF30080FFF7A0FFE1
-:1040D000FFF7C4FFFFF7FEBFFFF7FEBFFFF7FEBF0E
-:1040E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF04
-:1040F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF4
-:10410000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFE3
-:10411000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFD3
-:10412000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFC3
-:10413000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFB3
-:10414000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA3
-:10415000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF93
-:10416000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF83
-:10417000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF73
-:10418000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF63
-:10419000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF53
-:1041A000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF43
-:1041B000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF33
-:1041C000FFF7FEBF030DFF0183D800F8FFF00000EA
-:1041D00010FD000001FA0008480004004800040037
-:0741E00048FD000048F8FF54
-:04000005080040C9E6
+:1003B00095F82802012801D1022032BD012285F8DA
+:1003C0002822286800F0C8FB24B9286805F50C71BC
+:1003D0000020C046002085F8280232BD1CB5044626
+:1003E00001F00F0362689A4201D2012016BD00F0AD
+:1003F0001AF847BF2830012200F59470002201F05E
+:100400000701427000228270017094F828120129BD
+:1004100001D1022016BD00F00CF800F0B6FB002060
+:1004200084F8280216BD01F0070004EB40100A060C
+:100430007047012284F828220146206870472DE980
+:10044000F84F00F59475064627E001880AEA010195
+:1004500041F40041018006F124043068B0F85010E6
+:10046000227901EBC201401800F202400088A16924
+:10047000C0F3090020620844A0610021304600F06A
+:1004800023F9217849B1E06938B92178306841F021
+:100490008001A0F84C1000212170306800F1440167
+:1004A0000A88130440F1E9800A8812F00F0440F62C
+:1004B0008F7748F60F7A59D1D206C6D50288130530
+:1004C00011D5898900F0E2F8EA88C3F30903EB61EA
+:1004D00006F50C7100F0B0FB306800F0D1F8304642
+:1004E00000F0E4F8D9E71104D7D500F0C9F8306876
+:1004F000B0F8501000F0CAF8C3F30903002BEB6109
+:100500001CBF696900290AD0EA8800F095FB686978
+:10051000E969084468610021304600F0CDF8306890
+:10052000B0F850104118286901F2064120B9088836
+:1005300048F2FF32104009E03E2805D24208C007C9
+:1005400048BF521C900203E04009800240F4004082
+:1005500008804BF68F7230680188114081F4405159
+:1005600041F4004141F08001018096E730F8248099
+:100570005FEA084106EB441957D530F824100F40C4
+:1005800047F0800720F8247009F594773068397BAC
+:1005900071B9B0F85030397803EBC103C21800F0DC
+:1005A0007DF82DD0FA8879695B4600F045FB27E09D
+:1005B00039780B4630F823305A04B0F8503003EB4A
+:1005C000C10107D5421802F2024200F069F80AD0D0
+:1005D0003A8904E0421800F061F804D07A895B4659
+:1005E000796900F029FB3168387831F8202048F625
+:1005F0008F731A4042F4004242F0C00221F82020DA
+:10060000F9695944F961796901EB0B027A61BB69B7
+:1006100013B139698B4504D23978304600F04CF873
+:1006200003E039783046FFF782FE5FEA086020D5A4
+:10063000316831F824200AEA020242F4004209F14A
+:10064000280021F8242032680178B2F8503003EBFA
+:10065000C103D21802F2024212884369C2F30902AE
+:10066000C2611A4483694261002B304602D100F016
+:100670002BF812E7FFF767FE0FE70020BDE8F28FC7
+:1006800001880F4047F08007078070472A7801EB08
+:10069000C201411801F206410B88704702F206427E
+:1006A0001188C1F3090BBBF1000F704700F50C7105
+:1006B000D0F8700200F0E3BA00EB4112D0F87002FB
+:1006C000D2F83C2100F005BB00EB4112D0F87002DB
+:1006D000D26B00F03DBBD0F8700200F0CBBB10B580
+:1006E0000446D4F8700200F088FBD4F87002BDE82C
+:1006F0001040012100F0AABBD0F8700200F0A9BBA5
+:10070000D0F8700200F0ADBB10B51C461346D0F80F
+:10071000C0022246FFF7E1FD002010BD80B5D0F8F1
+:10072000C002FFF728FE002002BD80B5D0F8C0024D
+:10073000FFF754FE002002BD81B0D0F8C00201F0E6
+:100740007F0200EB421009064CBF90F82A0090F897
+:100750002A0101B0704780B5D0F8C002FFF7AEFDA6
+:10076000002002BD80B5D0F8C002FFF7ECFD0020EC
+:1007700002BD80B5D0F8C002FFF7D9FD002002BD50
+:100780002DE9F8470B4648F68F111D7802460020E8
+:1007900032F825600E40D97803290CD8DFE801F043
+:1007A00002080C0546F4007606E046F4C06603E055
+:1007B00046F4806600E0012048F28004264322F8D7
+:1007C000256048F68F7519780E4632F826702F404E
+:1007D0003943214322F826104BF68F76197B93F884
+:1007E000009000294CF2800748F6BF7C48F2C00E0A
+:1007F00067D1B3F806A04FF6FE7101EA0A0A5978EC
+:100800000029B2F8501011441ED001EBC90101F5C6
+:100810008061A1F800A0197832F82160760606D52B
+:1008200032F8216035404EEA050522F8215019784A
+:10083000DB78012B32F821300CEA03030EBF1C4396
+:1008400083F020031C43CAE001EBC90909F2044903
+:10085000A9F800A0B2F8501002EB010C19780CEBCB
+:10086000C10C19690CF2064C31B9BCF800E048F231
+:10087000FF3101EA0E010CE03E2908D24FEA510E89
+:10088000C90748BF0EF1010E4FEA8E2E03E0490959
+:10089000890241F4004EACF800E0197832F821C02A
+:1008A0005FEA4C4C06D532F821C005EA0C053D4301
+:1008B00022F82150197832F821301E4086F4405633
+:1008C0008CE032F82910294041F4014141F08001C7
+:1008D00022F82910B2F85010B3F808A002EB010971
+:1008E000197809EBC10101F580694FF6FE7101EA43
+:1008F0000A01A9F80010B2F85010B3F80A9002EB00
+:100900000108197808EBC10808F204484FF6FE7197
+:1009100001EA0901A8F80010597893F8008000292D
+:1009200032F828102BD1490405D532F82810294077
+:100930000F4322F82870197832F821707F0606D507
+:1009400032F821702F404EEA070722F821701978FB
+:1009500032F821703D404EEA050522F82150197801
+:1009600032F821502E4086F44056264322F821606A
+:10097000197832F821300CEA03031C432FE04904B4
+:1009800005D532F828102940394322F82810197863
+:1009900032F821805FEA486807D532F8218005EAFD
+:1009A00008084EEA080E22F821E0197832F821E012
+:1009B00005EA0E053D4322F82150DD781978012D16
+:1009C00032F821500CEA050518BF85F020052543B3
+:1009D00022F82150197832F821301E40344322F891
+:1009E0002140BDE8F287F8B50E46054672783469B5
+:1009F000B069012A48F2800748D1844232BF001B07
+:100A000004460020B061307B40B9F28800F0A0F8C5
+:100A100000F097F800F2024004802EE03078C10028
+:100A200035F820004206B5F85000284405D50918CD
+:100A300001F206410C80728904E0091801F20241BA
+:100A40000C80328900F084F8707848F68F7140B9D4
+:100A5000307835F82020114041F4004141F0C001C8
+:100A600009E0012809D1307835F82020114041F4FF
+:100A7000404141F0800125F82010317835F82120DF
+:100A800048F6BF70024082F030024EE0844232BF2E
+:100A9000001B04460020B0616009317B83020029FD
+:100AA00043F4004304F001004FEA540C18D0AAB9F3
+:100AB00000F040F801F202413CB9B1F800E0202218
+:100AC00062F38F2EA1F800E008E03E2C05D26246CA
+:100AD00000B1521C92020A8000E00B807178A9B923
+:100AE00000F028F801F206412CB90A88202060F3B2
+:100AF0008F220A8011E03E2C06D208B10CF1010CC5
+:100B00004FEA8C20088008E00B8006E0012904D120
+:100B100000F017F800F2064004804BF68F70317831
+:100B200035F82120024082F44052174325F8217005
+:100B30000020F2BDB5F850103278691801EBC201FF
+:100B40007047B5F850003178281800EBC1007047A5
+:100B50007169A3B228465EE018B50A78497830F882
+:100B60002240002948F2800305D048F6BF710C40AE
+:100B700084F0100404E04BF68F710C4084F4805430
+:100B8000234320F82230002012BD30B50A7B002A12
+:100B900036D14A780C78002A30F8242048F28003B5
+:100BA00048F68F7516D0520608D530F82420154027
+:100BB00045F4004545F0C00520F82450CA78012AC4
+:100BC0001ED00A7830F8224048F6BF710C4084F0FD
+:100BD000200412E0520408D530F82420154045F4D2
+:100BE000404545F0800520F824500A7830F822402E
+:100BF0004BF68F710C4084F44054234320F822308C
+:100C0000002030BD11B98021A0F84C1000207047A1
+:100C1000B0F84400704710B580185B1C00F5806088
+:100C20005B0807E00A784C7842EA0422891C20F825
+:100C3000022B5B1EF6D110BD10B5821802F5806242
+:100C4000580806E032F8024B0C70240A4C70891CDC
+:100C5000401EF7D1D80744BF1088087010BD10B5EA
+:100C6000D0F8B42202241AB11268904700B90024C7
+:100C7000204610BD80B5D0F8B422536806E138B5DF
+:100C8000044604F52A75284600F006FB04F5257095
+:100C900001210160418B4160017D11F01F0003D0F3
+:100CA00002280BD005D30EE02946204600F0F2F8CA
+:100CB0000DE02946204600F065F908E02946204667
+:100CC00000F085F903E001F0800100F03EF800201B
+:100CD00032BD38B5044610460A0004F5257328D104
+:100CE000196803291DD104F5B0714A680D68AA423C
+:100CF0000BD2AD1A0D60954238BF2A46014692B21A
+:100D0000204600F0F8FA002032BD186A016921B1CE
+:100D1000187A032804BF20468847204600F0F3FADB
+:100D2000F1E70529EFD100201860002100F00DF84F
+:100D3000E9E7186A82692AB1187A032802D12046A5
+:100D40009047E0E7022032BD80212046FFF7E6BC55
+:100D500038B504460800134604F5257542D12868C5
+:100D6000022832D1226A616A914207D2521A226263
+:100D7000194692B2204600F0B6FA11E0E269B2FBE1
+:100D8000F1F001FB102090B98A4210D368688242CA
+:100D90000DD200220021204600F0A5FA0020686054
+:100DA0000023002200212046FFF7E3FC13E0286A1D
+:100DB000C16821B1287A032804BF20468847FFF77D
+:100DC000C3FF204600F0A6FA05E0042818BF00285B
+:100DD00001D1FFF7B9FF287B012804BF0021297347
+:100DE000002032BD286A42692AB1287A032802D13C
+:100DF00020469047F4E7022032BD10B50446402358
+:100E000000220021FFF780FC04F5AC700121016095
+:100E100040234021C160002280212046FFF774FC5E
+:100E20000120A06104F5257240206062012010724B
+:100E30000020106060601061506A28B1126A616819
+:100E40005368C9B220469847002010BD01740020A5
+:100E5000704700F52770017841700421017000206F
+:100E6000704700F527700178042904BF42780270AA
+:100E70000020704780B500F527710A78032A03D156
+:100E80008969C96901B18847002002BD98470020DF
+:100E900002BD00007CB50446087810F0600004F53F
+:100EA000277508D0202818BF40282DD1AA6993683B
+:100EB0002046984764E04878092825D8DFE800F004
+:100EC0003D552450240905242B27204600F014F911
+:100ED00056E08A88002A04BFC888002814D14E88AA
+:100EE000802E11D22878032806F07F060CD0AE7031
+:100EF00031462046FFF72FFC00F0FBF8002E14BF10
+:100F00000220012028703BE000F07CF938E0204608
+:100F100000F07AF934E0C8880128F5D12A78521E09
+:100F2000012A04D9921EEFD10122211D14E00020D4
+:100F3000A060012204F108010EE02878401E02287A
+:100F4000E2D8C8880228DFD1A868012100B10321B6
+:100F5000E160022204F10C01204600F0BCF90FE030
+:100F6000488801280CD1012107E02878401E02287A
+:100F7000CAD84888012803D10021A96000F0B9F837
+:100F8000002076BD38B50D460446287810F0600084
+:100F90001CBF2028402816D104F527721178491E5D
+:100FA000022910D8287902280DDA92699368294617
+:100FB000204698470146E888002808BF002904D148
+:100FC00000F097F801E000F01CF9002032BD7CB57C
+:100FD0000446084604F527730278017912F060058B
+:100FE00009D0202D18BF402D6BD19A699368014616
+:100FF0002046984768E002F06002202A07D19A69EB
+:1010000093680146204602B0BDE870401847427818
+:101010008AB3012A12D0032A53D11A78022A13D094
+:10102000032A4ED142881ABB002918BF80291FD03D
+:10103000C088E8B92046FFF771FB19E01A78022A48
+:1010400002D0032A0CD03CE0002918BF802938D0F8
+:101050002046FFF763FB80212046FFF75FFB33E06C
+:10106000408888BB11F07F0F1CBF2046FFF75DFB57
+:1010700000F03FF828E0142201F07F051B7855436B
+:101080006619022B06F5AA7502D0032B10D018E0C2
+:10109000002918BF802914D1080648BF06F114059D
+:1010A0000020286002222946204600F014F90BE0B7
+:1010B00001F00F0312FB03F20B06224406D59269DE
+:1010C00072B9014600F09EF8002076BDD2F8582192
+:1010D000002AF6D0002918BF802904D10020E0E7BB
+:1010E00006F11405F6E72046FFF726FB00B10120C4
+:1010F000D7E7204600F007B938B5044600200D4672
+:10110000ADF8000004F52C726888010A012908D0A6
+:10111000022923D003292ED006295FD0072964D0C5
+:101120006CE01268207C136869469847BDF800108F
+:1011300079B1E98879B1BDF80010EA88914288BF99
+:101140001146ADF800100146BDF80020204600F021
+:10115000C2F8E88808B9FFF7CCFF31BD207C5168A0
+:101160000028684604D1896A884702214170DDE77A
+:10117000C96A8847F9E7C0B205283FD8DFE800F020
+:10118000030B1219202710684268002A36D0207CF1
+:1011900069469047CAE7106882687AB3207C69463E
+:1011A0009047C3E71068C26842B3207C6946904705
+:1011B000BCE7106802690AB3207C69469047B5E72E
+:1011C00010684269D2B1207C69469047AEE710684A
+:1011D00082699AB1207C69469047A7E7207C68B96C
+:1011E00051684A6B68469047A0E7207C30B9516847
+:1011F0000A6B684690470722427097E700F001F8B3
+:1012000031BD294620465BE07CB50D460446214EA3
+:10121000688830703178084602282DDA94F89C22CC
+:10122000022A02D0032A0FD02BE041B160600320D4
+:1012300084F89C022046FFF712FD02281CD02046AD
+:10124000BDE8764000F05FB841B9022084F89C0206
+:10125000002060602046FFF70DFDF0E761688842DE
+:10126000EDD0C9B22046FFF705FD31786160204618
+:10127000FFF7F5FC0228E2D129462046BDE87C4074
+:101280001EE0FFF7BEFF31782046BDE87C40FFF747
+:10129000F1BC0000290500200A7802704A784270EB
+:1012A000CB788A7802EB032242804B790A7902EBF1
+:1012B000032282808A79C97902EB0122C2807047B9
+:1012C00010B504468021FFF729FA2046BDE81040FA
+:1012D0000021FFF723BA80B513460222C0F89422FA
+:1012E000C361036201E080B513460A460021FFF79F
+:1012F00039FA002002BD80B513460A460021FFF7E7
+:1013000038FA002002BD80B50421C0F894120023F1
+:101310000022EBE780B50521C0F8941200230022DB
+:10132000ECE70000DFF83C150A6892B200E00246E4
+:10133000086880B28242FAD170472DE9FC41044628
+:101340001825DFF82485DFF82465684308EB0007DB
+:101350003078062808D131787170347078754FF084
+:10136000FF307060002039E000F077F8B9680918A4
+:10137000B96008F10803B96832786A439A58914213
+:10138000327813D308F1150315FB02FC13F80C3067
+:10139000062B25D008F108066B43F358994222BF6B
+:1013A00008F115036A439A5CEED219E011463378CE
+:1013B00069439A420BD008F1140308F1150C5B5CE9
+:1013C00015FB03F50CF805407A753B7500E07A755E
+:1013D00008F114025454317871703470BDE8F6810C
+:1013E0001146694308F115035B5C062B04D008F134
+:1013F000140615FB03F574557B753A7508F1150253
+:101400005454EBE7F8B5DFF86434DFF85C541E7829
+:10141000182402466243B0422A4404D11878587016
+:10142000507D18700FE0167D507D92F815C005F1C3
+:1014300015076643062807F806C004D0167D143544
+:1014400014FB00F42E55012010731878062802BFF3
+:1014500000294FF0FF315960F1BD10B5DFF80C44A1
+:10146000606810F1010F0FD0FFF75CFF6168DFF8D3
+:101470000024814261683CBF5388C918081A51781A
+:1014800048431178C84000E0002080B210BD2DE92B
+:10149000F84FDFF8DC53DFF8DCB3D5F80880D8F874
+:1014A0000000DBF800104A0500F090F9DFF8BC639B
+:1014B000DFF8B4A321F4806181604FF0180934781B
+:1014C0000AF1080019FB04F14758FFF7C6FF8742ED
+:1014D00017D200270121B170062C3DD019FB04F46E
+:1014E0000AF108010AF108020959814223BF0AF1F1
+:1014F00008010959091A002111510AEB04014C7D18
+:10150000EAE7A9884118B94202D2AF880021E2E790
+:101510003F1ADFE7022802DA2878012800D07F1E70
+:10152000D8F80000C1684A07FAD500F055F9DBF891
+:101530000C00000CBFB247EA0047CBF80C70FFF775
+:10154000F1FE7060A8680068816841F48061816084
+:10155000AFF30080BDE8F18FB8B20028DAD1FFF711
+:10156000E1FE70600320BDE8F24F00F0F6B92DE90E
+:10157000F843EFF3108872B6BD4DBB4BA868016805
+:10158000CA224A6253204862B84A886820F48060C0
+:10159000886018201678374647431F44387B022856
+:1015A00026D13C68D7F810909078F0B17A7B012A68
+:1015B0000AD101213046FFF725FF88F310887968AA
+:1015C000304600F016F904E088F31088304600F049
+:1015D000C1F8A8680068CA214162224653214162CD
+:1015E0004846314600F050F90BE0FFF750FF06E0A7
+:1015F000C8684207FCD500F07EF89F49086088F370
+:101600001088FF21A86802685162BDE8F183F8B52F
+:10161000974CA160CA2209684A6253224A62954ADD
+:10162000136843F020031360136803F00703C3F14A
+:101630000403237095682D0C05F07F056D1C657003
+:10164000EDB29268C2F30E02521C628092B2521E38
+:101650006A43A2F5A072DA404FF6FF739A422CBF9C
+:10166000A380A280854A136843F400231360844B4F
+:101670001D6845F400251D6048BB7C487A4E012357
+:10168000837018254FF0FF33436000235FFA83FC1B
+:1016900006F10C0715FB0CFC4FF0000E07F80CE0F0
+:1016A0005B1CDFB2062FF1DB06230370886820F491
+:1016B0008060886000F01FF8D060032000F058F9C7
+:1016C000A1680868826842F48042826005E0C868C8
+:1016D000410544BF032000F040F9A1680A68FF20DB
+:1016E000506200220321032000F0ECF8BDE8F24034
+:1016F000032000F004B9C86800F0800060F4906036
+:10170000C8604FF400207047F0B504460025EFF3A1
+:10171000108672B61827DFF850C10CF10C0007FBD9
+:1017200005FE10F80E0010B16D1C062DF5DB062D20
+:101730000CD06F430CEB07000127077386F310886A
+:101740000461427303600D700020F0BD86F31088C1
+:101750000120F0BDF8B50746EFF3108472B6032000
+:1017600000F0D8F8424DAE683068CA2141623A466E
+:1017700053214162182043494243895C02291BD10D
+:1017800000213846FFF73EFE3848017806290ED181
+:10179000306838490A68530500F018F821F4806170
+:1017A0008160C1684A07FCD500F016F804E0407873
+:1017B000884218BFFFF76BFEA9680A68FF205062D5
+:1017C000032000F09CF884F31088F1BD02D5C168B5
+:1017D0004A07FCD481687047C16801F0800161F458
+:1017E0009061C1604FF4002023490860032000F09D
+:1017F000BFB82DE9F04180460F46424618201A49ED
+:1018000042438C18207B022804BF4046FFF7A2FF0A
+:10181000EFF3108572B6032000F07CF8144EB06828
+:101820000068CA2141625321416202202073A760EF
+:1018300067604046FFF781FD0C490A78497891427C
+:1018400002D0FFF724FE02E0A168081AA060FF2082
+:10185000B1680A685062032000F051F885F31088DF
+:10186000BDE8F08128280040700300205C050020BE
+:1018700014050020082800400C08005800080058F3
+:10188000800800587C030020104700000901020076
+:1018900081B002D43C48815405E03C4802F00F027C
+:1018A000104400F8041C01B07047394A13684FF621
+:1018B000FF0100020B4000F4E06018433549084383
+:1018C0001060704738B5324B1C68C4F30223C3F173
+:1018D0000704052C28BF04241D1D072D34BF002339
+:1018E000DB1E012505FA04F4641E2140994005FA27
+:1018F00003F35B1E1A401143BDE83440C6E7010004
+:1019000007D4012200F01F01234B8A40400943F80D
+:101910002020704701000BD4012200F01F011F4B53
+:101920008A40400943F82020BFF34F8FBFF36F8FE9
+:10193000704710B5401EB0F1807F01D3012010BD6B
+:10194000174C60600F214FF0FF30FFF79FFF002220
+:10195000A26007202060002010BD010007D40122F2
+:1019600000F01F010F4B8A40400943F820207047C8
+:10197000010007D4012200F01F010B4B8A404009EF
+:1019800043F820207047000000E400E018ED00E07C
+:101990000CED00E00000FA0500E100E080E100E06D
+:1019A00010E000E000E200E080E200E038B58EB038
+:1019B00002A80FF2C431C54C302200F005FA0FF234
+:1019C0006D300190009469460FF24930C04C00F030
+:1019D0003FFA0121022000F024FBBE4A002104202E
+:1019E00000F0B5FB02A800F031FC00F072F800F046
+:1019F00035FC002084F8900004F126054FF6FF70B6
+:101A0000288000210FF2A522012000F0A0FB062073
+:101A100000F0B6FC00F022FD0FF2D523002204F105
+:101A200091010020FFF770FE0FF2CD23002204F198
+:101A300092010020FFF768FE002068808021A64800
+:101A40000180A0214180012000F0EAF80FB030BDF4
+:101A5000F8B507469E4C7878A04D052804F190060D
+:101A600004D03E2810D0FF2824D02EE0B888E18C86
+:101A7000884202D10020E0843070012000F0D0F8CC
+:101A800001212970E08C10E0F87801281DD17078D0
+:101A9000FFF760FE307804280CBF06200520307068
+:101AA0000021B7F80500E08429706880284600F01E
+:101AB000CFFC0AE0B7F80300042806D1012000F0AB
+:101AC00037FDB0780A21FFF794FE0120F2BD00F047
+:101AD000DFBC78B589B00020ADF81A0000F07DFDBC
+:101AE0007F4D804E286810F1010F0ED06968307468
+:101AF000090A020A000CB074727406F110046868D6
+:101B00003175F074090A717506E0002000F0B6FD29
+:101B1000040008BF0FF2302422460621002000F006
+:101B2000FAFB6079307207AA207970720621E0789A
+:101B3000B072A078F072607830732078644C707363
+:101B40004EF66E500890286807902E2000F0E3FBB8
+:101B50000FF2FC121021182000F0DDFB0FF2002222
+:101B60001021082000F0D7FB1821012000F0FAFB1B
+:101B700000F096FD0DF1160006A90190009105AB4D
+:101B800007220021012000F036FF0FF2B410BDF84B
+:101B9000181000900723BDF81400002200F040FE4A
+:101BA0000DF11A0000900223BDF81610BDF81400C4
+:101BB000002200F035FE02220221002000F02DFD5F
+:101BC0000020207000F0CBFE012060700020E0704B
+:101BD000082060751020A075012020754248A06182
+:101BE0000120A0700020C1B221440871401CC1B284
+:101BF0001029F8DB002004900023A069617803908D
+:101C00000022207D0290A07D0190607D0090A07850
+:101C100000F0BEFEA07808B100F040FF0AB070BD31
+:101C20002DE9F8420746012F87B003D12A480588DD
+:101C3000468803E04FF4C8654FF47A66DFF8909069
+:101C400009F190046078FFF785FD022F05D1207817
+:101C5000012814BF022800F027FE277000200690FC
+:101C6000059009F129010491082299F828000FF242
+:101C700000110390029101920023009332462946FD
+:101C8000002000F023FE17490E2000F0E4FE00289B
+:101C900008BF012F06D16078144908B0BDE8F042B2
+:101CA000FFF7A7BD08B0BDE8F082000010B5012025
+:101CB00000F048FC064C94F89000052804D000F091
+:101CC000F3FD002184F8901010BD0000A40803204B
+:101CD000DC0200208F1E00086C0500206405002037
+:101CE0008075FF1F0400002007B2010046E00100DC
+:101CF0000021012000F038BA012000F023BC0021AF
+:101D0000042000F031BA012000F050BA012000F0A8
+:101D100055BA000010B50446616801F1080000F0F2
+:101D2000ABFA00B10120207010BD000010B10128F5
+:101D300003D07047072000F027BA072000F02CBA24
+:101D400053544D33325742006C7AD8AC577200006E
+:101D5000123456789ABCDEF0123456789ABCDEF013
+:101D6000FEDCBA0987654321FEDCBA098765432199
+:101D7000095032505352563100000000000000005C
+:101D80000000000000000000000000004400080007
+:101D9000400508013A799C00F4010000FFFFFFFFB5
+:101DA000480101000000000062B38B0708D0521EFA
+:101DB00011F8013B00F8013B00F024808B07F6D1BD
+:101DC000830740F0208000BF103A07D330B4B1E859
+:101DD0003810103AA0E83810F9D230BC530724BFAD
+:101DE000B1E80810A0E8081044BF51F8043B40F8DF
+:101DF000043BD20724BF31F8022B20F8022B44BF4A
+:101E00000B7803707047121F17D35B0009D151F88C
+:101E1000043B20F8023B1B0C121F20F8023BF6D2B9
+:101E20000BE051F8043B00F8013B1B0A20F8023B91
+:101E30001B0C121F00F8013BF3D238BF121D521EBB
+:101E400024BF11F8013B00F8013BF8D870470000AF
+:101E50007FB50C466D4D61686D4EE861296228467C
+:101E600000F074FE246805F1240000604060746096
+:101E700006F108000060406001203070296829B137
+:101E80000FF2551000900294684688477FBD1FB539
+:101E90005F4C04F1080000F066FE00BB2178F1B150
+:101EA000694604F1080000F087FE5848C16949B14D
+:101EB0000098029001228DF8042001A888479DF81F
+:101EC000040000E001202070207818B1009800F094
+:101ED00026FF04E0009904F1080000F04DFE04F133
+:101EE000080000F040FE28B9207818B104F108007D
+:101EF000FFF705FF1FBD2DE9F8430646002000F05F
+:101F00005FF874883088B268DFF80081C4F3090490
+:101F100044EA8024F068A4B2C1B2204600F03CF844
+:101F2000002748F2E8094846FFF7F0FE08E0688815
+:101F3000A04202D1316928780870687800B1012781
+:101F400008F1240000F00FFEF0B9694608F1240002
+:101F500000F032FE009800F10B05407A0F28E6D021
+:101F6000B5F80110A1420DD10098817AC81E71699F
+:101F7000C0B28842C8BF0846706102463069E91C99
+:101F8000FFF712FF2878D9E73800CCD0012000F005
+:101F900017F80020BDE8F28310B513461C4A5468B8
+:101FA000A4F80900E1720A46194604F10C00FFF793
+:101FB000FBFE164A1369BDE81040002100201847B7
+:101FC0001249096A82B008B921B101E011B10120BA
+:101FD00002B0084702B0704710B50146487A0F2892
+:101FE00018BF0E2807D10B4800F0D0FDBDE8104007
+:101FF0000020FFF788BE064C04F1080000F0C6FD83
+:1020000004F10800BDE81040FFF779BE800400200D
+:10201000F4040020A404002019480021016041605C
+:10202000704710B500F00CF85C6819B1012904D1B3
+:10203000204301E024EA0000586082F3108810BDBC
+:10204000EFF3108272B60E4B704738B5EFF3108481
+:1020500072B60B490B4D086820B12968884768683B
+:1020600080470AE0486820B1A9688847E868804747
+:1020700003E0286980476869804784F3108831BD90
+:102080002C050020E44100082DE9FC47594CDFF8FD
+:102090006891A5692840A0614FF0010A4FF0FF3810
+:1020A00030E0491C54F831000642FAD004EBC10775
+:1020B000184079681040014208BFC7F804807E6864
+:1020C000304000F09BF860620AFA00F086437E60C0
+:1020D000EFF3108172B6626A20690AFA02F2D24303
+:1020E00010402061022004EBC00353F8086C164036
+:1020F000401E43F8086CF6D181F31088606A59F8E5
+:102100002010884763692069A2691840104207D0EF
+:10211000E069216A084203D1002103EA0206C1E70F
+:10212000C046C046EFF3108972B62169606901406C
+:10213000A069014201BFE169206A014200F0A5FEE9
+:1021400089F31088C046C046A561BDE8F38738B55D
+:102150001446EFF3108572B600F050F8264941F8A6
+:10216000204085F3108831BD10B5EFF3108272B6B0
+:10217000204B1C6904431C6153F83140204343F851
+:10218000310082F3108810BDEFF3108172B6194A46
+:10219000536923EA000005E0EFF3108172B6154A97
+:1021A00053691843506181F310887047EFF3108131
+:1021B00072B6104AD3691843D061F4E72DE9F041B3
+:1021C0000C4C626A266A2062012101FA02F803E0DF
+:1021D0003946404600F05BFE276AE5693D42F7D08C
+:1021E000404600F00BF825EA0707E76126626062C7
+:1021F000BDE8F0811C000020000400200246002001
+:10220000110C090404BF1020120412F07F4F04BF08
+:10221000083012020FF2180112F0704F04BF001DB7
+:102220001201120FC0F11F00895C401A70470000B4
+:10223000040302020101010100000000000000008F
+:1022400000F08FFE9DF80E0005B000BDF8B500F15E
+:102250000C026B4621214FF66640F1E71B48002136
+:102260000171017200F034B818490A7941F822006E
+:102270000879401C0871704770B504466078FF28E3
+:1022800002BFB4F8031001F47F41B1F5406F12D1E1
+:1022900000260E4D00E0761C2979F0B288420AD261
+:1022A000F1B255F82110204688470100F3D002D042
+:1022B000022805D006E02046BDE87040FFF7C8BB05
+:1022C000002070BD012070BD00000000200500202E
+:1022D00080B5C046C046C046C046C046C046C0469F
+:1022E000C046C046C046C046C046C046C046C046BE
+:1022F000C046C046C046C046C046C046C04600F0C4
+:10230000AEFEC046C046C046C046C046C046BDE858
+:10231000014000F049BF18B50C46C7B01146002275
+:102320008DF800208DF81C008DF81D4022460DF11F
+:102330001E0000F03AFF00F03BF83F200C21ADF802
+:102340000400ADF8061007A8012103900691A41C13
+:10235000049400F043F800284CBFFF209DF80000D3
+:1023600048B010BD00B5C7B000F01BF80F2000F05A
+:102370002AF800284CBFFF209DF8000047B000BDA0
+:1023800000B5C7B00021ADF81C0000F016F8182009
+:1023900000F019F800284CBFFF209DF8000047B05E
+:1023A00000BD00228DF800208DF81C008DF81D1056
+:1023B0001822002101A800F0FEBE8DF8001018229E
+:1023C00001A800F0F8BEADF8060007A902200490AD
+:1023D0003F22012003910690ADF80420CDF814D0DF
+:1023E000002101A8FFF787BD38B50546314C287894
+:1023F00020B1012804D0032805D031BD012000E020
+:102400000020207031BD6968087868B949780129D1
+:1024100003D100F08DF80121A1706968487818B9DE
+:1024200000F090F80020A0706868017801290ED1B2
+:102430004078012804D1002000F07AF80120A07033
+:102440006968487818B900F07DF80020A07031BDA7
+:102450000078012808BF00F00DB8704780B50FF272
+:10246000390200210220FFF772FE124900220A7091
+:10247000BDE8014080B5002000F064F80D4801215E
+:102480004170002181700121C1700021017101BDE5
+:1024900000210220FFF768BE06490879401E8041EE
+:1024A000C00F0871087820B1C91C4FF6426000F0D7
+:1024B00066BE70474C050020404981B00A6802435F
+:1024C0000A60096808400090009801B0704778B52C
+:1024D00085B004466846142100F078FE0CB901204E
+:1024E00004E0012C18BF022C02D10220FFF7E4FF08
+:1024F00000F012F8009501200190002102200390C5
+:1025000000F004F800F00EF806B070BD02916946C4
+:1025100056F8240000F05EBE0FF2B000284E30F8EE
+:102520001450704756F824000022294600F016BFC8
+:102530000FF29801224B31F8101053F820000122BD
+:1025400000F00CBF0FF284011D4B31F8101053F84E
+:102550002000002200F002BFF0B585B004460D4611
+:102560006846142100F032FE0120FFF7A5FF280085
+:10257000144E0FF260070AD137F8140000900021C2
+:1025800001910120029002210391FFF7C0FF012D6C
+:1025900012D137F81400009001210B480190FFF789
+:1025A000B5FF0FF23400045D00220F2160B2FFF787
+:1025B00089F960B2FFF7A3F905B0F0BD4C000058EF
+:1025C000500000205C0000200000211010000100DD
+:1025D0000200000000040000280000B587B000F0F1
+:1025E00010F8012003220690ADF80420ADF8062073
+:1025F00000F03DF800284CBFFF209DF8000007B018
+:1026000000BD00208DF800001822002101A800F074
+:10261000D2BD182201A800F0CEBD00B5C7B000F0B1
+:102620000EF8FFF7F6FF312000F013F800F01FF866
+:1026300000284CBFFF209DF8000047B000BD0023DC
+:102640008DF81C008DF8003007A8417082700021C1
+:102650007047ADF8060007A9032004900822012066
+:1026600003910690ADF80420704703900691CDF8D1
+:1026700014D0002101A8FFF73EBC00000146064827
+:10268000064AC3798B4218BF904218BF0838F8D168
+:102690008B4218BF00207047F873FF1F0070FF1FA8
+:1026A00000B587B000208DF8000000F0E0F840F29F
+:1026B0000110ADF806003F220120069000F0ECF872
+:1026C00000284CBFFF209DF8000007B000BD2DE999
+:1026D000F84107460128C7B0884615461E4608BF80
+:1026E000022003D002280CBF102000200DF11D0194
+:1026F0000C1800F036F8012F8DF81C7002D0022F54
+:1027000018D019E002273A4641460DF11D0000F0AD
+:102710004CFD2570667000F0AAF83F204FF48171DF
+:1027200000F016F8FF1C049700F0B8F8002805D553
+:10273000FF2009E01027E6E7472005E09DF80000AC
+:1027400010B94E9800F067F8FFE748B0BDE8F08197
+:10275000ADF80400ADF8061007A803210390069118
+:10276000704703220021684600F025BD2DE9F64F91
+:102770000C460546012CC7B09B4608BF022003D07B
+:10278000022C0CBF102000200DF11F010E18FFF7C6
+:10279000E8FF012CADF81C508DF81E4002D0022C31
+:1027A0002CD02DE00227569C559DDDF85091DDF888
+:1027B0004CA1DDF8488148993A4600F054F8A6F853
+:1027C00000B086F8028086F803A086F80490757140
+:1027D000B47100F04CF83F20ADF804004FF4827162
+:1027E00007A8ADF80610039003210A370497069155
+:1027F00000F054F8002805D5FF2009E01027D2E7A3
+:10280000472005E09DF8000010B9579800F003F844
+:1028100049B0BDE8F08FBDF801100180002070477D
+:1028200030B5C7B01C464A9B00F026F800258DF84D
+:1028300000508DF82140224619460DF1220000F08B
+:10284000B4FC00F014F83F204FF4837100F01BF843
+:10285000A41D049400F022F800284CBFFF209DF82E
+:10286000000047B030BD0DF11F0000F09EBC1822E3
+:10287000002101A800F09FBCADF81C00ADF81E10AF
+:102880008DF820207047ADF80400ADF8061007A8B9
+:102890000121039006917047ADF80420CDF814D0C3
+:1028A000002101A8FFF727BB00B587B000F00DF9A4
+:1028B00000F00FF9812000F003F900F013F900286F
+:1028C0004CBFFF209DF8000007B000BD2DE9F84D7A
+:1028D000C7B09446DDF840E1519A559D569EDDF80B
+:1028E0004CA1ADF81D108DF81C004FF0000BADF899
+:1028F0001FC08DF821308DF822E000F024F800F0A0
+:1029000017F824F8095F668000F0E3F83F20832180
+:1029100000F003F9574406910D37049700F0E5F8ED
+:1029200000284CBFFF209DF8000048B0BDE8F08DA6
+:1029300088F800A007AC5499E419524608F1010048
+:10294000544400F032BC8DF82320174652998DF87C
+:1029500000B00DF1240809A8B84400F026BC00B569
+:10296000C7B000F00CF8852000F090F800F0BAF83D
+:1029700000284CBFFF209DF8000047B000BD00219B
+:102980008DF81C008DF80010182201A800F013BC6F
+:102990002DE9F841C7B04FF0000800F026F80DF11E
+:1029A0002300DDF844E14E9F4F9E509D529C8DF8D0
+:1029B0001F30C0F800E08DF800808DF820708DF891
+:1029C00021608DF822508DF8274000F082F8862093
+:1029D000ADF8060007A90C2000F080F800284CBFD5
+:1029E000FF209DF8000000F0A4B88DF81C0007A897
+:1029F000417082707047F8B5C8B005460E4617465C
+:102A00001C4600F023F808A8467087708DF8205007
+:102A100000F07EF88A21ADF80A103F20032100F073
+:102A20006AF8002848BFFF200ED49DF8000058B96E
+:102A30004F994E98BDF801202280BDF803200280F6
+:102A4000BDF805000880002049B0F0BD0722002134
+:102A5000684600F0B0BB18B5C7B0044600F035F8C2
+:102A60008DF81C40224600F060F800F032F83F205C
+:102A70008E2100F061F8641C049400F036F8002800
+:102A80004CBFFF209DF8000048B010BDADF8060017
+:102A900007A901203F2203910490704700B587B039
+:102AA00000F013F800F015F8922000F009F800F09B
+:102AB00019F800284CBFFF209DF8000007B000BDAA
+:102AC000ADF806003F220120704700208DF800007D
+:102AD00070471822002101A800F06DBB04903F222E
+:102AE000012003910690ADF80420CDF814D0002108
+:102AF00001A8FFF700BAADF80800059108A8072162
+:102B000004900791CDF818D0002102A8FFF7F3B97F
+:102B10001822002102A800F04EBBADF80400ADF869
+:102B2000061007A80121039070470DF11D0000F069
+:102B30003CBB48B0BDE8F081ADF80400ADF806102C
+:102B400007A8012103900691704700000249016027
+:102B500002490161704700BF192C0008432C00088E
+:102B6000006040607047EFF3108172B602688242E5
+:102B70000CBF012000201CE0EFF3108272B6036846
+:102B80000B60486001600868416023E0EFF3108249
+:102B900072B6086043684B6041604868016019E0A4
+:102BA000EFF3108172B6436802681A6042680068E9
+:102BB000426081F31088704710B5EFF3108472B64D
+:102BC00002680A600068FFE7FFF7EAFF84F31088F5
+:102BD00010BD086082F310887047000000F052BCFE
+:102BE0006C486D49016001F12002426001F1300240
+:102BF000826001F13C02026201F14402C26001F113
+:102C00004C02026101F16802426101F16C028261D1
+:102C10007831C16100F048BC38B504465F4D05F11C
+:102C20001000FFF79DFF5B494868A1680160E168FB
+:102C3000C160456005F11001816000F051FC584809
+:102C40002DE080B553494A6813680120187200F0DE
+:102C50004DFC002002BD38B5514C504D07E069468F
+:102C600005F11000FFF7A8FF00982168884705F1DB
+:102C70001000FFF778FF0028F1D031BD48484168C7
+:102C8000084738B50446474D284600604060414833
+:102C9000C068A1680160456000F02DFC42482168D1
+:102CA000016061684160002032BD80B53949CA6861
+:102CB00013681020187200F024FC002002BD354972
+:102CC000CA68394910680B68184738B5364C354D15
+:102CD00006E069462846FFF76FFF0098616888475D
+:102CE0002846FFF740FF0028F3D031BD38B5044631
+:102CF0002E4D2846006040602D4800604060254809
+:102D00000069A1688160E168C160056121680160B6
+:102D100061684160216941616169816131BD80B54E
+:102D200001462348FFF732FFBDE802400FF20500DD
+:102D300000F0F7BB38B5174C1D4D08E06946284632
+:102D4000FFF73AFF009920690069FFF71FFF284647
+:102D5000FFF709FF0028F1D031BD10B5154C204612
+:102D6000006040600B4841690C60BDE8104000F015
+:102D7000ECBB1CB50F4C06E069462046FFF71CFF74
+:102D80000098C046C0462046FFF7EDFE0028F3D06D
+:102D900013BD000000000320B009032084080320B5
+:102DA0003C0500209C08032044050020340A032031
+:102DB000340500203C0A032010B52848284C88B070
+:102DC000016841F400410160FFF726F900F0D4FBEF
+:102DD00024490020FEF71BFC00F0E7FB22480168B5
+:102DE00041F4803101600121026C42F480320264BE
+:102DF0000120FFF716F90020FFF769FB0120FFF71C
+:102E000066FB0220FFF763FB0120FFF791FB012126
+:102E10000020FFF7A1FBFFF7E3FE144A0021082082
+:102E2000FFF795F904F23C500FF245010090019133
+:102E300069460FF2410000F03FF804F2547002902E
+:102E400004F5C96140F23C5005900391049402A836
+:102E5000FFF74CFFFFF7C2FE08B010BD0800005896
+:102E600024000320AC04002090080058FB2E00082A
+:102E70007047000080B5FFF770FF00210120FFF7C9
+:102E8000D0F8BDE80140FEF791BDFFF7DEB84FF086
+:102E9000FF30FFF7F9B800210820FFF765B90220DD
+:102EA000FFF784B90220FFF789B9B0F5806F08BF3A
+:102EB000FEF70DBE704700007FB50C464D4D6168B2
+:102EC0004D4EE8612962284600F07AFB2468746060
+:102ED00006F1080000604060012000F068F8012061
+:102EE0003070296841B10FF2E9000FF2ED02009055
+:102EF00001920294684688477FBD1FB53E4C04F19D
+:102F00000800FFF730FE00BB2178F1B1694604F1FB
+:102F10000800FFF751FE3748C16949B10098029097
+:102F200001228DF8042001A888479DF8040000E0E4
+:102F300001202070207818B10098FFF7F0FE04E01F
+:102F4000009904F10800FFF717FE04F10800FFF7ED
+:102F50000AFE28B9207818B104F10800FFF79BFF9A
+:102F60001FBD2DE9F04105460E4690461C46002047
+:102F700000F01DF8204F7868A0F80950C67232465C
+:102F800041460C30FEF710FF1A4A13690021002059
+:102F9000984748F2E800FFF785FF79688A78D21CE5
+:102FA00004F10800FEF700FFBDE8F04101201CB568
+:102FB0001049124C096A20B901B1884700202070DD
+:102FC00013BD0120207011B1BDE81C40084713BD9E
+:102FD0000020FFF764BF000010B50146064C04F165
+:102FE0000800FFF7D3FD04F10800BDE81040FFF72B
+:102FF00052BF0000D0040020040500202A05002054
+:103000001FB541780024FF2902BFB0F8032040F625
+:1030100001418A4220D1624A9388B0F807109B1C74
+:10302000994209D1407B0124C10752BF8DF800406D
+:1030300000218DF800100CE05288521C91420BD1F7
+:1030400003218DF80010B0F80B208DF808200D300A
+:1030500001906846FFF7C8F9204604B010BD10B5CE
+:103060008AB050484E4CFFF7FFF88F218DF81810AA
+:10307000E520B3218DF819008DF81A10D5202E21E6
+:103080008DF81B008DF81C107F204A218DF81D0043
+:103090008DF81E1098202A218DF81F008DF8201021
+:1030A00048207A218DF821008DF82210CC20402173
+:1030B0008DF823008DF82410FE2000218DF82500C6
+:1030C000ADF8261000940823012206A90220FFF77C
+:1030D000FEFA00F032F8412000F023F8A01C00F0C6
+:1030E00010F8062100F015F800F027F8422000F053
+:1030F00018F8201D00F005F8102100F00AF80AB0B9
+:1031000010BD059001210491029100200A22019036
+:103110007047039200910223208806AA0221FFF73C
+:1031200025BB8E218DF824008DF823100020FE2170
+:10313000ADF826008DF82510704719208DF818007D
+:10314000ED2182208DF81A008DF81910ED20AE21A6
+:103150008DF81C008DF81B104C2021218DF81E00CD
+:103160008DF81D1041209D218DF820008DF81F1035
+:10317000222045218DF822008DF82110704780B55E
+:1031800042224FF64263984208D10548009102233B
+:10319000818800880022FFF743FB0246104602BDEB
+:1031A0005405002001300008704710B50446FEF7B2
+:1031B000FBFD204610BD10B5044610460A460146E8
+:1031C000204600F007FA204610BD0000002200F063
+:1031D00035BA00002DE9F84F4FF0000C674A684BF4
+:1031E000DFF8A0814FF00F0982460F4633E0664DAD
+:1031F000AA4514BF072504258D40254348F82E50C5
+:10320000C1431C6801EA040E7C68E50348BF40EA3C
+:103210000E0EC3F800E05C6801EA040E7C68A503AA
+:1032200048BF40EA0E0EC3F804E0146801EA040E39
+:103230007C68E50248BF40EA0E0EC2F800E0546820
+:1032400001EA040E79688C0248BF40EA0E0EC2F80B
+:1032500004E00CF1010C396831FA0CF000F07C80CC
+:10326000012000FA0CFE1EEA0100F2D07C68022C5C
+:1032700018BF122C4FEA8C0110D14FEADC040AEB84
+:10328000840401F01C05266A09FA05FB26EA0B06F0
+:10329000D7F810B00BFA05F5354325624FEA4C0418
+:1032A0000325DAF8006097F804B0A540ED430BF071
+:1032B000030B2E400BFA04FB4BEA0606CAF800602B
+:1032C0007E68012E18BF022E03D0112E18BF122EB9
+:1032D00017D1DAF80860D7F80CB02E400BFA04FBCF
+:1032E0004BEA0606CAF80860DAF8046026EA0E0E11
+:1032F0007E68C6F3001606FA0CF646EA0E06CAF811
+:103300000460DAF80C603540BE6806FA04F42C4319
+:10331000CAF80C407C68E4009BD54FEA9C0E58F834
+:103320002E5001F00C0109FA01F425EA0404BAF167
+:10333000904F08BF00250ED0144DAA4508BF0125A7
+:1033400009D0134DAA4508BF022504D0114DAA4546
+:103350007FF44DAF03254FE7BDE8F18F81B0002A20
+:1033600014BF8161816201B070470B4A1368034248
+:103370001CBF1060FFF799BD70470000000800589F
+:103380008008005808000140001000480004004870
+:1033900000080048000C00480C080058C0680840AD
+:1033A000884201D10120704700207047C069084061
+:1033B000884201D1012070470020704710B5664C4B
+:1033C00002212046FFF7F2FF38B16068C043810751
+:1033D00003D5FFF77AFC022018E001212046FFF711
+:1033E000E5FF38B16068C043C10703D5FFF733FC80
+:1033F00001200BE008212046FFF7D8FF38B16068B4
+:10340000C043010703D5FFF7B4FC0820A06010BD3E
+:1034100010B5514C00F033F818B96068C04381030F
+:1034200006D400F02CF830B96068C043810302D59F
+:10343000BDE810406EE0082100F022F870B9606825
+:10344000C04301030AD56068444940F4002060602D
+:10345000086880474FF40020A06010BD202100F0D4
+:103460000FF858B96068C043810207D5606840F41E
+:1034700000106060BDE81040FFF700BC10BD0221E5
+:1034800020468BE73648016841F4007101603548F9
+:10349000026842F40072026040BF20BF32480168F7
+:1034A00041F400410160704780B53048016841F443
+:1034B00080110160006800F4801000900098264898
+:1034C000016841F001010160026842F4803202604B
+:1034D0002C20FEF714FABDE802402D20FEF70FBAAB
+:1034E00023480168490849000160704721494FF4A9
+:1034F0008030086070471E48016821F002010160B9
+:1035000070471B484FF400314160016821F40031DD
+:10351000016070471648016841F400310160FFF70F
+:10352000CEBB38B504460C4D08212846FFF736FFC0
+:1035300030B10A480460686820F40020686031BD3A
+:10354000A0474FF40021A96031BD0948016821F06E
+:103550000801016070470000000C00586805002059
+:10356000D4080058200800580C0400585000005897
+:10357000040C0058080C0058DFF80C00FFE7016845
+:1035800041F480610160704704040058032010B5C5
+:10359000FEF78BF90F2000F06BF80024002814BF11
+:1035A000012400F00BF8204610BD0348FFE7016836
+:1035B00041F0010101607047042004E07047000001
+:1035C0000249016002490161704700BF832C000875
+:1035D000AB2C000862F30F2262F31F42401810F078
+:1035E000030308D0C91A1FD3DB0748BF00F8012D19
+:1035F00028BF20F8022D130030B4144615461039A8
+:1036000028BF20E93C00FAD8490728BF20E90C0070
+:1036100048BF40F8042D890028BF20F8022D48BF7C
+:1036200000F8012D30BC7047C91818BF00F8012DF3
+:10363000CB0728BF00F8012D7047000000B500BF80
+:10364000130096469446103928BFA0E80C50FAD8CB
+:103650005FEA417C28BF0CC048BF40F8042BC90773
+:1036600028BF20F8022B48BF00F8012B00BD000046
+:1036700070B50F4E0446B0680025A8B100F05FF8A1
+:10368000B2684FF47A71B1FBF2F1B0FBF1F0FEF7E2
+:1036900050F948B9102C07D2002221464FF0FF30D4
+:1036A000FEF710F9746000E00125284670BD00BFE8
+:1036B000440000204FF0B040006800F0F000B02857
+:1036C00088BFB020704738B54FF0B044244DA16892
+:1036D00011F00C0106D1FFF7EDFFC0F3031055F810
+:1036E000200032BD04291F4A05D008291E4804D1F4
+:1036F0002168C90222D5104632BDE16801F00301FC
+:10370000022904D0032904D12168C90207D5104633
+:1037100005E0FFF7CFFFC0F3031055F82000E16884
+:10372000E268E368C1F306214843C2F30211491C71
+:103730005B0FB0FBF1F05B1CB0FBF3F032BD80B56A
+:10374000FFF7C1FF0549FFE7084A0968C1F3031104
+:1037500052F82110B0FBF1F002BD00000800005843
+:10376000FC3F00080024F4000048E801BC3F0008CA
+:10377000DFF864130A68030903F47F2300019A4306
+:1037800000F47F2000F082B9DFF84C231368010CAD
+:1037900023EA014343EA0043136070472DE9F843ED
+:1037A000054600242878DFF830634106A0464FF034
+:1037B000B0472DD5286B70B1B0F5800F06D0B0F5AD
+:1037C000000F18BFB0F5400F17D01FE0F86840F4A5
+:1037D0008030F860EDE0386820F08060386000F0FC
+:1037E00081F981463868000140F1D08000F07AF913
+:1037F000A0EB09000228F5D90324D7E000F072F904
+:10380000A0EB0900022840F2C980F5E70124A04698
+:103810002868010531D5B06800F44078286C8045EF
+:103820002AD000F065F9B8F1000FB16805D1286C15
+:1038300021F440710143B1601EE0B06840F4803073
+:10384000B06021F44071B06820F48030B060286C22
+:103850000143B160B068C0070ED500F043F980465F
+:1038600041F28939B068800706D400F03BF9A0EB3B
+:1038700008004845F6D30324A0462878C10705D59B
+:103880003168A869890840EA810131602878810798
+:1038900005D53168E86921F4406101433160287839
+:1038A000C10644BFA86AFFF76FFF2878810644BFAE
+:1038B000E86AFFF769FF2878410744BF286AFFF7E5
+:1038C00057FF2878010744BF686AFFF751FF28684F
+:1038D000C1051BD53168686B21F04061014331603F
+:1038E000686BB0F1006F00F0BDF8686BB0F1806FED
+:1038F00075D100F0BDF804463868000160D500F0CD
+:10390000F1F8001B0228F7D94FF0030867E000F038
+:10391000E9F8001B02285BD9F6E7316821F0404145
+:10392000316020F08050326822F0406210433060F5
+:10393000A86BB0F1C05F00F095F8286841056DD51F
+:103940003168E86B21F0405101433160E86BB0F120
+:10395000005F03D1F96841F48031F960E86BB0F1A0
+:10396000805F5BD100F084F804463868000146D5DA
+:1039700000F0B8F8001B0228F7D94FF003084DE01B
+:1039800000F0B0F8001B022841D9F6E700F061F81A
+:10399000A86821F4781100F071F8814638680001B8
+:1039A0007FF52CAF3969686901433961002C7FF4D8
+:1039B0002EAF3168286B21F440010143316027E7C5
+:1039C00000F047F8E86821F0606100F057F804461D
+:1039D000386800019BD539696869014339612868F5
+:1039E0008105AAD5A86BB0F1804F1CBFB0F1004F84
+:1039F000002892D1316821F04041084397E700F058
+:103A000028F8286921F0604100F038F80446386849
+:103A10000001B5D539696869014339612868C10475
+:103A200005D5F168686C21F440410143F1602868D4
+:103A300081040BD5796AE86C21F030010143796289
+:103A4000796AA86C890840EA810179624046BDE83C
+:103A5000F2833869696820F4FE4040EA0120386149
+:103A60003969704703D1F96841F08071F960704796
+:103A7000396821F08061396000F034B80143396160
+:103A8000386840F08060386000F02CB8104308605F
+:103A9000704710B511490A6842F080720A600B68DD
+:103AA0000F4A23F080730B60046841680C438168FF
+:103AB0000C43C1680C43016944EA01445460136833
+:103AC000406923F47C5343EA00231360116841F0FA
+:103AD0006001116010BD00008800005838000058D7
+:103AE0000060004001480068704700BF44000020AB
+:103AF0000248016841F48071016070470004005879
+:103B000018B59BB0FFF742FD574CE06B40010ED556
+:103B1000E06BC0000BD4FFF7EBFFFFF7E9FFA06BF2
+:103B200040F48030A063A06B20F48030A06300F0EC
+:103B300055F807A85021FFF749FB68461821FFF701
+:103B400045FB4A480168216C41F001012164206C69
+:103B50008007FCD54FF4807007900021149107A8CE
+:103B6000FFF71CFE206840F0807020604FF000528C
+:103B7000216801F0807106910021069800914BF6B2
+:103B80007F30039022210491002002902021019295
+:103B900005916846FFF77DFFFFF7AAFFFFF7A8FF33
+:103BA000A06B40F00100A063A06B8007FCD5002251
+:103BB000E06B20F4404040F48040E0632C48016812
+:103BC0000260026902F05002026100F028F8FFF77B
+:103BD000F3F84FF0FF30FEF757FAFAE7254881B0C7
+:103BE000016841F4801101603F21006800F48010F9
+:103BF00000900098204841604161016841F47C11C7
+:103C00000160026942F47C120261016841F03F01E7
+:103C10000160026942F03F02026101B0704710B5D5
+:103C2000FFF766FFFFF764FF1448154C016821F4A5
+:103C3000407141F4807101600F21026842F400423A
+:103C400002601048816047F6FF71C160046000F0B7
+:103C50001BF8CA206062FF2153206062A068C00880
+:103C6000C000A060616210BD580000589414005854
+:103C70008008005850000058040C0058900000586C
+:103C800000280040AC04002038B5040044D094F86B
+:103C9000210028B9002184F820102046C046C046E3
+:103CA00000F049F8FF2510B100F03FF834E021683A
+:103CB000DFF8B0008A6802408A6021688A68636819
+:103CC00020690343A06903431A438A602168E068BE
+:103CD000086120680169A26841EA02410161206827
+:103CE000C16821F08001C1602068C16C8908890029
+:103CF000C1642168CA6CE369606903431A43CA64FA
+:103D000020688168880609D400F020F830B1206866
+:103D10004562042100F01FF8012032BD2068456291
+:103D2000012184F82110002032BD20684562042161
+:103D300084F821107047022084F82100CA202168ED
+:103D40004862532022685062204626E020460BE05D
+:103D50002068C0F8248084F82110002084F8200016
+:103D600070470000BFFF8FFF70B5044640F2E93690
+:103D70002068C16821F0A001C160FFF7B3FE0546CD
+:103D80002068C168880606D4FFF7ACFE401BB0422D
+:103D9000F6D3032070BD002070BD70B504462068C6
+:103DA000C1684A0612D44FF0FF32C26040F2E936D1
+:103DB000FFF798FE05462068C168480606D4FFF75D
+:103DC00091FE401BB042F6D3032070BD002070BDB1
+:103DD00000EB81003D4AD0F88010914201D00120D3
+:103DE00070470020704742F4806240F821207047FD
+:103DF00037481F2181610168C908C90041F00301EA
+:103E000001603448016841F00401016030BF70472F
+:103E1000704710B5304C00F048F80028FBD1042161
+:103E200000F044F828B92D480068010403D500F0DB
+:103E30003FF800F057F8002203212046FFF7D3FF98
+:103E400023480168C908C90041F002010160214806
+:103E5000016841F00401016030BF10BD10B51E4C77
+:103E600000F026F800F021F80028FBD14FF0B04018
+:103E7000816801F00C01042911D1016841F48031FD
+:103E8000016001688903FCD581688908890041F0D7
+:103E900002018160816801F00C010829FAD12046F5
+:103EA000BDE81040002203219DE7032120468FE753
+:103EB00000220421204696E780B500F02DF8054841
+:103EC000016821F00401016030BF01BD00040080E1
+:103ED0000004005810ED00E0001400588804005859
+:103EE00000F022B84FF0B040016841F480710160E9
+:103EF00001684905FCD581688908890041F0010104
+:103F00008160416A890889004162816801F00C0181
+:103F10000429FAD1704700000248016821F002012B
+:103F20000160704710E000E00248016841F00201C2
+:103F30000160704710E000E080B51C48016841F462
+:103F4000700101600020FEF799FB48B180791849A3
+:103F5000184A0A600A6822F47C5242EA00220A6087
+:103F60004FF0B040016841F48031016012490A68A5
+:103F7000D208D20042F001020A600A6802F0070289
+:103F8000012AFAD101688903FCD581688908890072
+:103F900041F002018160816801F00C010829FAD129
+:103FA000016849084900016001BD000088ED00E09A
+:103FB0009C000058FECAFECA0040005801000000E4
+:103FC00003000000050000000100000001000000E7
+:103FD000060000000A0000002000000002000000AF
+:103FE0000400000008000000100000004000000075
+:103FF000800000000001000000020000A086010017
+:10400000400D0300801A060000350C0040420F00EE
+:1040100080841E0000093D0000127A000024F40094
+:1040200000366E010048E801006CDC020000000070
+:1040300000000000000000000000000019E050F83F
+:10404000042BD30744BFA9F101039A18091F0023C9
+:10405000042942F8043BF9D25FEA817C134604D577
+:104060004FF0000CA2F800C09B1CC90744BF002100
+:10407000197050F8041B0029E1D1704730B5016870
+:1040800084684218416802EB5103C9070BD54C44C0
+:1040900009E012F9011B12F8015B002904F8015B29
+:1040A00005D5491CF9D19A42F3D10C3030BD491ED7
+:1040B000F1D5F8E77047FEE770477047704700F0AA
+:1040C00011B84FF48060FFF750B900E000BF01481D
+:1040D000FCF738B868000020FDF749BAFFF798B937
+:1040E000FFF76CB902490A68886882180A6070474D
+:1040F0004400002010B500F013F802000023DB4359
+:1041000000241068984203D011000220ABBE146056
+:104110005068984203D0111D0220ABBE546010BD00
+:1041200001487047000000006000002010B50749FA
+:1041300079441831064C7C44163404E00A68081DA2
+:10414000114488470146A142F8D110BD2C0000005F
+:10415000500000004EF68851CEF20001086840F48D
+:1041600070000860BFF34F8FBFF36F8F4FF0007088
+:10417000E1EE100A70470000C5FEFFFF08050000D1
+:1041800068000020800800002400032000000000D8
+:10419000EDFEFFFF74010000460000000400002057
+:1041A0000120C046002801D0FFF7C0FFAFF3008018
+:1041B0000020AFF30080FFF7A3FC00F000F800F050
+:1041C00001B800000746384600F002F8FBE700009F
+:1041D00080B5FFF78FFF024A11001820ABBEFBE746
+:1041E00026000200B93E0008E13E0008133E000828
+:1041F0005D3E0008F13D0008113E0008014880477F
+:1042000001480047393F00080D420008AFF3008025
+:10421000FFF7A0FFFFF7C4FFFFF7FEBFFFF7FEBFEA
+:10422000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFC2
+:10423000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFB2
+:10424000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA2
+:10425000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF92
+:10426000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF82
+:10427000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF72
+:10428000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF62
+:10429000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF52
+:1042A000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF42
+:1042B000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF32
+:1042C000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF22
+:1042D000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF12
+:1042E000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF02
+:1042F000FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF2
+:10430000FFF7FEBFFFF7FEBF030DFF0183D800F8E4
+:10431000FFF0000010FD000001FA00084800040052
+:0B4320004800040048FD000048F8FFC2
+:040000050800420DA0
:00000001FF
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c
index 7bebc59f7..7190e1944 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/Core/Src/app_entry.c
@@ -232,6 +232,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
return;
}
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
/**< Traces channel initialization */
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewd b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewd
index 2088e03a0..c63ae481d 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewd
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_p2pServer</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewp b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewp
index 7f647193a..3486d78d7 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewp
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/EWARM/BLE_p2pServer.ewp
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Production</name>
+ <name>BLE_p2pServer</name>
<toolchain>
<name>ARM</name>
</toolchain>
@@ -16,15 +16,15 @@
<debug>0</debug>
<option>
<name>ExePath</name>
- <state>Production\Exe</state>
+ <state>BLE_p2pServer\Exe</state>
</option>
<option>
<name>ObjPath</name>
- <state>Production\Obj</state>
+ <state>BLE_p2pServer\Obj</state>
</option>
<option>
<name>ListPath</name>
- <state>Production\List</state>
+ <state>BLE_p2pServer\List</state>
</option>
<option>
<name>GEndianMode</name>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvoptx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvoptx
index e928cf525..f58b73b08 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvoptx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvoptx
@@ -1,7 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj; *.o</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
<Target>
- <TargetName>Production</TargetName>
+ <TargetName>BLE_p2pServer</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
@@ -11,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -23,7 +45,7 @@
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
- <ListingPath />
+ <ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
@@ -73,33 +95,43 @@
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
+ <tRtrace>1</tRtrace>
+ <sRSysVw>1</sRSysVw>
+ <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>13</nTsel>
- <sDll />
- <sDllPa />
- <sDlgDll />
- <sDlgPa />
- <sIfile />
- <tDll />
- <tDllPa />
- <tDlgDll />
- <tDlgPa />
- <tIfile />
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>6</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
- <TargetDriverDllRegistry>
+ <TargetDriverDllRegistry>
<SetRegEntry>
- <Number>0</Number>
- <Key>ST-LINKIII-KEIL_SWO</Key>
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- <SetRegEntry>
- <Number>0</Number>
- <Key />
- <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CG$CMSIS\Flash\STM32WB_M4.FLM)</Name>
- </SetRegEntry>
- </TargetDriverDllRegistry>
+ <Number>0</Number>
+ <Key>UL2CM3</Key>
+ <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4 -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CGUx$CMSIS\Flash\STM32WB_M4.FLM))</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ST-LINKIII-KEIL_SWO</Key>
+ <Name>-U-O142 -O2254 -S0 -C0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32WB_M4.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32WB55CGUx$CMSIS\Flash\STM32WB_M4.FLM)</Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <Breakpoint/>
+ <Tracepoint>
+ <THDelay>0</THDelay>
+ </Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
@@ -126,8 +158,816 @@
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
- <LintExecutable />
- <LintConfigFile />
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
+
+ <Group>
+ <GroupName>::CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>1</RteFlg>
+ </Group>
+
+ <Group>
+ <GroupName>Application/Core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/app_entry.c</PathWithFileName>
+ <FilenameWithoutPath>app_entry.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32_lpm_if.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_timerserver.c</PathWithFileName>
+ <FilenameWithoutPath>hw_timerserver.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/hw_uart.c</PathWithFileName>
+ <FilenameWithoutPath>hw_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/main.c</PathWithFileName>
+ <FilenameWithoutPath>main.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/stm32wbxx_it.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_it.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/MDK-ARM</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>startup_stm32wb55xx_cm4.s</PathWithFileName>
+ <FilenameWithoutPath>startup_stm32wb55xx_cm4.s</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/app</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/app_ble.c</PathWithFileName>
+ <FilenameWithoutPath>app_ble.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/App/p2p_server_app.c</PathWithFileName>
+ <FilenameWithoutPath>p2p_server_app.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Application/STM32_WPAN/target</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../STM32_WPAN/Target/hw_ipcc.c</PathWithFileName>
+ <FilenameWithoutPath>hw_ipcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Doc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/BSP/P-NUCLEO-WB55.USBDongle</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>7</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle/stm32wbxx_usb_dongle.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_usb_dongle.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/CMSIS</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>8</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../Core/Src/system_stm32wbxx.c</PathWithFileName>
+ <FilenameWithoutPath>system_stm32wbxx.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Drivers/STM32WBxx_HAL_Driver</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_cortex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_cortex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_dma.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_dma.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_gpio.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_gpio.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pcd.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pcd_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pcd_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>20</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_pwr_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_pwr_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rcc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rcc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_rtc_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_rtc_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>26</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_hal_uart_ex.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_hal_uart_ex.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>9</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Drivers/STM32WBxx_HAL_Driver/Src/stm32wbxx_ll_usb.c</PathWithFileName>
+ <FilenameWithoutPath>stm32wbxx_ll_usb.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_USB_Device_Library</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_cdc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_ctlreq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>10</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/blesvc</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/p2p_stm.c</PathWithFileName>
+ <FilenameWithoutPath>p2p_stm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>11</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/svc/Src/svc_ctl.c</PathWithFileName>
+ <FilenameWithoutPath>svc_ctl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/ble/core</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_gatt_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_gatt_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hal_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hal_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_hci_le.c</PathWithFileName>
+ <FilenameWithoutPath>ble_hci_le.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto/ble_l2cap_aci.c</PathWithFileName>
+ <FilenameWithoutPath>ble_l2cap_aci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>12</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template/osal.c</PathWithFileName>
+ <FilenameWithoutPath>osal.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/shci</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>13</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci/shci.c</PathWithFileName>
+ <FilenameWithoutPath>shci.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/tl</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/hci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>hci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/shci_tl_if.c</PathWithFileName>
+ <FilenameWithoutPath>shci_tl_if.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>14</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl/tl_mbox.c</PathWithFileName>
+ <FilenameWithoutPath>tl_mbox.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/interface/patterns/ble_thread/vcp</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/usbd_conf.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_conf.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/usbd_desc.c</PathWithFileName>
+ <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>15</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp/vcp.c</PathWithFileName>
+ <FilenameWithoutPath>vcp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Middlewares/STM32_WPAN/utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/dbg_trace.c</PathWithFileName>
+ <FilenameWithoutPath>dbg_trace.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/otp.c</PathWithFileName>
+ <FilenameWithoutPath>otp.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_list.c</PathWithFileName>
+ <FilenameWithoutPath>stm_list.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>16</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Middlewares/ST/STM32_WPAN/utilities/stm_queue.c</PathWithFileName>
+ <FilenameWithoutPath>stm_queue.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Utilities</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <RteFlg>0</RteFlg>
+ <File>
+ <GroupNumber>17</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/lpm/tiny_lpm/stm32_lpm.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_lpm.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ <File>
+ <GroupNumber>17</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <bDave2>0</bDave2>
+ <PathWithFileName>../../../../../../Utilities/sequencer/stm32_seq.c</PathWithFileName>
+ <FilenameWithoutPath>stm32_seq.c</FilenameWithoutPath>
+ <RteFlg>0</RteFlg>
+ <bShared>0</bShared>
+ </File>
+ </Group>
+
</ProjectOpt>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvprojx b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvprojx
index 1e180145d..b6e098fbf 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvprojx
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/MDK-ARM/BLE_p2pServer.uvprojx
@@ -1,41 +1,45 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_proj.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
- <SchemaVersion>1.1</SchemaVersion>
+ <SchemaVersion>2.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
- <Target>
- <TargetName>Production</TargetName>
+ <Target>
+ <TargetName>BLE_p2pServer</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32WB55CGUx</Device>
<Vendor>STMicroelectronics</Vendor>
+ <PackID>Keil.STM32WBxx.0.0.6</PackID>
+ <PackURL>http://www.keil.com/pack</PackURL>
<Cpu>IROM(0x08000000-0x807FFFF) IRAM(0x20000004-0x2002FC03) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
- <FlashUtilSpec/>
- <StartupFile/>
- <FlashDriverDll/>
- <DeviceId/>
- <RegisterFile/>
- <MemoryEnv/>
- <Cmp/>
- <Asm/>
- <Linker/>
- <OHString/>
- <InfinionOptionDll/>
- <SLE66CMisc/>
- <SLE66AMisc/>
- <SLE66LinkerMisc/>
- <SFDFile/>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile></StartupFile>
+ <FlashDriverDll></FlashDriverDll>
+ <DeviceId></DeviceId>
+ <RegisterFile></RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <SFDFile>$$Device:STM32WB55CGUx$CMSIS\SVD\STM32WB0xx_v1r0.svd</SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
- <BinPath/>
- <IncludePath/>
- <LibPath/>
- <RegisterFilePath/>
- <DBRegisterFilePath/>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath></RegisterFilePath>
+ <DBRegisterFilePath></DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
@@ -43,30 +47,32 @@
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
- <OutputDirectory>Production\Exe\</OutputDirectory>
+ <OutputDirectory>BLE_p2pServer\Exe\</OutputDirectory>
<OutputName>BLE_p2pServer</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
- <ListingPath>Production\List</ListingPath>
+ <ListingPath></ListingPath>
<HexFormatSelection>1</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopU1X>0</nStopU1X>
+ <nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
@@ -75,13 +81,15 @@
<AfterMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
- <UserProg1Name/>
- <UserProg2Name/>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
- <SVCSIdString/>
+ <SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
@@ -95,9 +103,9 @@
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
- <CustomArgument/>
- <IncludeLibraryModules/>
- <ComprImg/>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ <ComprImg>0</ComprImg>
</CommonProperty>
<DllOption>
<SimDllName>SARMCM3.DLL</SimDllName>
@@ -117,47 +125,6 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
- <Simulator>
- <UseSimulator>0</UseSimulator>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>1</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
- <RestoreSysVw>1</RestoreSysVw>
- </Simulator>
- <Target>
- <UseTarget>1</UseTarget>
- <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
- <RunToMain>1</RunToMain>
- <RestoreBreakpoints>1</RestoreBreakpoints>
- <RestoreWatchpoints>1</RestoreWatchpoints>
- <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
- <RestoreFunctions>0</RestoreFunctions>
- <RestoreToolbox>1</RestoreToolbox>
- <RestoreTracepoints>1</RestoreTracepoints>
- <RestoreSysVw>1</RestoreSysVw>
- </Target>
- <RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>13</TargetSelection>
- <SimDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- </SimDlls>
- <TargetDlls>
- <CpuDll/>
- <CpuDllArguments/>
- <PeripheralDll/>
- <PeripheralDllArguments/>
- <InitializationFile/>
- <Driver>STLink\ST-LINKIII-KEIL_SWO.dll</Driver>
- </TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@@ -170,11 +137,11 @@
</Flash1>
<bUseTDR>1</bUseTDR>
<Flash2>STLink\ST-LINKIII-KEIL_SWO.dll</Flash2>
- <Flash3/>
- <Flash4/>
- <pFcarmOut/>
- <pFcarmGrp/>
- <pFcArmRoot/>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ <pFcarmOut></pFcarmOut>
+ <pFcarmGrp></pFcarmGrp>
+ <pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<TargetArmAds>
@@ -207,7 +174,7 @@
<RvctClst>0</RvctClst>
<GenPPlst>0</GenPPlst>
<AdsCpuType>"Cortex-M4"</AdsCpuType>
- <RvctDeviceName/>
+ <RvctDeviceName></RvctDeviceName>
<mOS>0</mOS>
<uocRom>0</uocRom>
<uocRam>0</uocRam>
@@ -222,6 +189,7 @@
<useUlib>1</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -274,13 +242,13 @@
</Ocm6>
<IRAM>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</IRAM>
<IROM>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</IROM>
<XRAM>
<Type>0</Type>
@@ -304,8 +272,8 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x8000000</StartAddress>
+ <Size>0x80000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
<Type>1</Type>
@@ -329,8 +297,8 @@
</OCR_RVCT8>
<OCR_RVCT9>
<Type>0</Type>
- <StartAddress/>
- <Size/>
+ <StartAddress>0x20000004</StartAddress>
+ <Size>0x2fc00</Size>
</OCR_RVCT9>
<OCR_RVCT10>
<Type>0</Type>
@@ -338,7 +306,7 @@
<Size>0x0</Size>
</OCR_RVCT10>
</OnChipMemories>
- <RvctStartVector/>
+ <RvctStartVector></RvctStartVector>
</ArmAdsMisc>
<Cads>
<interw>1</interw>
@@ -355,11 +323,19 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
- <MiscControls/>
+ <MiscControls></MiscControls>
<Define>USE_STM32WBXX_USB_DONGLE,STM32WB55xx,CORE_CM4,USE_HAL_DRIVER</Define>
- <Undefine/>
+ <Undefine></Undefine>
<IncludePath>../../../../../../Middlewares/ST/STM32_WPAN/ble/core/template;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/auto;../../../../../../Middlewares/ST/STM32_WPAN;../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include;../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/ble/core/;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl;../../../../../../Middlewares/ST/STM32_WPAN/utilities;../../../../../../Utilities/lpm/tiny_lpm;../../../../../../Utilities/sequencer;../../../../../../Drivers/CMSIS/Include;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread;../../../../../../Middlewares/ST/STM32_WPAN/ble;../Core/Inc;../STM32_WPAN/app;../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp;../../../../../../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc;../../../../../../Middlewares/ST/STM32_USB_Device_Library/Core/Inc;../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/vcp</IncludePath>
</VariousControls>
</Cads>
@@ -371,11 +347,14 @@
<SplitLS>0</SplitLS>
<SwStkChk>0</SwStkChk>
<NoWarn>0</NoWarn>
+ <uSurpInc>0</uSurpInc>
+ <useXO>0</useXO>
+ <uClangAs>0</uClangAs>
<VariousControls>
- <MiscControls/>
- <Define/>
- <Undefine/>
- <IncludePath/>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
</VariousControls>
</Aads>
<LDads>
@@ -387,22 +366,21 @@
<useFile>0</useFile>
<TextAddressRange>0x08000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
- <pXoBase/>
+ <pXoBase></pXoBase>
<ScatterFile>.\stm32wb55xx_flash_cm4.sct</ScatterFile>
- <IncludeLibs/>
- <IncludeLibsPath/>
- <Misc/>
- <LinkerInputFile/>
- <DisabledWarnings/>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc></Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
</LDads>
</TargetArmAds>
- </TargetOption>
+ </TargetOption>
<Groups>
-
- <Group>
+ <Group>
<GroupName>::CMSIS</GroupName>
</Group>
- <Group>
+ <Group>
<GroupName>Application/Core</GroupName>
<Files>
<File>
@@ -439,7 +417,7 @@
</Group>
<Group>
<GroupName>Application/MDK-ARM</GroupName>
- <Files>
+ <Files>
<File>
<FileName>startup_stm32wb55xx_cm4.s</FileName>
<FileType>2</FileType>
@@ -758,19 +736,20 @@
</Files>
</Group>
</Groups>
-
</Target>
</Targets>
+
<RTE>
<apis/>
<components>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
<targetInfos>
- <targetInfo name="Production"/>
+ <targetInfo name="BLE_p2pServer"/>
</targetInfos>
</component>
</components>
<files/>
</RTE>
-</Project> \ No newline at end of file
+
+</Project>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c
index 7b22ea955..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/STM32_WPAN/Target/hw_ipcc.c
@@ -1,21 +1,21 @@
/**
******************************************************************************
- * File Name : Target/hw_ipcc.c
- * Description : Hardware IPCC source file for BLE
- * middleWare.
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
/* Includes ------------------------------------------------------------------*/
#include "app_common.h"
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/.cproject b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/.cproject
index 9bfdac567..94ef98019 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/.cproject
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/.cproject
@@ -28,7 +28,7 @@
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1849262742" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1302178489" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1435986533" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
- <builder buildPath="${workspace_loc:/Production}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.473712826" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
+ <builder buildPath="${workspace_loc:/BLE_p2pServer}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.473712826" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries>
@@ -143,7 +143,7 @@
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
- <project id="Production.fr.ac6.managedbuild.target.gnu.cross.exe.374324725" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
+ <project id="BLE_p2pServer.fr.ac6.managedbuild.target.gnu.cross.exe.374324725" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
@@ -154,7 +154,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration artifactName="${ProjName}" configurationName="Debug">
- <resource resourceType="PROJECT" workspacePath="Production"/>
+ <resource resourceType="PROJECT" workspacePath="BLE_p2pServer"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/.project b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/.project
index c3f2e1e12..2c68d1e9c 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/.project
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/.project
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><projectDescription>
- <name>Production</name>
+ <name>BLE_p2pServer</name>
<comment/>
<projects>
</projects>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/stm32wb55xx_flash_cm4.ld b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/stm32wb55xx_flash_cm4.ld
index a9ccd801e..a9ccd801e 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/Production/stm32wb55xx_flash_cm4.ld
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pServer/SW4STM32/BLE_p2pServer/stm32wb55xx_flash_cm4.ld
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c
index 329e4c648..b2188e403 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/Core/Src/app_entry.c
@@ -234,6 +234,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/readme.txt b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/readme.txt
index dd96510ca..37294088b 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/readme.txt
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Cli_Cmd/readme.txt
@@ -129,6 +129,7 @@ In order to make the program work, you must do the following:
- Rebuild all files and load your image OR use the Thread_Cli_Cmd_reference.hex from Binary directory
- Run the example and use the HyperTerminal to interact with the Board via the Cli commands
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
* <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
*/ \ No newline at end of file
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c
index 467861197..66db7c39a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/Core/Src/app_entry.c
@@ -230,6 +230,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
*
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt
index 03d8252a2..17e590456 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_DataTransfer/readme.txt
@@ -190,6 +190,7 @@ In order to make the program work, you must do the following:
- After a few seconds, if everything goes right, a blue LED should be lit indicating the end of the File transfer
- If the above step didn't go as planned, you should look through the traces to locate the source of the error.
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
* <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
*/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c
index d8d10b914..44714e21d 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/Core/Src/app_entry.c
@@ -230,6 +230,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
*
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/readme.txt b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/readme.txt
index e7a8d4b4b..cc4591b8b 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/readme.txt
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_Coap_Generic/readme.txt
@@ -127,6 +127,7 @@ In order to make the program work, you must do the following:
- Rebuild all files and load your image into target memory
- Run the example
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
* <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
*/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c
index 873545e69..10264d4bc 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/Core/Src/app_entry.c
@@ -230,6 +230,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
*
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt
index 9485a6382..76a85565f 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_FTD_Coap_Multicast/readme.txt
@@ -116,6 +116,8 @@ In order to make the program work, you must do the following:
- Rebuild all files and load your image into target memory
- Run the example
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
If you want to control this application, you can directly send and
retrieve Cli commands connecting an HyperTerminal with the ST_Link cable.
(Refer to the Thread_Cli_Cmd application for more details)
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c
index 01a148105..b918d29e9 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/Core/Src/app_entry.c
@@ -230,6 +230,15 @@ static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
*
* @retval None
*/
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
static void APPE_SysUserEvtRx( void * pPayload )
{
TL_AsynchEvt_t *p_sys_event;
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
index 35d59a208..0f839543a 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/STM32_WPAN/Target/hw_ipcc.c
@@ -150,6 +150,12 @@ void HW_IPCC_Tx_Handler( void )
void HW_IPCC_Enable( void )
{
/**
+ * When the device is out of standby, it is required to use the EXTI mechanism to wakeup CPU2
+ */
+ LL_C2_EXTI_EnableEvent_32_63( LL_EXTI_LINE_41 );
+ LL_EXTI_EnableRisingTrig_32_63( LL_EXTI_LINE_41 );
+
+ /**
* In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
* In that case, to keep the mechanism transparent to the user application, it shall call the system command
* SHCI_C2_Reinit( ) before jumping to the application.
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt
index 6632307da..c03d1e362 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Thread/Thread_SED_Coap_Multicast/readme.txt
@@ -123,6 +123,8 @@ In order to make the program work, you must do the following:
- Run the application
+ Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
If you want to control this application, you can directly send and
retrieve Cli commands connecting an HyperTerminal with the ST_Link cable.
(Refer to the Thread_Cli_Cmd application for more details)
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_common.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_common.h
new file mode 100644
index 000000000..4defc5d7a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_common.h
@@ -0,0 +1,114 @@
+/**
+ ******************************************************************************
+ * File Name : app_common.h
+ * Description : App Common application configuration file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_COMMON_H
+#define APP_COMMON_H
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stdint.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "app_conf.h"
+
+ /* -------------------------------- *
+ * Basic definitions *
+ * -------------------------------- */
+
+#undef NULL
+#define NULL 0
+
+#undef FALSE
+#define FALSE 0
+
+#undef TRUE
+#define TRUE (!0)
+
+ /* -------------------------------- *
+ * Critical Section definition *
+ * -------------------------------- */
+#define BACKUP_PRIMASK() uint32_t primask_bit= __get_PRIMASK()
+#define DISABLE_IRQ() __disable_irq()
+#define RESTORE_PRIMASK() __set_PRIMASK(primask_bit)
+
+ /* -------------------------------- *
+ * Macro delimiters *
+ * -------------------------------- */
+
+#define M_BEGIN do {
+
+#define M_END } while(0)
+
+ /* -------------------------------- *
+ * Some useful macro definitions *
+ * -------------------------------- */
+
+#define MAX( x, y ) (((x)>(y))?(x):(y))
+
+#define MIN( x, y ) (((x)<(y))?(x):(y))
+
+#define MODINC( a, m ) M_BEGIN (a)++; if ((a)>=(m)) (a)=0; M_END
+
+#define MODDEC( a, m ) M_BEGIN if ((a)==0) (a)=(m); (a)--; M_END
+
+#define MODADD( a, b, m ) M_BEGIN (a)+=(b); if ((a)>=(m)) (a)-=(m); M_END
+
+#define MODSUB( a, b, m ) MODADD( a, (m)-(b), m )
+
+#define PAUSE( t ) M_BEGIN \
+ __IO int _i; \
+ for ( _i = t; _i > 0; _i -- ); \
+ M_END
+
+#define DIVF( x, y ) ((x)/(y))
+
+#define DIVC( x, y ) (((x)+(y)-1)/(y))
+
+#define DIVR( x, y ) (((x)+((y)/2))/(y))
+
+#define SHRR( x, n ) ((((x)>>((n)-1))+1)>>1)
+
+#define BITN( w, n ) (((w)[(n)/32] >> ((n)%32)) & 1)
+
+#define BITNSET( w, n, b ) M_BEGIN (w)[(n)/32] |= ((U32)(b))<<((n)%32); M_END
+
+ /* -------------------------------- *
+ * Compiler *
+ * -------------------------------- */
+#define PLACE_IN_SECTION( __x__ ) __attribute__((section (__x__)))
+
+#ifdef WIN32
+#define ALIGN(n)
+#else
+#define ALIGN(n) __attribute__((aligned(n)))
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*APP_COMMON_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_conf.h
new file mode 100644
index 000000000..14123c655
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_conf.h
@@ -0,0 +1,348 @@
+/**
+ ******************************************************************************
+ * File Name : app_conf.h
+ * Description : Application configuration file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_CONF_H
+#define APP_CONF_H
+
+#include "hw.h"
+#include "hw_conf.h"
+#include "hw_if.h"
+
+/******************************************************************************
+ * Application Config
+ ******************************************************************************/
+/******************************************************************************
+ * Transport Layer
+ ******************************************************************************/
+/**
+ * Queue length of BLE Event
+ * This parameter defines the number of asynchronous events that can be stored in the HCI layer before
+ * being reported to the application. When a command is sent to the BLE core coprocessor, the HCI layer
+ * is waiting for the event with the Num_HCI_Command_Packets set to 1. The receive queue shall be large
+ * enough to store all asynchronous events received in between.
+ * When CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE is set to 27, this allow to store three 255 bytes long asynchronous events
+ * between the HCI command and its event.
+ * This parameter depends on the value given to CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE. When the queue size is to small,
+ * the system may hang if the queue is full with asynchronous events and the HCI layer is still waiting
+ * for a CC/CS event, In that case, the notification TL_BLE_HCI_ToNot() is called to indicate
+ * to the application a HCI command did not receive its command event within 30s (Default HCI Timeout).
+ */
+#define CFG_TL_EVT_QUEUE_LENGTH 5
+/**
+ * This parameter should be set to fit most events received by the HCI layer. It defines the buffer size of each element
+ * allocated in the queue of received events and can be used to optimize the amount of RAM allocated by the Memory Manager.
+ * It should not exceed 255 which is the maximum HCI packet payload size (a greater value is a lost of memory as it will
+ * never be used)
+ * It shall be at least 4 to receive the command status event in one frame.
+ * The default value is set to 27 to allow receiving an event of MTU size in a single buffer. This value maybe reduced
+ * further depending on the application.
+ *
+ */
+#define CFG_TL_MOST_EVENT_PAYLOAD_SIZE 255 /**< Set to 255 with the memory manager and the mailbox */
+
+#define TL_EVENT_FRAME_SIZE ( TL_EVT_HDR_SIZE + CFG_TL_MOST_EVENT_PAYLOAD_SIZE )
+/******************************************************************************
+ * UART interfaces
+ ******************************************************************************/
+
+/**
+ * Select UART interfaces
+ */
+#define CFG_DEBUG_TRACE_UART hw_uart1
+#define CFG_CONSOLE_MENU
+#define CFG_CLI_UART hw_lpuart1
+/******************************************************************************
+ * USB interface
+ ******************************************************************************/
+
+/**
+ * Enable/Disable USB interface
+ */
+#define CFG_USB_INTERFACE_ENABLE 1
+
+/******************************************************************************
+ * Low Power
+ *
+ * When CFG_FULL_LOW_POWER is set to 1, the system is configured in full
+ * low power mode. It means that all what can have an impact on the consumptions
+ * are powered down.(For instance LED, Access to Debugger, Etc.)
+ *
+ * When CFG_FULL_LOW_POWER is set to 0, the low power mode is not activated
+ *
+ ******************************************************************************/
+
+#define CFG_FULL_LOW_POWER 0
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_LPM_SUPPORTED
+#define CFG_LPM_SUPPORTED 1
+#endif /* CFG_FULL_LOW_POWER */
+
+/******************************************************************************
+ * Timer Server
+ ******************************************************************************/
+/**
+ * CFG_RTC_WUCKSEL_DIVIDER: This sets the RTCCLK divider to the wakeup timer.
+ * The higher is the value, the better is the power consumption and the accuracy of the timerserver
+ * The lower is the value, the finest is the granularity
+ *
+ * CFG_RTC_ASYNCH_PRESCALER: This sets the asynchronous prescaler of the RTC. It should as high as possible ( to ouput
+ * clock as low as possible) but the output clock should be equal or higher frequency compare to the clock feeding
+ * the wakeup timer. A lower clock speed would impact the accuracy of the timer server.
+ *
+ * CFG_RTC_SYNCH_PRESCALER: This sets the synchronous prescaler of the RTC.
+ * When the 1Hz calendar clock is required, it shall be sets according to other settings
+ * When the 1Hz calendar clock is not needed, CFG_RTC_SYNCH_PRESCALER should be set to 0x7FFF (MAX VALUE)
+ *
+ * CFG_RTCCLK_DIVIDER_CONF:
+ * Shall be set to either 0,2,4,8,16
+ * When set to either 2,4,8,16, the 1Hhz calendar is supported
+ * When set to 0, the user sets its own configuration
+ *
+ * The following settings are computed with LSI as input to the RTC
+ */
+#define CFG_RTCCLK_DIVIDER_CONF 0
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 0)
+/**
+ * Custom configuration
+ * It does not support 1Hz calendar
+ * It divides the RTC CLK by 16
+ */
+#define CFG_RTCCLK_DIV (16)
+#define CFG_RTC_WUCKSEL_DIVIDER (0)
+#define CFG_RTC_ASYNCH_PRESCALER (CFG_RTCCLK_DIV - 1)
+#define CFG_RTC_SYNCH_PRESCALER (0x7FFF)
+
+#else
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 2)
+/**
+ * It divides the RTC CLK by 2
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (3)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 4)
+/**
+ * It divides the RTC CLK by 4
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (2)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 8)
+/**
+ * It divides the RTC CLK by 8
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (1)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 16)
+/**
+ * It divides the RTC CLK by 16
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (0)
+#endif
+
+#define CFG_RTCCLK_DIV CFG_RTCCLK_DIVIDER_CONF
+#define CFG_RTC_ASYNCH_PRESCALER (CFG_RTCCLK_DIV - 1)
+#define CFG_RTC_SYNCH_PRESCALER (DIVR( LSE_VALUE, (CFG_RTC_ASYNCH_PRESCALER+1) ) - 1 )
+
+#endif
+
+/** tick timer value in us */
+#define CFG_TS_TICK_VAL DIVR( (CFG_RTCCLK_DIV * 1000000), LSE_VALUE )
+
+typedef enum
+{
+ CFG_TIM_PROC_ID_ISR,
+} CFG_TimProcID_t;
+
+/******************************************************************************
+ * Debug
+ ******************************************************************************/
+/**
+ * When set, this resets some hw resources to set the device in the same state than the power up
+ * The FW resets only register that may prevent the FW to run properly
+ *
+ * This shall be set to 0 in a final product
+ *
+ */
+#define CFG_HW_RESET_BY_FW 1
+
+/**
+ * keep debugger enabled while in any low power mode when set to 1
+ * should be set to 0 in production
+ */
+#define CFG_DEBUGGER_SUPPORTED 1
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_DEBUGGER_SUPPORTED
+#define CFG_DEBUGGER_SUPPORTED 0
+#endif /* CFG_FULL_LOW_POWER */
+
+/*****************************************************************************
+ * Traces
+ * Enable or Disable traces in application
+ * When CFG_DEBUG_TRACE is set, traces are activated
+ *
+ * Note : Refer to utilities_conf.h file in order to details
+ * the level of traces : CFG_DEBUG_TRACE_FULL or CFG_DEBUG_TRACE_LIGHT
+ *****************************************************************************/
+#define CFG_DEBUG_TRACE 1
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_DEBUG_TRACE
+#define CFG_DEBUG_TRACE 0
+#endif /* CFG_FULL_LOW_POWER */
+
+/**
+ * When CFG_DEBUG_TRACE_FULL is set to 1, the trace are output with the API name, the file name and the line number
+ * When CFG_DEBUG_TRACE_LIGHT is set to 1, only the debug message is output
+ *
+ * When both are set to 0, no trace are output
+ * When both are set to 1, CFG_DEBUG_TRACE_FULL is selected
+ */
+#define CFG_DEBUG_TRACE_LIGHT 1
+#define CFG_DEBUG_TRACE_FULL 0
+
+#if (( CFG_DEBUG_TRACE != 0 ) && ( CFG_DEBUG_TRACE_LIGHT == 0 ) && (CFG_DEBUG_TRACE_FULL == 0))
+#undef CFG_DEBUG_TRACE_FULL
+#undef CFG_DEBUG_TRACE_LIGHT
+#define CFG_DEBUG_TRACE_FULL 0
+#define CFG_DEBUG_TRACE_LIGHT 1
+#endif
+
+#if ( CFG_DEBUG_TRACE == 0 )
+#undef CFG_DEBUG_TRACE_FULL
+#undef CFG_DEBUG_TRACE_LIGHT
+#define CFG_DEBUG_TRACE_FULL 0
+#define CFG_DEBUG_TRACE_LIGHT 0
+#endif
+
+/**
+ * When not set, the traces is looping on sending the trace over UART
+ */
+#define DBG_TRACE_USE_CIRCULAR_QUEUE 1
+
+/**
+ * max buffer Size to queue data traces and max data trace allowed.
+ * Only Used if DBG_TRACE_USE_CIRCULAR_QUEUE is defined
+ */
+#define DBG_TRACE_MSG_QUEUE_SIZE 4096
+#define MAX_DBG_TRACE_MSG_SIZE 1024
+
+/******************************************************************************
+ * Configure Log level for Application
+ ******************************************************************************/
+#define APPLI_CONFIG_LOG_LEVEL LOG_LEVEL_INFO
+#define APPLI_PRINT_FILE_FUNC_LINE 0
+
+/* USER CODE BEGIN Defines */
+/******************************************************************************
+ * User interaction
+ * When CFG_LED_SUPPORTED is set, LEDS are activated if requested
+ * When CFG_BUTTON_SUPPORTED is set, the push button are activated if requested
+ ******************************************************************************/
+#if (CFG_FULL_LOW_POWER == 1)
+#define CFG_LED_SUPPORTED 0
+#define CFG_BUTTON_SUPPORTED 0
+#else
+#define CFG_LED_SUPPORTED 1
+#define CFG_BUTTON_SUPPORTED 1
+#endif /* CFG_FULL_LOW_POWER */
+/* USER CODE END Defines */
+
+/******************************************************************************
+ * Scheduler
+ ******************************************************************************/
+/**
+ * This is the list of task id required by the application
+ * Each Id shall be in the range 0..31
+ */
+
+typedef enum {
+ CFG_TASK_MSG_FROM_M0_TO_M4,
+ CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_ZIGBEE_NETWORK_FORM,
+ CFG_TASK_BUTTON_SW1,
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+ CFG_TASK_VCP_SEND_DATA,
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+ CFG_TASK_NBR /**< Shall be last in the list */
+} CFG_IdleTask_Id_t;
+
+/* Scheduler types and defines */
+/*------------------------------------*/
+
+//#define TASK_MSG_FROM_M0_TO_M4 (1U << CFG_TASK_MSG_FROM_M0_TO_M4)
+#define EVENT_ACK_FROM_M0_EVT (1U << CFG_EVT_ACK_FROM_M0_EVT)
+#define EVENT_SYNCHRO_BYPASS_IDLE (1U << CFG_EVT_SYNCHRO_BYPASS_IDLE)
+
+/**
+ * This is the list of priority required by the application
+ * Each Id shall be in the range 0..31
+ */
+typedef enum
+{
+ CFG_SCH_PRIO_0,
+ CFG_SCH_PRIO_1,
+ CFG_PRIO_NBR,
+} CFG_SCH_Prio_Id_t;
+
+/**
+ * This is a bit mapping over 32bits listing all events id supported in the application
+ */
+typedef enum {
+ CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP,
+ CFG_EVT_ACK_FROM_M0_EVT,
+ CFG_EVT_SYNCHRO_BYPASS_IDLE,
+} CFG_IdleEvt_Id_t;
+
+#define EVENT_ACK_FROM_M0_EVT (1U << CFG_EVT_ACK_FROM_M0_EVT)
+#define EVENT_SYNCHRO_BYPASS_IDLE (1U << CFG_EVT_SYNCHRO_BYPASS_IDLE)
+
+/******************************************************************************
+ * Configure Log level for Application
+ ******************************************************************************/
+#define APPLI_CONFIG_LOG_LEVEL LOG_LEVEL_INFO
+#define APPLI_PRINT_FILE_FUNC_LINE 0
+
+/******************************************************************************
+ * LOW POWER
+ ******************************************************************************/
+/**
+ * Supported requester to the MCU Low Power Manager - can be increased up to 32
+ * It lits a bit mapping of all user of the Low Power Manager
+ */
+typedef enum {
+ CFG_LPM_APP,
+} CFG_LPM_Id_t;
+
+/******************************************************************************
+ * OTP manager
+ ******************************************************************************/
+#define CFG_OTP_BASE_ADDRESS OTP_AREA_BASE
+
+#define CFG_OTP_END_ADRESS OTP_AREA_END_ADDR
+
+#endif /*APP_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_entry.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_entry.h
new file mode 100644
index 000000000..48c467aaa
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/app_entry.h
@@ -0,0 +1,68 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : app_entry.h
+ * Description : App entry configuration file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_ENTRY_H
+#define APP_ENTRY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+ /* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported variables --------------------------------------------------------*/
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/* Exported macros ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions ---------------------------------------------*/
+ void APPE_Init( void );
+/* USER CODE BEGIN EF */
+
+/* USER CODE END EF */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*APP_ENTRY_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_conf.h
new file mode 100644
index 000000000..8409edd16
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_conf.h
@@ -0,0 +1,219 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : hw_conf.h
+ * Description : Hardware configuration file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef HW_CONF_H
+#define HW_CONF_H
+
+/******************************************************************************
+ * Semaphores
+ * THIS SHALL NO BE CHANGED AS THESE SEMAPHORES ARE USED AS WELL ON THE CM0+
+ *****************************************************************************/
+/* Index of the semaphore used to manage the entry Stop Mode procedure */
+#define CFG_HW_ENTRY_STOP_MODE_SEMID 4
+
+/* Index of the semaphore used to access the RCC */
+#define CFG_HW_RCC_SEMID 3
+
+/* Index of the semaphore used to access the FLASH */
+#define CFG_HW_FLASH_SEMID 2
+
+/* Index of the semaphore used to access the PKA */
+#define CFG_HW_PKA_SEMID 1
+
+/* Index of the semaphore used to access the RNG */
+#define CFG_HW_RNG_SEMID 0
+
+/******************************************************************************
+ * HW TIMER SERVER
+ *****************************************************************************/
+/**
+ * The user may define the maximum number of virtual timers supported.
+ * It shall not exceed 255
+ */
+#define CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER 6
+
+/**
+ * The user may define the priority in the NVIC of the RTC_WKUP interrupt handler that is used to manage the
+ * wakeup timer.
+ * This setting is the preemptpriority part of the NVIC.
+ */
+#define CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO 3
+
+/**
+ * The user may define the priority in the NVIC of the RTC_WKUP interrupt handler that is used to manage the
+ * wakeup timer.
+ * This setting is the subpriority part of the NVIC. It does not exist on all processors. When it is not supported
+ * on the CPU, the setting is ignored
+ */
+#define CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO 0
+
+/**
+ * Define a critical section in the Timer server
+ * The Timer server does not support the API to be nested
+ * The Application shall either:
+ * a) Ensure this will never happen
+ * b) Define the critical section
+ * The default implementations is masking all interrupts using the PRIMASK bit
+ * The TimerServer driver uses critical sections to avoid context corruption. This is achieved with the macro
+ * TIMER_ENTER_CRITICAL_SECTION and TIMER_EXIT_CRITICAL_SECTION. When CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION is set
+ * to 1, all STM32 interrupts are masked with the PRIMASK bit of the CortexM CPU. It is possible to use the BASEPRI
+ * register of the CortexM CPU to keep allowed some interrupts with high priority. In that case, the user shall
+ * re-implement TIMER_ENTER_CRITICAL_SECTION and TIMER_EXIT_CRITICAL_SECTION and shall make sure that no TimerServer
+ * API are called when the TIMER critical section is entered
+ */
+#define CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION 1
+
+/**
+ * This value shall reflect the maximum delay there could be in the application between the time the RTC interrupt
+ * is generated by the Hardware and the time when the RTC interrupt handler is called. This time is measured in
+ * number of RTCCLK ticks.
+ * A relaxed timing would be 10ms
+ * When the value is too short, the timerserver will not be able to count properly and all timeout may be random.
+ * When the value is too long, the device may wake up more often than the most optimal configuration. However, the
+ * impact on power consumption would be marginal (unless the value selected is extremely too long). It is strongly
+ * recommended to select a value large enough to make sure it is not too short to ensure reliability of the system
+ * as this will have marginal impact on low power mode
+ */
+#define CFG_HW_TS_RTC_HANDLER_MAX_DELAY ( 10 * (LSI_VALUE/1000) )
+
+ /**
+ * Interrupt ID in the NVIC of the RTC Wakeup interrupt handler
+ * It shall be type of IRQn_Type
+ */
+#define CFG_HW_TS_RTC_WAKEUP_HANDLER_ID RTC_WKUP_IRQn
+
+/******************************************************************************
+ * HW UART
+ *****************************************************************************/
+
+#define CFG_HW_LPUART1_ENABLED 1
+#define CFG_HW_LPUART1_DMA_TX_SUPPORTED 1
+
+#define CFG_HW_USART1_ENABLED 1
+#define CFG_HW_USART1_DMA_TX_SUPPORTED 1
+
+/**
+ * LPUART1
+ */
+#define CFG_HW_LPUART1_PREEMPTPRIORITY 0x0F
+#define CFG_HW_LPUART1_SUBPRIORITY 0
+
+/** < The application shall check the selected source clock is enable */
+#define CFG_HW_LPUART1_SOURCE_CLOCK RCC_LPUART1CLKSOURCE_SYSCLK
+
+#define CFG_HW_LPUART1_BAUDRATE 115200
+#define CFG_HW_LPUART1_WORDLENGTH UART_WORDLENGTH_8B
+#define CFG_HW_LPUART1_STOPBITS UART_STOPBITS_1
+#define CFG_HW_LPUART1_PARITY UART_PARITY_NONE
+#define CFG_HW_LPUART1_HWFLOWCTL UART_HWCONTROL_NONE
+#define CFG_HW_LPUART1_MODE UART_MODE_TX_RX
+#define CFG_HW_LPUART1_ADVFEATUREINIT UART_ADVFEATURE_NO_INIT
+#define CFG_HW_LPUART1_OVERSAMPLING UART_OVERSAMPLING_8
+
+#define CFG_HW_LPUART1_TX_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_LPUART1_TX_PORT GPIOA
+#define CFG_HW_LPUART1_TX_PIN GPIO_PIN_2
+#define CFG_HW_LPUART1_TX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_TX_PULL GPIO_NOPULL
+#define CFG_HW_LPUART1_TX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_TX_ALTERNATE GPIO_AF8_LPUART1
+
+#define CFG_HW_LPUART1_RX_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_LPUART1_RX_PORT GPIOA
+#define CFG_HW_LPUART1_RX_PIN GPIO_PIN_3
+#define CFG_HW_LPUART1_RX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_RX_PULL GPIO_NOPULL
+#define CFG_HW_LPUART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_RX_ALTERNATE GPIO_AF8_LPUART1
+
+#define CFG_HW_LPUART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOvalueNotSetted_CLK_ENABLE
+#define CFG_HW_LPUART1_CTS_PORT GPIOvalueNotSetted
+#define CFG_HW_LPUART1_CTS_PIN GPIO_PIN_valueNotSetted
+#define CFG_HW_LPUART1_CTS_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_CTS_PULL GPIO_PULLDOWN
+#define CFG_HW_LPUART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_CTS_ALTERNATE GPIO_AFvalueNotSetted_LPUART1
+
+#define CFG_HW_LPUART1_DMA_TX_PREEMPTPRIORITY 0x0F
+#define CFG_HW_LPUART1_DMA_TX_SUBPRIORITY 0
+
+#define CFG_HW_LPUART1_DMAMUX_CLK_ENABLE __HAL_RCC_DMAMUX1_CLK_ENABLE
+#define CFG_HW_LPUART1_DMA_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE
+#define CFG_HW_LPUART1_TX_DMA_REQ DMA_REQUEST_LPUART1_TX
+#define CFG_HW_LPUART1_TX_DMA_CHANNEL DMA1_CHANNEL_1
+#define CFG_HW_LPUART1_TX_DMA_IRQn DMA1_CHANNEL_1_IRQn
+#define CFG_HW_LPUART1_DMA_TX_IRQHandler DMA1_CHANNEL_1_IRQHandler
+
+/**
+ * UART1
+ */
+#define CFG_HW_USART1_PREEMPTPRIORITY 0x0F
+#define CFG_HW_USART1_SUBPRIORITY 0
+
+/** < The application shall check the selected source clock is enable */
+#define CFG_HW_USART1_SOURCE_CLOCK RCC_USART1CLKSOURCE_SYSCLK
+
+#define CFG_HW_USART1_BAUDRATE 115200
+#define CFG_HW_USART1_WORDLENGTH UART_WORDLENGTH_8B
+#define CFG_HW_USART1_STOPBITS UART_STOPBITS_1
+#define CFG_HW_USART1_PARITY UART_PARITY_NONE
+#define CFG_HW_USART1_HWFLOWCTL UART_HWCONTROL_NONE
+#define CFG_HW_USART1_MODE UART_MODE_TX_RX
+#define CFG_HW_USART1_ADVFEATUREINIT UART_ADVFEATURE_NO_INIT
+#define CFG_HW_USART1_OVERSAMPLING UART_OVERSAMPLING_8
+
+#define CFG_HW_USART1_TX_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define CFG_HW_USART1_TX_PORT GPIOB
+#define CFG_HW_USART1_TX_PIN GPIO_PIN_6
+#define CFG_HW_USART1_TX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_TX_PULL GPIO_NOPULL
+#define CFG_HW_USART1_TX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_TX_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_RX_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define CFG_HW_USART1_RX_PORT GPIOB
+#define CFG_HW_USART1_RX_PIN GPIO_PIN_7
+#define CFG_HW_USART1_RX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_RX_PULL GPIO_NOPULL
+#define CFG_HW_USART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_RX_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_USART1_CTS_PORT GPIOA
+#define CFG_HW_USART1_CTS_PIN GPIO_PIN_11
+#define CFG_HW_USART1_CTS_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_CTS_PULL GPIO_PULLDOWN
+#define CFG_HW_USART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_CTS_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_DMA_TX_PREEMPTPRIORITY 0x0F
+#define CFG_HW_USART1_DMA_TX_SUBPRIORITY 0
+
+#define CFG_HW_USART1_DMAMUX_CLK_ENABLE __HAL_RCC_DMAMUX1_CLK_ENABLE
+#define CFG_HW_USART1_DMA_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE
+#define CFG_HW_USART1_TX_DMA_REQ DMA_REQUEST_USART1_TX
+#define CFG_HW_USART1_TX_DMA_CHANNEL DMA1_CHANNEL_2
+#define CFG_HW_USART1_TX_DMA_IRQn DMA1_CHANNEL_2_IRQn
+#define CFG_HW_USART1_DMA_TX_IRQHandler DMA1_CHANNEL_2_IRQHandler
+
+#endif /*HW_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_if.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_if.h
new file mode 100644
index 000000000..271a222a9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/hw_if.h
@@ -0,0 +1,250 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file hw_if.h
+ * @author MCD Application Team
+ * @brief Hardware Interface
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef HW_IF_H
+#define HW_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /* Includes ------------------------------------------------------------------*/
+#include "stm32wbxx.h"
+#include "stm32wbxx_ll_exti.h"
+#include "stm32wbxx_ll_system.h"
+#include "stm32wbxx_ll_rcc.h"
+#include "stm32wbxx_ll_ipcc.h"
+#include "stm32wbxx_ll_bus.h"
+#include "stm32wbxx_ll_pwr.h"
+#include "stm32wbxx_ll_cortex.h"
+#include "stm32wbxx_ll_utils.h"
+#include "stm32wbxx_ll_hsem.h"
+#include "stm32wbxx_ll_gpio.h"
+#include "stm32wbxx_ll_rtc.h"
+
+#ifdef USE_STM32WBXX_USB_DONGLE
+#include "stm32wbxx_usb_dongle.h"
+#endif
+#ifdef USE_STM32WBXX_NUCLEO
+#include "stm32wbxx_nucleo.h"
+#endif
+#ifdef USE_X_NUCLEO_EPD
+#include "x_nucleo_epd.h"
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+ /******************************************************************************
+ * HW UART
+ ******************************************************************************/
+ typedef enum
+ {
+ hw_uart1,
+ hw_uart2,
+ hw_lpuart1,
+ } hw_uart_id_t;
+
+ typedef enum
+ {
+ hw_uart_ok,
+ hw_uart_error,
+ hw_uart_busy,
+ hw_uart_to,
+ } hw_status_t;
+
+ void HW_UART_Init(hw_uart_id_t hw_uart_id);
+ void HW_UART_Receive_IT(hw_uart_id_t hw_uart_id, uint8_t *pData, uint16_t Size, void (*Callback)(void));
+ void HW_UART_Transmit_IT(hw_uart_id_t hw_uart_id, uint8_t *pData, uint16_t Size, void (*Callback)(void));
+ hw_status_t HW_UART_Transmit(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, uint32_t timeout);
+ hw_status_t HW_UART_Transmit_DMA(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*Callback)(void));
+ void HW_UART_Interrupt_Handler(hw_uart_id_t hw_uart_id);
+ void HW_UART_DMA_Interrupt_Handler(hw_uart_id_t hw_uart_id);
+
+ /******************************************************************************
+ * HW TimerServer
+ ******************************************************************************/
+ /* Exported types ------------------------------------------------------------*/
+ /**
+ * This setting is used when standby mode is supported.
+ * hw_ts_InitMode_Limited should be used when the device restarts from Standby Mode. In that case, the Timer Server does
+ * not re-initialized its context. Only the Hardware register which content has been lost is reconfigured
+ * Otherwise, hw_ts_InitMode_Full should be requested (Start from Power ON) and everything is re-initialized.
+ */
+ typedef enum
+ {
+ hw_ts_InitMode_Full,
+ hw_ts_InitMode_Limited,
+ } HW_TS_InitMode_t;
+
+ /**
+ * When a Timer is created as a SingleShot timer, it is not automatically restarted when the timeout occurs. However,
+ * the timer is kept reserved in the list and could be restarted at anytime with HW_TS_Start()
+ *
+ * When a Timer is created as a Repeated timer, it is automatically restarted when the timeout occurs.
+ */
+ typedef enum
+ {
+ hw_ts_SingleShot,
+ hw_ts_Repeated
+ } HW_TS_Mode_t;
+
+ /**
+ * hw_ts_Successful is returned when a Timer has been successfully created with HW_TS_Create(). Otherwise, hw_ts_Failed
+ * is returned. When hw_ts_Failed is returned, that means there are not enough free slots in the list to create a
+ * Timer. In that case, CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER should be increased
+ */
+ typedef enum
+ {
+ hw_ts_Successful,
+ hw_ts_Failed,
+ }HW_TS_ReturnStatus_t;
+
+ typedef void (*HW_TS_pTimerCb_t)(void);
+
+ /**
+ * @brief Initialize the timer server
+ * This API shall be called by the application before any timer is requested to the timer server. It
+ * configures the RTC module to be connected to the LSI input clock.
+ *
+ * @param TimerInitMode: When the device restarts from Standby, it should request hw_ts_InitMode_Limited so that the
+ * Timer context is not re-initialized. Otherwise, hw_ts_InitMode_Full should be requested
+ * @param hrtc: RTC Handle
+ * @retval None
+ */
+ void HW_TS_Init(HW_TS_InitMode_t TimerInitMode, RTC_HandleTypeDef *hrtc);
+
+ /**
+ * @brief Interface to create a virtual timer
+ * The user shall call this API to create a timer. Once created, the timer is reserved to the module until it
+ * has been deleted. When creating a timer, the user shall specify the mode (single shot or repeated), the
+ * callback to be notified when the timer expires and a module ID to identify in the timer interrupt handler
+ * which module is concerned. In return, the user gets a timer ID to handle it.
+ *
+ * @param TimerProcessID: This is an identifier provided by the user and returned in the callback to allow
+ * identification of the requester
+ * @param pTimerId: Timer Id returned to the user to request operation (start, stop, delete)
+ * @param TimerMode: Mode of the virtual timer (Single shot or repeated)
+ * @param pTimerCallBack: Callback when the virtual timer expires
+ * @retval HW_TS_ReturnStatus_t: Return whether the creation is sucessfull or not
+ */
+ HW_TS_ReturnStatus_t HW_TS_Create(uint32_t TimerProcessID, uint8_t *pTimerId, HW_TS_Mode_t TimerMode, HW_TS_pTimerCb_t pTimerCallBack);
+
+ /**
+ * @brief Stop a virtual timer
+ * This API may be used to stop a running timer. A timer which is stopped is move to the pending state.
+ * A pending timer may be restarted at any time with a different timeout value but the mode cannot be changed.
+ * Nothing is done when it is called to stop a timer which has been already stopped
+ *
+ * @param TimerID: Id of the timer to stop
+ * @retval None
+ */
+ void HW_TS_Stop(uint8_t TimerID);
+
+ /**
+ * @brief Start a virtual timer
+ * This API shall be used to start a timer. The timeout value is specified and may be different each time.
+ * When the timer is in the single shot mode, it will move to the pending state when it expires. The user may
+ * restart it at any time with a different timeout value. When the timer is in the repeated mode, it always
+ * stay in the running state. When the timer expires, it will be restarted with the same timeout value.
+ * This API shall not be called on a running timer.
+ *
+ * @param TimerID: The ID Id of the timer to start
+ * @param timeout_ticks: Number of ticks of the virtual timer (Maximum value is (0xFFFFFFFF-0xFFFF = 0xFFFF0000)
+ * @retval None
+ */
+ void HW_TS_Start(uint8_t TimerID, uint32_t timeout_ticks);
+
+ /**
+ * @brief Delete a virtual timer from the list
+ * This API should be used when a timer is not needed anymore by the user. A deleted timer is removed from
+ * the timer list managed by the timer server. It cannot be restarted again. The user has to go with the
+ * creation of a new timer if required and may get a different timer id
+ *
+ * @param TimerID: The ID of the timer to remove from the list
+ * @retval None
+ */
+ void HW_TS_Delete(uint8_t TimerID);
+
+ /**
+ * @brief Schedule the timer list on the timer interrupt handler
+ * This interrupt handler shall be called by the application in the RTC interrupt handler. This handler takes
+ * care of clearing all status flag required in the RTC and EXTI peripherals
+ *
+ * @param None
+ * @retval None
+ */
+ void HW_TS_RTC_Wakeup_Handler(void);
+
+ /**
+ * @brief Return the number of ticks to count before the interrupt
+ * This API returns the number of ticks left to be counted before an interrupt is generated by the
+ * Timer Server. This API may be used by the application for power management optimization. When the system
+ * enters low power mode, the mode selection is a tradeoff between the wakeup time where the CPU is running
+ * and the time while the CPU will be kept in low power mode before next wakeup. The deeper is the
+ * low power mode used, the longer is the wakeup time. The low power mode management considering wakeup time
+ * versus time in low power mode is implementation specific
+ * When the timer is disabled (No timer in the list), it returns 0xFFFF
+ *
+ * @param None
+ * @retval The number of ticks left to count
+ */
+ uint16_t HW_TS_RTC_ReadLeftTicksToCount(void);
+
+ /**
+ * @brief Notify the application that a registered timer has expired
+ * This API shall be implemented by the user application.
+ * This API notifies the application that a timer expires. This API is running in the RTC Wakeup interrupt
+ * context. The application may implement an Operating System to change the context priority where the timer
+ * callback may be handled. This API provides the module ID to identify which module is concerned and to allow
+ * sending the information to the correct task
+ *
+ * @param TimerProcessID: The TimerProcessId associated with the timer when it has been created
+ * @param TimerID: The TimerID of the expired timer
+ * @param pTimerCallBack: The Callback associated with the timer when it has been created
+ * @retval None
+ */
+ void HW_TS_RTC_Int_AppNot(uint32_t TimerProcessID, uint8_t TimerID, HW_TS_pTimerCb_t pTimerCallBack);
+
+ /**
+ * @brief Notify the application that the wakeupcounter has been updated
+ * This API should be implemented by the user application
+ * This API notifies the application that the counter has been updated. This is expected to be used along
+ * with the HW_TS_RTC_ReadLeftTicksToCount () API. It could be that the counter has been updated since the
+ * last call of HW_TS_RTC_ReadLeftTicksToCount () and before entering low power mode. This notification
+ * provides a way to the application to solve that race condition to reevaluate the counter value before
+ * entering low power mode
+ *
+ * @param None
+ * @retval None
+ */
+ void HW_TS_RTC_CountUpdated_AppNot(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*HW_IF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/main.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/main.h
new file mode 100644
index 000000000..68182bc5a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/main.h
@@ -0,0 +1,71 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.h
+ * @brief : Header for main.c file.
+ * This file contains the common defines of the application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32wbxx_hal.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void Error_Handler(void);
+
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+/* Private defines -----------------------------------------------------------*/
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32_lpm_if.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32_lpm_if.h
new file mode 100644
index 000000000..70abecaa9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32_lpm_if.h
@@ -0,0 +1,81 @@
+/* USER CODE BEGIN Header */
+/**
+******************************************************************************
+* @file stm32_lpm_if.h
+* @brief Header for stm32_lpm_if.c module (device specific LP management)
+******************************************************************************
+* @attention
+*
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+* All rights reserved.</center></h2>
+*
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+*
+******************************************************************************
+*/
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32_LPM_IF_H
+#define __STM32_LPM_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+
+/**
+ * @brief Enters Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_EnterOffMode( void );
+/**
+ * @brief Exits Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_ExitOffMode( void );
+
+/**
+ * @brief Enters Low Power Stop Mode
+ * @note ARM exists the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterStopMode( void );
+/**
+ * @brief Exits Low Power Stop Mode
+ * @note Enable the pll at 32MHz
+ * @param none
+ * @retval none
+ */
+void PWR_ExitStopMode( void );
+
+/**
+ * @brief Enters Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterSleepMode( void );
+
+/**
+ * @brief Exits Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_ExitSleepMode( void );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__STM32_LPM_IF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_hal_conf.h
new file mode 100644
index 000000000..5fc609769
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_hal_conf.h
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * @file stm32wbxx_hal_conf.h
+ * @author MCD Application Team
+ * @brief HAL configuration file.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32WBxx_HAL_CONF_H
+#define __STM32WBxx_HAL_CONF_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* ########################## Module Selection ############################## */
+/**
+ * @brief This is the list of modules to be used in the HAL driver
+ */
+#define HAL_MODULE_ENABLED
+/*#define HAL_ADC_MODULE_ENABLED */
+/*#define HAL_CRYP_MODULE_ENABLED */
+/*#define HAL_COMP_MODULE_ENABLED */
+/*#define HAL_CRC_MODULE_ENABLED */
+#define HAL_HSEM_MODULE_ENABLED
+/*#define HAL_I2C_MODULE_ENABLED */
+/*#define HAL_IPCC_MODULE_ENABLED */
+/*#define HAL_IRDA_MODULE_ENABLED */
+/*#define HAL_IWDG_MODULE_ENABLED */
+/*#define HAL_LCD_MODULE_ENABLED */
+/*#define HAL_LPTIM_MODULE_ENABLED */
+#define HAL_PCD_MODULE_ENABLED
+/*#define HAL_PKA_MODULE_ENABLED */
+/*#define HAL_QSPI_MODULE_ENABLED */
+/*#define HAL_RNG_MODULE_ENABLED */
+#define HAL_RTC_MODULE_ENABLED
+/*#define HAL_SAI_MODULE_ENABLED */
+/*#define HAL_SMBUS_MODULE_ENABLED */
+/*#define HAL_SMARTCARD_MODULE_ENABLED */
+/*#define HAL_SPI_MODULE_ENABLED */
+/*#define HAL_TIM_MODULE_ENABLED */
+/*#define HAL_TSC_MODULE_ENABLED */
+#define HAL_UART_MODULE_ENABLED
+/*#define HAL_USART_MODULE_ENABLED */
+/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
+#define HAL_CORTEX_MODULE_ENABLED
+#define HAL_DMA_MODULE_ENABLED
+#define HAL_FLASH_MODULE_ENABLED
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED
+
+#define USE_HAL_ADC_REGISTER_CALLBACKS 0u
+#define USE_HAL_COMP_REGISTER_CALLBACKS 0u
+#define USE_HAL_CRYP_REGISTER_CALLBACKS 0u
+#define USE_HAL_I2C_REGISTER_CALLBACKS 0u
+#define USE_HAL_IRDA_REGISTER_CALLBACKS 0u
+#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0u
+#define USE_HAL_PCD_REGISTER_CALLBACKS 0u
+#define USE_HAL_PKA_REGISTER_CALLBACKS 0u
+#define USE_HAL_QSPI_REGISTER_CALLBACKS 0u
+#define USE_HAL_RNG_REGISTER_CALLBACKS 0u
+#define USE_HAL_RTC_REGISTER_CALLBACKS 0u
+#define USE_HAL_SAI_REGISTER_CALLBACKS 0u
+#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0u
+#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0u
+#define USE_HAL_SPI_REGISTER_CALLBACKS 0u
+#define USE_HAL_TIM_REGISTER_CALLBACKS 0u
+#define USE_HAL_TSC_REGISTER_CALLBACKS 0u
+#define USE_HAL_UART_REGISTER_CALLBACKS 0u
+#define USE_HAL_USART_REGISTER_CALLBACKS 0u
+#define USE_HAL_WWDG_REGISTER_CALLBACKS 0u
+
+/* ########################## Oscillator Values adaptation ####################*/
+/**
+ * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSE is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSE_VALUE)
+#define HSE_VALUE 32000000U /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (HSE_STARTUP_TIMEOUT)
+ #define HSE_STARTUP_TIMEOUT ((uint32_t)100) /*!< Time out for HSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief Internal Multiple Speed oscillator (MSI) default value.
+ * This value is the default MSI range value after Reset.
+ */
+#if !defined (MSI_VALUE)
+ #define MSI_VALUE ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* MSI_VALUE */
+
+/**
+ * @brief Internal High Speed oscillator (HSI) value.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSI is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSI_VALUE)
+#define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @brief Internal Low Speed oscillator (LSI1) value.
+ */
+#if !defined (LSI1_VALUE)
+ #define LSI1_VALUE ((uint32_t)32000) /*!< LSI1 Typical Value in Hz*/
+#endif /* LSI1_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+/**
+ * @brief Internal Low Speed oscillator (LSI2) value.
+ */
+#if !defined (LSI2_VALUE)
+ #define LSI2_VALUE ((uint32_t)32000) /*!< LSI2 Typical Value in Hz*/
+#endif /* LSI2_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+
+/**
+ * @brief External Low Speed oscillator (LSE) value.
+ * This value is used by the UART, RTC HAL module to compute the system frequency
+ */
+#if !defined (LSE_VALUE)
+#define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/
+#endif /* LSE_VALUE */
+
+/**
+ * @brief Internal Multiple Speed oscillator (HSI48) default value.
+ * This value is the default HSI48 range value after Reset.
+ */
+#if !defined (HSI48_VALUE)
+ #define HSI48_VALUE ((uint32_t)48000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI48_VALUE */
+
+#if !defined (LSE_STARTUP_TIMEOUT)
+#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief External clock source for SAI1 peripheral
+ * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source
+ * frequency.
+ */
+#if !defined (EXTERNAL_SAI1_CLOCK_VALUE)
+ #define EXTERNAL_SAI1_CLOCK_VALUE ((uint32_t)2097000) /*!< Value of the SAI1 External clock source in Hz*/
+#endif /* EXTERNAL_SAI1_CLOCK_VALUE */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+ === you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+ * @brief This is the HAL system configuration section
+ */
+
+#define VDD_VALUE 3300U /*!< Value of VDD in mv */
+#define TICK_INT_PRIORITY 0U /*!< tick interrupt priority */
+#define USE_RTOS 0U
+#define PREFETCH_ENABLE 1U
+#define INSTRUCTION_CACHE_ENABLE 1U
+#define DATA_CACHE_ENABLE 1U
+
+/* ########################## Assert Selection ############################## */
+/**
+ * @brief Uncomment the line below to expanse the "assert_param" macro in the
+ * HAL drivers code
+ */
+/* #define USE_FULL_ASSERT 1U */
+
+/* ################## SPI peripheral configuration ########################## */
+
+/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
+ * Activated: CRC code is present inside driver
+ * Deactivated: CRC code cleaned from driver
+ */
+
+#define USE_SPI_CRC 0U
+
+/* Includes ------------------------------------------------------------------*/
+/**
+ * @brief Include module's header file
+ */
+#ifdef HAL_DMA_MODULE_ENABLED
+ #include "stm32wbxx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+ #include "stm32wbxx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_COMP_MODULE_ENABLED
+ #include "stm32wbxx_hal_comp.h"
+#endif /* HAL_COMP_MODULE_ENABLED */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+ #include "stm32wbxx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+ #include "stm32wbxx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_CRYP_MODULE_ENABLED
+ #include "stm32wbxx_hal_cryp.h"
+#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+ #include "stm32wbxx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+ #include "stm32wbxx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+#ifdef HAL_HSEM_MODULE_ENABLED
+ #include "stm32wbxx_hal_hsem.h"
+#endif /* HAL_HSEM_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+ #include "stm32wbxx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_IPCC_MODULE_ENABLED
+ #include "stm32wbxx_hal_ipcc.h"
+#endif /* HAL_IPCC_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+ #include "stm32wbxx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+ #include "stm32wbxx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_LCD_MODULE_ENABLED
+ #include "stm32wbxx_hal_lcd.h"
+#endif /* HAL_LCD_MODULE_ENABLED */
+
+#ifdef HAL_LPTIM_MODULE_ENABLED
+ #include "stm32wbxx_hal_lptim.h"
+#endif /* HAL_LPTIM_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+ #include "stm32wbxx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_PKA_MODULE_ENABLED
+ #include "stm32wbxx_hal_pka.h"
+#endif /* HAL_PKA_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+ #include "stm32wbxx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_QSPI_MODULE_ENABLED
+ #include "stm32wbxx_hal_qspi.h"
+#endif /* HAL_QSPI_MODULE_ENABLED */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+ #include "stm32wbxx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_RNG_MODULE_ENABLED
+ #include "stm32wbxx_hal_rng.h"
+#endif /* HAL_RNG_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+ #include "stm32wbxx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_SAI_MODULE_ENABLED
+ #include "stm32wbxx_hal_sai.h"
+#endif /* HAL_SAI_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+ #include "stm32wbxx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_SMBUS_MODULE_ENABLED
+ #include "stm32wbxx_hal_smbus.h"
+#endif /* HAL_SMBUS_MODULE_ENABLED */
+
+#ifdef HAL_SPI_MODULE_ENABLED
+ #include "stm32wbxx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+ #include "stm32wbxx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_TSC_MODULE_ENABLED
+ #include "stm32wbxx_hal_tsc.h"
+#endif /* HAL_TSC_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+ #include "stm32wbxx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+ #include "stm32wbxx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+ #include "stm32wbxx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+/* Exported macro ------------------------------------------------------------*/
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief The assert_param macro is used for function's parameters check.
+ * @param expr If expr is false, it calls assert_failed function
+ * which reports the name of the source file and the source
+ * line number of the call that failed.
+ * If expr is true, it returns no value.
+ * @retval None
+ */
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+ void assert_failed(uint8_t* file, uint32_t line);
+#else
+ #define assert_param(expr) ((void)0U)
+#endif /* USE_FULL_ASSERT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32WBxx_HAL_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_it.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_it.h
new file mode 100644
index 000000000..ccef6a7e4
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm32wbxx_it.h
@@ -0,0 +1,95 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32wbxx_it.h
+ * @brief This file contains the headers of the interrupt handlers.
+ *******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32WBxx_IT_H
+#define __STM32WBxx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "app_common.h"
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+ /* External variable ----------------------------------------------------------*/
+ #if (CFG_USB_INTERFACE_ENABLE != 0)
+ extern PCD_HandleTypeDef hpcd; /* Defined in the Thread Middleware */
+ #endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void SVC_Handler(void);
+void DebugMon_Handler(void);
+void PendSV_Handler(void);
+void SysTick_Handler(void);
+void PVD_PVM_IRQHandler(void);
+void FLASH_IRQHandler(void);
+void RCC_IRQHandler(void);
+void DMA1_Channel1_IRQHandler(void);
+void DMA1_Channel2_IRQHandler(void);
+void C2SEV_PWR_C2H_IRQHandler(void);
+void USART1_IRQHandler(void);
+void LPUART1_IRQHandler(void);
+void PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler(void);
+void HSEM_IRQHandler(void);
+void FPU_IRQHandler(void);
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+void USB_LP_IRQHandler(void);
+void USB_HP_IRQHandler(void);
+void USB_FS_WKUP_IRQHandler(void);
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+/* USER CODE BEGIN EFP */
+void RTC_WKUP_IRQHandler(void);
+void EXTI15_10_IRQHandler(void);
+void IPCC_C1_TX_IRQHandler(void);
+void IPCC_C1_RX_IRQHandler(void);
+/* USER CODE END EFP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32WBxx_IT_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm_logging.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm_logging.h
new file mode 100644
index 000000000..58877c570
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/stm_logging.h
@@ -0,0 +1,55 @@
+/**
+ ******************************************************************************
+ * File Name : stm_logging.h
+ * Description : Application header file for logging
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+#ifndef STM_LOGGING_H_
+#define STM_LOGGING_H_
+
+#define LOG_LEVEL_NONE 0 /* None */
+#define LOG_LEVEL_CRIT 1U /* Critical */
+#define LOG_LEVEL_WARN 2U /* Warning */
+#define LOG_LEVEL_INFO 3U /* Info */
+#define LOG_LEVEL_DEBG 4U /* Debug */
+
+#define APP_DBG_FULL(level, region, ...) \
+ if (APPLI_PRINT_FILE_FUNC_LINE == 1U) \
+ { \
+ printf("\r\n[%s][%s][%d] ", DbgTraceGetFileName(__FILE__), __FUNCTION__, __LINE__); \
+ } \
+ logApplication(level, region, __VA_ARGS__);
+
+#define APP_DBG(...) \
+ if (APPLI_PRINT_FILE_FUNC_LINE == 1U) \
+ { \
+ printf("\r\n[%s][%s][%d] ", DbgTraceGetFileName(__FILE__), __FUNCTION__, __LINE__); \
+ } \
+ logApplication(LOG_LEVEL_NONE, APPLI_LOG_REGION_GENERAL, __VA_ARGS__);
+
+/**
+ * This enumeration represents log regions.
+ *
+ */
+typedef enum {
+ APPLI_LOG_REGION_GENERAL = 1U, /* General */
+ APPLI_LOG_REGION_ZIGBEE_API = 2U, /* OpenThread API */
+} appliLogRegion_t;
+
+typedef uint8_t appliLogLevel_t;
+
+void logApplication(appliLogLevel_t aLogLevel, appliLogRegion_t aLogRegion, const char *aFormat, ...);
+
+#endif /* STM_LOGGING_H_ */
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/utilities_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/utilities_conf.h
new file mode 100644
index 000000000..4dde3509a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/utilities_conf.h
@@ -0,0 +1,68 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : utilities_conf.h
+ * Description : Configuration file for STM32 Utilities.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* 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"
+
+/******************************************************************************
+ * 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 (2)
+#define UTIL_SEQ_MEMSET8( dest, value, size ) UTILS_MEMSET8( dest, value, size )
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*UTILITIES_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/vcp_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/vcp_conf.h
new file mode 100644
index 000000000..886999bf0
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Inc/vcp_conf.h
@@ -0,0 +1,54 @@
+/**
+ ******************************************************************************
+ * @file vcp_conf.h
+ * @author MCD Application Team
+ * @brief Configuration of the vcp interface
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __VCP_CONF_H
+#define __VCP_CONF_H
+
+#include "app_zigbee.h"
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+#define VCP_BAUD_RATE (115200)
+
+#define VCP_TASK_ID (CFG_TASK_VCP_SEND_DATA)
+#define VCP_TASK_PRIO (CFG_SCH_PRIO_1)
+
+#ifdef VCP_TX_PATH_INTERFACE_READY_SETUP_TIME
+#define VCP_TIMER_PROC_ID (CFG_TIM_PROC_ID_ISR)
+#endif
+
+/* External variables --------------------------------------------------------*/
+/* Exported macros -----------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__VCP_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/app_entry.c
new file mode 100644
index 000000000..d46e690b6
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/app_entry.c
@@ -0,0 +1,436 @@
+/**
+ ******************************************************************************
+ * File Name : app_entry.c
+ * Description : Entry application source file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "main.h"
+#include "app_entry.h"
+#include "app_zigbee.h"
+#include "app_conf.h"
+#include "hw_conf.h"
+#include "stm32_seq.h"
+#include "stm_logging.h"
+#include "shci_tl.h"
+#include "stm32_lpm.h"
+#include "dbg_trace.h"
+#include "shci.h"
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+#include "vcp.h"
+#include "vcp_conf.h"
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+/* Private includes -----------------------------------------------------------*/
+
+/* Private typedef -----------------------------------------------------------*/
+extern RTC_HandleTypeDef hrtc;
+
+/* Private defines -----------------------------------------------------------*/
+#define POOL_SIZE (CFG_TL_EVT_QUEUE_LENGTH * 4U * DIVC((sizeof(TL_PacketHeader_t) + TL_EVENT_FRAME_SIZE), 4U))
+
+/* Private variables ---------------------------------------------------------*/
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t EvtPool[POOL_SIZE];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t SystemCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t SystemSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+static uint8_t VcpTxBuffer[MAX_DBG_TRACE_MSG_SIZE]; /* Transmit buffer over USB */
+#endif
+
+/* Global function prototypes -----------------------------------------------*/
+size_t __write(int handle, const unsigned char *buf, size_t bufSize);
+
+/* Private functions prototypes-----------------------------------------------*/
+static void SystemPower_Config(void);
+static void Init_Debug(void);
+static void appe_Tl_Init(void);
+static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status);
+static void APPE_SysUserEvtRx(void *pPayload);
+static void APPE_SysEvtReadyProcessing(void);
+static void APPE_SysEvtError(SCHI_SystemErrCode_t ErrorCode);
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+extern void MX_LPUART1_UART_Init(void);
+#endif
+#if (CFG_HW_USART1_ENABLED == 1)
+extern void MX_USART1_UART_Init(void);
+#endif
+
+/* USER CODE BEGIN PFP */
+static void Led_Init(void);
+static void Button_Init(void);
+/* USER CODE END PFP */
+
+/* Functions Definition ------------------------------------------------------*/
+void APPE_Init( void )
+{
+ SystemPower_Config(); /**< Configure the system Power Mode */
+
+ HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
+
+ Init_Debug();
+ /**
+ * The Standby mode should not be entered before the initialization is over
+ * The default state of the Low Power Manager is to allow the Standby Mode so an request is needed here
+ */
+ UTIL_LPM_SetOffMode(1 << CFG_LPM_APP, UTIL_LPM_DISABLE);
+ Led_Init();
+ Button_Init();
+ appe_Tl_Init(); /* Initialize all transport layers */
+
+ /**
+ * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
+ * received on the system channel before starting the Zigbee Stack
+ * This system event is received with APPE_SysUserEvtRx()
+ */
+
+ return;
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+static void Init_Debug( void )
+{
+#if (CFG_DEBUGGER_SUPPORTED == 1)
+ /**
+ * Keep debugger enabled while in any low power mode
+ */
+ HAL_DBGMCU_EnableDBGSleepMode();
+
+ /***************** ENABLE DEBUGGER *************************************/
+ LL_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
+ LL_C2_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
+
+#else
+
+ GPIO_InitTypeDef gpio_config = {0};
+
+ gpio_config.Pull = GPIO_NOPULL;
+ gpio_config.Mode = GPIO_MODE_ANALOG;
+
+ gpio_config.Pin = GPIO_PIN_15 | GPIO_PIN_14 | GPIO_PIN_13;
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOA, &gpio_config);
+ __HAL_RCC_GPIOA_CLK_DISABLE();
+
+ gpio_config.Pin = GPIO_PIN_4 | GPIO_PIN_3;
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOB, &gpio_config);
+ __HAL_RCC_GPIOB_CLK_DISABLE();
+
+ HAL_DBGMCU_DisableDBGSleepMode();
+ HAL_DBGMCU_DisableDBGStopMode();
+ HAL_DBGMCU_DisableDBGStandbyMode();
+
+#endif /* (CFG_DEBUGGER_SUPPORTED == 1) */
+
+#if(CFG_DEBUG_TRACE != 0)
+ DbgTraceInit();
+#endif
+
+ return;
+}
+
+/**
+ * @brief Configure the system for power optimization
+ *
+ * @note This API configures the system to be ready for low power mode
+ *
+ * @param None
+ * @retval None
+ */
+static void SystemPower_Config( void )
+{
+
+ /**
+ * Select HSI as system clock source after Wake Up from Stop mode
+ */
+ LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI);
+
+ /* Initialize low power manager */
+ UTIL_LPM_Init( );
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+ /**
+ * Enable USB power
+ */
+ HAL_PWREx_EnableVddUSB();
+#endif
+
+ return;
+}
+
+static void appe_Tl_Init( void )
+{
+ TL_MM_Config_t tl_mm_config;
+ SHCI_TL_HciInitConf_t SHci_Tl_Init_Conf;
+ /**< Reference table initialization */
+ TL_Init();
+
+ /**< System channel initialization */
+ UTIL_SEQ_RegTask( 1<< CFG_TASK_SYSTEM_HCI_ASYNCH_EVT, UTIL_SEQ_RFU, shci_user_evt_proc );
+ SHci_Tl_Init_Conf.p_cmdbuffer = (uint8_t*)&SystemCmdBuffer;
+ SHci_Tl_Init_Conf.StatusNotCallBack = APPE_SysStatusNot;
+ shci_init(APPE_SysUserEvtRx, (void*) &SHci_Tl_Init_Conf);
+
+ /**< Memory Manager channel initialization */
+ tl_mm_config.p_BleSpareEvtBuffer = 0;
+ tl_mm_config.p_SystemSpareEvtBuffer = SystemSpareEvtBuffer;
+ tl_mm_config.p_AsynchEvtPool = EvtPool;
+ tl_mm_config.AsynchEvtPoolSize = POOL_SIZE;
+ TL_MM_Init( &tl_mm_config );
+
+ TL_Enable();
+
+ return;
+}
+
+
+static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status)
+{
+ UNUSED(status);
+ return;
+}
+
+/**
+ * @brief Trap a notification coming from the M0 firmware
+ * @param pPayload : payload associated to the notification
+ *
+ * @retval None
+ */
+
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
+static void APPE_SysUserEvtRx( void * pPayload )
+{
+ TL_AsynchEvt_t *p_sys_event;
+ p_sys_event = (TL_AsynchEvt_t*)(((tSHCI_UserEvtRxParam*)pPayload)->pckt->evtserial.evt.payload);
+
+ switch(p_sys_event->subevtcode)
+ {
+ case SHCI_SUB_EVT_CODE_READY:
+ APPE_SysEvtReadyProcessing();
+ break;
+ case SHCI_SUB_EVT_ERROR_NOTIF:
+ APPE_SysEvtError((SCHI_SystemErrCode_t) (p_sys_event->payload[0]));
+ break;
+ default:
+ break;
+ }
+ return;
+}
+
+/**
+ * @brief Notify a system error coming from the M0 firmware
+ * @param ErrorCode : errorCode detected by the M0 firmware
+ *
+ * @retval None
+ */
+static void APPE_SysEvtError( SCHI_SystemErrCode_t ErrorCode)
+{
+ switch (ErrorCode) // TODO
+ {
+ case ERR_THREAD_LLD_FATAL_ERROR:
+ APP_DBG("** ERR_ZIGBEE : LLD_FATAL_ERROR \n");
+ break;
+ case ERR_THREAD_UNKNOWN_CMD:
+ APP_DBG("** ERR_ZIGBEE : UNKNOWN_CMD \n");
+ break;
+ default:
+ APP_DBG("** ERR_ZIGBEE : ErroCode=%d \n", ErrorCode);
+ break;
+ }
+ return;
+}
+
+static void APPE_SysEvtReadyProcessing( void )
+{
+ /* Traces channel initialization */
+ TL_TRACES_Init();
+
+ APP_ZIGBEE_Init();
+ UTIL_LPM_SetOffMode(1U << CFG_LPM_APP, UTIL_LPM_ENABLE);
+ return;
+}
+
+/* USER CODE BEGIN FD_LOCAL_FUNCTIONS */
+static void Led_Init( void )
+{
+#if (CFG_LED_SUPPORTED == 1U)
+ /**
+ * Leds Initialization
+ */
+
+ BSP_LED_Init(LED_BLUE);
+ BSP_LED_Init(LED_GREEN);
+ BSP_LED_Init(LED_RED);
+
+#endif
+
+ return;
+}
+
+static void Button_Init( void )
+{
+#if (CFG_BUTTON_SUPPORTED == 1U)
+ /**
+ * Button Initialization
+ */
+ BSP_PB_Init(BUTTON_SW1, BUTTON_MODE_EXTI);
+#endif
+
+ return;
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void UTIL_SEQ_Idle( void )
+{
+#if ( CFG_LPM_SUPPORTED == 1)
+ UTIL_LPM_EnterLowPower( );
+#endif
+ return;
+}
+
+/**
+ * @brief This function is called by the scheduler each time an event
+ * is pending.
+ *
+ * @param evt_waited_bm : Event pending.
+ * @retval None
+ */
+void UTIL_SEQ_EvtIdle( UTIL_SEQ_bm_t task_id_bm, UTIL_SEQ_bm_t evt_waited_bm )
+{
+ switch (evt_waited_bm) {
+ case EVENT_ACK_FROM_M0_EVT:
+ /* Run only the task CFG_TASK_MSG_FROM_M0_TO_M4 */
+ UTIL_SEQ_Run((1U << CFG_TASK_MSG_FROM_M0_TO_M4));
+ break;
+ case EVENT_SYNCHRO_BYPASS_IDLE:
+ UTIL_SEQ_SetEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+ /* Run only the task CFG_TASK_MSG_FROM_M0_TO_M4 */
+ UTIL_SEQ_Run((1U << CFG_TASK_MSG_FROM_M0_TO_M4));
+ break;
+
+ default:
+ /* default case */
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ break;
+ }
+}
+
+void shci_notify_asynch_evt(void* pdata)
+{
+ UNUSED(pdata);
+ UTIL_SEQ_SetTask(1U << CFG_TASK_SYSTEM_HCI_ASYNCH_EVT, CFG_SCH_PRIO_0);
+ return;
+}
+
+void shci_cmd_resp_release(uint32_t flag)
+{
+ UNUSED(flag);
+ UTIL_SEQ_SetEvt(1U << CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP);
+ return;
+}
+
+void shci_cmd_resp_wait(uint32_t timeout)
+{
+ UNUSED(timeout);
+ UTIL_SEQ_WaitEvt(1U << CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP);
+ return;
+}
+
+/* Received trace buffer from M0 */
+void TL_TRACES_EvtReceived( TL_EvtPacket_t * hcievt )
+{
+#if(CFG_DEBUG_TRACE != 0)
+ /* Call write/print function using DMA from dbg_trace */
+ /* - Cast to TL_AsynchEvt_t* to get "real" payload (without Sub Evt code 2bytes),
+ - (-2) to size to remove Sub Evt Code */
+ DbgTraceWrite(1U, (const unsigned char *) ((TL_AsynchEvt_t *)(hcievt->evtserial.evt.payload))->payload, hcievt->evtserial.evt.plen - 2U);
+#endif /* CFG_DEBUG_TRACE */
+ /* Release buffer */
+ TL_MM_EvtDone( hcievt );
+}
+/**
+ * @brief Initialisation of the trace mechanism
+ * @param None
+ * @retval None
+ */
+#if(CFG_DEBUG_TRACE != 0)
+void DbgOutputInit( void )
+{
+#if (CFG_USB_INTERFACE_ENABLE == 0)
+ MX_USART1_UART_Init();
+#else
+ VCP_Init( &VcpTxBuffer[0], 0 );
+#endif
+ return;
+}
+
+/**
+ * @brief Management of the traces
+ * @param p_data : data
+ * @param size : size
+ * @param call-back :
+ * @retval None
+ */
+void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) )
+{
+#if (CFG_USB_INTERFACE_ENABLE == 0)
+ HW_UART_Transmit_DMA(CFG_DEBUG_TRACE_UART, p_data, size, cb);
+#else
+ VCP_SendData ( p_data , size , cb );
+#endif
+ return;
+}
+#endif
+
+/* USER CODE BEGIN FD_WRAP_FUNCTIONS */
+/**
+ * @brief This function manage the Push button action
+ * @param GPIO_Pin : GPIO pin which has been activated
+ * @retval None
+ */
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ switch (GPIO_Pin) {
+ case BUTTON_SW1_PIN:
+ UTIL_SEQ_SetTask(1U << CFG_TASK_BUTTON_SW1,CFG_SCH_PRIO_1);
+ break;
+
+ default:
+ break;
+ }
+}
+/* USER CODE END FD_WRAP_FUNCTIONS */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_timerserver.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_timerserver.c
new file mode 100644
index 000000000..c842ba55e
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_timerserver.c
@@ -0,0 +1,893 @@
+/**
+ ******************************************************************************
+ * File Name : hw_timerserver.c
+ * Description : Hardware timerserver source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "hw_conf.h"
+
+/* Private typedef -----------------------------------------------------------*/
+typedef enum
+{
+ TimerID_Free,
+ TimerID_Created,
+ TimerID_Running
+}TimerIDStatus_t;
+
+typedef enum
+{
+ SSR_Read_Requested,
+ SSR_Read_Not_Requested
+}RequestReadSSR_t;
+
+typedef enum
+{
+ WakeupTimerValue_Overpassed,
+ WakeupTimerValue_LargeEnough
+}WakeupTimerLimitation_Status_t;
+
+typedef struct
+{
+ HW_TS_pTimerCb_t pTimerCallBack;
+ uint32_t CounterInit;
+ uint32_t CountLeft;
+ TimerIDStatus_t TimerIDStatus;
+ HW_TS_Mode_t TimerMode;
+ uint32_t TimerProcessID;
+ uint8_t PreviousID;
+ uint8_t NextID;
+}TimerContext_t;
+
+/* Private defines -----------------------------------------------------------*/
+#define SSR_FORBIDDEN_VALUE 0xFFFFFFFF
+#define TIMER_LIST_EMPTY 0xFFFF
+
+/* Private macros ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+/**
+ * START of Section TIMERSERVER_CONTEXT
+ */
+
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile TimerContext_t aTimerContext[CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER];
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint8_t CurrentRunningTimerID;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint8_t PreviousRunningTimerID;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint32_t SSRValueOnLastSetup;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile WakeupTimerLimitation_Status_t WakeupTimerLimitation;
+
+/**
+ * END of Section TIMERSERVER_CONTEXT
+ */
+
+static RTC_HandleTypeDef *phrtc; /**< RTC handle */
+static uint8_t WakeupTimerDivider;
+static uint8_t AsynchPrescalerUserConfig;
+static uint16_t SynchPrescalerUserConfig;
+static volatile uint16_t MaxWakeupTimerSetup;
+
+/* Global variables ----------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+static void RestartWakeupCounter(uint16_t Value);
+static uint16_t ReturnTimeElapsed(void);
+static void RescheduleTimerList(void);
+static void UnlinkTimer(uint8_t TimerID, RequestReadSSR_t RequestReadSSR);
+static void LinkTimerBefore(uint8_t TimerID, uint8_t RefTimerID);
+static void LinkTimerAfter(uint8_t TimerID, uint8_t RefTimerID);
+static uint16_t linkTimer(uint8_t TimerID);
+static uint32_t ReadRtcSsrValue(void);
+
+__weak void HW_TS_RTC_CountUpdated_AppNot(void);
+
+/* Functions Definition ------------------------------------------------------*/
+
+/**
+ * @brief Read the RTC_SSR value
+ * As described in the reference manual, the RTC_SSR shall be read twice to ensure
+ * reliability of the value
+ * @param None
+ * @retval SSR value read
+ */
+static uint32_t ReadRtcSsrValue(void)
+{
+ uint32_t first_read;
+ uint32_t second_read;
+
+ first_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+
+ second_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+
+ while(first_read != second_read)
+ {
+ first_read = second_read;
+
+ second_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+ }
+
+ return second_read;
+}
+
+/**
+ * @brief Insert a Timer in the list after the Timer ID specified
+ * @param TimerID: The ID of the Timer
+ * @param RefTimerID: The ID of the Timer to be linked after
+ * @retval None
+ */
+static void LinkTimerAfter(uint8_t TimerID, uint8_t RefTimerID)
+{
+ uint8_t next_id;
+
+ next_id = aTimerContext[RefTimerID].NextID;
+
+ if(next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[next_id].PreviousID = TimerID;
+ }
+ aTimerContext[TimerID].NextID = next_id;
+ aTimerContext[TimerID].PreviousID = RefTimerID ;
+ aTimerContext[RefTimerID].NextID = TimerID;
+
+ return;
+}
+
+/**
+ * @brief Insert a Timer in the list before the ID specified
+ * @param TimerID: The ID of the Timer
+ * @param RefTimerID: The ID of the Timer to be linked before
+ * @retval None
+ */
+static void LinkTimerBefore(uint8_t TimerID, uint8_t RefTimerID)
+{
+ uint8_t previous_id;
+
+ if(RefTimerID != CurrentRunningTimerID)
+ {
+ previous_id = aTimerContext[RefTimerID].PreviousID;
+
+ aTimerContext[previous_id].NextID = TimerID;
+ aTimerContext[TimerID].NextID = RefTimerID;
+ aTimerContext[TimerID].PreviousID = previous_id ;
+ aTimerContext[RefTimerID].PreviousID = TimerID;
+ }
+ else
+ {
+ aTimerContext[TimerID].NextID = RefTimerID;
+ aTimerContext[RefTimerID].PreviousID = TimerID;
+ }
+
+ return;
+}
+
+/**
+ * @brief Insert a Timer in the list
+ * @param TimerID: The ID of the Timer
+ * @retval None
+ */
+static uint16_t linkTimer(uint8_t TimerID)
+{
+ uint32_t time_left;
+ uint16_t time_elapsed;
+ uint8_t timer_id_lookup;
+ uint8_t next_id;
+
+ if(CurrentRunningTimerID == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ /**
+ * No timer in the list
+ */
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = TimerID;
+ aTimerContext[TimerID].NextID = CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER;
+
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+ time_elapsed = 0;
+ }
+ else
+ {
+ time_elapsed = ReturnTimeElapsed();
+
+ /**
+ * update count of the timer to be linked
+ */
+ aTimerContext[TimerID].CountLeft += time_elapsed;
+ time_left = aTimerContext[TimerID].CountLeft;
+
+ /**
+ * Search for index where the new timer shall be linked
+ */
+ if(aTimerContext[CurrentRunningTimerID].CountLeft <= time_left)
+ {
+ /**
+ * Search for the ID after the first one
+ */
+ timer_id_lookup = CurrentRunningTimerID;
+ next_id = aTimerContext[timer_id_lookup].NextID;
+ while((next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (aTimerContext[next_id].CountLeft <= time_left))
+ {
+ timer_id_lookup = aTimerContext[timer_id_lookup].NextID;
+ next_id = aTimerContext[timer_id_lookup].NextID;
+ }
+
+ /**
+ * Link after the ID
+ */
+ LinkTimerAfter(TimerID, timer_id_lookup);
+ }
+ else
+ {
+ /**
+ * Link before the first ID
+ */
+ LinkTimerBefore(TimerID, CurrentRunningTimerID);
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = TimerID;
+ }
+ }
+
+ return time_elapsed;
+}
+
+/**
+ * @brief Remove a Timer from the list
+ * @param TimerID: The ID of the Timer
+ * @param RequestReadSSR: Request to read the SSR register or not
+ * @retval None
+ */
+static void UnlinkTimer(uint8_t TimerID, RequestReadSSR_t RequestReadSSR)
+{
+ uint8_t previous_id;
+ uint8_t next_id;
+
+ if(TimerID == CurrentRunningTimerID)
+ {
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = aTimerContext[TimerID].NextID;
+ }
+ else
+ {
+ previous_id = aTimerContext[TimerID].PreviousID;
+ next_id = aTimerContext[TimerID].NextID;
+
+ aTimerContext[previous_id].NextID = aTimerContext[TimerID].NextID;
+ if(next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[next_id].PreviousID = aTimerContext[TimerID].PreviousID;
+ }
+ }
+
+ /**
+ * Timer is out of the list
+ */
+ aTimerContext[TimerID].TimerIDStatus = TimerID_Created;
+
+ if((CurrentRunningTimerID == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (RequestReadSSR == SSR_Read_Requested))
+ {
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+ }
+
+ return;
+}
+
+/**
+ * @brief Return the number of ticks counted by the wakeuptimer since it has been started
+ * @note The API is reading the SSR register to get how many ticks have been counted
+ * since the time the timer has been started
+ * @param None
+ * @retval Time expired in Ticks
+ */
+static uint16_t ReturnTimeElapsed(void)
+{
+ uint32_t return_value;
+ uint32_t wrap_counter;
+
+ if(SSRValueOnLastSetup != SSR_FORBIDDEN_VALUE)
+ {
+ return_value = ReadRtcSsrValue(); /**< Read SSR register first */
+
+ if (SSRValueOnLastSetup >= return_value)
+ {
+ return_value = SSRValueOnLastSetup - return_value;
+ }
+ else
+ {
+ wrap_counter = SynchPrescalerUserConfig - return_value;
+ return_value = SSRValueOnLastSetup + wrap_counter;
+ }
+
+ /**
+ * At this stage, ReturnValue holds the number of ticks counted by SSR
+ * Need to translate in number of ticks counted by the Wakeuptimer
+ */
+ return_value = return_value*AsynchPrescalerUserConfig;
+ return_value = return_value >> WakeupTimerDivider;
+ }
+ else
+ {
+ return_value = 0;
+ }
+
+ return (uint16_t)return_value;
+}
+
+/**
+ * @brief Set the wakeup counter
+ * @note The API is writing the counter value so that the value is decreased by one to cope with the fact
+ * the interrupt is generated with 1 extra clock cycle (See RefManuel)
+ * It assumes all condition are met to be allowed to write the wakeup counter
+ * @param Value: Value to be written in the counter
+ * @retval None
+ */
+static void RestartWakeupCounter(uint16_t Value)
+{
+ /**
+ * The wakeuptimer has been disabled in the calling function to reduce the time to poll the WUTWF
+ * FLAG when the new value will have to be written
+ * __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc);
+ */
+
+ if(Value == 0)
+ {
+ SSRValueOnLastSetup = ReadRtcSsrValue();
+
+ /**
+ * Simulate that the Timer expired
+ */
+ HAL_NVIC_SetPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID);
+ }
+ else
+ {
+ if((Value > 1) ||(WakeupTimerDivider != 1))
+ {
+ Value -= 1;
+ }
+
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+
+ MODIFY_REG(RTC->WUTR, RTC_WUTR_WUT, Value);
+
+ /**
+ * Update the value here after the WUTWF polling that may take some time
+ */
+ SSRValueOnLastSetup = ReadRtcSsrValue();
+
+ __HAL_RTC_WAKEUPTIMER_ENABLE(phrtc); /**< Enable the Wakeup Timer */
+
+ HW_TS_RTC_CountUpdated_AppNot();
+ }
+
+ return ;
+}
+
+/**
+ * @brief Reschedule the list of timer
+ * @note 1) Update the count left for each timer in the list
+ * 2) Setup the wakeuptimer
+ * @param None
+ * @retval None
+ */
+static void RescheduleTimerList(void)
+{
+ uint8_t localTimerID;
+ uint32_t timecountleft;
+ uint16_t wakeup_timer_value;
+ uint16_t time_elapsed;
+
+ /**
+ * The wakeuptimer is disabled now to reduce the time to poll the WUTWF
+ * FLAG when the new value will have to be written
+ */
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ /**
+ * Wait for the flag to be back to 0 when the wakeup timer is enabled
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == SET);
+ }
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+
+ localTimerID = CurrentRunningTimerID;
+
+ /**
+ * Calculate what will be the value to write in the wakeuptimer
+ */
+ timecountleft = aTimerContext[localTimerID].CountLeft;
+
+ /**
+ * Read how much has been counted
+ */
+ time_elapsed = ReturnTimeElapsed();
+
+ if(timecountleft < time_elapsed )
+ {
+ /**
+ * There is no tick left to count
+ */
+ wakeup_timer_value = 0;
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ }
+ else
+ {
+ if(timecountleft > (time_elapsed + MaxWakeupTimerSetup))
+ {
+ /**
+ * The number of tick left is greater than the Wakeuptimer maximum value
+ */
+ wakeup_timer_value = MaxWakeupTimerSetup;
+
+ WakeupTimerLimitation = WakeupTimerValue_Overpassed;
+ }
+ else
+ {
+ wakeup_timer_value = timecountleft - time_elapsed;
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ }
+
+ }
+
+ /**
+ * update ticks left to be counted for each timer
+ */
+ while(localTimerID != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ if (aTimerContext[localTimerID].CountLeft < time_elapsed)
+ {
+ aTimerContext[localTimerID].CountLeft = 0;
+ }
+ else
+ {
+ aTimerContext[localTimerID].CountLeft -= time_elapsed;
+ }
+ localTimerID = aTimerContext[localTimerID].NextID;
+ }
+
+ /**
+ * Write next count
+ */
+ RestartWakeupCounter(wakeup_timer_value);
+
+ return ;
+}
+
+/* Public functions ----------------------------------------------------------*/
+
+/**
+ * For all public interface except that may need write access to the RTC, the RTC
+ * shall be unlock at the beginning and locked at the output
+ * In order to ease maintainability, the unlock is done at the top and the lock at then end
+ * in case some new implementation is coming in the future
+ */
+
+void HW_TS_RTC_Wakeup_Handler(void)
+{
+ HW_TS_pTimerCb_t ptimer_callback;
+ uint32_t timer_process_id;
+ uint8_t local_current_running_timer_id;
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+/* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ /**
+ * Disable the Wakeup Timer
+ * This may speed up a bit the processing to wait the timer to be disabled
+ * The timer is still counting 2 RTCCLK
+ */
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc);
+
+ local_current_running_timer_id = CurrentRunningTimerID;
+
+ if(aTimerContext[local_current_running_timer_id].TimerIDStatus == TimerID_Running)
+ {
+ ptimer_callback = aTimerContext[local_current_running_timer_id].pTimerCallBack;
+ timer_process_id = aTimerContext[local_current_running_timer_id].TimerProcessID;
+
+ /**
+ * It should be good to check whether the TimeElapsed is greater or not than the tick left to be counted
+ * However, due to the inaccuracy of the reading of the time elapsed, it may return there is 1 tick
+ * to be left whereas the count is over
+ * A more secure implementation has been done with a flag to state whereas the full count has been written
+ * in the wakeuptimer or not
+ */
+ if(WakeupTimerLimitation != WakeupTimerValue_Overpassed)
+ {
+ if(aTimerContext[local_current_running_timer_id].TimerMode == hw_ts_Repeated)
+ {
+ UnlinkTimer(local_current_running_timer_id, SSR_Read_Not_Requested);
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ HW_TS_Start(local_current_running_timer_id, aTimerContext[local_current_running_timer_id].CounterInit);
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+ }
+ else
+ {
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ HW_TS_Stop(local_current_running_timer_id);
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+ }
+
+ HW_TS_RTC_Int_AppNot(timer_process_id, local_current_running_timer_id, ptimer_callback);
+ }
+ else
+ {
+ RescheduleTimerList();
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ }
+ }
+ else
+ {
+ /**
+ * We should never end up in this case
+ * However, if due to any bug in the timer server this is the case, the mistake may not impact the user.
+ * We could just clean the interrupt flag and get out from this unexpected interrupt
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ return;
+}
+
+void HW_TS_Init(HW_TS_InitMode_t TimerInitMode, RTC_HandleTypeDef *hrtc)
+{
+ uint8_t loop;
+ uint32_t localmaxwakeuptimersetup;
+
+ /**
+ * Get RTC handler
+ */
+ phrtc = hrtc;
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ SET_BIT(RTC->CR, RTC_CR_BYPSHAD);
+
+ /**
+ * Readout the user config
+ */
+ WakeupTimerDivider = (4 - ((uint32_t)(READ_BIT(RTC->CR, RTC_CR_WUCKSEL))));
+
+ AsynchPrescalerUserConfig = (uint8_t)(READ_BIT(RTC->PRER, RTC_PRER_PREDIV_A) >> (uint32_t)POSITION_VAL(RTC_PRER_PREDIV_A)) + 1;
+
+ SynchPrescalerUserConfig = (uint16_t)(READ_BIT(RTC->PRER, RTC_PRER_PREDIV_S)) + 1;
+
+ /**
+ * Margin is taken to avoid wrong calculation when the wrap around is there and some
+ * application interrupts may have delayed the reading
+ */
+ localmaxwakeuptimersetup = ((((SynchPrescalerUserConfig - 1)*AsynchPrescalerUserConfig) - CFG_HW_TS_RTC_HANDLER_MAX_DELAY) >> WakeupTimerDivider);
+
+ if(localmaxwakeuptimersetup >= 0xFFFF)
+ {
+ MaxWakeupTimerSetup = 0xFFFF;
+ }
+ else
+ {
+ MaxWakeupTimerSetup = (uint16_t)localmaxwakeuptimersetup;
+ }
+
+ /**
+ * Configure EXTI module
+ */
+ LL_EXTI_EnableRisingTrig_0_31(RTC_EXTI_LINE_WAKEUPTIMER_EVENT);
+ LL_EXTI_EnableIT_0_31(RTC_EXTI_LINE_WAKEUPTIMER_EVENT);
+
+ if(TimerInitMode == hw_ts_InitMode_Full)
+ {
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+
+ /**
+ * Initialize the timer server
+ */
+ for(loop = 0; loop < CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER; loop++)
+ {
+ aTimerContext[loop].TimerIDStatus = TimerID_Free;
+ }
+
+ CurrentRunningTimerID = CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER; /**< Set ID to non valid value */
+
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+ __HAL_RTC_WAKEUPTIMER_ENABLE_IT(phrtc, RTC_IT_WUT); /**< Enable interrupt in RTC module */
+ }
+ else
+ {
+ if(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTF) != RESET)
+ {
+ /**
+ * Simulate that the Timer expired
+ */
+ HAL_NVIC_SetPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID);
+ }
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_SetPriority(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID, CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO, CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO); /**< Set NVIC priority */
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+ return;
+}
+
+HW_TS_ReturnStatus_t HW_TS_Create(uint32_t TimerProcessID, uint8_t *pTimerId, HW_TS_Mode_t TimerMode, HW_TS_pTimerCb_t pftimeout_handler)
+{
+ HW_TS_ReturnStatus_t localreturnstatus;
+ uint8_t loop = 0;
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ while((loop < CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (aTimerContext[loop].TimerIDStatus != TimerID_Free))
+ {
+ loop++;
+ }
+
+ if(loop != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[loop].TimerIDStatus = TimerID_Created;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ aTimerContext[loop].TimerProcessID = TimerProcessID;
+ aTimerContext[loop].TimerMode = TimerMode;
+ aTimerContext[loop].pTimerCallBack = pftimeout_handler;
+ *pTimerId = loop;
+
+ localreturnstatus = hw_ts_Successful;
+ }
+ else
+ {
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ localreturnstatus = hw_ts_Failed;
+ }
+
+ return(localreturnstatus);
+}
+
+void HW_TS_Delete(uint8_t timer_id)
+{
+ HW_TS_Stop(timer_id);
+
+ aTimerContext[timer_id].TimerIDStatus = TimerID_Free; /**< release ID */
+
+ return;
+}
+
+void HW_TS_Stop(uint8_t timer_id)
+{
+ uint8_t localcurrentrunningtimerid;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ HAL_NVIC_DisableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Disable NVIC */
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ if(aTimerContext[timer_id].TimerIDStatus == TimerID_Running)
+ {
+ UnlinkTimer(timer_id, SSR_Read_Requested);
+ localcurrentrunningtimerid = CurrentRunningTimerID;
+
+ if(localcurrentrunningtimerid == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ /**
+ * List is empty
+ */
+
+ /**
+ * Disable the timer
+ */
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ /**
+ * Wait for the flag to be back to 0 when the wakeup timer is enabled
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == SET);
+ }
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+ }
+ else if(PreviousRunningTimerID != localcurrentrunningtimerid)
+ {
+ RescheduleTimerList();
+ }
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ return;
+}
+
+void HW_TS_Start(uint8_t timer_id, uint32_t timeout_ticks)
+{
+ uint16_t time_elapsed;
+ uint8_t localcurrentrunningtimerid;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+ if(aTimerContext[timer_id].TimerIDStatus == TimerID_Running)
+ {
+ HW_TS_Stop( timer_id );
+ }
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ HAL_NVIC_DisableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Disable NVIC */
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ aTimerContext[timer_id].TimerIDStatus = TimerID_Running;
+
+ aTimerContext[timer_id].CountLeft = timeout_ticks;
+ aTimerContext[timer_id].CounterInit = timeout_ticks;
+
+ time_elapsed = linkTimer(timer_id);
+
+ localcurrentrunningtimerid = CurrentRunningTimerID;
+
+ if(PreviousRunningTimerID != localcurrentrunningtimerid)
+ {
+ RescheduleTimerList();
+ }
+ else
+ {
+ aTimerContext[timer_id].CountLeft -= time_elapsed;
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ return;
+}
+
+uint16_t HW_TS_RTC_ReadLeftTicksToCount(void)
+{
+ uint32_t primask_bit;
+ uint16_t return_value, auro_reload_value, elapsed_time_value;
+
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ auro_reload_value = (uint32_t)(READ_BIT(RTC->WUTR, RTC_WUTR_WUT));
+
+ elapsed_time_value = ReturnTimeElapsed();
+
+ if(auro_reload_value > elapsed_time_value)
+ {
+ return_value = auro_reload_value - elapsed_time_value;
+ }
+ else
+ {
+ return_value = 0;
+ }
+ }
+ else
+ {
+ return_value = TIMER_LIST_EMPTY;
+ }
+
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+
+ return (return_value);
+}
+
+__weak void HW_TS_RTC_Int_AppNot(uint32_t TimerProcessID, uint8_t TimerID, HW_TS_pTimerCb_t pTimerCallBack)
+{
+ pTimerCallBack();
+
+ return;
+}
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_uart.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_uart.c
new file mode 100644
index 000000000..9a553610d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/hw_uart.c
@@ -0,0 +1,318 @@
+/**
+ ******************************************************************************
+ * File Name : Src/hw_uart.c
+ * Description : HW UART source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "hw_conf.h"
+#if (CFG_HW_LPUART1_ENABLED == 1)
+extern UART_HandleTypeDef hlpuart1;
+#endif
+#if (CFG_HW_USART1_ENABLED == 1)
+extern UART_HandleTypeDef huart1;
+#endif
+
+/* Macros --------------------------------------------------------------------*/
+#define HW_UART_RX_IT(__HANDLE__, __USART_BASE__) \
+ do{ \
+ HW_##__HANDLE__##RxCb = cb; \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ HAL_UART_Receive_IT(&(__HANDLE__), p_data, size); \
+ } while(0)
+
+#define HW_UART_TX_IT(__HANDLE__, __USART_BASE__) \
+ do{ \
+ HW_##__HANDLE__##TxCb = cb; \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ HAL_UART_Transmit_IT(&(__HANDLE__), p_data, size); \
+ } while(0)
+
+#define HW_UART_TX(__HANDLE__, __USART_BASE__) \
+ do{ \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ hal_status = HAL_UART_Transmit(&(__HANDLE__), p_data, size, timeout); \
+ } while(0)
+
+/* Variables -----------------------------------------------------------------*/
+#if (CFG_HW_USART1_ENABLED == 1)
+#if (CFG_HW_USART1_DMA_TX_SUPPORTED == 1)
+ DMA_HandleTypeDef HW_hdma_huart1_tx ={0};
+#endif
+ void (*HW_huart1RxCb)(void);
+ void (*HW_huart1TxCb)(void);
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+#if (CFG_HW_LPUART1_DMA_TX_SUPPORTED == 1)
+ DMA_HandleTypeDef HW_hdma_hlpuart1_tx ={0};
+#endif
+ void (*HW_hlpuart1RxCb)(void);
+ void (*HW_hlpuart1TxCb)(void);
+#endif
+
+void HW_UART_Receive_IT(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_RX_IT(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_RX_IT(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HW_UART_Transmit_IT(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_TX_IT(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_TX_IT(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+hw_status_t HW_UART_Transmit(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, uint32_t timeout)
+{
+ HAL_StatusTypeDef hal_status = HAL_OK;
+ hw_status_t hw_status = hw_uart_ok;
+
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_TX(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_TX(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ switch (hal_status)
+ {
+ case HAL_OK:
+ hw_status = hw_uart_ok;
+ break;
+
+ case HAL_ERROR:
+ hw_status = hw_uart_error;
+ break;
+
+ case HAL_BUSY:
+ hw_status = hw_uart_busy;
+ break;
+
+ case HAL_TIMEOUT:
+ hw_status = hw_uart_to;
+ break;
+
+ default:
+ break;
+ }
+
+ return hw_status;
+}
+
+hw_status_t HW_UART_Transmit_DMA(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ HAL_StatusTypeDef hal_status = HAL_OK;
+ hw_status_t hw_status = hw_uart_ok;
+
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_huart1TxCb = cb;
+ huart1.Instance = USART1;
+ hal_status = HAL_UART_Transmit_DMA(&huart1, p_data, size);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_hlpuart1TxCb = cb;
+ hlpuart1.Instance = LPUART1;
+ hal_status = HAL_UART_Transmit_DMA(&hlpuart1, p_data, size);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ switch (hal_status)
+ {
+ case HAL_OK:
+ hw_status = hw_uart_ok;
+ break;
+
+ case HAL_ERROR:
+ hw_status = hw_uart_error;
+ break;
+
+ case HAL_BUSY:
+ hw_status = hw_uart_busy;
+ break;
+
+ case HAL_TIMEOUT:
+ hw_status = hw_uart_to;
+ break;
+
+ default:
+ break;
+ }
+
+ return hw_status;
+}
+
+void HW_UART_Interrupt_Handler(hw_uart_id_t hw_uart_id)
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HAL_UART_IRQHandler(&huart1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HAL_UART_IRQHandler(&hlpuart1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HW_UART_DMA_Interrupt_Handler(hw_uart_id_t hw_uart_id)
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_DMA_TX_SUPPORTED == 1)
+ case hw_uart1:
+ HAL_DMA_IRQHandler(huart1.hdmatx);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_DMA_TX_SUPPORTED == 1)
+ case hw_lpuart1:
+ HAL_DMA_IRQHandler(hlpuart1.hdmatx);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
+{
+ switch ((uint32_t)huart->Instance)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case (uint32_t)USART1:
+ if(HW_huart1RxCb)
+ {
+ HW_huart1RxCb();
+ }
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case (uint32_t)LPUART1:
+ if(HW_hlpuart1RxCb)
+ {
+ HW_hlpuart1RxCb();
+ }
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
+{
+ switch ((uint32_t)huart->Instance)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case (uint32_t)USART1:
+ if(HW_huart1TxCb)
+ {
+ HW_huart1TxCb();
+ }
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case (uint32_t)LPUART1:
+ if(HW_hlpuart1TxCb)
+ {
+ HW_hlpuart1TxCb();
+ }
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/main.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/main.c
index e08ffb500..e08ffb500 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Coord/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/main.c
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32_lpm_if.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32_lpm_if.c
new file mode 100644
index 000000000..f024b61e3
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32_lpm_if.c
@@ -0,0 +1,275 @@
+/* USER CODE BEGIN Header */
+/**
+ ***************************************************************************************
+ * File Name : stm32_lpm_if.c
+ * Description : Low layer function to enter/exit low power modes (stop, sleep).
+ ***************************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32_lpm_if.h"
+#include "stm32_lpm.h"
+#include "app_conf.h"
+/* USER CODE BEGIN include */
+
+/* USER CODE END include */
+
+/* Exported variables --------------------------------------------------------*/
+const struct UTIL_LPM_Driver_s UTIL_PowerDriver =
+{
+ PWR_EnterSleepMode,
+ PWR_ExitSleepMode,
+
+ PWR_EnterStopMode,
+ PWR_ExitStopMode,
+
+ PWR_EnterOffMode,
+ PWR_ExitOffMode,
+};
+
+/* Private function prototypes -----------------------------------------------*/
+static void Switch_On_HSI( void );
+/* USER CODE BEGIN Private_Function_Prototypes */
+
+/* USER CODE END Private_Function_Prototypes */
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN Private_Typedef */
+
+/* USER CODE END Private_Typedef */
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Private_Define */
+
+/* USER CODE END Private_Define */
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Private_Macro */
+
+/* USER CODE END Private_Macro */
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN Private_Variables */
+
+/* USER CODE END Private_Variables */
+
+/* Functions Definition ------------------------------------------------------*/
+/**
+ * @brief Enters Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_EnterOffMode( void )
+{
+/* USER CODE BEGIN PWR_EnterOffMode */
+ /************************************************************************************
+ * ENTER OFF MODE
+ ***********************************************************************************/
+ /*
+ * There is no risk to clear all the WUF here because in the current implementation, this API is called
+ * in critical section. If an interrupt occurs while in that critical section before that point,
+ * the flag is set and will be cleared here but the system will not enter Off Mode
+ * because an interrupt is pending in the NVIC. The ISR will be executed when moving out
+ * of this critical section
+ */
+ LL_PWR_ClearFlag_WU( );
+
+ LL_PWR_SetPowerMode( LL_PWR_MODE_STANDBY );
+
+ LL_LPM_EnableDeepSleep( ); /**< Set SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores( );
+#endif
+
+ __WFI( );
+/* USER CODE END PWR_EnterOffMode */
+}
+
+/**
+ * @brief Exits Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_ExitOffMode( void )
+{
+/* USER CODE BEGIN PWR_ExitOffMode */
+
+/* USER CODE END PWR_ExitOffMode */
+}
+
+/**
+ * @brief Enters Low Power Stop Mode
+ * @note ARM exists the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterStopMode( void )
+{
+/* USER CODE BEGIN PWR_EnterStopMode */
+ /**
+ * This function is called from CRITICAL SECTION
+ */
+ while( LL_HSEM_1StepLock( HSEM, CFG_HW_RCC_SEMID ) );
+
+ if ( ! LL_HSEM_1StepLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID ) )
+ {
+ if( LL_PWR_IsActiveFlag_C2DS( ) )
+ {
+ /* Release ENTRY_STOP_MODE semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID, 0 );
+
+ /**
+ * The switch on HSI before entering Stop Mode is required on Cut2.0
+ * It is useless from Cut2.1
+ */
+ Switch_On_HSI( );
+ }
+ }
+ else
+ {
+ /**
+ * The switch on HSI before entering Stop Mode is required on Cut2.0
+ * It is useless from Cut2.1
+ */
+ Switch_On_HSI( );
+ }
+
+ /* Release RCC semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_RCC_SEMID, 0 );
+
+ /************************************************************************************
+ * ENTER STOP MODE
+ ***********************************************************************************/
+ LL_PWR_SetPowerMode( LL_PWR_MODE_STOP2 );
+
+ LL_LPM_EnableDeepSleep( ); /**< Set SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores( );
+#endif
+
+ __WFI();
+/* USER CODE END PWR_EnterStopMode */
+}
+
+/**
+ * @brief Exits Low Power Stop Mode
+ * @note Enable the pll at 32MHz
+ * @param none
+ * @retval none
+ */
+void PWR_ExitStopMode( void )
+{
+/* USER CODE BEGIN PWR_ExitStopMode */
+ /**
+ * This function is called from CRITICAL SECTION
+ */
+
+ /* Release ENTRY_STOP_MODE semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID, 0 );
+
+ while( LL_HSEM_1StepLock( HSEM, CFG_HW_RCC_SEMID ) );
+
+ if(LL_RCC_GetSysClkSource( ) == LL_RCC_SYS_CLKSOURCE_STATUS_HSI)
+ {
+ LL_RCC_HSE_Enable( );
+ while(!LL_RCC_HSE_IsReady( ));
+ LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSE);
+ while (LL_RCC_GetSysClkSource( ) != LL_RCC_SYS_CLKSOURCE_STATUS_HSE);
+ }
+ else
+ {
+ /**
+ * As long as the current application is fine with HSE as system clock source,
+ * there is nothing to do here
+ */
+ }
+
+ /* Release RCC semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_RCC_SEMID, 0 );
+/* USER CODE END PWR_ExitStopMode */
+}
+
+/**
+ * @brief Enters Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterSleepMode( void )
+{
+/* USER CODE BEGIN PWR_EnterSleepMode */
+
+ HAL_SuspendTick();
+
+ /************************************************************************************
+ * ENTER SLEEP MODE
+ ***********************************************************************************/
+ LL_LPM_EnableSleep( ); /**< Clear SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores();
+#endif
+
+ __WFI( );
+/* USER CODE END PWR_EnterSleepMode */
+}
+
+/**
+ * @brief Exits Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_ExitSleepMode( void )
+{
+/* USER CODE BEGIN PWR_ExitSleepMode */
+
+ HAL_ResumeTick();
+
+/* USER CODE END PWR_ExitSleepMode */
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+/**
+ * @brief Switch the system clock on HSI
+ * @param none
+ * @retval none
+ */
+static void Switch_On_HSI( void )
+{
+ LL_RCC_HSI_Enable( );
+ while(!LL_RCC_HSI_IsReady( ));
+ LL_RCC_SetSysClkSource( LL_RCC_SYS_CLKSOURCE_HSI );
+ LL_RCC_SetSMPSClockSource(LL_RCC_SMPS_CLKSOURCE_HSI);
+ while (LL_RCC_GetSysClkSource( ) != LL_RCC_SYS_CLKSOURCE_STATUS_HSI);
+}
+
+/* USER CODE BEGIN Private_Functions */
+
+/* USER CODE END Private_Functions */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_hal_msp.c
new file mode 100644
index 000000000..9c338486d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_hal_msp.c
@@ -0,0 +1,334 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : stm32wbxx_hal_msp.c
+ * Description : This file provides code for the MSP Initialization
+ * and de-Initialization codes.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+/* USER CODE BEGIN Includes */
+#include "app_conf.h"
+/* USER CODE END Includes */
+extern DMA_HandleTypeDef hdma_lpuart1_tx;
+
+extern DMA_HandleTypeDef hdma_usart1_tx;
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Define */
+
+/* USER CODE END Define */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Macro */
+
+/* USER CODE END Macro */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* External functions --------------------------------------------------------*/
+/* USER CODE BEGIN ExternalFunctions */
+
+/* USER CODE END ExternalFunctions */
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+/**
+ * Initializes the Global MSP.
+ */
+void HAL_MspInit(void)
+{
+ /* USER CODE BEGIN MspInit 0 */
+
+ /* USER CODE END MspInit 0 */
+
+ __HAL_RCC_HSEM_CLK_ENABLE();
+
+ /* System interrupt init*/
+
+ /* Peripheral interrupt init */
+ /* PVD_PVM_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(PVD_PVM_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(PVD_PVM_IRQn);
+ /* FLASH_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(FLASH_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(FLASH_IRQn);
+ /* RCC_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(RCC_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(RCC_IRQn);
+ /* C2SEV_PWR_C2H_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(C2SEV_PWR_C2H_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(C2SEV_PWR_C2H_IRQn);
+ /* PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn);
+ /* HSEM_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(HSEM_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(HSEM_IRQn);
+ /* FPU_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(FPU_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(FPU_IRQn);
+
+ /* USER CODE BEGIN MspInit 1 */
+
+ /* USER CODE END MspInit 1 */
+}
+
+/**
+* @brief UART MSP Initialization
+* This function configures the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspInit(UART_HandleTypeDef* huart)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(huart->Instance==LPUART1)
+ {
+ /* USER CODE BEGIN LPUART1_MspInit 0 */
+
+ /* USER CODE END LPUART1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_LPUART1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**LPUART1 GPIO Configuration
+ PA2 ------> LPUART1_TX
+ PA3 ------> LPUART1_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* LPUART1 DMA Init */
+ /* LPUART1_TX Init */
+ hdma_lpuart1_tx.Instance = DMA1_Channel1;
+ hdma_lpuart1_tx.Init.Request = DMA_REQUEST_LPUART1_TX;
+ hdma_lpuart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_lpuart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_lpuart1_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_lpuart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_lpuart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_lpuart1_tx.Init.Mode = DMA_NORMAL;
+ hdma_lpuart1_tx.Init.Priority = DMA_PRIORITY_LOW;
+ if (HAL_DMA_Init(&hdma_lpuart1_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
+
+ /* LPUART1 interrupt Init */
+ HAL_NVIC_SetPriority(LPUART1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(LPUART1_IRQn);
+ /* USER CODE BEGIN LPUART1_MspInit 1 */
+
+ /* USER CODE END LPUART1_MspInit 1 */
+ }
+ else if(huart->Instance==USART1)
+ {
+ /* USER CODE BEGIN USART1_MspInit 0 */
+
+ /* USER CODE END USART1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_USART1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**USART1 GPIO Configuration
+ PA11 ------> USART1_CTS
+ PB6 ------> USART1_TX
+ PB7 ------> USART1_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_11;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USART1 DMA Init */
+ /* USART1_TX Init */
+ hdma_usart1_tx.Instance = DMA1_Channel2;
+ hdma_usart1_tx.Init.Request = DMA_REQUEST_USART1_TX;
+ hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart1_tx.Init.Mode = DMA_NORMAL;
+ hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;
+ if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx);
+
+ /* USART1 interrupt Init */
+ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(USART1_IRQn);
+ /* USER CODE BEGIN USART1_MspInit 1 */
+
+ /* USER CODE END USART1_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief UART MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
+{
+ if(huart->Instance==LPUART1)
+ {
+ /* USER CODE BEGIN LPUART1_MspDeInit 0 */
+
+ /* USER CODE END LPUART1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_LPUART1_CLK_DISABLE();
+
+ /**LPUART1 GPIO Configuration
+ PA2 ------> LPUART1_TX
+ PA3 ------> LPUART1_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
+
+ /* LPUART1 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmatx);
+
+ /* LPUART1 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(LPUART1_IRQn);
+ /* USER CODE BEGIN LPUART1_MspDeInit 1 */
+
+ /* USER CODE END LPUART1_MspDeInit 1 */
+ }
+ else if(huart->Instance==USART1)
+ {
+ /* USER CODE BEGIN USART1_MspDeInit 0 */
+
+ /* USER CODE END USART1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_USART1_CLK_DISABLE();
+
+ /**USART1 GPIO Configuration
+ PA11 ------> USART1_CTS
+ PB6 ------> USART1_TX
+ PB7 ------> USART1_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11);
+
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
+
+ /* USART1 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmatx);
+
+ /* USART1 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(USART1_IRQn);
+ /* USER CODE BEGIN USART1_MspDeInit 1 */
+
+ /* USER CODE END USART1_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief RTC MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hrtc: RTC handle pointer
+* @retval None
+*/
+void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
+{
+ if(hrtc->Instance==RTC)
+ {
+ /* USER CODE BEGIN RTC_MspInit 0 */
+ HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */
+
+ /**
+ * Write twice the value to flush the APB-AHB bridge
+ * This bit shall be written in the register before writing the next one
+ */
+ HAL_PWR_EnableBkUpAccess();
+
+ __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE); /**< Select LSE as RTC Input */
+
+ /* USER CODE END RTC_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_RTC_ENABLE();
+ /* USER CODE BEGIN RTC_MspInit 1 */
+
+ MODIFY_REG(RTC->CR, RTC_CR_WUCKSEL, CFG_RTC_WUCKSEL_DIVIDER);
+ /* USER CODE END RTC_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief RTC MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hrtc: RTC handle pointer
+* @retval None
+*/
+void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
+{
+ if(hrtc->Instance==RTC)
+ {
+ /* USER CODE BEGIN RTC_MspDeInit 0 */
+
+ /* USER CODE END RTC_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_RTC_DISABLE();
+ /* USER CODE BEGIN RTC_MspDeInit 1 */
+
+ /* USER CODE END RTC_MspDeInit 1 */
+ }
+
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_it.c
new file mode 100644
index 000000000..6a503878c
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm32wbxx_it.c
@@ -0,0 +1,426 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32wbxx_it.c
+ * @brief Interrupt Service Routines.
+ *******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32wbxx_it.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "hw.h"
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+
+extern DMA_HandleTypeDef hdma_lpuart1_tx;
+
+extern DMA_HandleTypeDef hdma_usart1_tx;
+
+extern UART_HandleTypeDef hlpuart1;
+
+extern UART_HandleTypeDef huart1;
+
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/* Cortex Processor Interruption and Exception Handlers */
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+
+ /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+ /* USER CODE END W1_HardFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+ /* USER CODE END W1_MemoryManagement_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Prefetch fault, memory access fault.
+ */
+void BusFault_Handler(void)
+{
+ /* USER CODE BEGIN BusFault_IRQn 0 */
+
+ /* USER CODE END BusFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_BusFault_IRQn 0 */
+ /* USER CODE END W1_BusFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Undefined instruction or illegal state.
+ */
+void UsageFault_Handler(void)
+{
+ /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+ /* USER CODE END UsageFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
+ /* USER CODE END W1_UsageFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles System service call via SWI instruction.
+ */
+void SVC_Handler(void)
+{
+ /* USER CODE BEGIN SVCall_IRQn 0 */
+
+ /* USER CODE END SVCall_IRQn 0 */
+ /* USER CODE BEGIN SVCall_IRQn 1 */
+
+ /* USER CODE END SVCall_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Debug monitor.
+ */
+void DebugMon_Handler(void)
+{
+ /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+ /* USER CODE END DebugMonitor_IRQn 0 */
+ /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+ /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Pendable request for system service.
+ */
+void PendSV_Handler(void)
+{
+ /* USER CODE BEGIN PendSV_IRQn 0 */
+
+ /* USER CODE END PendSV_IRQn 0 */
+ /* USER CODE BEGIN PendSV_IRQn 1 */
+
+ /* USER CODE END PendSV_IRQn 1 */
+}
+
+/**
+ * @brief This function handles System tick timer.
+ */
+void SysTick_Handler(void)
+{
+ /* USER CODE BEGIN SysTick_IRQn 0 */
+
+ /* USER CODE END SysTick_IRQn 0 */
+ HAL_IncTick();
+ /* USER CODE BEGIN SysTick_IRQn 1 */
+
+ /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32WBxx Peripheral Interrupt Handlers */
+/* Add here the Interrupt Handlers for the used peripherals. */
+/* For the available peripheral interrupt handler names, */
+/* please refer to the startup file (startup_stm32wbxx.s). */
+/******************************************************************************/
+
+/**
+ * @brief This function handles PVD/PVM0/PVM2 interrupts through EXTI lines 16/31/33.
+ */
+void PVD_PVM_IRQHandler(void)
+{
+ /* USER CODE BEGIN PVD_PVM_IRQn 0 */
+
+ /* USER CODE END PVD_PVM_IRQn 0 */
+ HAL_PWREx_PVD_PVM_IRQHandler();
+ /* USER CODE BEGIN PVD_PVM_IRQn 1 */
+
+ /* USER CODE END PVD_PVM_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Flash global interrupt.
+ */
+void FLASH_IRQHandler(void)
+{
+ /* USER CODE BEGIN FLASH_IRQn 0 */
+
+ /* USER CODE END FLASH_IRQn 0 */
+ HAL_FLASH_IRQHandler();
+ /* USER CODE BEGIN FLASH_IRQn 1 */
+
+ /* USER CODE END FLASH_IRQn 1 */
+}
+
+/**
+ * @brief This function handles RCC global interrupt.
+ */
+void RCC_IRQHandler(void)
+{
+ /* USER CODE BEGIN RCC_IRQn 0 */
+
+ /* USER CODE END RCC_IRQn 0 */
+ /* USER CODE BEGIN RCC_IRQn 1 */
+
+ /* USER CODE END RCC_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 channel1 global interrupt.
+ */
+void DMA1_Channel1_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
+
+ /* USER CODE END DMA1_Channel1_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_lpuart1_tx);
+ /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
+
+ /* USER CODE END DMA1_Channel1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 channel2 global interrupt.
+ */
+void DMA1_Channel2_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Channel2_IRQn 0 */
+
+ /* USER CODE END DMA1_Channel2_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart1_tx);
+ /* USER CODE BEGIN DMA1_Channel2_IRQn 1 */
+
+ /* USER CODE END DMA1_Channel2_IRQn 1 */
+}
+
+/**
+ * @brief This function handles CPU2 SEV interrupt through EXTI line 40 and PWR CPU2 HOLD wake-up interrupt.
+ */
+void C2SEV_PWR_C2H_IRQHandler(void)
+{
+ /* USER CODE BEGIN C2SEV_PWR_C2H_IRQn 0 */
+
+ /* USER CODE END C2SEV_PWR_C2H_IRQn 0 */
+ /* USER CODE BEGIN C2SEV_PWR_C2H_IRQn 1 */
+
+ /* USER CODE END C2SEV_PWR_C2H_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USART1 global interrupt.
+ */
+void USART1_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART1_IRQn 0 */
+
+ /* USER CODE END USART1_IRQn 0 */
+ HAL_UART_IRQHandler(&huart1);
+ /* USER CODE BEGIN USART1_IRQn 1 */
+
+ /* USER CODE END USART1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles LPUART1 global interrupt.
+ */
+void LPUART1_IRQHandler(void)
+{
+ /* USER CODE BEGIN LPUART1_IRQn 0 */
+
+ /* USER CODE END LPUART1_IRQn 0 */
+ HAL_UART_IRQHandler(&hlpuart1);
+ /* USER CODE BEGIN LPUART1_IRQn 1 */
+
+ /* USER CODE END LPUART1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles PWR switching on the fly, end of BLE activity, end of 802.15.4 activity, end of critical radio phase interrupt.
+ */
+void PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler(void)
+{
+ /* USER CODE BEGIN PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 0 */
+
+ /* USER CODE END PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 0 */
+ /* USER CODE BEGIN PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 1 */
+
+ /* USER CODE END PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 1 */
+}
+
+/**
+ * @brief This function handles HSEM global interrupt.
+ */
+void HSEM_IRQHandler(void)
+{
+ /* USER CODE BEGIN HSEM_IRQn 0 */
+
+ /* USER CODE END HSEM_IRQn 0 */
+ HAL_HSEM_IRQHandler();
+ /* USER CODE BEGIN HSEM_IRQn 1 */
+
+ /* USER CODE END HSEM_IRQn 1 */
+}
+
+/**
+ * @brief This function handles FPU global interrupt.
+ */
+void FPU_IRQHandler(void)
+{
+ /* USER CODE BEGIN FPU_IRQn 0 */
+
+ /* USER CODE END FPU_IRQn 0 */
+ /* USER CODE BEGIN FPU_IRQn 1 */
+
+ /* USER CODE END FPU_IRQn 1 */
+}
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+/**
+ * @brief This function handles USB FS global interrupt request.
+ * @param None
+ * @retval None
+ */
+void USB_LP_IRQHandler(void)
+{
+ HAL_PCD_IRQHandler(&hpcd);
+}
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+/**
+ * @brief This function handles USB FS global interrupt request.
+ * @param None
+ * @retval None
+ */
+void USB_HP_IRQHandler(void)
+{
+ HAL_PCD_IRQHandler(&hpcd);
+}
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+/**
+ * @brief This function handles USB FS global interrupt request.
+ * @param None
+ * @retval None
+ */
+void USB_FS_WKUP_IRQHandler(void)
+{
+ HAL_PCD_IRQHandler(&hpcd);
+}
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+/* USER CODE BEGIN 1 */
+void RTC_WKUP_IRQHandler(void)
+{
+ HW_TS_RTC_Wakeup_Handler();
+}
+
+/**
+ * @brief This function handles EXTI15_10_IRQ Handler.
+ * @param None
+ * @retval None
+ */
+void EXTI15_10_IRQHandler(void)
+{
+ HAL_GPIO_EXTI_IRQHandler(BUTTON_SW1_PIN);
+}
+
+void
+IPCC_C1_TX_IRQHandler(void)
+{
+ HW_IPCC_Tx_Handler();
+
+ return;
+}
+
+void
+IPCC_C1_RX_IRQHandler(void)
+{
+ HW_IPCC_Rx_Handler();
+ return;
+}
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm_logging.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm_logging.c
new file mode 100644
index 000000000..c24b86dd8
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/stm_logging.c
@@ -0,0 +1,205 @@
+/**
+ ******************************************************************************
+ * File Name : stm_logging.c
+ * Description : This file contains all the defines and functions used
+ * for logging on Application examples.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/**
+ * @file
+ * This file implements logging functions to be used in Application examples.
+ *
+ */
+
+#include <ctype.h>
+#include <inttypes.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "app_conf.h"
+#include "stm_logging.h"
+
+#define LOG_PARSE_BUFFER_SIZE 256U
+
+#define LOG_TIMESTAMP_ENABLE 0
+#define LOG_REGION_ENABLE 1U
+#define LOG_RTT_COLOR_ENABLE 1U
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+#define RTT_COLOR_CODE_DEFAULT "\x1b[0m"
+#define RTT_COLOR_CODE_RED "\x1b[0;91m"
+#define RTT_COLOR_CODE_GREEN "\x1b[0;92m"
+#define RTT_COLOR_CODE_YELLOW "\x1b[0;93m"
+#define RTT_COLOR_CODE_CYAN "\x1b[0;96m"
+
+#else /* LOG_RTT_COLOR_ENABLE == 1 */
+#define RTT_COLOR_CODE_DEFAULT ""
+#define RTT_COLOR_CODE_RED ""
+#define RTT_COLOR_CODE_GREEN ""
+#define RTT_COLOR_CODE_YELLOW ""
+#define RTT_COLOR_CODE_CYAN ""
+#endif /* LOG_RTT_COLOR_ENABLE == 1 */
+
+#define LOG_MSG_SZ_MAX 256
+
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for outputting code region string.
+ *
+ * @param[inout] aLogString Pointer to log buffer.
+ * @param[in] aMaxSize Maximum size of log buffer.
+ * @param[in] otLogRegion The region ID.
+ *
+ * @returns String with a log level color value.
+ */
+static inline uint16_t
+logRegion(char *aLogString, uint16_t aMaxSize,
+ appliLogRegion_t aLogRegion)
+{
+ char logRegionString[30U];
+
+ switch (aLogRegion) {
+ case APPLI_LOG_REGION_GENERAL:
+ strcpy(logRegionString, "[M4 APPLICATION]");
+ break;
+ case APPLI_LOG_REGION_ZIGBEE_API:
+ strcpy(logRegionString, "[M4 ZIGBEE API]");
+ break;
+ default:
+ strcpy(logRegionString, "[M4]");
+ break;
+ }
+
+ return snprintf(aLogString, aMaxSize, "%s ", logRegionString);
+}
+
+#endif /* CFG_DEBUG_TRACE */
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for getting color of a given level log.
+ *
+ * @param[in] aLogLevel The log level.
+ *
+ * @returns String with a log level color value.
+ */
+static inline const char *levelToString(appliLogLevel_t aLogLevel)
+{
+ switch (aLogLevel)
+ {
+ case LOG_LEVEL_CRIT:
+ return RTT_COLOR_CODE_RED;
+
+ case LOG_LEVEL_WARN:
+ return RTT_COLOR_CODE_YELLOW;
+
+ case LOG_LEVEL_INFO:
+ return RTT_COLOR_CODE_GREEN;
+
+ case LOG_LEVEL_DEBG:
+ default:
+ return RTT_COLOR_CODE_DEFAULT;
+ }
+}
+#endif /* CFG_DEBUG_TRACE */
+
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for printing log level.
+ *
+ * @param[inout] aLogString Pointer to log buffer.
+ * @param[in] aMaxSize Maximum size of log buffer.
+ * @param[in] aLogLevel Log level.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+static inline uint16_t logLevel(char *aLogString, uint16_t aMaxSize,
+ appliLogLevel_t aLogLevel)
+{
+ return snprintf(aLogString, aMaxSize, "%s", levelToString(aLogLevel));
+}
+#endif /* CFG_DEBUG_TRACE */
+#endif /* LOG_RTT_COLOR_ENABLE */
+
+#if (LOG_TIMESTAMP_ENABLE == 1U)
+/**
+ * Function for printing actual timestamp.
+ *
+ * @param[inout] aLogString Pointer to the log buffer.
+ * @param[in] aMaxSize Maximum size of the log buffer.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+static inline uint16_t logTimestamp(char *aLogString, uint16_t aMaxSize)
+{
+ return snprintf(aLogString, aMaxSize, "%s[%010ld]", RTT_COLOR_CODE_DEFAULT,
+ otPlatAlarmMilliGetNow());
+}
+#endif /* LOG_TIMESTAMP_ENABLE */
+
+/**
+ * Function for printing application log
+ *
+ * @param[in] aLogLevel Log level.
+ * @param[in] aLogRegion The region ID.
+ * @param[in] aFormat User string format.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+void logApplication(appliLogLevel_t aLogLevel, appliLogRegion_t aLogRegion, const char *aFormat, ...)
+{
+#if (CFG_DEBUG_TRACE != 0) /* Since the traces are disabled, there is nothing to print */
+ uint16_t length = 0;
+ char logString[LOG_PARSE_BUFFER_SIZE + 1U];
+
+#if (LOG_TIMESTAMP_ENABLE == 1U)
+ length += logTimestamp(logString, LOG_PARSE_BUFFER_SIZE);
+#endif
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+ /* Add level information */
+ length += logLevel(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aLogLevel);
+#endif
+
+#if (LOG_REGION_ENABLE == 1U)
+ /* Add Region information */
+ length += logRegion(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aLogRegion);
+#endif
+
+ /* Parse user string */
+ va_list paramList;
+ va_start(paramList, aFormat);
+ length += vsnprintf(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aFormat, paramList);
+ logString[length++] = '\r';
+ logString[length++] = '\n';
+ logString[length++] = 0;
+ va_end(paramList);
+
+ if (aLogLevel <= APPLI_CONFIG_LOG_LEVEL)
+ {
+ printf("%s", logString);
+ }else
+ {
+ /* Print nothing */
+ }
+#endif /* CFG_DEBUG_TRACE */
+}
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/system_stm32wbxx.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/system_stm32wbxx.c
new file mode 100644
index 000000000..d4653a0ce
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/Core/Src/system_stm32wbxx.c
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * @file system_stm32wbxx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex Device Peripheral Access Layer System Source File
+ *
+ * This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32wbxx.s" file.
+ *
+ * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
+ * by the user application to setup the SysTick
+ * timer or configure other parameters.
+ *
+ * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
+ * be called whenever the core clock is changed
+ * during program execution.
+ *
+ * After each device reset the MSI (4 MHz) is used as system clock source.
+ * Then SystemInit() function is called, in "startup_stm32wbxx.s" file, to
+ * configure the system clock before to branch to main program.
+ *
+ * This file configures the system clock as follows:
+ *=============================================================================
+ *-----------------------------------------------------------------------------
+ * System Clock source | MSI
+ *-----------------------------------------------------------------------------
+ * SYSCLK(Hz) | 4000000
+ *-----------------------------------------------------------------------------
+ * HCLK(Hz) | 4000000
+ *-----------------------------------------------------------------------------
+ * AHB Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB1 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB2 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * PLL_M | 1
+ *-----------------------------------------------------------------------------
+ * PLL_N | 8
+ *-----------------------------------------------------------------------------
+ * PLL_P | 7
+ *-----------------------------------------------------------------------------
+ * PLL_Q | 2
+ *-----------------------------------------------------------------------------
+ * PLL_R | 2
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_P | NA
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_Q | NA
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_R | NA
+ *-----------------------------------------------------------------------------
+ * Require 48MHz for USB OTG FS, | Disabled
+ * SDIO and RNG clock |
+ *-----------------------------------------------------------------------------
+ *=============================================================================
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32WBxx_system
+ * @{
+ */
+
+/** @addtogroup stm32WBxx_System_Private_Includes
+ * @{
+ */
+
+#include "stm32wbxx.h"
+
+#if !defined (HSE_VALUE)
+ #define HSE_VALUE (32000000UL) /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (MSI_VALUE)
+ #define MSI_VALUE (4000000UL) /*!< Value of the Internal oscillator in Hz*/
+#endif /* MSI_VALUE */
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+#if !defined (LSI_VALUE)
+ #define LSI_VALUE (32000UL) /*!< Value of LSI in Hz*/
+#endif /* LSI_VALUE */
+
+#if !defined (LSE_VALUE)
+ #define LSE_VALUE (32768UL) /*!< Value of LSE in Hz*/
+#endif /* LSE_VALUE */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Defines
+ * @{
+ */
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+ Internal SRAM. */
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET 0x0U /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+
+#define VECT_TAB_BASE_ADDRESS SRAM1_BASE /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Variables
+ * @{
+ */
+ /* The SystemCoreClock variable is updated in three ways:
+ 1) by calling CMSIS function SystemCoreClockUpdate()
+ 2) by calling HAL API function HAL_RCC_GetHCLKFreq()
+ 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
+ Note: If you use this function to configure the system clock; then there
+ is no need to call the 2 first functions listed above, since SystemCoreClock
+ variable is updated automatically.
+ */
+ uint32_t SystemCoreClock = 4000000UL ; /*CPU1: M4 on MSI clock after startup (4MHz)*/
+
+ const uint32_t AHBPrescTable[16UL] = {1UL, 3UL, 5UL, 1UL, 1UL, 6UL, 10UL, 32UL, 2UL, 4UL, 8UL, 16UL, 64UL, 128UL, 256UL, 512UL};
+
+ const uint32_t APBPrescTable[8UL] = {0UL, 0UL, 0UL, 0UL, 1UL, 2UL, 3UL, 4UL};
+
+ const uint32_t MSIRangeTable[16UL] = {100000UL, 200000UL, 400000UL, 800000UL, 1000000UL, 2000000UL, \
+ 4000000UL, 8000000UL, 16000000UL, 24000000UL, 32000000UL, 48000000UL, 0UL, 0UL, 0UL, 0UL}; /* 0UL values are incorrect cases */
+
+ const uint32_t SmpsPrescalerTable[4UL][6UL]={{1UL,3UL,2UL,2UL,1UL,2UL}, \
+ {2UL,6UL,4UL,3UL,2UL,4UL}, \
+ {4UL,12UL,8UL,6UL,4UL,8UL}, \
+ {4UL,12UL,8UL,6UL,4UL,8UL}};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system.
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ /* Configure the Vector Table location add offset address ------------------*/
+#if defined(VECT_TAB_SRAM) && defined(VECT_TAB_BASE_ADDRESS)
+ /* program in SRAMx */
+ SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAMx for CPU1 */
+#else /* program in FLASH */
+ SCB->VTOR = VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
+#endif
+
+ /* FPU settings ------------------------------------------------------------*/
+ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+ SCB->CPACR |= ((3UL << (10UL*2UL))|(3UL << (11UL*2UL))); /* set CP10 and CP11 Full Access */
+ #endif
+
+ /* Reset the RCC clock configuration to the default reset state ------------*/
+ /* Set MSION bit */
+ RCC->CR |= RCC_CR_MSION;
+
+ /* Reset CFGR register */
+ RCC->CFGR = 0x00070000U;
+
+ /* Reset PLLSAI1ON, PLLON, HSECSSON, HSEON, HSION, and MSIPLLON bits */
+ RCC->CR &= (uint32_t)0xFAF6FEFBU;
+
+ /*!< Reset LSI1 and LSI2 bits */
+ RCC->CSR &= (uint32_t)0xFFFFFFFAU;
+
+ /*!< Reset HSI48ON bit */
+ RCC->CRRCR &= (uint32_t)0xFFFFFFFEU;
+
+ /* Reset PLLCFGR register */
+ RCC->PLLCFGR = 0x22041000U;
+
+ /* Reset PLLSAI1CFGR register */
+ RCC->PLLSAI1CFGR = 0x22041000U;
+
+ /* Reset HSEBYP bit */
+ RCC->CR &= 0xFFFBFFFFU;
+
+ /* Disable all interrupts */
+ RCC->CIER = 0x00000000;
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI_VALUE(*)
+ *
+ * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**)
+ *
+ * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***)
+ *
+ * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***)
+ * or HSI_VALUE(*) or MSI_VALUE(*) multiplied/divided by the PLL factors.
+ *
+ * (*) MSI_VALUE is a constant defined in stm32wbxx_hal.h file (default value
+ * 4 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) HSI_VALUE is a constant defined in stm32wbxx_hal_conf.h file (default value
+ * 16 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (***) HSE_VALUE is a constant defined in stm32wbxx_hal_conf.h file (default value
+ * 32 MHz), user has to ensure that HSE_VALUE is same as the real
+ * frequency of the crystal used. Otherwise, this function may
+ * have wrong result.
+ *
+ * - The result of this function could be not correct when using fractional
+ * value for HSE crystal.
+ *
+ * @param None
+ * @retval None
+ */
+void SystemCoreClockUpdate(void)
+{
+ uint32_t tmp, msirange, pllvco, pllr, pllsource , pllm;
+
+ /* Get MSI Range frequency--------------------------------------------------*/
+
+ /*MSI frequency range in Hz*/
+ msirange = MSIRangeTable[(RCC->CR & RCC_CR_MSIRANGE) >> RCC_CR_MSIRANGE_Pos];
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ switch (RCC->CFGR & RCC_CFGR_SWS)
+ {
+ case 0x00: /* MSI used as system clock source */
+ SystemCoreClock = msirange;
+ break;
+
+ case 0x04: /* HSI used as system clock source */
+ /* HSI used as system clock source */
+ SystemCoreClock = HSI_VALUE;
+ break;
+
+ case 0x08: /* HSE used as system clock source */
+ SystemCoreClock = HSE_VALUE;
+ break;
+
+ case 0x0C: /* PLL used as system clock source */
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE or MSI_VALUE/ PLLM) * PLLN
+ SYSCLK = PLL_VCO / PLLR
+ */
+ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC);
+ pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1UL ;
+
+ if(pllsource == 0x02UL) /* HSI used as PLL clock source */
+ {
+ pllvco = (HSI_VALUE / pllm);
+ }
+ else if(pllsource == 0x03UL) /* HSE used as PLL clock source */
+ {
+ pllvco = (HSE_VALUE / pllm);
+ }
+ else /* MSI used as PLL clock source */
+ {
+ pllvco = (msirange / pllm);
+ }
+
+ pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
+ pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1UL);
+
+ SystemCoreClock = pllvco/pllr;
+ break;
+
+ default:
+ SystemCoreClock = msirange;
+ break;
+ }
+
+ /* Compute HCLK clock frequency --------------------------------------------*/
+ /* Get HCLK1 prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)];
+ /* HCLK clock frequency */
+ SystemCoreClock = SystemCoreClock / tmp;
+
+}
+
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Project.eww b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Project.eww
new file mode 100644
index 000000000..5107edc35
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Project.eww
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workspace>
+ <project>
+ <path>$WS_DIR$\Zigbee_OnOff_Client_Router.ewp</path>
+ </project>
+ <batchBuild />
+</workspace>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewd b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewd
new file mode 100644
index 000000000..34d783918
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewd
@@ -0,0 +1,1419 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <fileVersion>3</fileVersion>
+ <configuration>
+ <name>Zigbee_OnOff_Client_Router</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>C-SPY</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>29</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCVariant</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>MemOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MemFile</name>
+ <state>$TOOLKIT_DIR$\CONFIG\debugger\ST\STM32WB_M4.ddf</state>
+ </option>
+ <option>
+ <name>RunToEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RunToName</name>
+ <state>main</state>
+ </option>
+ <option>
+ <name>CExtraOptionsCheck</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CExtraOptions</name>
+ <state>--stlink_use_server</state>
+ </option>
+ <option>
+ <name>CFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDDFArgumentProducer</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadSuppressDownload</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDownloadVerifyAll</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>OCDynDriverList</name>
+ <state>STLINK_ID</state>
+ </option>
+ <option>
+ <name>OCLastSavedByProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>UseFlashLoader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CLowLevel</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacFile2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CDevice</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>FlashLoadersV3</name>
+ <state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32WB_M4.board</state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck1</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesSuppressCheck3</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesPath3</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OverrideDefFlashBoard</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesOffset1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesOffset2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesOffset3</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCImagesUse1</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesUse2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCImagesUse3</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDeviceConfigMacroFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDebuggerExtraOption</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCAllMTBOptions</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCMulticoreNrOfCores</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCMulticoreMaster</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCMulticorePort</name>
+ <state>53461</state>
+ </option>
+ <option>
+ <name>OCMulticoreWorkspace</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCMulticoreSlaveProject</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCMulticoreSlaveConfiguration</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadExtraImage</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCAttachSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MassEraseBeforeFlashing</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ARMSIM_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCSimDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCSimEnablePSP</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspOverrideConfig</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspConfigFile</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CADI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCadiMemory</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Fast Model</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCADILogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCADILogFileEditB</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CMSISDAP_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>4</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCIarProbeScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CMSISDAPResetList</name>
+ <version>1</version>
+ <state>10</state>
+ </option>
+ <option>
+ <name>CMSISDAPHWResetDuration</name>
+ <state>300</state>
+ </option>
+ <option>
+ <name>CMSISDAPHWResetDelay</name>
+ <state>200</state>
+ </option>
+ <option>
+ <name>CMSISDAPDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CMSISDAPInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiTargetEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPRestoreBreakpointsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPUpdateBreakpointsEdit</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>RDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchUndef</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchData</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchPrefetch</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchMMERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchNOCPERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchCHKERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSTATERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchBUSERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchINTERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSFERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchHARDERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiCPUEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPMultiCPUNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeCfgOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeConfig</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CMSISDAPProbeConfigRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CMSISDAPSelectedCPUBehaviour</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ICpuName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCJetEmuParams</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCCMSISDAPUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCCMSISDAPUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>GDBSERVER_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJTagBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IJET_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>8</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCIarProbeScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetResetList</name>
+ <version>1</version>
+ <state>10</state>
+ </option>
+ <option>
+ <name>IjetHWResetDuration</name>
+ <state>300</state>
+ </option>
+ <option>
+ <name>IjetHWResetDelay</name>
+ <state>200</state>
+ </option>
+ <option>
+ <name>IjetPowerFromProbe</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetPowerRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>IjetInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiTargetEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetProtocolRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetSwoPin</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetCpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IjetSwoPrescalerList</name>
+ <version>1</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetRestoreBreakpointsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetUpdateBreakpointsEdit</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>RDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchUndef</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchData</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchPrefetch</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CatchMMERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchNOCPERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchCHKERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSTATERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchBUSERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchINTERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchSFERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchHARDERR</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeCfgOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCProbeConfig</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IjetProbeConfigRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiCPUEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetMultiCPUNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetSelectedCPUBehaviour</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ICpuName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCJetEmuParams</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetPreferETB</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IjetTraceSettingsList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IjetTraceSizeList</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>FlashBoardPathSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIjetUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCIjetUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>JLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>16</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>JLinkSpeed</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCJLinkDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJLinkHWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>JLinkInitialSpeed</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCDoJlinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkCommRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>CCJLinkSpeedRadioV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCUSBDevice</name>
+ <version>1</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkResetList</name>
+ <version>6</version>
+ <state>5</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkScriptFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJLinkUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCTcpIpAlt</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTcpIpSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCCpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCSwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSwoClockEdit</name>
+ <state>2000</state>
+ </option>
+ <option>
+ <name>OCJLinkTraceSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkTraceSourceDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkDeviceName</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>LMIFTDI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>2</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>LmiftdiSpeed</name>
+ <state>500</state>
+ </option>
+ <option>
+ <name>CCLmiftdiDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiftdiLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCLmiFtdiInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiFtdiInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>PEMICRO_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>3</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJPEMicroShowSettings</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>STLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>4</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCSTLinkInterfaceRadio</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCSTLinkInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkResetList</name>
+ <version>3</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCpuClockEdit</name>
+ <state>32.0</state>
+ </option>
+ <option>
+ <name>CCSwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSwoClockEdit</name>
+ <state>2000</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCSTLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkUpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkCatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkUsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCSTLinkUsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkJtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkDAPNumber</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSTLinkDebugAccessPortRadio</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>THIRDPARTY_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CThirdPartyDriverDll</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileEditB</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>TIFET_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetResetList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetInterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetVccTypeDefault</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetVoltage</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>CCMSPFetVCCDefault</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetTargetSettlingtime</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetRadioJtagSpeedType</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMSPFetConnection</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetUsbComPort</name>
+ <state>Automatic</state>
+ </option>
+ <option>
+ <name>CCMSPFetAllowAccessToBSL</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMSPFetLogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCMSPFetRadioEraseFlash</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>XDS100_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>6</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TIPackageOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>TIPackage</name>
+ <state></state>
+ </option>
+ <option>
+ <name>BoardFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$PROJ_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCXds100BreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100DoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100UpdateBreakpoints</name>
+ <state>_call_main</state>
+ </option>
+ <option>
+ <name>CCXds100CatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchCORERESET</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchMMERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchNOCPERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchCHRERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSTATERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchBUSERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchINTERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchSFERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchHARDERR</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CatchDummy</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100CpuClockEdit</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCXds100SwoClockAuto</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SwoClockEdit</name>
+ <state>1000</state>
+ </option>
+ <option>
+ <name>CCXds100HWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100ResetList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100UsbSerialNo</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCXds100UsbSerialNoSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100JtagSpeedList</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100InterfaceRadio</name>
+ <state>2</state>
+ </option>
+ <option>
+ <name>CCXds100InterfaceCmdLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100ProbeList</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>CCXds100SWOPortRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCXds100SWOPort</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <debuggerPlugins>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+ <loadFlag>1</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ </debuggerPlugins>
+ </configuration>
+</project>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewp b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewp
new file mode 100644
index 000000000..d444db254
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/Zigbee_OnOff_Client_Router.ewp
@@ -0,0 +1,1310 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <fileVersion>3</fileVersion>
+ <configuration>
+ <name>Zigbee_OnOff_Client_Router</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>General</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <version>30</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>ExePath</name>
+ <state>Zigbee_OnOff_Router/Exe</state>
+ </option>
+ <option>
+ <name>ObjPath</name>
+ <state>Zigbee_OnOff_Router/Obj</state>
+ </option>
+ <option>
+ <name>ListPath</name>
+ <state>Zigbee_OnOff_Router/List</state>
+ </option>
+ <option>
+ <name>GEndianMode</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>Input description</name>
+ <state>Full formatting, with multibyte support.</state>
+ </option>
+ <option>
+ <name>Output description</name>
+ <state>Full formatting, with multibyte support.</state>
+ </option>
+ <option>
+ <name>GOutputBinary</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGCoreOrChip</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelect</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelectSlave</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>RTDescription</name>
+ <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+ </option>
+ <option>
+ <name>OGProductVersion</name>
+ <state>4.41A</state>
+ </option>
+ <option>
+ <name>OGLastSavedByProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>GeneralEnableMisra</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraVerbose</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGChipSelectEditMenu</name>
+ <state>STM32WB55RG ST STM32WB55RG</state>
+ </option>
+ <option>
+ <name>GenLowLevelInterface</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GEndianModeBE</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGBufferedTerminalOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GenStdoutInterface</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules98</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>GeneralMisraVer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules04</name>
+ <version>0</version>
+ <state>011111111111111110111111111111011111111111111011110100111111111111111111111111111111111111111111101111111111111011111111111111111111111111111</state>
+ </option>
+ <option>
+ <name>RTConfigPath2</name>
+ <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>
+ </option>
+ <option>
+ <name>GBECoreSlave</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>OGUseCmsis</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGUseCmsisDspLib</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GRuntimeLibThreads</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CoreVariant</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>GFPUDeviceSlave</name>
+ <state>STM32WB55RG ST STM32WB55RG</state>
+ </option>
+ <option>
+ <name>FPU2</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>NrRegs</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>NEON</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GFPUCoreSlave2</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>OGCMSISPackSelectDevice</name>
+ </option>
+ <option>
+ <name>OgLibHeap</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGLibAdditionalLocale</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGPrintfVariant</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGPrintfMultibyteSupport</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGScanfVariant</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGScanfMultibyteSupport</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GenLocaleTags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>GenLocaleDisplayOnly</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DSPExtension</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TrustZone</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ICCARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>34</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCOptimizationNoSizeConstraints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDefines</name>
+ <state>USE_HAL_DRIVER</state>
+ <state>STM32WB55xx</state>
+ <state>USE_STM32WBXX_USB_DONGLE</state>
+ <state>ZIGBEE_WB</state>
+ </option>
+ <option>
+ <name>CCPreprocFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocComments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMnemonics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMessages</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagSuppress</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagRemark</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagWarning</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagError</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCAllowList</name>
+ <version>1</version>
+ <state>00000000</state>
+ </option>
+ <option>
+ <name>CCDebugInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IEndianMode</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IExtraOptionsCheck</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IExtraOptions</name>
+ <state>--diag_suppress Pe111</state>
+ <state>--diag_suppress Pe188</state>
+ </option>
+ <option>
+ <name>CCLangConformance</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSignedPlainChar</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRequirePrototypes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagWarnAreErr</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCompilerRuntimeInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>CCLibConfigHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>PreInclude</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CompilerMisraOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIncludePath2</name>
+ <state>$PROJ_DIR$/../Core/Inc</state>
+ <state>$PROJ_DIR$/../STM32_WPAN/App</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/app</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/utilities</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/core/Inc</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include/mac</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include/M4</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/sequencer</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/lpm/tiny_lpm</state>
+ <state>$PROJ_DIR$/../../../../../..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\vcp</state>
+ <state>$PROJ_DIR$/../../../../../..\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc</state>
+ <state>$PROJ_DIR$/../../../../../..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc</state>
+ </option>
+ <option>
+ <name>CCStdIncCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCodeSection</name>
+ <state>.text</state>
+ </option>
+ <option>
+ <name>IProcessorMode2</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptStrategy</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevelSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules98</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules04</name>
+ <version>0</version>
+ <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+ </option>
+ <option>
+ <name>CCPosIndRopi</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPosIndRwpi</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPosIndNoDynInit</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccLang</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCDialect</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccAllowVLA</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccStaticDestr</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCppInlineSemantics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCmsis</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccFloatSemantics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCNoLiteralPool</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptStrategySlave</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCGuardCalls</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCEncSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEncOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEncOutputBom</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCEncInput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccExceptions2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccRTTI2</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>AARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>10</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>AObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ACaseSensitivity</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacroChars</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnWhat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnOne</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>ADebug</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AltRegisterNames</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ADefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AList</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AListHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AListing</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Includes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacExps</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacExec</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OnlyAssed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MultiLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>TabSpacing</name>
+ <state>8</state>
+ </option>
+ <option>
+ <name>AXRef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDefines</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefInternal</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDual</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AOutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>ALimitErrorsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ALimitErrorsEdit</name>
+ <state>100</state>
+ </option>
+ <option>
+ <name>AIgnoreStdInclude</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AUserIncludes</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AExtraOptionsCheckV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AExtraOptionsV2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AsmNoLiteralPool</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>OBJCOPY</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OOCOutputFormat</name>
+ <version>3</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>OCOutputOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCOutputFile</name>
+ <state>Zigbee_OnOff_Router.bin</state>
+ </option>
+ <option>
+ <name>OOCCommandLineProducer</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCObjCopyEnable</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CUSTOM</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <extensions></extensions>
+ <cmdline></cmdline>
+ <hasPrio>0</hasPrio>
+ </data>
+ </settings>
+ <settings>
+ <name>BICOMP</name>
+ <archiveVersion>0</archiveVersion>
+ <data />
+ </settings>
+ <settings>
+ <name>BUILDACTION</name>
+ <archiveVersion>1</archiveVersion>
+ <data>
+ <prebuild></prebuild>
+ <postbuild></postbuild>
+ </data>
+ </settings>
+ <settings>
+ <name>ILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>20</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IlinkLibIOConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XLinkMisraHandler</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkInputFileSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOutputFile</name>
+ <state>Zigbee_OnOff_Router.out</state>
+ </option>
+ <option>
+ <name>IlinkDebugInfoEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkKeepSymbols</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySymbol</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySegment</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryAlign</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkConfigDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkMapFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogInitialization</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogModule</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogSection</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogVeneer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile</name>
+ <state>$PROJ_DIR$\stm32wb55xx_flash_cm4.icf</state>
+ </option>
+ <option>
+ <name>IlinkIcfFileSlave</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkSuppressDiags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsRem</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsWarn</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsErr</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkWarningsAreErrors</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkUseExtraOptions</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkLowLevelInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAutoLibEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAdditionalLibs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkOverrideProgramEntryLabel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabelSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabel</name>
+ <state>__iar_program_start</state>
+ </option>
+ <option>
+ <name>DoFill</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FillerByte</name>
+ <state>0xFF</state>
+ </option>
+ <option>
+ <name>FillerStart</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>FillerEnd</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>CrcSize</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcAlign</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcPoly</name>
+ <state>0x11021</state>
+ </option>
+ <option>
+ <name>CrcCompl</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcBitOrder</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcInitialValue</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>DoCrc</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkBufferedTerminalOutput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkStdoutInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcFullSize</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIElfToolPostProcess</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogAutoLibSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogRedirSymbols</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogUnusedFragments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCrcReverseByteOrder</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCrcUseAsInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptInline</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOptExceptionsAllow</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptExceptionsForce</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCmsis</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptMergeDuplSections</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOptUseVfe</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptForceVfe</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkStackAnalysisEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkStackControlFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkStackCallGraphFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CrcAlgorithm</name>
+ <version>1</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcUnitSize</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkThreadsSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogCallGraph</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile_AltDefault</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEncInput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkEncOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkEncOutputBom</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkHeapSelect</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLocaleSelect</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IARCHIVE</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IarchiveInputs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IarchiveOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IarchiveOutput</name>
+ <state>###Unitialized###</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>BILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data />
+ </settings>
+ </configuration>
+ <group>
+ <name>Application</name>
+ <group>
+ <name>EWARM</name>
+ <file>
+ <name>$PROJ_DIR$\startup_stm32wb55xx_cm4.s</name>
+ </file>
+ </group>
+ <group>
+ <name>User</name>
+ <group>
+ <name>Core</name>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\hw_uart.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\main.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32wbxx_hal_msp.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm_logging.c</name>
+ </file>
+ </group>
+ <group>
+ <name>STM32_WPAN</name>
+ <group>
+ <name>App</name>
+ <file>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee.c</name>
+ </file>
+ </group>
+ <group>
+ <name>Target</name>
+ <file>
+ <name>$PROJ_DIR$\..\STM32_WPAN\Target\hw_ipcc.c</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>Drivers</name>
+ <group>
+ <name>BSP</name>
+ <group>
+ <name>P-NUCLEO-WB55.USBDongle</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\P-NUCLEO-WB55.USBDongle\stm32wbxx_usb_dongle.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>CMSIS</name>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\system_stm32wbxx.c</name>
+ </file>
+ </group>
+ <group>
+ <name>STM32WBxx_HAL_Driver</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_cortex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_exti.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_flash.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_flash_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_gpio.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_hsem.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_tim.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_tim_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_ll_usb.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pcd.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pcd_ex.c</name>
+ </file>
+
+ </group>
+ </group>
+ <group>
+ <name>Middlewares</name>
+ <group>
+ <name>STM32_USB_Device_Library</name>
+ <group>
+ <name>Class</name>
+ <group>
+ <name>CDC</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>Core</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>STM32_WPAN</name>
+ <group>
+ <name>interface</name>
+ <group>
+ <name>patterns</name>
+ <group>
+ <name>ble_thread</name>
+ <group>
+ <name>schi</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\shci\shci.c</name>
+ </file>
+ </group>
+ <group>
+ <name>tl</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\tl_mbox.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\tl_zigbee_hci.c</name>
+ </file>
+ </group>
+ <group>
+ <name>vcp</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\vcp\usbd_conf.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\vcp\usbd_desc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\vcp\vcp.c</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>utilities</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\dbg_trace.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\otp.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_list.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_queue.c</name>
+ </file>
+ </group>
+ <group>
+ <name>zigbee</name>
+ <group>
+ <name>core</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\zigbee\core\src\zigbee_core_wb.c</name>
+ </file>
+ </group>
+ <group>
+ <name>stack</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\zigbee\lib\stm32wb_zigbee_wb_lib.a</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>Utilities</name>
+ <group>
+ <name>lpm</name>
+ <group>
+ <name>tiny_lpm</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\lpm\tiny_lpm\stm32_lpm.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>sequencer</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\sequencer\stm32_seq.c</name>
+ </file>
+ </group>
+ </group>
+</project>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..1f886ff59
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,517 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : M4 core vector table of the STM32WB55xx devices for the
+;* IAR (EWARM) toolchain.
+;*
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == _iar_program_start,
+;* - Set the vector table entries with the exceptions ISR
+;* address.
+;* - Branches to main in the C library (which eventually
+;* calls main()).
+;* After Reset the Cortex-M4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;******************************************************************************
+;* @attention
+;*
+;* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+;* All rights reserved.</center></h2>
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+;
+;
+; The modules in this file are included in the libraries, and may be replaced
+; by any user-defined modules that define the PUBLIC symbol _program_start or
+; a user defined start symbol.
+; To override the cstartup defined in the library, simply add your modified
+; version to the workbench project.
+;
+; The vector table is normally located at address 0.
+; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
+; The name "__vector_table" has special meaning for C-SPY:
+; it is where the SP start value is found, and the NVIC vector
+; table register (VTOR) is initialized to this address if != 0.
+;
+; Cortex-M version
+;
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ PUBLIC __vector_table
+
+ DATA
+__vector_table
+ DCD sfe(CSTACK)
+ DCD Reset_Handler ; Reset Handler
+
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM Interrupt
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper, TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ THUMB
+
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:NOROOT:REORDER(2)
+Reset_Handler
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__iar_program_start
+ BX R0
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+NMI_Handler
+ B NMI_Handler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HardFault_Handler
+ B HardFault_Handler
+
+ PUBWEAK MemManage_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+MemManage_Handler
+ B MemManage_Handler
+
+ PUBWEAK BusFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+BusFault_Handler
+ B BusFault_Handler
+
+ PUBWEAK UsageFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+UsageFault_Handler
+ B UsageFault_Handler
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK DebugMon_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DebugMon_Handler
+ B DebugMon_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SysTick_Handler
+ B SysTick_Handler
+
+ PUBWEAK WWDG_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+WWDG_IRQHandler
+ B WWDG_IRQHandler
+
+ PUBWEAK PVD_PVM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PVD_PVM_IRQHandler
+ B PVD_PVM_IRQHandler
+
+ PUBWEAK TAMP_STAMP_LSECSS_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TAMP_STAMP_LSECSS_IRQHandler
+ B TAMP_STAMP_LSECSS_IRQHandler
+
+ PUBWEAK RTC_WKUP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_WKUP_IRQHandler
+ B RTC_WKUP_IRQHandler
+
+ PUBWEAK FLASH_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FLASH_IRQHandler
+ B FLASH_IRQHandler
+
+ PUBWEAK RCC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RCC_IRQHandler
+ B RCC_IRQHandler
+
+ PUBWEAK EXTI0_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI0_IRQHandler
+ B EXTI0_IRQHandler
+
+ PUBWEAK EXTI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI1_IRQHandler
+ B EXTI1_IRQHandler
+
+ PUBWEAK EXTI2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI2_IRQHandler
+ B EXTI2_IRQHandler
+
+ PUBWEAK EXTI3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI3_IRQHandler
+ B EXTI3_IRQHandler
+
+ PUBWEAK EXTI4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI4_IRQHandler
+ B EXTI4_IRQHandler
+
+ PUBWEAK DMA1_Channel1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel1_IRQHandler
+ B DMA1_Channel1_IRQHandler
+
+ PUBWEAK DMA1_Channel2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel2_IRQHandler
+ B DMA1_Channel2_IRQHandler
+
+ PUBWEAK DMA1_Channel3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel3_IRQHandler
+ B DMA1_Channel3_IRQHandler
+
+ PUBWEAK DMA1_Channel4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel4_IRQHandler
+ B DMA1_Channel4_IRQHandler
+
+ PUBWEAK DMA1_Channel5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel5_IRQHandler
+ B DMA1_Channel5_IRQHandler
+
+ PUBWEAK DMA1_Channel6_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel6_IRQHandler
+ B DMA1_Channel6_IRQHandler
+
+ PUBWEAK DMA1_Channel7_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel7_IRQHandler
+ B DMA1_Channel7_IRQHandler
+
+ PUBWEAK ADC1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+ADC1_IRQHandler
+ B ADC1_IRQHandler
+
+ PUBWEAK USB_HP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USB_HP_IRQHandler
+ B USB_HP_IRQHandler
+
+ PUBWEAK USB_LP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USB_LP_IRQHandler
+ B USB_LP_IRQHandler
+
+ PUBWEAK C2SEV_PWR_C2H_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+C2SEV_PWR_C2H_IRQHandler
+ B C2SEV_PWR_C2H_IRQHandler
+
+ PUBWEAK COMP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+COMP_IRQHandler
+ B COMP_IRQHandler
+
+ PUBWEAK EXTI9_5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI9_5_IRQHandler
+ B EXTI9_5_IRQHandler
+
+ PUBWEAK TIM1_BRK_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_BRK_IRQHandler
+ B TIM1_BRK_IRQHandler
+
+ PUBWEAK TIM1_UP_TIM16_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_UP_TIM16_IRQHandler
+ B TIM1_UP_TIM16_IRQHandler
+
+ PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_TRG_COM_TIM17_IRQHandler
+ B TIM1_TRG_COM_TIM17_IRQHandler
+
+ PUBWEAK TIM1_CC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_CC_IRQHandler
+ B TIM1_CC_IRQHandler
+
+ PUBWEAK TIM2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM2_IRQHandler
+ B TIM2_IRQHandler
+
+ PUBWEAK PKA_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PKA_IRQHandler
+ B PKA_IRQHandler
+
+ PUBWEAK I2C1_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_EV_IRQHandler
+ B I2C1_EV_IRQHandler
+
+ PUBWEAK I2C1_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_ER_IRQHandler
+ B I2C1_ER_IRQHandler
+
+ PUBWEAK I2C3_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C3_EV_IRQHandler
+ B I2C3_EV_IRQHandler
+
+ PUBWEAK I2C3_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C3_ER_IRQHandler
+ B I2C3_ER_IRQHandler
+
+ PUBWEAK SPI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI1_IRQHandler
+ B SPI1_IRQHandler
+
+ PUBWEAK SPI2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI2_IRQHandler
+ B SPI2_IRQHandler
+
+ PUBWEAK USART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USART1_IRQHandler
+ B USART1_IRQHandler
+
+ PUBWEAK LPUART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPUART1_IRQHandler
+ B LPUART1_IRQHandler
+
+ PUBWEAK SAI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SAI1_IRQHandler
+ B SAI1_IRQHandler
+
+ PUBWEAK TSC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TSC_IRQHandler
+ B TSC_IRQHandler
+
+ PUBWEAK EXTI15_10_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI15_10_IRQHandler
+ B EXTI15_10_IRQHandler
+
+ PUBWEAK RTC_Alarm_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_Alarm_IRQHandler
+ B RTC_Alarm_IRQHandler
+
+ PUBWEAK CRS_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+CRS_IRQHandler
+ B CRS_IRQHandler
+
+ PUBWEAK PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ B PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+
+ PUBWEAK IPCC_C1_RX_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+IPCC_C1_RX_IRQHandler
+ B IPCC_C1_RX_IRQHandler
+
+ PUBWEAK IPCC_C1_TX_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+IPCC_C1_TX_IRQHandler
+ B IPCC_C1_TX_IRQHandler
+
+ PUBWEAK HSEM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HSEM_IRQHandler
+ B HSEM_IRQHandler
+
+ PUBWEAK LPTIM1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPTIM1_IRQHandler
+ B LPTIM1_IRQHandler
+
+ PUBWEAK LPTIM2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPTIM2_IRQHandler
+ B LPTIM2_IRQHandler
+
+ PUBWEAK LCD_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LCD_IRQHandler
+ B LCD_IRQHandler
+
+ PUBWEAK QUADSPI_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+QUADSPI_IRQHandler
+ B QUADSPI_IRQHandler
+
+ PUBWEAK AES1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+AES1_IRQHandler
+ B AES1_IRQHandler
+
+ PUBWEAK AES2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+AES2_IRQHandler
+ B AES2_IRQHandler
+
+ PUBWEAK RNG_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RNG_IRQHandler
+ B RNG_IRQHandler
+
+ PUBWEAK FPU_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FPU_IRQHandler
+ B FPU_IRQHandler
+
+ PUBWEAK DMA2_Channel1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel1_IRQHandler
+ B DMA2_Channel1_IRQHandler
+
+ PUBWEAK DMA2_Channel2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel2_IRQHandler
+ B DMA2_Channel2_IRQHandler
+
+ PUBWEAK DMA2_Channel3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel3_IRQHandler
+ B DMA2_Channel3_IRQHandler
+
+ PUBWEAK DMA2_Channel4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel4_IRQHandler
+ B DMA2_Channel4_IRQHandler
+
+ PUBWEAK DMA2_Channel5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel5_IRQHandler
+ B DMA2_Channel5_IRQHandler
+
+ PUBWEAK DMA2_Channel6_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel6_IRQHandler
+ B DMA2_Channel6_IRQHandler
+
+ PUBWEAK DMA2_Channel7_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel7_IRQHandler
+ B DMA2_Channel7_IRQHandler
+
+ PUBWEAK DMAMUX1_OVR_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMAMUX1_OVR_IRQHandler
+ B DMAMUX1_OVR_IRQHandler
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/stm32wb55xx_flash_cm4.icf b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/stm32wb55xx_flash_cm4.icf
new file mode 100644
index 000000000..70aec4026
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/EWARM/stm32wb55xx_flash_cm4.icf
@@ -0,0 +1,47 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x08000000;
+/*-Memory Regions-*/
+/***** FLASH Part dedicated to M4 *****/
+define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
+define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
+define symbol __ICFEDIT_region_RAM_start__ = 0x20000004;
+define symbol __ICFEDIT_region_RAM_end__ = 0x2002F000;
+
+ /*0x2002FFFF---------------------------------------|
+ * | Emulation Flash |
+ * 0x2002F000-------------------------------------- |
+ * | Region_RAM |
+ * 0x20000004-------------------------------------- |
+
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x1000; /* 4K */
+define symbol __ICFEDIT_size_heap__ = 102400; /* was 4K */
+/**** End of ICF editor section. ###ICF###*/
+
+define symbol __ICFEDIT_region_RAM_SHARED_start__ = 0x20030000;
+define symbol __ICFEDIT_region_RAM_SHARED_end__ = 0x20031000;
+
+define memory mem with size = 4G;
+define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
+define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
+define region RAM_SHARED_region = mem:[from __ICFEDIT_region_RAM_SHARED_start__ to __ICFEDIT_region_RAM_SHARED_end__];
+
+define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
+define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
+
+/* MB_MEM1 and MB_MEM2 are sections reserved to mailbox communication. It is placed in the shared memory */
+initialize by copy { readwrite };
+do not initialize { section .noinit,
+ section MAPPING_TABLE,
+ section MB_MEM1 };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region { readonly };
+place in RAM_region { readwrite,block CSTACK, block HEAP };
+place in RAM_SHARED_region { first section MAPPING_TABLE};
+place in RAM_SHARED_region { section MB_MEM1};
+place in RAM_SHARED_region { section MB_MEM2};
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.c
new file mode 100644
index 000000000..349dcc49e
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.c
@@ -0,0 +1,538 @@
+/**
+ ******************************************************************************
+ * File Name : App/app_zigbee.c
+ * Description : Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "app_entry.h"
+#include "dbg_trace.h"
+#include "app_zigbee.h"
+#include "zigbee_interface.h"
+#include "shci.h"
+#include "stm_logging.h"
+#include "app_conf.h"
+#include "stm32wbxx_core_interface_def.h"
+#include "zigbee_types.h"
+#include "stm32_seq.h"
+
+#include <assert.h>
+#include "zcl/zcl.h"
+#include "zcl/zcl.onoff.h"
+#include "zcl/zcl.identify.h"
+
+/* Private defines -----------------------------------------------------------*/
+#define APP_ZIGBEE_STARTUP_FAIL_DELAY 500U
+#define SW1_ENDPOINT 17
+#define SW1_GROUP_ADDR 0x0001
+#define CHANNEL 13
+
+/* Private function prototypes -----------------------------------------------*/
+static void APP_ZIGBEE_StackLayersInit(void);
+static void APP_ZIGBEE_ConfigEndpoints(void);
+static void APP_ZIGBEE_SW1_Process(void);
+static void APP_ZIGBEE_NwkForm(void);
+static void APP_ZIGBEE_ConfigGroupAddr(void);
+
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
+
+static void Wait_Getting_Ack_From_M0(void);
+static void Receive_Ack_From_M0(void);
+static void Receive_Notification_From_M0(void);
+
+/* Private variables -----------------------------------------------*/
+static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
+static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
+static __IO uint32_t CptReceiveMsgFromM0 = 0;
+
+PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+struct zigbee_app_info {
+ bool has_init;
+ struct ZigBeeT *zb;
+ enum ZbStartType startupControl;
+ enum ZbStatusCodeT join_status;
+ uint32_t join_delay;
+ bool init_after_join;
+
+ struct ZbZclClusterT *onoff_client_1;
+};
+static struct zigbee_app_info zigbee_app_info;
+
+/* Functions Definition ------------------------------------------------------*/
+
+void APP_ZIGBEE_Init(void)
+{
+ SHCI_CmdStatus_t ZigbeeInitStatus;
+
+ APP_DBG("APP_ZIGBEE_Init");
+
+ /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
+ APP_ZIGBEE_CheckWirelessFirmwareInfo();
+
+ /* Register cmdbuffer */
+ APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
+
+ /* Init config buffer and call TL_ZIGBEE_Init */
+ APP_ZIGBEE_TL_INIT();
+
+ /* Register task */
+ /* Create the different tasks */
+ UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
+
+ /* Task associated with network creation process */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, UTIL_SEQ_RFU, APP_ZIGBEE_NwkForm);
+
+ /* Task associated with push button SW1 */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_BUTTON_SW1, UTIL_SEQ_RFU, APP_ZIGBEE_SW1_Process);
+
+ /* Start the Zigbee on the CPU2 side */
+ ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(ZigbeeInitStatus);
+
+ /* Initialize Zigbee stack layers */
+ APP_ZIGBEE_StackLayersInit();
+
+} /* APP_ZIGBEE_Init */
+
+
+/**
+ * @brief Initialize Zigbee stack layers
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_StackLayersInit(void)
+{
+ APP_DBG("APP_ZIGBEE_StackLayersInit");
+
+ zigbee_app_info.zb = ZbInit(0U, NULL, NULL);
+ assert(zigbee_app_info.zb != NULL);
+
+ /* Create the endpoint and cluster(s) */
+ APP_ZIGBEE_ConfigEndpoints();
+
+ BSP_LED_Off(LED_RED);
+ BSP_LED_Off(LED_GREEN);
+ BSP_LED_Off(LED_BLUE);
+
+ /* Configure the joining parameters */
+ zigbee_app_info.join_status = 0x01; /* init to error status */
+ zigbee_app_info.join_delay = HAL_GetTick(); /* now */
+ zigbee_app_info.startupControl = ZbStartTypeJoin;
+
+ /* Initialization Complete */
+ zigbee_app_info.has_init = true;
+
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+}
+
+static void APP_ZIGBEE_ConfigEndpoints(void)
+{
+ ZbApsmeAddEndpointReqT req;
+ ZbApsmeAddEndpointConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
+ req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
+
+ /* Endpoint: SW1_ENDPOINT */
+ req.endpoint = SW1_ENDPOINT;
+ ZbZclAddEndpoint(zigbee_app_info.zb, &req, &conf);
+ assert(conf.status == ZB_STATUS_SUCCESS);
+
+ /* OnOff Client */
+ zigbee_app_info.onoff_client_1 = ZbZclOnOffClientAlloc(zigbee_app_info.zb, SW1_ENDPOINT);
+ assert(zigbee_app_info.onoff_client_1 != NULL);
+ ZbZclClusterEndpointRegister(zigbee_app_info.onoff_client_1);
+
+} /* config_endpoints */
+
+/**
+ * @brief Handle Zigbee network forming and joining
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_NwkForm(void)
+{
+ if ((zigbee_app_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_app_info.join_delay))
+ {
+ struct ZbStartupT config;
+ enum ZbStatusCodeT status;
+
+ /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
+ ZbSetLogging(zigbee_app_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
+
+ /* Attempt to join a zigbee network */
+ ZbStartupConfigGetProDefaults(&config);
+
+ APP_DBG("Network config : APP_STARTUP_CENTRALIZED_ROUTER");
+ zigbee_app_info.startupControl = ZbStartTypeJoin;
+ config.startupControl = zigbee_app_info.startupControl;
+
+ /* Using the default HA preconfigured Link Key */
+ memcpy(config.security.preconfiguredLinkKey, sec_key_ha, ZB_SEC_KEYSIZE);
+ config.channelList.count = 1;
+ config.channelList.list[0].page = 0;
+ config.channelList.list[0].channelMask = 1 << CHANNEL; /* Channel in use*/
+
+ /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
+ * a blocking call on the M4. */
+ status = ZbStartupWait(zigbee_app_info.zb, &config);
+
+ APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
+ zigbee_app_info.join_status = status;
+
+ if (status == ZB_STATUS_SUCCESS) {
+ zigbee_app_info.join_delay = 0U;
+ zigbee_app_info.init_after_join = true;
+ BSP_LED_On(LED_BLUE);
+ }
+ else
+ {
+ APP_DBG("Startup failed, attempting again after a short delay (%d ms)", APP_ZIGBEE_STARTUP_FAIL_DELAY);
+ zigbee_app_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
+ }
+ }
+
+ /* If Network forming/joining was not successful reschedule the current task to retry the process */
+ if (zigbee_app_info.join_status != ZB_STATUS_SUCCESS)
+ {
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+ }
+ else
+ {
+ zigbee_app_info.init_after_join = false;
+
+ /* Assign ourselves to the group addresses */
+ APP_ZIGBEE_ConfigGroupAddr();
+
+ /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
+ uint32_t bcast_timeout = 3;
+ ZbNwkSet(zigbee_app_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
+ }
+}
+
+/**
+ * @brief Set group addressing mode
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_ConfigGroupAddr(void)
+{
+ ZbApsmeAddGroupReqT req;
+ ZbApsmeAddGroupConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.endpt = SW1_ENDPOINT;
+ req.groupAddr = SW1_GROUP_ADDR;
+ ZbApsmeAddGroupReq(zigbee_app_info.zb, &req, &conf);
+
+} /* APP_ZIGBEE_ConfigGroupAddr */
+
+/*************************************************************
+ * ZbStartupWait Blocking Call
+ *************************************************************/
+struct ZbStartupWaitInfo {
+ bool active;
+ enum ZbStatusCodeT status;
+};
+
+static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
+{
+ struct ZbStartupWaitInfo *info = cb_arg;
+
+ info->status = status;
+ info->active = false;
+} /* ZbStartupWaitCb */
+
+enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
+{
+ struct ZbStartupWaitInfo *info;
+ enum ZbStatusCodeT status;
+
+ info = malloc(sizeof(struct ZbStartupWaitInfo));
+ if (info == NULL) {
+ return ZB_STATUS_ALLOC_FAIL;
+ }
+ memset(info, 0, sizeof(struct ZbStartupWaitInfo));
+
+ info->active = true;
+ status = ZbStartup(zb, config, ZbStartupWaitCb, info);
+ if (status != ZB_STATUS_SUCCESS) {
+ info->active = false;
+ return status;
+ }
+ while (info->active) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ }
+ status = info->status;
+ free(info);
+ return status;
+} /* ZbStartupWait */
+
+/**
+ * @brief Trace the error or the warning reported.
+ * @param ErrId :
+ * @param ErrCode
+ * @retval None
+ */
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
+{
+ switch (ErrId) {
+ default:
+ APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
+ break;
+ }
+} /* APP_ZIGBEE_Error */
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+/**
+ * @brief Warn the user that an error has occurred.In this case,
+ * the LEDs on the Board will start blinking.
+ *
+ * @param pMess : Message associated to the error.
+ * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
+ * @retval None
+ */
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
+{
+ APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
+ while (1U == 1U) {
+ BSP_LED_Toggle(LED1);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED2);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED3);
+ HAL_Delay(500U);
+ }
+} /* APP_ZIGBEE_TraceError */
+
+/**
+ * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
+ * and display associated informations
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
+{
+ WirelessFwInfo_t wireless_info_instance;
+ WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
+
+ if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ }
+ else {
+ APP_DBG("**********************************************************");
+ APP_DBG("WIRELESS COPROCESSOR FW:");
+ /* Print version */
+ APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
+
+ switch (p_wireless_info->StackType) {
+ case INFO_STACK_TYPE_ZIGBEE:
+ APP_DBG("FW Type : Zigbee stack");
+ break;
+ default:
+ /* No Zigbee device supported ! */
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ break;
+ }
+ APP_DBG("**********************************************************");
+ }
+} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
+
+static void APP_ZIGBEE_SW1_Process()
+{
+ struct ZbApsAddrT dst;
+
+ memset(&dst, 0, sizeof(dst));
+ dst.mode = ZB_APSDE_ADDRMODE_GROUP;
+ dst.endpoint = SW1_ENDPOINT;
+ dst.nwkAddr = SW1_GROUP_ADDR;
+
+ APP_DBG("SW1 PUSHED (SENDING TOGGLE TO GROUP 0x0001)");
+ if (ZbZclOnOffClientToggleReq(zigbee_app_info.onoff_client_1, &dst, NULL, NULL) != ZCL_STATUS_SUCCESS) {
+ APP_DBG("Error, ZbZclOnOffClientToggleReq failed (SW1_ENDPOINT)");
+ }
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
+{
+ p_ZIGBEE_otcmdbuffer = p_buffer;
+} /* APP_ZIGBEE_RegisterCmdBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+} /* ZIGBEE_Get_OTCmdPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
+} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
+} /* ZIGBEE_Get_NotificationPayloadBuffer */
+
+/**
+ * @brief This function is used to transfer the commands from the M4 to the M0.
+ *
+ * @param None
+ * @return None
+ */
+void ZIGBEE_CmdTransfer(void)
+{
+ Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+
+ /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
+ /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
+ * + ID (4 bytes) + Size (4 bytes) */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
+
+ TL_ZIGBEE_SendAppliCmdToM0();
+
+ /* Wait completion of cmd */
+ Wait_Getting_Ack_From_M0();
+} /* ZIGBEE_CmdTransfer */
+
+/**
+ * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
+ *
+ *
+ * @param Otbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
+{
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(Otbuffer);
+
+ Receive_Ack_From_M0();
+} /* TL_ZIGBEE_CmdEvtReceived */
+
+/**
+ * @brief This function is called when notification from M0+ is received.
+ *
+ * @param Notbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
+{
+ p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
+
+ Receive_Notification_From_M0();
+} /* TL_ZIGBEE_NotReceived */
+
+/**
+ * @brief This function is called before sending any ot command to the M0
+ * core. The purpose of this function is to be able to check if
+ * there are no notifications coming from the M0 core which are
+ * pending before sending a new ot command.
+ * @param None
+ * @retval None
+ */
+void Pre_ZigbeeCmdProcessing(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+} /* Pre_ZigbeeCmdProcessing */
+
+/**
+ * @brief This function waits for getting an acknowledgment from the M0.
+ *
+ * @param None
+ * @retval None
+ */
+static void Wait_Getting_Ack_From_M0(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Wait_Getting_Ack_From_M0 */
+
+/**
+ * @brief Receive an acknowledgment from the M0+ core.
+ * Each command send by the M4 to the M0 are acknowledged.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Ack_From_M0(void)
+{
+ UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Receive_Ack_From_M0 */
+
+/**
+ * @brief Receive a notification from the M0+ through the IPCC.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Notification_From_M0(void)
+{
+ CptReceiveMsgFromM0++;
+ UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
+} /* Receive_Notification_From_M0 */
+
+/**
+ * @brief Perform initialization of TL for Zigbee.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_TL_INIT(void)
+{
+ ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
+ TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
+} /* APP_ZIGBEE_TL_INIT */
+
+/**
+ * @brief Process the messages coming from the M0.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_ProcessMsgM0ToM4(void)
+{
+ if (CptReceiveMsgFromM0 != 0) {
+ /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
+ if (CptReceiveMsgFromM0 > 1U) {
+ APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
+ }
+ else {
+ Zigbee_CallBackProcessing();
+ }
+ /* Reset counter */
+ CptReceiveMsgFromM0 = 0;
+ }
+} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.h
new file mode 100644
index 000000000..dd907ec23
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/App/app_zigbee.h
@@ -0,0 +1,61 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : app_zigbee.h
+ * Description : Header for Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_ZIGBEE_H
+#define APP_ZIGBEE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+/* Private includes ----------------------------------------------------------*/
+#include "tl.h"
+#include "tl_zigbee_hci.h"
+
+/* Exported types ------------------------------------------------------------*/
+
+/*
+ * List of all errors tracked by the Thread application
+ * running on M4. Some of these errors may be fatal
+ * or just warnings
+ */
+typedef enum {
+ ERR_REC_MULTI_MSG_FROM_M0,
+ ERR_ZIGBE_CMD_TO_M0,
+ ERR_ZIGBEE_CHECK_WIRELESS
+} ErrAppliIdEnum_t;
+
+/* Exported constants --------------------------------------------------------*/
+
+/* Exported functions ------------------------------------------------------- */
+void APP_ZIGBEE_Init(void);
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode);
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer);
+void APP_ZIGBEE_ProcessMsgM0ToM4(void);
+void APP_ZIGBEE_TL_INIT(void);
+void Pre_ZigbeeCmdProcessing(void);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* APP_ZIGBEE_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/Target/hw_ipcc.c
new file mode 100644
index 000000000..ab7f75b9a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/STM32_WPAN/Target/hw_ipcc.c
@@ -0,0 +1,491 @@
+/**
+ ******************************************************************************
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "mbox_def.h"
+
+/* Global variables ---------------------------------------------------------*/
+/* Private defines -----------------------------------------------------------*/
+#define HW_IPCC_TX_PENDING( channel ) ( !(LL_C1_IPCC_IsActiveFlag_CHx( IPCC, channel )) ) && (((~(IPCC->C1MR)) & (channel << 16U)))
+#define HW_IPCC_RX_PENDING( channel ) (LL_C2_IPCC_IsActiveFlag_CHx( IPCC, channel )) && (((~(IPCC->C1MR)) & (channel << 0U)))
+
+/* Private macros ------------------------------------------------------------*/
+/* Private typedef -----------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+static void (*FreeBufCb)( void );
+
+/* Private function prototypes -----------------------------------------------*/
+static void HW_IPCC_BLE_EvtHandler( void );
+static void HW_IPCC_BLE_AclDataEvtHandler( void );
+static void HW_IPCC_MM_FreeBufHandler( void );
+static void HW_IPCC_SYS_CmdEvtHandler( void );
+static void HW_IPCC_SYS_EvtHandler( void );
+static void HW_IPCC_TRACES_EvtHandler( void );
+
+#ifdef THREAD_WB
+static void HW_IPCC_OT_CmdEvtHandler( void );
+static void HW_IPCC_THREAD_NotEvtHandler( void );
+static void HW_IPCC_THREAD_CliNotEvtHandler( void );
+#endif
+
+#ifdef MAC_802_15_4_WB
+static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void );
+static void HW_IPCC_MAC_802_15_4_NotEvtHandler( void );
+#endif
+
+#ifdef ZIGBEE_WB
+static void HW_IPCC_ZIGBEE_CmdEvtHandler( void );
+static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void );
+
+#endif
+
+/* Public function definition -----------------------------------------------*/
+
+/******************************************************************************
+ * INTERRUPT HANDLER
+ ******************************************************************************/
+void HW_IPCC_Rx_Handler( void )
+{
+ if (HW_IPCC_RX_PENDING( HW_IPCC_SYSTEM_EVENT_CHANNEL ))
+ {
+ HW_IPCC_SYS_EvtHandler();
+ }
+#ifdef MAC_802_15_4_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_MAC_802_15_4_NotEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef THREAD_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_THREAD_NotEvtHandler();
+ }
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_THREAD_CliNotEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef ZIGBEE_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL ))
+ {
+ HW_IPCC_ZIGBEE_StackNotifEvtHandler();
+ }
+#endif /* ZIGBEE_WB */
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_BLE_EVENT_CHANNEL ))
+ {
+ HW_IPCC_BLE_EvtHandler();
+ }
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_TRACES_CHANNEL ))
+ {
+ HW_IPCC_TRACES_EvtHandler();
+ }
+
+ return;
+}
+
+void HW_IPCC_Tx_Handler( void )
+{
+ if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_SYS_CmdEvtHandler();
+ }
+#ifdef MAC_802_15_4_WB
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_MAC_802_15_4_CmdEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef THREAD_WB
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_OT_CmdEvtHandler();
+ }
+#endif /* THREAD_WB */
+#ifdef ZIGBEE_WB
+ if (HW_IPCC_TX_PENDING( HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL ))
+ {
+ HW_IPCC_ZIGBEE_CmdEvtHandler();
+ }
+#endif /* ZIGBEE_WB */
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_SYS_CmdEvtHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ))
+ {
+ HW_IPCC_MM_FreeBufHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_HCI_ACL_DATA_CHANNEL ))
+ {
+ HW_IPCC_BLE_AclDataEvtHandler();
+ }
+
+ return;
+}
+/******************************************************************************
+ * GENERAL
+ ******************************************************************************/
+void HW_IPCC_Enable( void )
+{
+ /**
+ * In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
+ * In that case, to keep the mechanism transparent to the user application, it shall call the system command
+ * SHCI_C2_Reinit( ) before jumping to the application.
+ * When the CPU2 receives that command, it waits for its event input to be set to restart the CPU2 firmware.
+ * This is required because once C2BOOT has been set once, a clear/set on C2BOOT has no effect.
+ * When SHCI_C2_Reinit( ) is not called, generating an event to the CPU2 does not have any effect
+ * So, by default, the application shall both set the event flag and set the C2BOOT bit.
+ */
+ __SEV( ); /* Set the internal event flag and send an event to the CPU2 */
+ __WFE( ); /* Clear the internal event flag */
+ LL_PWR_EnableBootC2( );
+
+ return;
+}
+
+void HW_IPCC_Init( void )
+{
+ LL_AHB3_GRP1_EnableClock( LL_AHB3_GRP1_PERIPH_IPCC );
+
+ LL_C1_IPCC_EnableIT_RXO( IPCC );
+ LL_C1_IPCC_EnableIT_TXF( IPCC );
+
+ HAL_NVIC_EnableIRQ(IPCC_C1_RX_IRQn);
+ HAL_NVIC_EnableIRQ(IPCC_C1_TX_IRQn);
+
+ return;
+}
+
+/******************************************************************************
+ * BLE
+ ******************************************************************************/
+void HW_IPCC_BLE_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_BLE_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_BLE_CMD_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_BLE_EvtHandler( void )
+{
+ HW_IPCC_BLE_RxEvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_BLE_SendAclData( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_BLE_AclDataEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+
+ HW_IPCC_BLE_AclDataAckNot();
+
+ return;
+}
+
+__weak void HW_IPCC_BLE_AclDataAckNot( void ){};
+__weak void HW_IPCC_BLE_RxEvtNot( void ){};
+
+/******************************************************************************
+ * SYSTEM
+ ******************************************************************************/
+void HW_IPCC_SYS_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_SYS_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_SYS_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+
+ HW_IPCC_SYS_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_SYS_EvtHandler( void )
+{
+ HW_IPCC_SYS_EvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
+
+ return;
+}
+
+__weak void HW_IPCC_SYS_CmdEvtNot( void ){};
+__weak void HW_IPCC_SYS_EvtNot( void ){};
+
+/******************************************************************************
+ * THREAD
+ ******************************************************************************/
+#ifdef THREAD_WB
+void HW_IPCC_THREAD_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_OT_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_CLI_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_CMD_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_THREAD_SendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_THREAD_CliSendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_OT_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ HW_IPCC_OT_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_THREAD_NotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_THREAD_EvtNot();
+
+ return;
+}
+
+static void HW_IPCC_THREAD_CliNotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_THREAD_CliEvtNot();
+
+ return;
+}
+
+__weak void HW_IPCC_OT_CmdEvtNot( void ){};
+__weak void HW_IPCC_CLI_CmdEvtNot( void ){};
+__weak void HW_IPCC_THREAD_EvtNot( void ){};
+
+#endif /* THREAD_WB */
+/******************************************************************************
+ * ZIGBEE
+ ******************************************************************************/
+#ifdef ZIGBEE_WB
+void HW_IPCC_ZIGBEE_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_ZIGBEE_SendAppliCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_ZIGBEE_SendAppliCmdAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_ZIGBEE_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ HW_IPCC_ZIGBEE_AppliCmdNotification();
+
+ return;
+}
+
+static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_ZIGBEE_AppliAsyncEvtNotification();
+
+ return;
+}
+
+
+
+__weak void HW_IPCC_ZIGBEE_AppliCmdNotification( void ){};
+__weak void HW_IPCC_ZIGBEE_AppliAsyncEvtNotification( void ){};
+#endif /* ZIGBEE_WB */
+
+
+/******************************************************************************
+ * MEMORY MANAGER
+ ******************************************************************************/
+void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )
+{
+ if ( LL_C1_IPCC_IsActiveFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ) )
+ {
+ FreeBufCb = cb;
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+ }
+ else
+ {
+ cb();
+
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+ }
+
+ return;
+}
+
+static void HW_IPCC_MM_FreeBufHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+
+ FreeBufCb();
+
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+
+ return;
+}
+
+/******************************************************************************
+ * TRACES
+ ******************************************************************************/
+void HW_IPCC_TRACES_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_TRACES_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_TRACES_EvtHandler( void )
+{
+ HW_IPCC_TRACES_EvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_TRACES_CHANNEL );
+
+ return;
+}
+
+__weak void HW_IPCC_TRACES_EvtNot( void ){};
+
+
+/******************************************************************************
+ * MAC 802.15.4
+ ******************************************************************************/
+#ifdef MAC_802_15_4_WB
+void HW_IPCC_MAC_802_15_4_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_MAC_802_15_4_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_MAC_802_15_4_SendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+
+ HW_IPCC_MAC_802_15_4_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_MAC_802_15_4_NotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_MAC_802_15_4_EvtNot();
+
+ return;
+}
+__weak void HW_IPCC_MAC_802_15_4_CmdEvtNot( void ){};
+__weak void HW_IPCC_MAC_802_15_4_EvtNot( void ){};
+#endif
+
+/******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/readme.txt b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/readme.txt
new file mode 100644
index 000000000..8ac10a9ab
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Client_Router/readme.txt
@@ -0,0 +1,118 @@
+/**
+ @page Zigbee_OnOff_Client_Router application
+
+ @verbatim
+ ******************************************************************************
+ * @file Zigbee/Zigbee_OnOff_Client_Router/readme.txt
+ * @author MCD Application Team
+ * @brief Description of the Zigbee OnOff Cluster application as a client
+ * using a centralized network.
+ ******************************************************************************
+ *
+ * Copyright (c) 2019 STMicroelectronics. All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ @endverbatim
+
+@par Application Description
+
+How to use OnOff cluster as a client on a centralized Zigbee network.
+
+The purpose of this application is to show how to create a Zigbee centralized network, and
+how to communicate from one node to another one using the OnOff cluster. Once the Zigbee mesh
+network is created, the user can send requests from the client to the server through the push button
+in order to make the LED toggling.
+
+For this application it is requested to have:
+
+- 1 STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Server_Coord
+
+- 1 or more STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Client_Router
+
+
+ Device 1 Device 2
+
+ --------- ---------
+ | | ZbZclOnOffClientToggleReq | |
+ PushB=>|Client | -----------------------------------> |Server | =>LED
+ | | | |
+ | | | |
+ -------- ---------
+
+To setup the application :
+
+ a) Open the project, build it and load your generated application on your STM32WB devices.
+
+ To run the application :
+
+ a) Start the first board. It must be the coordinator of the Zigbee network so in this demo application it is
+ the device running Zigbee_OnOff_Server_Coord application (Device2 in the above diagram).
+ Wait for the Blue LED (LED1) ON.
+ Start the second board. This board is configured as Zigbee router and will attached to the network created
+ by the coordinator. Do the same for the other boards if applicable.
+
+ b) At this stage, the Zigbee network is automatically created and BLUE LED (LED1) is ON on all devices.
+ it is now possible to send OnOff Cluster commands from the client to the server in multicast mode
+ by pressing on the SW1 push button.
+ You must see the LED1 toggling on the server side.
+
+
+ ---------- -----------
+ |Device 1 |............|Device 2 |
+ |(distr.) | |(distr.) |
+ ----------- -----------
+ . .
+ . .
+ . .
+ ----------- .
+ |Device 3 |...................
+ |(distr.) |
+ -----------
+
+
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
+
+@par Hardware and Software environment
+
+ - This example runs on STM32WB55xx devices
+
+ - This example has been tested with an STMicroelectronics STM32WB55xx_Usb_Dongle
+ (MB1293C) board and can be easily tailored to any other supported device and development board.
+
+@par How to use it ?
+
+=> Loading of the stm32wb5x_Zigbee_FFD_fw.bin binary
+
+ This application requests having the stm32wb5x_Zigbee_FFD_fw.bin binary flashed on the Wireless Coprocessor.
+ If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
+ All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory.
+ Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
+ Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the detailed procedure to change the
+ Wireless Coprocessor binary.
+
+=> Getting traces
+ To get the traces you need to connect your Board to the Hyperterminal (through the STLink Virtual COM Port).
+ The UART must be configured as follows:
+
+ - BaudRate = 115200 baud
+ - Word Length = 8 Bits
+ - Stop Bit = 1 bit
+ - Parity = none
+ - Flow control = none
+
+=> Running the application
+
+ Refer to the Application description at the beginning of this readme.txt
+
+ * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
+
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_common.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_common.h
new file mode 100644
index 000000000..4defc5d7a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_common.h
@@ -0,0 +1,114 @@
+/**
+ ******************************************************************************
+ * File Name : app_common.h
+ * Description : App Common application configuration file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_COMMON_H
+#define APP_COMMON_H
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stdint.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "app_conf.h"
+
+ /* -------------------------------- *
+ * Basic definitions *
+ * -------------------------------- */
+
+#undef NULL
+#define NULL 0
+
+#undef FALSE
+#define FALSE 0
+
+#undef TRUE
+#define TRUE (!0)
+
+ /* -------------------------------- *
+ * Critical Section definition *
+ * -------------------------------- */
+#define BACKUP_PRIMASK() uint32_t primask_bit= __get_PRIMASK()
+#define DISABLE_IRQ() __disable_irq()
+#define RESTORE_PRIMASK() __set_PRIMASK(primask_bit)
+
+ /* -------------------------------- *
+ * Macro delimiters *
+ * -------------------------------- */
+
+#define M_BEGIN do {
+
+#define M_END } while(0)
+
+ /* -------------------------------- *
+ * Some useful macro definitions *
+ * -------------------------------- */
+
+#define MAX( x, y ) (((x)>(y))?(x):(y))
+
+#define MIN( x, y ) (((x)<(y))?(x):(y))
+
+#define MODINC( a, m ) M_BEGIN (a)++; if ((a)>=(m)) (a)=0; M_END
+
+#define MODDEC( a, m ) M_BEGIN if ((a)==0) (a)=(m); (a)--; M_END
+
+#define MODADD( a, b, m ) M_BEGIN (a)+=(b); if ((a)>=(m)) (a)-=(m); M_END
+
+#define MODSUB( a, b, m ) MODADD( a, (m)-(b), m )
+
+#define PAUSE( t ) M_BEGIN \
+ __IO int _i; \
+ for ( _i = t; _i > 0; _i -- ); \
+ M_END
+
+#define DIVF( x, y ) ((x)/(y))
+
+#define DIVC( x, y ) (((x)+(y)-1)/(y))
+
+#define DIVR( x, y ) (((x)+((y)/2))/(y))
+
+#define SHRR( x, n ) ((((x)>>((n)-1))+1)>>1)
+
+#define BITN( w, n ) (((w)[(n)/32] >> ((n)%32)) & 1)
+
+#define BITNSET( w, n, b ) M_BEGIN (w)[(n)/32] |= ((U32)(b))<<((n)%32); M_END
+
+ /* -------------------------------- *
+ * Compiler *
+ * -------------------------------- */
+#define PLACE_IN_SECTION( __x__ ) __attribute__((section (__x__)))
+
+#ifdef WIN32
+#define ALIGN(n)
+#else
+#define ALIGN(n) __attribute__((aligned(n)))
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*APP_COMMON_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_conf.h
new file mode 100644
index 000000000..14123c655
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_conf.h
@@ -0,0 +1,348 @@
+/**
+ ******************************************************************************
+ * File Name : app_conf.h
+ * Description : Application configuration file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_CONF_H
+#define APP_CONF_H
+
+#include "hw.h"
+#include "hw_conf.h"
+#include "hw_if.h"
+
+/******************************************************************************
+ * Application Config
+ ******************************************************************************/
+/******************************************************************************
+ * Transport Layer
+ ******************************************************************************/
+/**
+ * Queue length of BLE Event
+ * This parameter defines the number of asynchronous events that can be stored in the HCI layer before
+ * being reported to the application. When a command is sent to the BLE core coprocessor, the HCI layer
+ * is waiting for the event with the Num_HCI_Command_Packets set to 1. The receive queue shall be large
+ * enough to store all asynchronous events received in between.
+ * When CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE is set to 27, this allow to store three 255 bytes long asynchronous events
+ * between the HCI command and its event.
+ * This parameter depends on the value given to CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE. When the queue size is to small,
+ * the system may hang if the queue is full with asynchronous events and the HCI layer is still waiting
+ * for a CC/CS event, In that case, the notification TL_BLE_HCI_ToNot() is called to indicate
+ * to the application a HCI command did not receive its command event within 30s (Default HCI Timeout).
+ */
+#define CFG_TL_EVT_QUEUE_LENGTH 5
+/**
+ * This parameter should be set to fit most events received by the HCI layer. It defines the buffer size of each element
+ * allocated in the queue of received events and can be used to optimize the amount of RAM allocated by the Memory Manager.
+ * It should not exceed 255 which is the maximum HCI packet payload size (a greater value is a lost of memory as it will
+ * never be used)
+ * It shall be at least 4 to receive the command status event in one frame.
+ * The default value is set to 27 to allow receiving an event of MTU size in a single buffer. This value maybe reduced
+ * further depending on the application.
+ *
+ */
+#define CFG_TL_MOST_EVENT_PAYLOAD_SIZE 255 /**< Set to 255 with the memory manager and the mailbox */
+
+#define TL_EVENT_FRAME_SIZE ( TL_EVT_HDR_SIZE + CFG_TL_MOST_EVENT_PAYLOAD_SIZE )
+/******************************************************************************
+ * UART interfaces
+ ******************************************************************************/
+
+/**
+ * Select UART interfaces
+ */
+#define CFG_DEBUG_TRACE_UART hw_uart1
+#define CFG_CONSOLE_MENU
+#define CFG_CLI_UART hw_lpuart1
+/******************************************************************************
+ * USB interface
+ ******************************************************************************/
+
+/**
+ * Enable/Disable USB interface
+ */
+#define CFG_USB_INTERFACE_ENABLE 1
+
+/******************************************************************************
+ * Low Power
+ *
+ * When CFG_FULL_LOW_POWER is set to 1, the system is configured in full
+ * low power mode. It means that all what can have an impact on the consumptions
+ * are powered down.(For instance LED, Access to Debugger, Etc.)
+ *
+ * When CFG_FULL_LOW_POWER is set to 0, the low power mode is not activated
+ *
+ ******************************************************************************/
+
+#define CFG_FULL_LOW_POWER 0
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_LPM_SUPPORTED
+#define CFG_LPM_SUPPORTED 1
+#endif /* CFG_FULL_LOW_POWER */
+
+/******************************************************************************
+ * Timer Server
+ ******************************************************************************/
+/**
+ * CFG_RTC_WUCKSEL_DIVIDER: This sets the RTCCLK divider to the wakeup timer.
+ * The higher is the value, the better is the power consumption and the accuracy of the timerserver
+ * The lower is the value, the finest is the granularity
+ *
+ * CFG_RTC_ASYNCH_PRESCALER: This sets the asynchronous prescaler of the RTC. It should as high as possible ( to ouput
+ * clock as low as possible) but the output clock should be equal or higher frequency compare to the clock feeding
+ * the wakeup timer. A lower clock speed would impact the accuracy of the timer server.
+ *
+ * CFG_RTC_SYNCH_PRESCALER: This sets the synchronous prescaler of the RTC.
+ * When the 1Hz calendar clock is required, it shall be sets according to other settings
+ * When the 1Hz calendar clock is not needed, CFG_RTC_SYNCH_PRESCALER should be set to 0x7FFF (MAX VALUE)
+ *
+ * CFG_RTCCLK_DIVIDER_CONF:
+ * Shall be set to either 0,2,4,8,16
+ * When set to either 2,4,8,16, the 1Hhz calendar is supported
+ * When set to 0, the user sets its own configuration
+ *
+ * The following settings are computed with LSI as input to the RTC
+ */
+#define CFG_RTCCLK_DIVIDER_CONF 0
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 0)
+/**
+ * Custom configuration
+ * It does not support 1Hz calendar
+ * It divides the RTC CLK by 16
+ */
+#define CFG_RTCCLK_DIV (16)
+#define CFG_RTC_WUCKSEL_DIVIDER (0)
+#define CFG_RTC_ASYNCH_PRESCALER (CFG_RTCCLK_DIV - 1)
+#define CFG_RTC_SYNCH_PRESCALER (0x7FFF)
+
+#else
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 2)
+/**
+ * It divides the RTC CLK by 2
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (3)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 4)
+/**
+ * It divides the RTC CLK by 4
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (2)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 8)
+/**
+ * It divides the RTC CLK by 8
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (1)
+#endif
+
+#if (CFG_RTCCLK_DIVIDER_CONF == 16)
+/**
+ * It divides the RTC CLK by 16
+ */
+#define CFG_RTC_WUCKSEL_DIVIDER (0)
+#endif
+
+#define CFG_RTCCLK_DIV CFG_RTCCLK_DIVIDER_CONF
+#define CFG_RTC_ASYNCH_PRESCALER (CFG_RTCCLK_DIV - 1)
+#define CFG_RTC_SYNCH_PRESCALER (DIVR( LSE_VALUE, (CFG_RTC_ASYNCH_PRESCALER+1) ) - 1 )
+
+#endif
+
+/** tick timer value in us */
+#define CFG_TS_TICK_VAL DIVR( (CFG_RTCCLK_DIV * 1000000), LSE_VALUE )
+
+typedef enum
+{
+ CFG_TIM_PROC_ID_ISR,
+} CFG_TimProcID_t;
+
+/******************************************************************************
+ * Debug
+ ******************************************************************************/
+/**
+ * When set, this resets some hw resources to set the device in the same state than the power up
+ * The FW resets only register that may prevent the FW to run properly
+ *
+ * This shall be set to 0 in a final product
+ *
+ */
+#define CFG_HW_RESET_BY_FW 1
+
+/**
+ * keep debugger enabled while in any low power mode when set to 1
+ * should be set to 0 in production
+ */
+#define CFG_DEBUGGER_SUPPORTED 1
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_DEBUGGER_SUPPORTED
+#define CFG_DEBUGGER_SUPPORTED 0
+#endif /* CFG_FULL_LOW_POWER */
+
+/*****************************************************************************
+ * Traces
+ * Enable or Disable traces in application
+ * When CFG_DEBUG_TRACE is set, traces are activated
+ *
+ * Note : Refer to utilities_conf.h file in order to details
+ * the level of traces : CFG_DEBUG_TRACE_FULL or CFG_DEBUG_TRACE_LIGHT
+ *****************************************************************************/
+#define CFG_DEBUG_TRACE 1
+
+#if (CFG_FULL_LOW_POWER == 1)
+#undef CFG_DEBUG_TRACE
+#define CFG_DEBUG_TRACE 0
+#endif /* CFG_FULL_LOW_POWER */
+
+/**
+ * When CFG_DEBUG_TRACE_FULL is set to 1, the trace are output with the API name, the file name and the line number
+ * When CFG_DEBUG_TRACE_LIGHT is set to 1, only the debug message is output
+ *
+ * When both are set to 0, no trace are output
+ * When both are set to 1, CFG_DEBUG_TRACE_FULL is selected
+ */
+#define CFG_DEBUG_TRACE_LIGHT 1
+#define CFG_DEBUG_TRACE_FULL 0
+
+#if (( CFG_DEBUG_TRACE != 0 ) && ( CFG_DEBUG_TRACE_LIGHT == 0 ) && (CFG_DEBUG_TRACE_FULL == 0))
+#undef CFG_DEBUG_TRACE_FULL
+#undef CFG_DEBUG_TRACE_LIGHT
+#define CFG_DEBUG_TRACE_FULL 0
+#define CFG_DEBUG_TRACE_LIGHT 1
+#endif
+
+#if ( CFG_DEBUG_TRACE == 0 )
+#undef CFG_DEBUG_TRACE_FULL
+#undef CFG_DEBUG_TRACE_LIGHT
+#define CFG_DEBUG_TRACE_FULL 0
+#define CFG_DEBUG_TRACE_LIGHT 0
+#endif
+
+/**
+ * When not set, the traces is looping on sending the trace over UART
+ */
+#define DBG_TRACE_USE_CIRCULAR_QUEUE 1
+
+/**
+ * max buffer Size to queue data traces and max data trace allowed.
+ * Only Used if DBG_TRACE_USE_CIRCULAR_QUEUE is defined
+ */
+#define DBG_TRACE_MSG_QUEUE_SIZE 4096
+#define MAX_DBG_TRACE_MSG_SIZE 1024
+
+/******************************************************************************
+ * Configure Log level for Application
+ ******************************************************************************/
+#define APPLI_CONFIG_LOG_LEVEL LOG_LEVEL_INFO
+#define APPLI_PRINT_FILE_FUNC_LINE 0
+
+/* USER CODE BEGIN Defines */
+/******************************************************************************
+ * User interaction
+ * When CFG_LED_SUPPORTED is set, LEDS are activated if requested
+ * When CFG_BUTTON_SUPPORTED is set, the push button are activated if requested
+ ******************************************************************************/
+#if (CFG_FULL_LOW_POWER == 1)
+#define CFG_LED_SUPPORTED 0
+#define CFG_BUTTON_SUPPORTED 0
+#else
+#define CFG_LED_SUPPORTED 1
+#define CFG_BUTTON_SUPPORTED 1
+#endif /* CFG_FULL_LOW_POWER */
+/* USER CODE END Defines */
+
+/******************************************************************************
+ * Scheduler
+ ******************************************************************************/
+/**
+ * This is the list of task id required by the application
+ * Each Id shall be in the range 0..31
+ */
+
+typedef enum {
+ CFG_TASK_MSG_FROM_M0_TO_M4,
+ CFG_TASK_SYSTEM_HCI_ASYNCH_EVT,
+ CFG_TASK_ZIGBEE_NETWORK_FORM,
+ CFG_TASK_BUTTON_SW1,
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+ CFG_TASK_VCP_SEND_DATA,
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+ CFG_TASK_NBR /**< Shall be last in the list */
+} CFG_IdleTask_Id_t;
+
+/* Scheduler types and defines */
+/*------------------------------------*/
+
+//#define TASK_MSG_FROM_M0_TO_M4 (1U << CFG_TASK_MSG_FROM_M0_TO_M4)
+#define EVENT_ACK_FROM_M0_EVT (1U << CFG_EVT_ACK_FROM_M0_EVT)
+#define EVENT_SYNCHRO_BYPASS_IDLE (1U << CFG_EVT_SYNCHRO_BYPASS_IDLE)
+
+/**
+ * This is the list of priority required by the application
+ * Each Id shall be in the range 0..31
+ */
+typedef enum
+{
+ CFG_SCH_PRIO_0,
+ CFG_SCH_PRIO_1,
+ CFG_PRIO_NBR,
+} CFG_SCH_Prio_Id_t;
+
+/**
+ * This is a bit mapping over 32bits listing all events id supported in the application
+ */
+typedef enum {
+ CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP,
+ CFG_EVT_ACK_FROM_M0_EVT,
+ CFG_EVT_SYNCHRO_BYPASS_IDLE,
+} CFG_IdleEvt_Id_t;
+
+#define EVENT_ACK_FROM_M0_EVT (1U << CFG_EVT_ACK_FROM_M0_EVT)
+#define EVENT_SYNCHRO_BYPASS_IDLE (1U << CFG_EVT_SYNCHRO_BYPASS_IDLE)
+
+/******************************************************************************
+ * Configure Log level for Application
+ ******************************************************************************/
+#define APPLI_CONFIG_LOG_LEVEL LOG_LEVEL_INFO
+#define APPLI_PRINT_FILE_FUNC_LINE 0
+
+/******************************************************************************
+ * LOW POWER
+ ******************************************************************************/
+/**
+ * Supported requester to the MCU Low Power Manager - can be increased up to 32
+ * It lits a bit mapping of all user of the Low Power Manager
+ */
+typedef enum {
+ CFG_LPM_APP,
+} CFG_LPM_Id_t;
+
+/******************************************************************************
+ * OTP manager
+ ******************************************************************************/
+#define CFG_OTP_BASE_ADDRESS OTP_AREA_BASE
+
+#define CFG_OTP_END_ADRESS OTP_AREA_END_ADDR
+
+#endif /*APP_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_entry.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_entry.h
new file mode 100644
index 000000000..48c467aaa
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/app_entry.h
@@ -0,0 +1,68 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : app_entry.h
+ * Description : App entry configuration file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_ENTRY_H
+#define APP_ENTRY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+ /* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported variables --------------------------------------------------------*/
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/* Exported macros ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions ---------------------------------------------*/
+ void APPE_Init( void );
+/* USER CODE BEGIN EF */
+
+/* USER CODE END EF */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*APP_ENTRY_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_conf.h
new file mode 100644
index 000000000..8409edd16
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_conf.h
@@ -0,0 +1,219 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : hw_conf.h
+ * Description : Hardware configuration file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef HW_CONF_H
+#define HW_CONF_H
+
+/******************************************************************************
+ * Semaphores
+ * THIS SHALL NO BE CHANGED AS THESE SEMAPHORES ARE USED AS WELL ON THE CM0+
+ *****************************************************************************/
+/* Index of the semaphore used to manage the entry Stop Mode procedure */
+#define CFG_HW_ENTRY_STOP_MODE_SEMID 4
+
+/* Index of the semaphore used to access the RCC */
+#define CFG_HW_RCC_SEMID 3
+
+/* Index of the semaphore used to access the FLASH */
+#define CFG_HW_FLASH_SEMID 2
+
+/* Index of the semaphore used to access the PKA */
+#define CFG_HW_PKA_SEMID 1
+
+/* Index of the semaphore used to access the RNG */
+#define CFG_HW_RNG_SEMID 0
+
+/******************************************************************************
+ * HW TIMER SERVER
+ *****************************************************************************/
+/**
+ * The user may define the maximum number of virtual timers supported.
+ * It shall not exceed 255
+ */
+#define CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER 6
+
+/**
+ * The user may define the priority in the NVIC of the RTC_WKUP interrupt handler that is used to manage the
+ * wakeup timer.
+ * This setting is the preemptpriority part of the NVIC.
+ */
+#define CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO 3
+
+/**
+ * The user may define the priority in the NVIC of the RTC_WKUP interrupt handler that is used to manage the
+ * wakeup timer.
+ * This setting is the subpriority part of the NVIC. It does not exist on all processors. When it is not supported
+ * on the CPU, the setting is ignored
+ */
+#define CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO 0
+
+/**
+ * Define a critical section in the Timer server
+ * The Timer server does not support the API to be nested
+ * The Application shall either:
+ * a) Ensure this will never happen
+ * b) Define the critical section
+ * The default implementations is masking all interrupts using the PRIMASK bit
+ * The TimerServer driver uses critical sections to avoid context corruption. This is achieved with the macro
+ * TIMER_ENTER_CRITICAL_SECTION and TIMER_EXIT_CRITICAL_SECTION. When CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION is set
+ * to 1, all STM32 interrupts are masked with the PRIMASK bit of the CortexM CPU. It is possible to use the BASEPRI
+ * register of the CortexM CPU to keep allowed some interrupts with high priority. In that case, the user shall
+ * re-implement TIMER_ENTER_CRITICAL_SECTION and TIMER_EXIT_CRITICAL_SECTION and shall make sure that no TimerServer
+ * API are called when the TIMER critical section is entered
+ */
+#define CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION 1
+
+/**
+ * This value shall reflect the maximum delay there could be in the application between the time the RTC interrupt
+ * is generated by the Hardware and the time when the RTC interrupt handler is called. This time is measured in
+ * number of RTCCLK ticks.
+ * A relaxed timing would be 10ms
+ * When the value is too short, the timerserver will not be able to count properly and all timeout may be random.
+ * When the value is too long, the device may wake up more often than the most optimal configuration. However, the
+ * impact on power consumption would be marginal (unless the value selected is extremely too long). It is strongly
+ * recommended to select a value large enough to make sure it is not too short to ensure reliability of the system
+ * as this will have marginal impact on low power mode
+ */
+#define CFG_HW_TS_RTC_HANDLER_MAX_DELAY ( 10 * (LSI_VALUE/1000) )
+
+ /**
+ * Interrupt ID in the NVIC of the RTC Wakeup interrupt handler
+ * It shall be type of IRQn_Type
+ */
+#define CFG_HW_TS_RTC_WAKEUP_HANDLER_ID RTC_WKUP_IRQn
+
+/******************************************************************************
+ * HW UART
+ *****************************************************************************/
+
+#define CFG_HW_LPUART1_ENABLED 1
+#define CFG_HW_LPUART1_DMA_TX_SUPPORTED 1
+
+#define CFG_HW_USART1_ENABLED 1
+#define CFG_HW_USART1_DMA_TX_SUPPORTED 1
+
+/**
+ * LPUART1
+ */
+#define CFG_HW_LPUART1_PREEMPTPRIORITY 0x0F
+#define CFG_HW_LPUART1_SUBPRIORITY 0
+
+/** < The application shall check the selected source clock is enable */
+#define CFG_HW_LPUART1_SOURCE_CLOCK RCC_LPUART1CLKSOURCE_SYSCLK
+
+#define CFG_HW_LPUART1_BAUDRATE 115200
+#define CFG_HW_LPUART1_WORDLENGTH UART_WORDLENGTH_8B
+#define CFG_HW_LPUART1_STOPBITS UART_STOPBITS_1
+#define CFG_HW_LPUART1_PARITY UART_PARITY_NONE
+#define CFG_HW_LPUART1_HWFLOWCTL UART_HWCONTROL_NONE
+#define CFG_HW_LPUART1_MODE UART_MODE_TX_RX
+#define CFG_HW_LPUART1_ADVFEATUREINIT UART_ADVFEATURE_NO_INIT
+#define CFG_HW_LPUART1_OVERSAMPLING UART_OVERSAMPLING_8
+
+#define CFG_HW_LPUART1_TX_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_LPUART1_TX_PORT GPIOA
+#define CFG_HW_LPUART1_TX_PIN GPIO_PIN_2
+#define CFG_HW_LPUART1_TX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_TX_PULL GPIO_NOPULL
+#define CFG_HW_LPUART1_TX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_TX_ALTERNATE GPIO_AF8_LPUART1
+
+#define CFG_HW_LPUART1_RX_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_LPUART1_RX_PORT GPIOA
+#define CFG_HW_LPUART1_RX_PIN GPIO_PIN_3
+#define CFG_HW_LPUART1_RX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_RX_PULL GPIO_NOPULL
+#define CFG_HW_LPUART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_RX_ALTERNATE GPIO_AF8_LPUART1
+
+#define CFG_HW_LPUART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOvalueNotSetted_CLK_ENABLE
+#define CFG_HW_LPUART1_CTS_PORT GPIOvalueNotSetted
+#define CFG_HW_LPUART1_CTS_PIN GPIO_PIN_valueNotSetted
+#define CFG_HW_LPUART1_CTS_MODE GPIO_MODE_AF_PP
+#define CFG_HW_LPUART1_CTS_PULL GPIO_PULLDOWN
+#define CFG_HW_LPUART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_LPUART1_CTS_ALTERNATE GPIO_AFvalueNotSetted_LPUART1
+
+#define CFG_HW_LPUART1_DMA_TX_PREEMPTPRIORITY 0x0F
+#define CFG_HW_LPUART1_DMA_TX_SUBPRIORITY 0
+
+#define CFG_HW_LPUART1_DMAMUX_CLK_ENABLE __HAL_RCC_DMAMUX1_CLK_ENABLE
+#define CFG_HW_LPUART1_DMA_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE
+#define CFG_HW_LPUART1_TX_DMA_REQ DMA_REQUEST_LPUART1_TX
+#define CFG_HW_LPUART1_TX_DMA_CHANNEL DMA1_CHANNEL_1
+#define CFG_HW_LPUART1_TX_DMA_IRQn DMA1_CHANNEL_1_IRQn
+#define CFG_HW_LPUART1_DMA_TX_IRQHandler DMA1_CHANNEL_1_IRQHandler
+
+/**
+ * UART1
+ */
+#define CFG_HW_USART1_PREEMPTPRIORITY 0x0F
+#define CFG_HW_USART1_SUBPRIORITY 0
+
+/** < The application shall check the selected source clock is enable */
+#define CFG_HW_USART1_SOURCE_CLOCK RCC_USART1CLKSOURCE_SYSCLK
+
+#define CFG_HW_USART1_BAUDRATE 115200
+#define CFG_HW_USART1_WORDLENGTH UART_WORDLENGTH_8B
+#define CFG_HW_USART1_STOPBITS UART_STOPBITS_1
+#define CFG_HW_USART1_PARITY UART_PARITY_NONE
+#define CFG_HW_USART1_HWFLOWCTL UART_HWCONTROL_NONE
+#define CFG_HW_USART1_MODE UART_MODE_TX_RX
+#define CFG_HW_USART1_ADVFEATUREINIT UART_ADVFEATURE_NO_INIT
+#define CFG_HW_USART1_OVERSAMPLING UART_OVERSAMPLING_8
+
+#define CFG_HW_USART1_TX_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define CFG_HW_USART1_TX_PORT GPIOB
+#define CFG_HW_USART1_TX_PIN GPIO_PIN_6
+#define CFG_HW_USART1_TX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_TX_PULL GPIO_NOPULL
+#define CFG_HW_USART1_TX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_TX_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_RX_PORT_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
+#define CFG_HW_USART1_RX_PORT GPIOB
+#define CFG_HW_USART1_RX_PIN GPIO_PIN_7
+#define CFG_HW_USART1_RX_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_RX_PULL GPIO_NOPULL
+#define CFG_HW_USART1_RX_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_RX_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_CTS_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
+#define CFG_HW_USART1_CTS_PORT GPIOA
+#define CFG_HW_USART1_CTS_PIN GPIO_PIN_11
+#define CFG_HW_USART1_CTS_MODE GPIO_MODE_AF_PP
+#define CFG_HW_USART1_CTS_PULL GPIO_PULLDOWN
+#define CFG_HW_USART1_CTS_SPEED GPIO_SPEED_FREQ_VERY_HIGH
+#define CFG_HW_USART1_CTS_ALTERNATE GPIO_AF7_USART1
+
+#define CFG_HW_USART1_DMA_TX_PREEMPTPRIORITY 0x0F
+#define CFG_HW_USART1_DMA_TX_SUBPRIORITY 0
+
+#define CFG_HW_USART1_DMAMUX_CLK_ENABLE __HAL_RCC_DMAMUX1_CLK_ENABLE
+#define CFG_HW_USART1_DMA_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE
+#define CFG_HW_USART1_TX_DMA_REQ DMA_REQUEST_USART1_TX
+#define CFG_HW_USART1_TX_DMA_CHANNEL DMA1_CHANNEL_2
+#define CFG_HW_USART1_TX_DMA_IRQn DMA1_CHANNEL_2_IRQn
+#define CFG_HW_USART1_DMA_TX_IRQHandler DMA1_CHANNEL_2_IRQHandler
+
+#endif /*HW_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_if.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_if.h
new file mode 100644
index 000000000..271a222a9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/hw_if.h
@@ -0,0 +1,250 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file hw_if.h
+ * @author MCD Application Team
+ * @brief Hardware Interface
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef HW_IF_H
+#define HW_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /* Includes ------------------------------------------------------------------*/
+#include "stm32wbxx.h"
+#include "stm32wbxx_ll_exti.h"
+#include "stm32wbxx_ll_system.h"
+#include "stm32wbxx_ll_rcc.h"
+#include "stm32wbxx_ll_ipcc.h"
+#include "stm32wbxx_ll_bus.h"
+#include "stm32wbxx_ll_pwr.h"
+#include "stm32wbxx_ll_cortex.h"
+#include "stm32wbxx_ll_utils.h"
+#include "stm32wbxx_ll_hsem.h"
+#include "stm32wbxx_ll_gpio.h"
+#include "stm32wbxx_ll_rtc.h"
+
+#ifdef USE_STM32WBXX_USB_DONGLE
+#include "stm32wbxx_usb_dongle.h"
+#endif
+#ifdef USE_STM32WBXX_NUCLEO
+#include "stm32wbxx_nucleo.h"
+#endif
+#ifdef USE_X_NUCLEO_EPD
+#include "x_nucleo_epd.h"
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+ /******************************************************************************
+ * HW UART
+ ******************************************************************************/
+ typedef enum
+ {
+ hw_uart1,
+ hw_uart2,
+ hw_lpuart1,
+ } hw_uart_id_t;
+
+ typedef enum
+ {
+ hw_uart_ok,
+ hw_uart_error,
+ hw_uart_busy,
+ hw_uart_to,
+ } hw_status_t;
+
+ void HW_UART_Init(hw_uart_id_t hw_uart_id);
+ void HW_UART_Receive_IT(hw_uart_id_t hw_uart_id, uint8_t *pData, uint16_t Size, void (*Callback)(void));
+ void HW_UART_Transmit_IT(hw_uart_id_t hw_uart_id, uint8_t *pData, uint16_t Size, void (*Callback)(void));
+ hw_status_t HW_UART_Transmit(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, uint32_t timeout);
+ hw_status_t HW_UART_Transmit_DMA(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*Callback)(void));
+ void HW_UART_Interrupt_Handler(hw_uart_id_t hw_uart_id);
+ void HW_UART_DMA_Interrupt_Handler(hw_uart_id_t hw_uart_id);
+
+ /******************************************************************************
+ * HW TimerServer
+ ******************************************************************************/
+ /* Exported types ------------------------------------------------------------*/
+ /**
+ * This setting is used when standby mode is supported.
+ * hw_ts_InitMode_Limited should be used when the device restarts from Standby Mode. In that case, the Timer Server does
+ * not re-initialized its context. Only the Hardware register which content has been lost is reconfigured
+ * Otherwise, hw_ts_InitMode_Full should be requested (Start from Power ON) and everything is re-initialized.
+ */
+ typedef enum
+ {
+ hw_ts_InitMode_Full,
+ hw_ts_InitMode_Limited,
+ } HW_TS_InitMode_t;
+
+ /**
+ * When a Timer is created as a SingleShot timer, it is not automatically restarted when the timeout occurs. However,
+ * the timer is kept reserved in the list and could be restarted at anytime with HW_TS_Start()
+ *
+ * When a Timer is created as a Repeated timer, it is automatically restarted when the timeout occurs.
+ */
+ typedef enum
+ {
+ hw_ts_SingleShot,
+ hw_ts_Repeated
+ } HW_TS_Mode_t;
+
+ /**
+ * hw_ts_Successful is returned when a Timer has been successfully created with HW_TS_Create(). Otherwise, hw_ts_Failed
+ * is returned. When hw_ts_Failed is returned, that means there are not enough free slots in the list to create a
+ * Timer. In that case, CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER should be increased
+ */
+ typedef enum
+ {
+ hw_ts_Successful,
+ hw_ts_Failed,
+ }HW_TS_ReturnStatus_t;
+
+ typedef void (*HW_TS_pTimerCb_t)(void);
+
+ /**
+ * @brief Initialize the timer server
+ * This API shall be called by the application before any timer is requested to the timer server. It
+ * configures the RTC module to be connected to the LSI input clock.
+ *
+ * @param TimerInitMode: When the device restarts from Standby, it should request hw_ts_InitMode_Limited so that the
+ * Timer context is not re-initialized. Otherwise, hw_ts_InitMode_Full should be requested
+ * @param hrtc: RTC Handle
+ * @retval None
+ */
+ void HW_TS_Init(HW_TS_InitMode_t TimerInitMode, RTC_HandleTypeDef *hrtc);
+
+ /**
+ * @brief Interface to create a virtual timer
+ * The user shall call this API to create a timer. Once created, the timer is reserved to the module until it
+ * has been deleted. When creating a timer, the user shall specify the mode (single shot or repeated), the
+ * callback to be notified when the timer expires and a module ID to identify in the timer interrupt handler
+ * which module is concerned. In return, the user gets a timer ID to handle it.
+ *
+ * @param TimerProcessID: This is an identifier provided by the user and returned in the callback to allow
+ * identification of the requester
+ * @param pTimerId: Timer Id returned to the user to request operation (start, stop, delete)
+ * @param TimerMode: Mode of the virtual timer (Single shot or repeated)
+ * @param pTimerCallBack: Callback when the virtual timer expires
+ * @retval HW_TS_ReturnStatus_t: Return whether the creation is sucessfull or not
+ */
+ HW_TS_ReturnStatus_t HW_TS_Create(uint32_t TimerProcessID, uint8_t *pTimerId, HW_TS_Mode_t TimerMode, HW_TS_pTimerCb_t pTimerCallBack);
+
+ /**
+ * @brief Stop a virtual timer
+ * This API may be used to stop a running timer. A timer which is stopped is move to the pending state.
+ * A pending timer may be restarted at any time with a different timeout value but the mode cannot be changed.
+ * Nothing is done when it is called to stop a timer which has been already stopped
+ *
+ * @param TimerID: Id of the timer to stop
+ * @retval None
+ */
+ void HW_TS_Stop(uint8_t TimerID);
+
+ /**
+ * @brief Start a virtual timer
+ * This API shall be used to start a timer. The timeout value is specified and may be different each time.
+ * When the timer is in the single shot mode, it will move to the pending state when it expires. The user may
+ * restart it at any time with a different timeout value. When the timer is in the repeated mode, it always
+ * stay in the running state. When the timer expires, it will be restarted with the same timeout value.
+ * This API shall not be called on a running timer.
+ *
+ * @param TimerID: The ID Id of the timer to start
+ * @param timeout_ticks: Number of ticks of the virtual timer (Maximum value is (0xFFFFFFFF-0xFFFF = 0xFFFF0000)
+ * @retval None
+ */
+ void HW_TS_Start(uint8_t TimerID, uint32_t timeout_ticks);
+
+ /**
+ * @brief Delete a virtual timer from the list
+ * This API should be used when a timer is not needed anymore by the user. A deleted timer is removed from
+ * the timer list managed by the timer server. It cannot be restarted again. The user has to go with the
+ * creation of a new timer if required and may get a different timer id
+ *
+ * @param TimerID: The ID of the timer to remove from the list
+ * @retval None
+ */
+ void HW_TS_Delete(uint8_t TimerID);
+
+ /**
+ * @brief Schedule the timer list on the timer interrupt handler
+ * This interrupt handler shall be called by the application in the RTC interrupt handler. This handler takes
+ * care of clearing all status flag required in the RTC and EXTI peripherals
+ *
+ * @param None
+ * @retval None
+ */
+ void HW_TS_RTC_Wakeup_Handler(void);
+
+ /**
+ * @brief Return the number of ticks to count before the interrupt
+ * This API returns the number of ticks left to be counted before an interrupt is generated by the
+ * Timer Server. This API may be used by the application for power management optimization. When the system
+ * enters low power mode, the mode selection is a tradeoff between the wakeup time where the CPU is running
+ * and the time while the CPU will be kept in low power mode before next wakeup. The deeper is the
+ * low power mode used, the longer is the wakeup time. The low power mode management considering wakeup time
+ * versus time in low power mode is implementation specific
+ * When the timer is disabled (No timer in the list), it returns 0xFFFF
+ *
+ * @param None
+ * @retval The number of ticks left to count
+ */
+ uint16_t HW_TS_RTC_ReadLeftTicksToCount(void);
+
+ /**
+ * @brief Notify the application that a registered timer has expired
+ * This API shall be implemented by the user application.
+ * This API notifies the application that a timer expires. This API is running in the RTC Wakeup interrupt
+ * context. The application may implement an Operating System to change the context priority where the timer
+ * callback may be handled. This API provides the module ID to identify which module is concerned and to allow
+ * sending the information to the correct task
+ *
+ * @param TimerProcessID: The TimerProcessId associated with the timer when it has been created
+ * @param TimerID: The TimerID of the expired timer
+ * @param pTimerCallBack: The Callback associated with the timer when it has been created
+ * @retval None
+ */
+ void HW_TS_RTC_Int_AppNot(uint32_t TimerProcessID, uint8_t TimerID, HW_TS_pTimerCb_t pTimerCallBack);
+
+ /**
+ * @brief Notify the application that the wakeupcounter has been updated
+ * This API should be implemented by the user application
+ * This API notifies the application that the counter has been updated. This is expected to be used along
+ * with the HW_TS_RTC_ReadLeftTicksToCount () API. It could be that the counter has been updated since the
+ * last call of HW_TS_RTC_ReadLeftTicksToCount () and before entering low power mode. This notification
+ * provides a way to the application to solve that race condition to reevaluate the counter value before
+ * entering low power mode
+ *
+ * @param None
+ * @retval None
+ */
+ void HW_TS_RTC_CountUpdated_AppNot(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*HW_IF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/main.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/main.h
new file mode 100644
index 000000000..68182bc5a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/main.h
@@ -0,0 +1,71 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.h
+ * @brief : Header for main.c file.
+ * This file contains the common defines of the application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32wbxx_hal.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void Error_Handler(void);
+
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+/* Private defines -----------------------------------------------------------*/
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32_lpm_if.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32_lpm_if.h
new file mode 100644
index 000000000..70abecaa9
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32_lpm_if.h
@@ -0,0 +1,81 @@
+/* USER CODE BEGIN Header */
+/**
+******************************************************************************
+* @file stm32_lpm_if.h
+* @brief Header for stm32_lpm_if.c module (device specific LP management)
+******************************************************************************
+* @attention
+*
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+* All rights reserved.</center></h2>
+*
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+*
+******************************************************************************
+*/
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32_LPM_IF_H
+#define __STM32_LPM_IF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+
+/**
+ * @brief Enters Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_EnterOffMode( void );
+/**
+ * @brief Exits Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_ExitOffMode( void );
+
+/**
+ * @brief Enters Low Power Stop Mode
+ * @note ARM exists the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterStopMode( void );
+/**
+ * @brief Exits Low Power Stop Mode
+ * @note Enable the pll at 32MHz
+ * @param none
+ * @retval none
+ */
+void PWR_ExitStopMode( void );
+
+/**
+ * @brief Enters Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterSleepMode( void );
+
+/**
+ * @brief Exits Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_ExitSleepMode( void );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__STM32_LPM_IF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_hal_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_hal_conf.h
new file mode 100644
index 000000000..5fc609769
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_hal_conf.h
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * @file stm32wbxx_hal_conf.h
+ * @author MCD Application Team
+ * @brief HAL configuration file.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32WBxx_HAL_CONF_H
+#define __STM32WBxx_HAL_CONF_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* ########################## Module Selection ############################## */
+/**
+ * @brief This is the list of modules to be used in the HAL driver
+ */
+#define HAL_MODULE_ENABLED
+/*#define HAL_ADC_MODULE_ENABLED */
+/*#define HAL_CRYP_MODULE_ENABLED */
+/*#define HAL_COMP_MODULE_ENABLED */
+/*#define HAL_CRC_MODULE_ENABLED */
+#define HAL_HSEM_MODULE_ENABLED
+/*#define HAL_I2C_MODULE_ENABLED */
+/*#define HAL_IPCC_MODULE_ENABLED */
+/*#define HAL_IRDA_MODULE_ENABLED */
+/*#define HAL_IWDG_MODULE_ENABLED */
+/*#define HAL_LCD_MODULE_ENABLED */
+/*#define HAL_LPTIM_MODULE_ENABLED */
+#define HAL_PCD_MODULE_ENABLED
+/*#define HAL_PKA_MODULE_ENABLED */
+/*#define HAL_QSPI_MODULE_ENABLED */
+/*#define HAL_RNG_MODULE_ENABLED */
+#define HAL_RTC_MODULE_ENABLED
+/*#define HAL_SAI_MODULE_ENABLED */
+/*#define HAL_SMBUS_MODULE_ENABLED */
+/*#define HAL_SMARTCARD_MODULE_ENABLED */
+/*#define HAL_SPI_MODULE_ENABLED */
+/*#define HAL_TIM_MODULE_ENABLED */
+/*#define HAL_TSC_MODULE_ENABLED */
+#define HAL_UART_MODULE_ENABLED
+/*#define HAL_USART_MODULE_ENABLED */
+/*#define HAL_WWDG_MODULE_ENABLED */
+#define HAL_EXTI_MODULE_ENABLED
+#define HAL_CORTEX_MODULE_ENABLED
+#define HAL_DMA_MODULE_ENABLED
+#define HAL_FLASH_MODULE_ENABLED
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED
+
+#define USE_HAL_ADC_REGISTER_CALLBACKS 0u
+#define USE_HAL_COMP_REGISTER_CALLBACKS 0u
+#define USE_HAL_CRYP_REGISTER_CALLBACKS 0u
+#define USE_HAL_I2C_REGISTER_CALLBACKS 0u
+#define USE_HAL_IRDA_REGISTER_CALLBACKS 0u
+#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0u
+#define USE_HAL_PCD_REGISTER_CALLBACKS 0u
+#define USE_HAL_PKA_REGISTER_CALLBACKS 0u
+#define USE_HAL_QSPI_REGISTER_CALLBACKS 0u
+#define USE_HAL_RNG_REGISTER_CALLBACKS 0u
+#define USE_HAL_RTC_REGISTER_CALLBACKS 0u
+#define USE_HAL_SAI_REGISTER_CALLBACKS 0u
+#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0u
+#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0u
+#define USE_HAL_SPI_REGISTER_CALLBACKS 0u
+#define USE_HAL_TIM_REGISTER_CALLBACKS 0u
+#define USE_HAL_TSC_REGISTER_CALLBACKS 0u
+#define USE_HAL_UART_REGISTER_CALLBACKS 0u
+#define USE_HAL_USART_REGISTER_CALLBACKS 0u
+#define USE_HAL_WWDG_REGISTER_CALLBACKS 0u
+
+/* ########################## Oscillator Values adaptation ####################*/
+/**
+ * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSE is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSE_VALUE)
+#define HSE_VALUE 32000000U /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (HSE_STARTUP_TIMEOUT)
+ #define HSE_STARTUP_TIMEOUT ((uint32_t)100) /*!< Time out for HSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief Internal Multiple Speed oscillator (MSI) default value.
+ * This value is the default MSI range value after Reset.
+ */
+#if !defined (MSI_VALUE)
+ #define MSI_VALUE ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* MSI_VALUE */
+
+/**
+ * @brief Internal High Speed oscillator (HSI) value.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSI is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSI_VALUE)
+#define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @brief Internal Low Speed oscillator (LSI1) value.
+ */
+#if !defined (LSI1_VALUE)
+ #define LSI1_VALUE ((uint32_t)32000) /*!< LSI1 Typical Value in Hz*/
+#endif /* LSI1_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+/**
+ * @brief Internal Low Speed oscillator (LSI2) value.
+ */
+#if !defined (LSI2_VALUE)
+ #define LSI2_VALUE ((uint32_t)32000) /*!< LSI2 Typical Value in Hz*/
+#endif /* LSI2_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+
+/**
+ * @brief External Low Speed oscillator (LSE) value.
+ * This value is used by the UART, RTC HAL module to compute the system frequency
+ */
+#if !defined (LSE_VALUE)
+#define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/
+#endif /* LSE_VALUE */
+
+/**
+ * @brief Internal Multiple Speed oscillator (HSI48) default value.
+ * This value is the default HSI48 range value after Reset.
+ */
+#if !defined (HSI48_VALUE)
+ #define HSI48_VALUE ((uint32_t)48000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI48_VALUE */
+
+#if !defined (LSE_STARTUP_TIMEOUT)
+#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief External clock source for SAI1 peripheral
+ * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source
+ * frequency.
+ */
+#if !defined (EXTERNAL_SAI1_CLOCK_VALUE)
+ #define EXTERNAL_SAI1_CLOCK_VALUE ((uint32_t)2097000) /*!< Value of the SAI1 External clock source in Hz*/
+#endif /* EXTERNAL_SAI1_CLOCK_VALUE */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+ === you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+ * @brief This is the HAL system configuration section
+ */
+
+#define VDD_VALUE 3300U /*!< Value of VDD in mv */
+#define TICK_INT_PRIORITY 0U /*!< tick interrupt priority */
+#define USE_RTOS 0U
+#define PREFETCH_ENABLE 1U
+#define INSTRUCTION_CACHE_ENABLE 1U
+#define DATA_CACHE_ENABLE 1U
+
+/* ########################## Assert Selection ############################## */
+/**
+ * @brief Uncomment the line below to expanse the "assert_param" macro in the
+ * HAL drivers code
+ */
+/* #define USE_FULL_ASSERT 1U */
+
+/* ################## SPI peripheral configuration ########################## */
+
+/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
+ * Activated: CRC code is present inside driver
+ * Deactivated: CRC code cleaned from driver
+ */
+
+#define USE_SPI_CRC 0U
+
+/* Includes ------------------------------------------------------------------*/
+/**
+ * @brief Include module's header file
+ */
+#ifdef HAL_DMA_MODULE_ENABLED
+ #include "stm32wbxx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+ #include "stm32wbxx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_COMP_MODULE_ENABLED
+ #include "stm32wbxx_hal_comp.h"
+#endif /* HAL_COMP_MODULE_ENABLED */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+ #include "stm32wbxx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+ #include "stm32wbxx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_CRYP_MODULE_ENABLED
+ #include "stm32wbxx_hal_cryp.h"
+#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32wbxx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+ #include "stm32wbxx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+ #include "stm32wbxx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+#ifdef HAL_HSEM_MODULE_ENABLED
+ #include "stm32wbxx_hal_hsem.h"
+#endif /* HAL_HSEM_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+ #include "stm32wbxx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_IPCC_MODULE_ENABLED
+ #include "stm32wbxx_hal_ipcc.h"
+#endif /* HAL_IPCC_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+ #include "stm32wbxx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+ #include "stm32wbxx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_LCD_MODULE_ENABLED
+ #include "stm32wbxx_hal_lcd.h"
+#endif /* HAL_LCD_MODULE_ENABLED */
+
+#ifdef HAL_LPTIM_MODULE_ENABLED
+ #include "stm32wbxx_hal_lptim.h"
+#endif /* HAL_LPTIM_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+ #include "stm32wbxx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_PKA_MODULE_ENABLED
+ #include "stm32wbxx_hal_pka.h"
+#endif /* HAL_PKA_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+ #include "stm32wbxx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_QSPI_MODULE_ENABLED
+ #include "stm32wbxx_hal_qspi.h"
+#endif /* HAL_QSPI_MODULE_ENABLED */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+ #include "stm32wbxx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_RNG_MODULE_ENABLED
+ #include "stm32wbxx_hal_rng.h"
+#endif /* HAL_RNG_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+ #include "stm32wbxx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_SAI_MODULE_ENABLED
+ #include "stm32wbxx_hal_sai.h"
+#endif /* HAL_SAI_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+ #include "stm32wbxx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_SMBUS_MODULE_ENABLED
+ #include "stm32wbxx_hal_smbus.h"
+#endif /* HAL_SMBUS_MODULE_ENABLED */
+
+#ifdef HAL_SPI_MODULE_ENABLED
+ #include "stm32wbxx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+ #include "stm32wbxx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_TSC_MODULE_ENABLED
+ #include "stm32wbxx_hal_tsc.h"
+#endif /* HAL_TSC_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+ #include "stm32wbxx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+ #include "stm32wbxx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+ #include "stm32wbxx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+/* Exported macro ------------------------------------------------------------*/
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief The assert_param macro is used for function's parameters check.
+ * @param expr If expr is false, it calls assert_failed function
+ * which reports the name of the source file and the source
+ * line number of the call that failed.
+ * If expr is true, it returns no value.
+ * @retval None
+ */
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+ void assert_failed(uint8_t* file, uint32_t line);
+#else
+ #define assert_param(expr) ((void)0U)
+#endif /* USE_FULL_ASSERT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32WBxx_HAL_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_it.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_it.h
new file mode 100644
index 000000000..ccef6a7e4
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm32wbxx_it.h
@@ -0,0 +1,95 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32wbxx_it.h
+ * @brief This file contains the headers of the interrupt handlers.
+ *******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32WBxx_IT_H
+#define __STM32WBxx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "app_common.h"
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+ /* External variable ----------------------------------------------------------*/
+ #if (CFG_USB_INTERFACE_ENABLE != 0)
+ extern PCD_HandleTypeDef hpcd; /* Defined in the Thread Middleware */
+ #endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void SVC_Handler(void);
+void DebugMon_Handler(void);
+void PendSV_Handler(void);
+void SysTick_Handler(void);
+void PVD_PVM_IRQHandler(void);
+void FLASH_IRQHandler(void);
+void RCC_IRQHandler(void);
+void DMA1_Channel1_IRQHandler(void);
+void DMA1_Channel2_IRQHandler(void);
+void C2SEV_PWR_C2H_IRQHandler(void);
+void USART1_IRQHandler(void);
+void LPUART1_IRQHandler(void);
+void PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler(void);
+void HSEM_IRQHandler(void);
+void FPU_IRQHandler(void);
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+void USB_LP_IRQHandler(void);
+void USB_HP_IRQHandler(void);
+void USB_FS_WKUP_IRQHandler(void);
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+/* USER CODE BEGIN EFP */
+void RTC_WKUP_IRQHandler(void);
+void EXTI15_10_IRQHandler(void);
+void IPCC_C1_TX_IRQHandler(void);
+void IPCC_C1_RX_IRQHandler(void);
+/* USER CODE END EFP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32WBxx_IT_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm_logging.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm_logging.h
new file mode 100644
index 000000000..58877c570
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/stm_logging.h
@@ -0,0 +1,55 @@
+/**
+ ******************************************************************************
+ * File Name : stm_logging.h
+ * Description : Application header file for logging
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+#ifndef STM_LOGGING_H_
+#define STM_LOGGING_H_
+
+#define LOG_LEVEL_NONE 0 /* None */
+#define LOG_LEVEL_CRIT 1U /* Critical */
+#define LOG_LEVEL_WARN 2U /* Warning */
+#define LOG_LEVEL_INFO 3U /* Info */
+#define LOG_LEVEL_DEBG 4U /* Debug */
+
+#define APP_DBG_FULL(level, region, ...) \
+ if (APPLI_PRINT_FILE_FUNC_LINE == 1U) \
+ { \
+ printf("\r\n[%s][%s][%d] ", DbgTraceGetFileName(__FILE__), __FUNCTION__, __LINE__); \
+ } \
+ logApplication(level, region, __VA_ARGS__);
+
+#define APP_DBG(...) \
+ if (APPLI_PRINT_FILE_FUNC_LINE == 1U) \
+ { \
+ printf("\r\n[%s][%s][%d] ", DbgTraceGetFileName(__FILE__), __FUNCTION__, __LINE__); \
+ } \
+ logApplication(LOG_LEVEL_NONE, APPLI_LOG_REGION_GENERAL, __VA_ARGS__);
+
+/**
+ * This enumeration represents log regions.
+ *
+ */
+typedef enum {
+ APPLI_LOG_REGION_GENERAL = 1U, /* General */
+ APPLI_LOG_REGION_ZIGBEE_API = 2U, /* OpenThread API */
+} appliLogRegion_t;
+
+typedef uint8_t appliLogLevel_t;
+
+void logApplication(appliLogLevel_t aLogLevel, appliLogRegion_t aLogRegion, const char *aFormat, ...);
+
+#endif /* STM_LOGGING_H_ */
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/utilities_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/utilities_conf.h
new file mode 100644
index 000000000..4dde3509a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/utilities_conf.h
@@ -0,0 +1,68 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : utilities_conf.h
+ * Description : Configuration file for STM32 Utilities.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* 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"
+
+/******************************************************************************
+ * 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 (2)
+#define UTIL_SEQ_MEMSET8( dest, value, size ) UTILS_MEMSET8( dest, value, size )
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*UTILITIES_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/vcp_conf.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/vcp_conf.h
new file mode 100644
index 000000000..886999bf0
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Inc/vcp_conf.h
@@ -0,0 +1,54 @@
+/**
+ ******************************************************************************
+ * @file vcp_conf.h
+ * @author MCD Application Team
+ * @brief Configuration of the vcp interface
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __VCP_CONF_H
+#define __VCP_CONF_H
+
+#include "app_zigbee.h"
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+#define VCP_BAUD_RATE (115200)
+
+#define VCP_TASK_ID (CFG_TASK_VCP_SEND_DATA)
+#define VCP_TASK_PRIO (CFG_SCH_PRIO_1)
+
+#ifdef VCP_TX_PATH_INTERFACE_READY_SETUP_TIME
+#define VCP_TIMER_PROC_ID (CFG_TIM_PROC_ID_ISR)
+#endif
+
+/* External variables --------------------------------------------------------*/
+/* Exported macros -----------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*__VCP_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/app_entry.c
new file mode 100644
index 000000000..d46e690b6
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/app_entry.c
@@ -0,0 +1,436 @@
+/**
+ ******************************************************************************
+ * File Name : app_entry.c
+ * Description : Entry application source file for STM32WPAN Middleware.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "main.h"
+#include "app_entry.h"
+#include "app_zigbee.h"
+#include "app_conf.h"
+#include "hw_conf.h"
+#include "stm32_seq.h"
+#include "stm_logging.h"
+#include "shci_tl.h"
+#include "stm32_lpm.h"
+#include "dbg_trace.h"
+#include "shci.h"
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+#include "vcp.h"
+#include "vcp_conf.h"
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+/* Private includes -----------------------------------------------------------*/
+
+/* Private typedef -----------------------------------------------------------*/
+extern RTC_HandleTypeDef hrtc;
+
+/* Private defines -----------------------------------------------------------*/
+#define POOL_SIZE (CFG_TL_EVT_QUEUE_LENGTH * 4U * DIVC((sizeof(TL_PacketHeader_t) + TL_EVENT_FRAME_SIZE), 4U))
+
+/* Private variables ---------------------------------------------------------*/
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t EvtPool[POOL_SIZE];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t SystemCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t SystemSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+static uint8_t VcpTxBuffer[MAX_DBG_TRACE_MSG_SIZE]; /* Transmit buffer over USB */
+#endif
+
+/* Global function prototypes -----------------------------------------------*/
+size_t __write(int handle, const unsigned char *buf, size_t bufSize);
+
+/* Private functions prototypes-----------------------------------------------*/
+static void SystemPower_Config(void);
+static void Init_Debug(void);
+static void appe_Tl_Init(void);
+static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status);
+static void APPE_SysUserEvtRx(void *pPayload);
+static void APPE_SysEvtReadyProcessing(void);
+static void APPE_SysEvtError(SCHI_SystemErrCode_t ErrorCode);
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+extern void MX_LPUART1_UART_Init(void);
+#endif
+#if (CFG_HW_USART1_ENABLED == 1)
+extern void MX_USART1_UART_Init(void);
+#endif
+
+/* USER CODE BEGIN PFP */
+static void Led_Init(void);
+static void Button_Init(void);
+/* USER CODE END PFP */
+
+/* Functions Definition ------------------------------------------------------*/
+void APPE_Init( void )
+{
+ SystemPower_Config(); /**< Configure the system Power Mode */
+
+ HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
+
+ Init_Debug();
+ /**
+ * The Standby mode should not be entered before the initialization is over
+ * The default state of the Low Power Manager is to allow the Standby Mode so an request is needed here
+ */
+ UTIL_LPM_SetOffMode(1 << CFG_LPM_APP, UTIL_LPM_DISABLE);
+ Led_Init();
+ Button_Init();
+ appe_Tl_Init(); /* Initialize all transport layers */
+
+ /**
+ * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
+ * received on the system channel before starting the Zigbee Stack
+ * This system event is received with APPE_SysUserEvtRx()
+ */
+
+ return;
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+static void Init_Debug( void )
+{
+#if (CFG_DEBUGGER_SUPPORTED == 1)
+ /**
+ * Keep debugger enabled while in any low power mode
+ */
+ HAL_DBGMCU_EnableDBGSleepMode();
+
+ /***************** ENABLE DEBUGGER *************************************/
+ LL_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
+ LL_C2_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
+
+#else
+
+ GPIO_InitTypeDef gpio_config = {0};
+
+ gpio_config.Pull = GPIO_NOPULL;
+ gpio_config.Mode = GPIO_MODE_ANALOG;
+
+ gpio_config.Pin = GPIO_PIN_15 | GPIO_PIN_14 | GPIO_PIN_13;
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOA, &gpio_config);
+ __HAL_RCC_GPIOA_CLK_DISABLE();
+
+ gpio_config.Pin = GPIO_PIN_4 | GPIO_PIN_3;
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ HAL_GPIO_Init(GPIOB, &gpio_config);
+ __HAL_RCC_GPIOB_CLK_DISABLE();
+
+ HAL_DBGMCU_DisableDBGSleepMode();
+ HAL_DBGMCU_DisableDBGStopMode();
+ HAL_DBGMCU_DisableDBGStandbyMode();
+
+#endif /* (CFG_DEBUGGER_SUPPORTED == 1) */
+
+#if(CFG_DEBUG_TRACE != 0)
+ DbgTraceInit();
+#endif
+
+ return;
+}
+
+/**
+ * @brief Configure the system for power optimization
+ *
+ * @note This API configures the system to be ready for low power mode
+ *
+ * @param None
+ * @retval None
+ */
+static void SystemPower_Config( void )
+{
+
+ /**
+ * Select HSI as system clock source after Wake Up from Stop mode
+ */
+ LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI);
+
+ /* Initialize low power manager */
+ UTIL_LPM_Init( );
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+ /**
+ * Enable USB power
+ */
+ HAL_PWREx_EnableVddUSB();
+#endif
+
+ return;
+}
+
+static void appe_Tl_Init( void )
+{
+ TL_MM_Config_t tl_mm_config;
+ SHCI_TL_HciInitConf_t SHci_Tl_Init_Conf;
+ /**< Reference table initialization */
+ TL_Init();
+
+ /**< System channel initialization */
+ UTIL_SEQ_RegTask( 1<< CFG_TASK_SYSTEM_HCI_ASYNCH_EVT, UTIL_SEQ_RFU, shci_user_evt_proc );
+ SHci_Tl_Init_Conf.p_cmdbuffer = (uint8_t*)&SystemCmdBuffer;
+ SHci_Tl_Init_Conf.StatusNotCallBack = APPE_SysStatusNot;
+ shci_init(APPE_SysUserEvtRx, (void*) &SHci_Tl_Init_Conf);
+
+ /**< Memory Manager channel initialization */
+ tl_mm_config.p_BleSpareEvtBuffer = 0;
+ tl_mm_config.p_SystemSpareEvtBuffer = SystemSpareEvtBuffer;
+ tl_mm_config.p_AsynchEvtPool = EvtPool;
+ tl_mm_config.AsynchEvtPoolSize = POOL_SIZE;
+ TL_MM_Init( &tl_mm_config );
+
+ TL_Enable();
+
+ return;
+}
+
+
+static void APPE_SysStatusNot(SHCI_TL_CmdStatus_t status)
+{
+ UNUSED(status);
+ return;
+}
+
+/**
+ * @brief Trap a notification coming from the M0 firmware
+ * @param pPayload : payload associated to the notification
+ *
+ * @retval None
+ */
+
+/**
+ * The type of the payload for a system user event is tSHCI_UserEvtRxParam
+ * When the system event is both :
+ * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
+ * - reported by the FUS (sysevt_ready_rsp == RSS_FW_RUNNING)
+ * The buffer shall not be released
+ * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
+ * When the status is not filled, the buffer is released by default
+ */
+static void APPE_SysUserEvtRx( void * pPayload )
+{
+ TL_AsynchEvt_t *p_sys_event;
+ p_sys_event = (TL_AsynchEvt_t*)(((tSHCI_UserEvtRxParam*)pPayload)->pckt->evtserial.evt.payload);
+
+ switch(p_sys_event->subevtcode)
+ {
+ case SHCI_SUB_EVT_CODE_READY:
+ APPE_SysEvtReadyProcessing();
+ break;
+ case SHCI_SUB_EVT_ERROR_NOTIF:
+ APPE_SysEvtError((SCHI_SystemErrCode_t) (p_sys_event->payload[0]));
+ break;
+ default:
+ break;
+ }
+ return;
+}
+
+/**
+ * @brief Notify a system error coming from the M0 firmware
+ * @param ErrorCode : errorCode detected by the M0 firmware
+ *
+ * @retval None
+ */
+static void APPE_SysEvtError( SCHI_SystemErrCode_t ErrorCode)
+{
+ switch (ErrorCode) // TODO
+ {
+ case ERR_THREAD_LLD_FATAL_ERROR:
+ APP_DBG("** ERR_ZIGBEE : LLD_FATAL_ERROR \n");
+ break;
+ case ERR_THREAD_UNKNOWN_CMD:
+ APP_DBG("** ERR_ZIGBEE : UNKNOWN_CMD \n");
+ break;
+ default:
+ APP_DBG("** ERR_ZIGBEE : ErroCode=%d \n", ErrorCode);
+ break;
+ }
+ return;
+}
+
+static void APPE_SysEvtReadyProcessing( void )
+{
+ /* Traces channel initialization */
+ TL_TRACES_Init();
+
+ APP_ZIGBEE_Init();
+ UTIL_LPM_SetOffMode(1U << CFG_LPM_APP, UTIL_LPM_ENABLE);
+ return;
+}
+
+/* USER CODE BEGIN FD_LOCAL_FUNCTIONS */
+static void Led_Init( void )
+{
+#if (CFG_LED_SUPPORTED == 1U)
+ /**
+ * Leds Initialization
+ */
+
+ BSP_LED_Init(LED_BLUE);
+ BSP_LED_Init(LED_GREEN);
+ BSP_LED_Init(LED_RED);
+
+#endif
+
+ return;
+}
+
+static void Button_Init( void )
+{
+#if (CFG_BUTTON_SUPPORTED == 1U)
+ /**
+ * Button Initialization
+ */
+ BSP_PB_Init(BUTTON_SW1, BUTTON_MODE_EXTI);
+#endif
+
+ return;
+}
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void UTIL_SEQ_Idle( void )
+{
+#if ( CFG_LPM_SUPPORTED == 1)
+ UTIL_LPM_EnterLowPower( );
+#endif
+ return;
+}
+
+/**
+ * @brief This function is called by the scheduler each time an event
+ * is pending.
+ *
+ * @param evt_waited_bm : Event pending.
+ * @retval None
+ */
+void UTIL_SEQ_EvtIdle( UTIL_SEQ_bm_t task_id_bm, UTIL_SEQ_bm_t evt_waited_bm )
+{
+ switch (evt_waited_bm) {
+ case EVENT_ACK_FROM_M0_EVT:
+ /* Run only the task CFG_TASK_MSG_FROM_M0_TO_M4 */
+ UTIL_SEQ_Run((1U << CFG_TASK_MSG_FROM_M0_TO_M4));
+ break;
+ case EVENT_SYNCHRO_BYPASS_IDLE:
+ UTIL_SEQ_SetEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+ /* Run only the task CFG_TASK_MSG_FROM_M0_TO_M4 */
+ UTIL_SEQ_Run((1U << CFG_TASK_MSG_FROM_M0_TO_M4));
+ break;
+
+ default:
+ /* default case */
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ break;
+ }
+}
+
+void shci_notify_asynch_evt(void* pdata)
+{
+ UNUSED(pdata);
+ UTIL_SEQ_SetTask(1U << CFG_TASK_SYSTEM_HCI_ASYNCH_EVT, CFG_SCH_PRIO_0);
+ return;
+}
+
+void shci_cmd_resp_release(uint32_t flag)
+{
+ UNUSED(flag);
+ UTIL_SEQ_SetEvt(1U << CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP);
+ return;
+}
+
+void shci_cmd_resp_wait(uint32_t timeout)
+{
+ UNUSED(timeout);
+ UTIL_SEQ_WaitEvt(1U << CFG_EVT_SYSTEM_HCI_CMD_EVT_RESP);
+ return;
+}
+
+/* Received trace buffer from M0 */
+void TL_TRACES_EvtReceived( TL_EvtPacket_t * hcievt )
+{
+#if(CFG_DEBUG_TRACE != 0)
+ /* Call write/print function using DMA from dbg_trace */
+ /* - Cast to TL_AsynchEvt_t* to get "real" payload (without Sub Evt code 2bytes),
+ - (-2) to size to remove Sub Evt Code */
+ DbgTraceWrite(1U, (const unsigned char *) ((TL_AsynchEvt_t *)(hcievt->evtserial.evt.payload))->payload, hcievt->evtserial.evt.plen - 2U);
+#endif /* CFG_DEBUG_TRACE */
+ /* Release buffer */
+ TL_MM_EvtDone( hcievt );
+}
+/**
+ * @brief Initialisation of the trace mechanism
+ * @param None
+ * @retval None
+ */
+#if(CFG_DEBUG_TRACE != 0)
+void DbgOutputInit( void )
+{
+#if (CFG_USB_INTERFACE_ENABLE == 0)
+ MX_USART1_UART_Init();
+#else
+ VCP_Init( &VcpTxBuffer[0], 0 );
+#endif
+ return;
+}
+
+/**
+ * @brief Management of the traces
+ * @param p_data : data
+ * @param size : size
+ * @param call-back :
+ * @retval None
+ */
+void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) )
+{
+#if (CFG_USB_INTERFACE_ENABLE == 0)
+ HW_UART_Transmit_DMA(CFG_DEBUG_TRACE_UART, p_data, size, cb);
+#else
+ VCP_SendData ( p_data , size , cb );
+#endif
+ return;
+}
+#endif
+
+/* USER CODE BEGIN FD_WRAP_FUNCTIONS */
+/**
+ * @brief This function manage the Push button action
+ * @param GPIO_Pin : GPIO pin which has been activated
+ * @retval None
+ */
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+ switch (GPIO_Pin) {
+ case BUTTON_SW1_PIN:
+ UTIL_SEQ_SetTask(1U << CFG_TASK_BUTTON_SW1,CFG_SCH_PRIO_1);
+ break;
+
+ default:
+ break;
+ }
+}
+/* USER CODE END FD_WRAP_FUNCTIONS */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_timerserver.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_timerserver.c
new file mode 100644
index 000000000..c842ba55e
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_timerserver.c
@@ -0,0 +1,893 @@
+/**
+ ******************************************************************************
+ * File Name : hw_timerserver.c
+ * Description : Hardware timerserver source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "hw_conf.h"
+
+/* Private typedef -----------------------------------------------------------*/
+typedef enum
+{
+ TimerID_Free,
+ TimerID_Created,
+ TimerID_Running
+}TimerIDStatus_t;
+
+typedef enum
+{
+ SSR_Read_Requested,
+ SSR_Read_Not_Requested
+}RequestReadSSR_t;
+
+typedef enum
+{
+ WakeupTimerValue_Overpassed,
+ WakeupTimerValue_LargeEnough
+}WakeupTimerLimitation_Status_t;
+
+typedef struct
+{
+ HW_TS_pTimerCb_t pTimerCallBack;
+ uint32_t CounterInit;
+ uint32_t CountLeft;
+ TimerIDStatus_t TimerIDStatus;
+ HW_TS_Mode_t TimerMode;
+ uint32_t TimerProcessID;
+ uint8_t PreviousID;
+ uint8_t NextID;
+}TimerContext_t;
+
+/* Private defines -----------------------------------------------------------*/
+#define SSR_FORBIDDEN_VALUE 0xFFFFFFFF
+#define TIMER_LIST_EMPTY 0xFFFF
+
+/* Private macros ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+/**
+ * START of Section TIMERSERVER_CONTEXT
+ */
+
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile TimerContext_t aTimerContext[CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER];
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint8_t CurrentRunningTimerID;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint8_t PreviousRunningTimerID;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile uint32_t SSRValueOnLastSetup;
+PLACE_IN_SECTION("TIMERSERVER_CONTEXT") static volatile WakeupTimerLimitation_Status_t WakeupTimerLimitation;
+
+/**
+ * END of Section TIMERSERVER_CONTEXT
+ */
+
+static RTC_HandleTypeDef *phrtc; /**< RTC handle */
+static uint8_t WakeupTimerDivider;
+static uint8_t AsynchPrescalerUserConfig;
+static uint16_t SynchPrescalerUserConfig;
+static volatile uint16_t MaxWakeupTimerSetup;
+
+/* Global variables ----------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+static void RestartWakeupCounter(uint16_t Value);
+static uint16_t ReturnTimeElapsed(void);
+static void RescheduleTimerList(void);
+static void UnlinkTimer(uint8_t TimerID, RequestReadSSR_t RequestReadSSR);
+static void LinkTimerBefore(uint8_t TimerID, uint8_t RefTimerID);
+static void LinkTimerAfter(uint8_t TimerID, uint8_t RefTimerID);
+static uint16_t linkTimer(uint8_t TimerID);
+static uint32_t ReadRtcSsrValue(void);
+
+__weak void HW_TS_RTC_CountUpdated_AppNot(void);
+
+/* Functions Definition ------------------------------------------------------*/
+
+/**
+ * @brief Read the RTC_SSR value
+ * As described in the reference manual, the RTC_SSR shall be read twice to ensure
+ * reliability of the value
+ * @param None
+ * @retval SSR value read
+ */
+static uint32_t ReadRtcSsrValue(void)
+{
+ uint32_t first_read;
+ uint32_t second_read;
+
+ first_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+
+ second_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+
+ while(first_read != second_read)
+ {
+ first_read = second_read;
+
+ second_read = (uint32_t)(READ_BIT(RTC->SSR, RTC_SSR_SS));
+ }
+
+ return second_read;
+}
+
+/**
+ * @brief Insert a Timer in the list after the Timer ID specified
+ * @param TimerID: The ID of the Timer
+ * @param RefTimerID: The ID of the Timer to be linked after
+ * @retval None
+ */
+static void LinkTimerAfter(uint8_t TimerID, uint8_t RefTimerID)
+{
+ uint8_t next_id;
+
+ next_id = aTimerContext[RefTimerID].NextID;
+
+ if(next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[next_id].PreviousID = TimerID;
+ }
+ aTimerContext[TimerID].NextID = next_id;
+ aTimerContext[TimerID].PreviousID = RefTimerID ;
+ aTimerContext[RefTimerID].NextID = TimerID;
+
+ return;
+}
+
+/**
+ * @brief Insert a Timer in the list before the ID specified
+ * @param TimerID: The ID of the Timer
+ * @param RefTimerID: The ID of the Timer to be linked before
+ * @retval None
+ */
+static void LinkTimerBefore(uint8_t TimerID, uint8_t RefTimerID)
+{
+ uint8_t previous_id;
+
+ if(RefTimerID != CurrentRunningTimerID)
+ {
+ previous_id = aTimerContext[RefTimerID].PreviousID;
+
+ aTimerContext[previous_id].NextID = TimerID;
+ aTimerContext[TimerID].NextID = RefTimerID;
+ aTimerContext[TimerID].PreviousID = previous_id ;
+ aTimerContext[RefTimerID].PreviousID = TimerID;
+ }
+ else
+ {
+ aTimerContext[TimerID].NextID = RefTimerID;
+ aTimerContext[RefTimerID].PreviousID = TimerID;
+ }
+
+ return;
+}
+
+/**
+ * @brief Insert a Timer in the list
+ * @param TimerID: The ID of the Timer
+ * @retval None
+ */
+static uint16_t linkTimer(uint8_t TimerID)
+{
+ uint32_t time_left;
+ uint16_t time_elapsed;
+ uint8_t timer_id_lookup;
+ uint8_t next_id;
+
+ if(CurrentRunningTimerID == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ /**
+ * No timer in the list
+ */
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = TimerID;
+ aTimerContext[TimerID].NextID = CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER;
+
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+ time_elapsed = 0;
+ }
+ else
+ {
+ time_elapsed = ReturnTimeElapsed();
+
+ /**
+ * update count of the timer to be linked
+ */
+ aTimerContext[TimerID].CountLeft += time_elapsed;
+ time_left = aTimerContext[TimerID].CountLeft;
+
+ /**
+ * Search for index where the new timer shall be linked
+ */
+ if(aTimerContext[CurrentRunningTimerID].CountLeft <= time_left)
+ {
+ /**
+ * Search for the ID after the first one
+ */
+ timer_id_lookup = CurrentRunningTimerID;
+ next_id = aTimerContext[timer_id_lookup].NextID;
+ while((next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (aTimerContext[next_id].CountLeft <= time_left))
+ {
+ timer_id_lookup = aTimerContext[timer_id_lookup].NextID;
+ next_id = aTimerContext[timer_id_lookup].NextID;
+ }
+
+ /**
+ * Link after the ID
+ */
+ LinkTimerAfter(TimerID, timer_id_lookup);
+ }
+ else
+ {
+ /**
+ * Link before the first ID
+ */
+ LinkTimerBefore(TimerID, CurrentRunningTimerID);
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = TimerID;
+ }
+ }
+
+ return time_elapsed;
+}
+
+/**
+ * @brief Remove a Timer from the list
+ * @param TimerID: The ID of the Timer
+ * @param RequestReadSSR: Request to read the SSR register or not
+ * @retval None
+ */
+static void UnlinkTimer(uint8_t TimerID, RequestReadSSR_t RequestReadSSR)
+{
+ uint8_t previous_id;
+ uint8_t next_id;
+
+ if(TimerID == CurrentRunningTimerID)
+ {
+ PreviousRunningTimerID = CurrentRunningTimerID;
+ CurrentRunningTimerID = aTimerContext[TimerID].NextID;
+ }
+ else
+ {
+ previous_id = aTimerContext[TimerID].PreviousID;
+ next_id = aTimerContext[TimerID].NextID;
+
+ aTimerContext[previous_id].NextID = aTimerContext[TimerID].NextID;
+ if(next_id != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[next_id].PreviousID = aTimerContext[TimerID].PreviousID;
+ }
+ }
+
+ /**
+ * Timer is out of the list
+ */
+ aTimerContext[TimerID].TimerIDStatus = TimerID_Created;
+
+ if((CurrentRunningTimerID == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (RequestReadSSR == SSR_Read_Requested))
+ {
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+ }
+
+ return;
+}
+
+/**
+ * @brief Return the number of ticks counted by the wakeuptimer since it has been started
+ * @note The API is reading the SSR register to get how many ticks have been counted
+ * since the time the timer has been started
+ * @param None
+ * @retval Time expired in Ticks
+ */
+static uint16_t ReturnTimeElapsed(void)
+{
+ uint32_t return_value;
+ uint32_t wrap_counter;
+
+ if(SSRValueOnLastSetup != SSR_FORBIDDEN_VALUE)
+ {
+ return_value = ReadRtcSsrValue(); /**< Read SSR register first */
+
+ if (SSRValueOnLastSetup >= return_value)
+ {
+ return_value = SSRValueOnLastSetup - return_value;
+ }
+ else
+ {
+ wrap_counter = SynchPrescalerUserConfig - return_value;
+ return_value = SSRValueOnLastSetup + wrap_counter;
+ }
+
+ /**
+ * At this stage, ReturnValue holds the number of ticks counted by SSR
+ * Need to translate in number of ticks counted by the Wakeuptimer
+ */
+ return_value = return_value*AsynchPrescalerUserConfig;
+ return_value = return_value >> WakeupTimerDivider;
+ }
+ else
+ {
+ return_value = 0;
+ }
+
+ return (uint16_t)return_value;
+}
+
+/**
+ * @brief Set the wakeup counter
+ * @note The API is writing the counter value so that the value is decreased by one to cope with the fact
+ * the interrupt is generated with 1 extra clock cycle (See RefManuel)
+ * It assumes all condition are met to be allowed to write the wakeup counter
+ * @param Value: Value to be written in the counter
+ * @retval None
+ */
+static void RestartWakeupCounter(uint16_t Value)
+{
+ /**
+ * The wakeuptimer has been disabled in the calling function to reduce the time to poll the WUTWF
+ * FLAG when the new value will have to be written
+ * __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc);
+ */
+
+ if(Value == 0)
+ {
+ SSRValueOnLastSetup = ReadRtcSsrValue();
+
+ /**
+ * Simulate that the Timer expired
+ */
+ HAL_NVIC_SetPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID);
+ }
+ else
+ {
+ if((Value > 1) ||(WakeupTimerDivider != 1))
+ {
+ Value -= 1;
+ }
+
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+
+ MODIFY_REG(RTC->WUTR, RTC_WUTR_WUT, Value);
+
+ /**
+ * Update the value here after the WUTWF polling that may take some time
+ */
+ SSRValueOnLastSetup = ReadRtcSsrValue();
+
+ __HAL_RTC_WAKEUPTIMER_ENABLE(phrtc); /**< Enable the Wakeup Timer */
+
+ HW_TS_RTC_CountUpdated_AppNot();
+ }
+
+ return ;
+}
+
+/**
+ * @brief Reschedule the list of timer
+ * @note 1) Update the count left for each timer in the list
+ * 2) Setup the wakeuptimer
+ * @param None
+ * @retval None
+ */
+static void RescheduleTimerList(void)
+{
+ uint8_t localTimerID;
+ uint32_t timecountleft;
+ uint16_t wakeup_timer_value;
+ uint16_t time_elapsed;
+
+ /**
+ * The wakeuptimer is disabled now to reduce the time to poll the WUTWF
+ * FLAG when the new value will have to be written
+ */
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ /**
+ * Wait for the flag to be back to 0 when the wakeup timer is enabled
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == SET);
+ }
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+
+ localTimerID = CurrentRunningTimerID;
+
+ /**
+ * Calculate what will be the value to write in the wakeuptimer
+ */
+ timecountleft = aTimerContext[localTimerID].CountLeft;
+
+ /**
+ * Read how much has been counted
+ */
+ time_elapsed = ReturnTimeElapsed();
+
+ if(timecountleft < time_elapsed )
+ {
+ /**
+ * There is no tick left to count
+ */
+ wakeup_timer_value = 0;
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ }
+ else
+ {
+ if(timecountleft > (time_elapsed + MaxWakeupTimerSetup))
+ {
+ /**
+ * The number of tick left is greater than the Wakeuptimer maximum value
+ */
+ wakeup_timer_value = MaxWakeupTimerSetup;
+
+ WakeupTimerLimitation = WakeupTimerValue_Overpassed;
+ }
+ else
+ {
+ wakeup_timer_value = timecountleft - time_elapsed;
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ }
+
+ }
+
+ /**
+ * update ticks left to be counted for each timer
+ */
+ while(localTimerID != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ if (aTimerContext[localTimerID].CountLeft < time_elapsed)
+ {
+ aTimerContext[localTimerID].CountLeft = 0;
+ }
+ else
+ {
+ aTimerContext[localTimerID].CountLeft -= time_elapsed;
+ }
+ localTimerID = aTimerContext[localTimerID].NextID;
+ }
+
+ /**
+ * Write next count
+ */
+ RestartWakeupCounter(wakeup_timer_value);
+
+ return ;
+}
+
+/* Public functions ----------------------------------------------------------*/
+
+/**
+ * For all public interface except that may need write access to the RTC, the RTC
+ * shall be unlock at the beginning and locked at the output
+ * In order to ease maintainability, the unlock is done at the top and the lock at then end
+ * in case some new implementation is coming in the future
+ */
+
+void HW_TS_RTC_Wakeup_Handler(void)
+{
+ HW_TS_pTimerCb_t ptimer_callback;
+ uint32_t timer_process_id;
+ uint8_t local_current_running_timer_id;
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+/* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ /**
+ * Disable the Wakeup Timer
+ * This may speed up a bit the processing to wait the timer to be disabled
+ * The timer is still counting 2 RTCCLK
+ */
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc);
+
+ local_current_running_timer_id = CurrentRunningTimerID;
+
+ if(aTimerContext[local_current_running_timer_id].TimerIDStatus == TimerID_Running)
+ {
+ ptimer_callback = aTimerContext[local_current_running_timer_id].pTimerCallBack;
+ timer_process_id = aTimerContext[local_current_running_timer_id].TimerProcessID;
+
+ /**
+ * It should be good to check whether the TimeElapsed is greater or not than the tick left to be counted
+ * However, due to the inaccuracy of the reading of the time elapsed, it may return there is 1 tick
+ * to be left whereas the count is over
+ * A more secure implementation has been done with a flag to state whereas the full count has been written
+ * in the wakeuptimer or not
+ */
+ if(WakeupTimerLimitation != WakeupTimerValue_Overpassed)
+ {
+ if(aTimerContext[local_current_running_timer_id].TimerMode == hw_ts_Repeated)
+ {
+ UnlinkTimer(local_current_running_timer_id, SSR_Read_Not_Requested);
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ HW_TS_Start(local_current_running_timer_id, aTimerContext[local_current_running_timer_id].CounterInit);
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+ }
+ else
+ {
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ HW_TS_Stop(local_current_running_timer_id);
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+ }
+
+ HW_TS_RTC_Int_AppNot(timer_process_id, local_current_running_timer_id, ptimer_callback);
+ }
+ else
+ {
+ RescheduleTimerList();
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ }
+ }
+ else
+ {
+ /**
+ * We should never end up in this case
+ * However, if due to any bug in the timer server this is the case, the mistake may not impact the user.
+ * We could just clean the interrupt flag and get out from this unexpected interrupt
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ return;
+}
+
+void HW_TS_Init(HW_TS_InitMode_t TimerInitMode, RTC_HandleTypeDef *hrtc)
+{
+ uint8_t loop;
+ uint32_t localmaxwakeuptimersetup;
+
+ /**
+ * Get RTC handler
+ */
+ phrtc = hrtc;
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ SET_BIT(RTC->CR, RTC_CR_BYPSHAD);
+
+ /**
+ * Readout the user config
+ */
+ WakeupTimerDivider = (4 - ((uint32_t)(READ_BIT(RTC->CR, RTC_CR_WUCKSEL))));
+
+ AsynchPrescalerUserConfig = (uint8_t)(READ_BIT(RTC->PRER, RTC_PRER_PREDIV_A) >> (uint32_t)POSITION_VAL(RTC_PRER_PREDIV_A)) + 1;
+
+ SynchPrescalerUserConfig = (uint16_t)(READ_BIT(RTC->PRER, RTC_PRER_PREDIV_S)) + 1;
+
+ /**
+ * Margin is taken to avoid wrong calculation when the wrap around is there and some
+ * application interrupts may have delayed the reading
+ */
+ localmaxwakeuptimersetup = ((((SynchPrescalerUserConfig - 1)*AsynchPrescalerUserConfig) - CFG_HW_TS_RTC_HANDLER_MAX_DELAY) >> WakeupTimerDivider);
+
+ if(localmaxwakeuptimersetup >= 0xFFFF)
+ {
+ MaxWakeupTimerSetup = 0xFFFF;
+ }
+ else
+ {
+ MaxWakeupTimerSetup = (uint16_t)localmaxwakeuptimersetup;
+ }
+
+ /**
+ * Configure EXTI module
+ */
+ LL_EXTI_EnableRisingTrig_0_31(RTC_EXTI_LINE_WAKEUPTIMER_EVENT);
+ LL_EXTI_EnableIT_0_31(RTC_EXTI_LINE_WAKEUPTIMER_EVENT);
+
+ if(TimerInitMode == hw_ts_InitMode_Full)
+ {
+ WakeupTimerLimitation = WakeupTimerValue_LargeEnough;
+ SSRValueOnLastSetup = SSR_FORBIDDEN_VALUE;
+
+ /**
+ * Initialize the timer server
+ */
+ for(loop = 0; loop < CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER; loop++)
+ {
+ aTimerContext[loop].TimerIDStatus = TimerID_Free;
+ }
+
+ CurrentRunningTimerID = CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER; /**< Set ID to non valid value */
+
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+ __HAL_RTC_WAKEUPTIMER_ENABLE_IT(phrtc, RTC_IT_WUT); /**< Enable interrupt in RTC module */
+ }
+ else
+ {
+ if(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTF) != RESET)
+ {
+ /**
+ * Simulate that the Timer expired
+ */
+ HAL_NVIC_SetPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID);
+ }
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_SetPriority(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID, CFG_HW_TS_NVIC_RTC_WAKEUP_IT_PREEMPTPRIO, CFG_HW_TS_NVIC_RTC_WAKEUP_IT_SUBPRIO); /**< Set NVIC priority */
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+ return;
+}
+
+HW_TS_ReturnStatus_t HW_TS_Create(uint32_t TimerProcessID, uint8_t *pTimerId, HW_TS_Mode_t TimerMode, HW_TS_pTimerCb_t pftimeout_handler)
+{
+ HW_TS_ReturnStatus_t localreturnstatus;
+ uint8_t loop = 0;
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ while((loop < CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER) && (aTimerContext[loop].TimerIDStatus != TimerID_Free))
+ {
+ loop++;
+ }
+
+ if(loop != CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ aTimerContext[loop].TimerIDStatus = TimerID_Created;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ aTimerContext[loop].TimerProcessID = TimerProcessID;
+ aTimerContext[loop].TimerMode = TimerMode;
+ aTimerContext[loop].pTimerCallBack = pftimeout_handler;
+ *pTimerId = loop;
+
+ localreturnstatus = hw_ts_Successful;
+ }
+ else
+ {
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ localreturnstatus = hw_ts_Failed;
+ }
+
+ return(localreturnstatus);
+}
+
+void HW_TS_Delete(uint8_t timer_id)
+{
+ HW_TS_Stop(timer_id);
+
+ aTimerContext[timer_id].TimerIDStatus = TimerID_Free; /**< release ID */
+
+ return;
+}
+
+void HW_TS_Stop(uint8_t timer_id)
+{
+ uint8_t localcurrentrunningtimerid;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ HAL_NVIC_DisableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Disable NVIC */
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ if(aTimerContext[timer_id].TimerIDStatus == TimerID_Running)
+ {
+ UnlinkTimer(timer_id, SSR_Read_Requested);
+ localcurrentrunningtimerid = CurrentRunningTimerID;
+
+ if(localcurrentrunningtimerid == CFG_HW_TS_MAX_NBR_CONCURRENT_TIMER)
+ {
+ /**
+ * List is empty
+ */
+
+ /**
+ * Disable the timer
+ */
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ /**
+ * Wait for the flag to be back to 0 when the wakeup timer is enabled
+ */
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == SET);
+ }
+ __HAL_RTC_WAKEUPTIMER_DISABLE(phrtc); /**< Disable the Wakeup Timer */
+
+ while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(phrtc, RTC_FLAG_WUTWF) == RESET);
+
+ /**
+ * make sure to clear the flags after checking the WUTWF.
+ * It takes 2 RTCCLK between the time the WUTE bit is disabled and the
+ * time the timer is disabled. The WUTWF bit somehow guarantee the system is stable
+ * Otherwise, when the timer is periodic with 1 Tick, it may generate an extra interrupt in between
+ * due to the autoreload feature
+ */
+ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(phrtc, RTC_FLAG_WUTF); /**< Clear flag in RTC module */
+ __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); /**< Clear flag in EXTI module */
+ HAL_NVIC_ClearPendingIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Clear pending bit in NVIC */
+ }
+ else if(PreviousRunningTimerID != localcurrentrunningtimerid)
+ {
+ RescheduleTimerList();
+ }
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ return;
+}
+
+void HW_TS_Start(uint8_t timer_id, uint32_t timeout_ticks)
+{
+ uint16_t time_elapsed;
+ uint8_t localcurrentrunningtimerid;
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ uint32_t primask_bit;
+#endif
+
+ if(aTimerContext[timer_id].TimerIDStatus == TimerID_Running)
+ {
+ HW_TS_Stop( timer_id );
+ }
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+#endif
+
+ HAL_NVIC_DisableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Disable NVIC */
+
+ /* Disable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_DISABLE( phrtc );
+
+ aTimerContext[timer_id].TimerIDStatus = TimerID_Running;
+
+ aTimerContext[timer_id].CountLeft = timeout_ticks;
+ aTimerContext[timer_id].CounterInit = timeout_ticks;
+
+ time_elapsed = linkTimer(timer_id);
+
+ localcurrentrunningtimerid = CurrentRunningTimerID;
+
+ if(PreviousRunningTimerID != localcurrentrunningtimerid)
+ {
+ RescheduleTimerList();
+ }
+ else
+ {
+ aTimerContext[timer_id].CountLeft -= time_elapsed;
+ }
+
+ /* Enable the write protection for RTC registers */
+ __HAL_RTC_WRITEPROTECTION_ENABLE( phrtc );
+
+ HAL_NVIC_EnableIRQ(CFG_HW_TS_RTC_WAKEUP_HANDLER_ID); /**< Enable NVIC */
+
+#if (CFG_HW_TS_USE_PRIMASK_AS_CRITICAL_SECTION == 1)
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+#endif
+
+ return;
+}
+
+uint16_t HW_TS_RTC_ReadLeftTicksToCount(void)
+{
+ uint32_t primask_bit;
+ uint16_t return_value, auro_reload_value, elapsed_time_value;
+
+ primask_bit = __get_PRIMASK(); /**< backup PRIMASK bit */
+ __disable_irq(); /**< Disable all interrupts by setting PRIMASK bit on Cortex*/
+
+ if((READ_BIT(RTC->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) == SET)
+ {
+ auro_reload_value = (uint32_t)(READ_BIT(RTC->WUTR, RTC_WUTR_WUT));
+
+ elapsed_time_value = ReturnTimeElapsed();
+
+ if(auro_reload_value > elapsed_time_value)
+ {
+ return_value = auro_reload_value - elapsed_time_value;
+ }
+ else
+ {
+ return_value = 0;
+ }
+ }
+ else
+ {
+ return_value = TIMER_LIST_EMPTY;
+ }
+
+ __set_PRIMASK(primask_bit); /**< Restore PRIMASK bit*/
+
+ return (return_value);
+}
+
+__weak void HW_TS_RTC_Int_AppNot(uint32_t TimerProcessID, uint8_t TimerID, HW_TS_pTimerCb_t pTimerCallBack)
+{
+ pTimerCallBack();
+
+ return;
+}
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_uart.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_uart.c
new file mode 100644
index 000000000..9a553610d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/hw_uart.c
@@ -0,0 +1,318 @@
+/**
+ ******************************************************************************
+ * File Name : Src/hw_uart.c
+ * Description : HW UART source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "hw_conf.h"
+#if (CFG_HW_LPUART1_ENABLED == 1)
+extern UART_HandleTypeDef hlpuart1;
+#endif
+#if (CFG_HW_USART1_ENABLED == 1)
+extern UART_HandleTypeDef huart1;
+#endif
+
+/* Macros --------------------------------------------------------------------*/
+#define HW_UART_RX_IT(__HANDLE__, __USART_BASE__) \
+ do{ \
+ HW_##__HANDLE__##RxCb = cb; \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ HAL_UART_Receive_IT(&(__HANDLE__), p_data, size); \
+ } while(0)
+
+#define HW_UART_TX_IT(__HANDLE__, __USART_BASE__) \
+ do{ \
+ HW_##__HANDLE__##TxCb = cb; \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ HAL_UART_Transmit_IT(&(__HANDLE__), p_data, size); \
+ } while(0)
+
+#define HW_UART_TX(__HANDLE__, __USART_BASE__) \
+ do{ \
+ (__HANDLE__).Instance = (__USART_BASE__); \
+ hal_status = HAL_UART_Transmit(&(__HANDLE__), p_data, size, timeout); \
+ } while(0)
+
+/* Variables -----------------------------------------------------------------*/
+#if (CFG_HW_USART1_ENABLED == 1)
+#if (CFG_HW_USART1_DMA_TX_SUPPORTED == 1)
+ DMA_HandleTypeDef HW_hdma_huart1_tx ={0};
+#endif
+ void (*HW_huart1RxCb)(void);
+ void (*HW_huart1TxCb)(void);
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+#if (CFG_HW_LPUART1_DMA_TX_SUPPORTED == 1)
+ DMA_HandleTypeDef HW_hdma_hlpuart1_tx ={0};
+#endif
+ void (*HW_hlpuart1RxCb)(void);
+ void (*HW_hlpuart1TxCb)(void);
+#endif
+
+void HW_UART_Receive_IT(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_RX_IT(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_RX_IT(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HW_UART_Transmit_IT(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_TX_IT(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_TX_IT(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+hw_status_t HW_UART_Transmit(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, uint32_t timeout)
+{
+ HAL_StatusTypeDef hal_status = HAL_OK;
+ hw_status_t hw_status = hw_uart_ok;
+
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_UART_TX(huart1, USART1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_UART_TX(hlpuart1, LPUART1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ switch (hal_status)
+ {
+ case HAL_OK:
+ hw_status = hw_uart_ok;
+ break;
+
+ case HAL_ERROR:
+ hw_status = hw_uart_error;
+ break;
+
+ case HAL_BUSY:
+ hw_status = hw_uart_busy;
+ break;
+
+ case HAL_TIMEOUT:
+ hw_status = hw_uart_to;
+ break;
+
+ default:
+ break;
+ }
+
+ return hw_status;
+}
+
+hw_status_t HW_UART_Transmit_DMA(hw_uart_id_t hw_uart_id, uint8_t *p_data, uint16_t size, void (*cb)(void))
+{
+ HAL_StatusTypeDef hal_status = HAL_OK;
+ hw_status_t hw_status = hw_uart_ok;
+
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HW_huart1TxCb = cb;
+ huart1.Instance = USART1;
+ hal_status = HAL_UART_Transmit_DMA(&huart1, p_data, size);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HW_hlpuart1TxCb = cb;
+ hlpuart1.Instance = LPUART1;
+ hal_status = HAL_UART_Transmit_DMA(&hlpuart1, p_data, size);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ switch (hal_status)
+ {
+ case HAL_OK:
+ hw_status = hw_uart_ok;
+ break;
+
+ case HAL_ERROR:
+ hw_status = hw_uart_error;
+ break;
+
+ case HAL_BUSY:
+ hw_status = hw_uart_busy;
+ break;
+
+ case HAL_TIMEOUT:
+ hw_status = hw_uart_to;
+ break;
+
+ default:
+ break;
+ }
+
+ return hw_status;
+}
+
+void HW_UART_Interrupt_Handler(hw_uart_id_t hw_uart_id)
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case hw_uart1:
+ HAL_UART_IRQHandler(&huart1);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case hw_lpuart1:
+ HAL_UART_IRQHandler(&hlpuart1);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HW_UART_DMA_Interrupt_Handler(hw_uart_id_t hw_uart_id)
+{
+ switch (hw_uart_id)
+ {
+#if (CFG_HW_USART1_DMA_TX_SUPPORTED == 1)
+ case hw_uart1:
+ HAL_DMA_IRQHandler(huart1.hdmatx);
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_DMA_TX_SUPPORTED == 1)
+ case hw_lpuart1:
+ HAL_DMA_IRQHandler(hlpuart1.hdmatx);
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
+{
+ switch ((uint32_t)huart->Instance)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case (uint32_t)USART1:
+ if(HW_huart1RxCb)
+ {
+ HW_huart1RxCb();
+ }
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case (uint32_t)LPUART1:
+ if(HW_hlpuart1RxCb)
+ {
+ HW_hlpuart1RxCb();
+ }
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
+{
+ switch ((uint32_t)huart->Instance)
+ {
+#if (CFG_HW_USART1_ENABLED == 1)
+ case (uint32_t)USART1:
+ if(HW_huart1TxCb)
+ {
+ HW_huart1TxCb();
+ }
+ break;
+#endif
+
+#if (CFG_HW_LPUART1_ENABLED == 1)
+ case (uint32_t)LPUART1:
+ if(HW_hlpuart1TxCb)
+ {
+ HW_hlpuart1TxCb();
+ }
+ break;
+#endif
+
+ default:
+ break;
+ }
+
+ return;
+}
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/main.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/main.c
index e08ffb500..e08ffb500 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/Core/Src/main.c
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/main.c
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32_lpm_if.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32_lpm_if.c
new file mode 100644
index 000000000..f024b61e3
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32_lpm_if.c
@@ -0,0 +1,275 @@
+/* USER CODE BEGIN Header */
+/**
+ ***************************************************************************************
+ * File Name : stm32_lpm_if.c
+ * Description : Low layer function to enter/exit low power modes (stop, sleep).
+ ***************************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32_lpm_if.h"
+#include "stm32_lpm.h"
+#include "app_conf.h"
+/* USER CODE BEGIN include */
+
+/* USER CODE END include */
+
+/* Exported variables --------------------------------------------------------*/
+const struct UTIL_LPM_Driver_s UTIL_PowerDriver =
+{
+ PWR_EnterSleepMode,
+ PWR_ExitSleepMode,
+
+ PWR_EnterStopMode,
+ PWR_ExitStopMode,
+
+ PWR_EnterOffMode,
+ PWR_ExitOffMode,
+};
+
+/* Private function prototypes -----------------------------------------------*/
+static void Switch_On_HSI( void );
+/* USER CODE BEGIN Private_Function_Prototypes */
+
+/* USER CODE END Private_Function_Prototypes */
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN Private_Typedef */
+
+/* USER CODE END Private_Typedef */
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Private_Define */
+
+/* USER CODE END Private_Define */
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Private_Macro */
+
+/* USER CODE END Private_Macro */
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN Private_Variables */
+
+/* USER CODE END Private_Variables */
+
+/* Functions Definition ------------------------------------------------------*/
+/**
+ * @brief Enters Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_EnterOffMode( void )
+{
+/* USER CODE BEGIN PWR_EnterOffMode */
+ /************************************************************************************
+ * ENTER OFF MODE
+ ***********************************************************************************/
+ /*
+ * There is no risk to clear all the WUF here because in the current implementation, this API is called
+ * in critical section. If an interrupt occurs while in that critical section before that point,
+ * the flag is set and will be cleared here but the system will not enter Off Mode
+ * because an interrupt is pending in the NVIC. The ISR will be executed when moving out
+ * of this critical section
+ */
+ LL_PWR_ClearFlag_WU( );
+
+ LL_PWR_SetPowerMode( LL_PWR_MODE_STANDBY );
+
+ LL_LPM_EnableDeepSleep( ); /**< Set SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores( );
+#endif
+
+ __WFI( );
+/* USER CODE END PWR_EnterOffMode */
+}
+
+/**
+ * @brief Exits Low Power Off Mode
+ * @param none
+ * @retval none
+ */
+void PWR_ExitOffMode( void )
+{
+/* USER CODE BEGIN PWR_ExitOffMode */
+
+/* USER CODE END PWR_ExitOffMode */
+}
+
+/**
+ * @brief Enters Low Power Stop Mode
+ * @note ARM exists the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterStopMode( void )
+{
+/* USER CODE BEGIN PWR_EnterStopMode */
+ /**
+ * This function is called from CRITICAL SECTION
+ */
+ while( LL_HSEM_1StepLock( HSEM, CFG_HW_RCC_SEMID ) );
+
+ if ( ! LL_HSEM_1StepLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID ) )
+ {
+ if( LL_PWR_IsActiveFlag_C2DS( ) )
+ {
+ /* Release ENTRY_STOP_MODE semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID, 0 );
+
+ /**
+ * The switch on HSI before entering Stop Mode is required on Cut2.0
+ * It is useless from Cut2.1
+ */
+ Switch_On_HSI( );
+ }
+ }
+ else
+ {
+ /**
+ * The switch on HSI before entering Stop Mode is required on Cut2.0
+ * It is useless from Cut2.1
+ */
+ Switch_On_HSI( );
+ }
+
+ /* Release RCC semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_RCC_SEMID, 0 );
+
+ /************************************************************************************
+ * ENTER STOP MODE
+ ***********************************************************************************/
+ LL_PWR_SetPowerMode( LL_PWR_MODE_STOP2 );
+
+ LL_LPM_EnableDeepSleep( ); /**< Set SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores( );
+#endif
+
+ __WFI();
+/* USER CODE END PWR_EnterStopMode */
+}
+
+/**
+ * @brief Exits Low Power Stop Mode
+ * @note Enable the pll at 32MHz
+ * @param none
+ * @retval none
+ */
+void PWR_ExitStopMode( void )
+{
+/* USER CODE BEGIN PWR_ExitStopMode */
+ /**
+ * This function is called from CRITICAL SECTION
+ */
+
+ /* Release ENTRY_STOP_MODE semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID, 0 );
+
+ while( LL_HSEM_1StepLock( HSEM, CFG_HW_RCC_SEMID ) );
+
+ if(LL_RCC_GetSysClkSource( ) == LL_RCC_SYS_CLKSOURCE_STATUS_HSI)
+ {
+ LL_RCC_HSE_Enable( );
+ while(!LL_RCC_HSE_IsReady( ));
+ LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSE);
+ while (LL_RCC_GetSysClkSource( ) != LL_RCC_SYS_CLKSOURCE_STATUS_HSE);
+ }
+ else
+ {
+ /**
+ * As long as the current application is fine with HSE as system clock source,
+ * there is nothing to do here
+ */
+ }
+
+ /* Release RCC semaphore */
+ LL_HSEM_ReleaseLock( HSEM, CFG_HW_RCC_SEMID, 0 );
+/* USER CODE END PWR_ExitStopMode */
+}
+
+/**
+ * @brief Enters Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_EnterSleepMode( void )
+{
+/* USER CODE BEGIN PWR_EnterSleepMode */
+
+ HAL_SuspendTick();
+
+ /************************************************************************************
+ * ENTER SLEEP MODE
+ ***********************************************************************************/
+ LL_LPM_EnableSleep( ); /**< Clear SLEEPDEEP bit of Cortex System Control Register */
+
+ /**
+ * This option is used to ensure that store operations are completed
+ */
+#if defined ( __CC_ARM)
+ __force_stores();
+#endif
+
+ __WFI( );
+/* USER CODE END PWR_EnterSleepMode */
+}
+
+/**
+ * @brief Exits Low Power Sleep Mode
+ * @note ARM exits the function when waking up
+ * @param none
+ * @retval none
+ */
+void PWR_ExitSleepMode( void )
+{
+/* USER CODE BEGIN PWR_ExitSleepMode */
+
+ HAL_ResumeTick();
+
+/* USER CODE END PWR_ExitSleepMode */
+}
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+/**
+ * @brief Switch the system clock on HSI
+ * @param none
+ * @retval none
+ */
+static void Switch_On_HSI( void )
+{
+ LL_RCC_HSI_Enable( );
+ while(!LL_RCC_HSI_IsReady( ));
+ LL_RCC_SetSysClkSource( LL_RCC_SYS_CLKSOURCE_HSI );
+ LL_RCC_SetSMPSClockSource(LL_RCC_SMPS_CLKSOURCE_HSI);
+ while (LL_RCC_GetSysClkSource( ) != LL_RCC_SYS_CLKSOURCE_STATUS_HSI);
+}
+
+/* USER CODE BEGIN Private_Functions */
+
+/* USER CODE END Private_Functions */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_hal_msp.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_hal_msp.c
new file mode 100644
index 000000000..9c338486d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_hal_msp.c
@@ -0,0 +1,334 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : stm32wbxx_hal_msp.c
+ * Description : This file provides code for the MSP Initialization
+ * and de-Initialization codes.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+/* USER CODE BEGIN Includes */
+#include "app_conf.h"
+/* USER CODE END Includes */
+extern DMA_HandleTypeDef hdma_lpuart1_tx;
+
+extern DMA_HandleTypeDef hdma_usart1_tx;
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Define */
+
+/* USER CODE END Define */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Macro */
+
+/* USER CODE END Macro */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* External functions --------------------------------------------------------*/
+/* USER CODE BEGIN ExternalFunctions */
+
+/* USER CODE END ExternalFunctions */
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+/**
+ * Initializes the Global MSP.
+ */
+void HAL_MspInit(void)
+{
+ /* USER CODE BEGIN MspInit 0 */
+
+ /* USER CODE END MspInit 0 */
+
+ __HAL_RCC_HSEM_CLK_ENABLE();
+
+ /* System interrupt init*/
+
+ /* Peripheral interrupt init */
+ /* PVD_PVM_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(PVD_PVM_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(PVD_PVM_IRQn);
+ /* FLASH_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(FLASH_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(FLASH_IRQn);
+ /* RCC_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(RCC_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(RCC_IRQn);
+ /* C2SEV_PWR_C2H_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(C2SEV_PWR_C2H_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(C2SEV_PWR_C2H_IRQn);
+ /* PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn);
+ /* HSEM_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(HSEM_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(HSEM_IRQn);
+ /* FPU_IRQn interrupt configuration */
+ HAL_NVIC_SetPriority(FPU_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(FPU_IRQn);
+
+ /* USER CODE BEGIN MspInit 1 */
+
+ /* USER CODE END MspInit 1 */
+}
+
+/**
+* @brief UART MSP Initialization
+* This function configures the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspInit(UART_HandleTypeDef* huart)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(huart->Instance==LPUART1)
+ {
+ /* USER CODE BEGIN LPUART1_MspInit 0 */
+
+ /* USER CODE END LPUART1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_LPUART1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**LPUART1 GPIO Configuration
+ PA2 ------> LPUART1_TX
+ PA3 ------> LPUART1_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* LPUART1 DMA Init */
+ /* LPUART1_TX Init */
+ hdma_lpuart1_tx.Instance = DMA1_Channel1;
+ hdma_lpuart1_tx.Init.Request = DMA_REQUEST_LPUART1_TX;
+ hdma_lpuart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_lpuart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_lpuart1_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_lpuart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_lpuart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_lpuart1_tx.Init.Mode = DMA_NORMAL;
+ hdma_lpuart1_tx.Init.Priority = DMA_PRIORITY_LOW;
+ if (HAL_DMA_Init(&hdma_lpuart1_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_lpuart1_tx);
+
+ /* LPUART1 interrupt Init */
+ HAL_NVIC_SetPriority(LPUART1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(LPUART1_IRQn);
+ /* USER CODE BEGIN LPUART1_MspInit 1 */
+
+ /* USER CODE END LPUART1_MspInit 1 */
+ }
+ else if(huart->Instance==USART1)
+ {
+ /* USER CODE BEGIN USART1_MspInit 0 */
+
+ /* USER CODE END USART1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_USART1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**USART1 GPIO Configuration
+ PA11 ------> USART1_CTS
+ PB6 ------> USART1_TX
+ PB7 ------> USART1_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_11;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USART1 DMA Init */
+ /* USART1_TX Init */
+ hdma_usart1_tx.Instance = DMA1_Channel2;
+ hdma_usart1_tx.Init.Request = DMA_REQUEST_USART1_TX;
+ hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+ hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ hdma_usart1_tx.Init.Mode = DMA_NORMAL;
+ hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;
+ if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK)
+ {
+ Error_Handler();
+ }
+
+ __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx);
+
+ /* USART1 interrupt Init */
+ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(USART1_IRQn);
+ /* USER CODE BEGIN USART1_MspInit 1 */
+
+ /* USER CODE END USART1_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief UART MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
+{
+ if(huart->Instance==LPUART1)
+ {
+ /* USER CODE BEGIN LPUART1_MspDeInit 0 */
+
+ /* USER CODE END LPUART1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_LPUART1_CLK_DISABLE();
+
+ /**LPUART1 GPIO Configuration
+ PA2 ------> LPUART1_TX
+ PA3 ------> LPUART1_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
+
+ /* LPUART1 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmatx);
+
+ /* LPUART1 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(LPUART1_IRQn);
+ /* USER CODE BEGIN LPUART1_MspDeInit 1 */
+
+ /* USER CODE END LPUART1_MspDeInit 1 */
+ }
+ else if(huart->Instance==USART1)
+ {
+ /* USER CODE BEGIN USART1_MspDeInit 0 */
+
+ /* USER CODE END USART1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_USART1_CLK_DISABLE();
+
+ /**USART1 GPIO Configuration
+ PA11 ------> USART1_CTS
+ PB6 ------> USART1_TX
+ PB7 ------> USART1_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11);
+
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
+
+ /* USART1 DMA DeInit */
+ HAL_DMA_DeInit(huart->hdmatx);
+
+ /* USART1 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(USART1_IRQn);
+ /* USER CODE BEGIN USART1_MspDeInit 1 */
+
+ /* USER CODE END USART1_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief RTC MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hrtc: RTC handle pointer
+* @retval None
+*/
+void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
+{
+ if(hrtc->Instance==RTC)
+ {
+ /* USER CODE BEGIN RTC_MspInit 0 */
+ HAL_PWR_EnableBkUpAccess(); /**< Enable access to the RTC registers */
+
+ /**
+ * Write twice the value to flush the APB-AHB bridge
+ * This bit shall be written in the register before writing the next one
+ */
+ HAL_PWR_EnableBkUpAccess();
+
+ __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE); /**< Select LSE as RTC Input */
+
+ /* USER CODE END RTC_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_RTC_ENABLE();
+ /* USER CODE BEGIN RTC_MspInit 1 */
+
+ MODIFY_REG(RTC->CR, RTC_CR_WUCKSEL, CFG_RTC_WUCKSEL_DIVIDER);
+ /* USER CODE END RTC_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief RTC MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hrtc: RTC handle pointer
+* @retval None
+*/
+void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
+{
+ if(hrtc->Instance==RTC)
+ {
+ /* USER CODE BEGIN RTC_MspDeInit 0 */
+
+ /* USER CODE END RTC_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_RTC_DISABLE();
+ /* USER CODE BEGIN RTC_MspDeInit 1 */
+
+ /* USER CODE END RTC_MspDeInit 1 */
+ }
+
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_it.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_it.c
new file mode 100644
index 000000000..6a503878c
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm32wbxx_it.c
@@ -0,0 +1,426 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32wbxx_it.c
+ * @brief Interrupt Service Routines.
+ *******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32wbxx_it.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "hw.h"
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+
+extern DMA_HandleTypeDef hdma_lpuart1_tx;
+
+extern DMA_HandleTypeDef hdma_usart1_tx;
+
+extern UART_HandleTypeDef hlpuart1;
+
+extern UART_HandleTypeDef huart1;
+
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/* Cortex Processor Interruption and Exception Handlers */
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+
+ /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+ /* USER CODE END W1_HardFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+ /* USER CODE END W1_MemoryManagement_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Prefetch fault, memory access fault.
+ */
+void BusFault_Handler(void)
+{
+ /* USER CODE BEGIN BusFault_IRQn 0 */
+
+ /* USER CODE END BusFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_BusFault_IRQn 0 */
+ /* USER CODE END W1_BusFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Undefined instruction or illegal state.
+ */
+void UsageFault_Handler(void)
+{
+ /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+ /* USER CODE END UsageFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
+ /* USER CODE END W1_UsageFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles System service call via SWI instruction.
+ */
+void SVC_Handler(void)
+{
+ /* USER CODE BEGIN SVCall_IRQn 0 */
+
+ /* USER CODE END SVCall_IRQn 0 */
+ /* USER CODE BEGIN SVCall_IRQn 1 */
+
+ /* USER CODE END SVCall_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Debug monitor.
+ */
+void DebugMon_Handler(void)
+{
+ /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+ /* USER CODE END DebugMonitor_IRQn 0 */
+ /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+ /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Pendable request for system service.
+ */
+void PendSV_Handler(void)
+{
+ /* USER CODE BEGIN PendSV_IRQn 0 */
+
+ /* USER CODE END PendSV_IRQn 0 */
+ /* USER CODE BEGIN PendSV_IRQn 1 */
+
+ /* USER CODE END PendSV_IRQn 1 */
+}
+
+/**
+ * @brief This function handles System tick timer.
+ */
+void SysTick_Handler(void)
+{
+ /* USER CODE BEGIN SysTick_IRQn 0 */
+
+ /* USER CODE END SysTick_IRQn 0 */
+ HAL_IncTick();
+ /* USER CODE BEGIN SysTick_IRQn 1 */
+
+ /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32WBxx Peripheral Interrupt Handlers */
+/* Add here the Interrupt Handlers for the used peripherals. */
+/* For the available peripheral interrupt handler names, */
+/* please refer to the startup file (startup_stm32wbxx.s). */
+/******************************************************************************/
+
+/**
+ * @brief This function handles PVD/PVM0/PVM2 interrupts through EXTI lines 16/31/33.
+ */
+void PVD_PVM_IRQHandler(void)
+{
+ /* USER CODE BEGIN PVD_PVM_IRQn 0 */
+
+ /* USER CODE END PVD_PVM_IRQn 0 */
+ HAL_PWREx_PVD_PVM_IRQHandler();
+ /* USER CODE BEGIN PVD_PVM_IRQn 1 */
+
+ /* USER CODE END PVD_PVM_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Flash global interrupt.
+ */
+void FLASH_IRQHandler(void)
+{
+ /* USER CODE BEGIN FLASH_IRQn 0 */
+
+ /* USER CODE END FLASH_IRQn 0 */
+ HAL_FLASH_IRQHandler();
+ /* USER CODE BEGIN FLASH_IRQn 1 */
+
+ /* USER CODE END FLASH_IRQn 1 */
+}
+
+/**
+ * @brief This function handles RCC global interrupt.
+ */
+void RCC_IRQHandler(void)
+{
+ /* USER CODE BEGIN RCC_IRQn 0 */
+
+ /* USER CODE END RCC_IRQn 0 */
+ /* USER CODE BEGIN RCC_IRQn 1 */
+
+ /* USER CODE END RCC_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 channel1 global interrupt.
+ */
+void DMA1_Channel1_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
+
+ /* USER CODE END DMA1_Channel1_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_lpuart1_tx);
+ /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
+
+ /* USER CODE END DMA1_Channel1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles DMA1 channel2 global interrupt.
+ */
+void DMA1_Channel2_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Channel2_IRQn 0 */
+
+ /* USER CODE END DMA1_Channel2_IRQn 0 */
+ HAL_DMA_IRQHandler(&hdma_usart1_tx);
+ /* USER CODE BEGIN DMA1_Channel2_IRQn 1 */
+
+ /* USER CODE END DMA1_Channel2_IRQn 1 */
+}
+
+/**
+ * @brief This function handles CPU2 SEV interrupt through EXTI line 40 and PWR CPU2 HOLD wake-up interrupt.
+ */
+void C2SEV_PWR_C2H_IRQHandler(void)
+{
+ /* USER CODE BEGIN C2SEV_PWR_C2H_IRQn 0 */
+
+ /* USER CODE END C2SEV_PWR_C2H_IRQn 0 */
+ /* USER CODE BEGIN C2SEV_PWR_C2H_IRQn 1 */
+
+ /* USER CODE END C2SEV_PWR_C2H_IRQn 1 */
+}
+
+/**
+ * @brief This function handles USART1 global interrupt.
+ */
+void USART1_IRQHandler(void)
+{
+ /* USER CODE BEGIN USART1_IRQn 0 */
+
+ /* USER CODE END USART1_IRQn 0 */
+ HAL_UART_IRQHandler(&huart1);
+ /* USER CODE BEGIN USART1_IRQn 1 */
+
+ /* USER CODE END USART1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles LPUART1 global interrupt.
+ */
+void LPUART1_IRQHandler(void)
+{
+ /* USER CODE BEGIN LPUART1_IRQn 0 */
+
+ /* USER CODE END LPUART1_IRQn 0 */
+ HAL_UART_IRQHandler(&hlpuart1);
+ /* USER CODE BEGIN LPUART1_IRQn 1 */
+
+ /* USER CODE END LPUART1_IRQn 1 */
+}
+
+/**
+ * @brief This function handles PWR switching on the fly, end of BLE activity, end of 802.15.4 activity, end of critical radio phase interrupt.
+ */
+void PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler(void)
+{
+ /* USER CODE BEGIN PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 0 */
+
+ /* USER CODE END PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 0 */
+ /* USER CODE BEGIN PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 1 */
+
+ /* USER CODE END PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQn 1 */
+}
+
+/**
+ * @brief This function handles HSEM global interrupt.
+ */
+void HSEM_IRQHandler(void)
+{
+ /* USER CODE BEGIN HSEM_IRQn 0 */
+
+ /* USER CODE END HSEM_IRQn 0 */
+ HAL_HSEM_IRQHandler();
+ /* USER CODE BEGIN HSEM_IRQn 1 */
+
+ /* USER CODE END HSEM_IRQn 1 */
+}
+
+/**
+ * @brief This function handles FPU global interrupt.
+ */
+void FPU_IRQHandler(void)
+{
+ /* USER CODE BEGIN FPU_IRQn 0 */
+
+ /* USER CODE END FPU_IRQn 0 */
+ /* USER CODE BEGIN FPU_IRQn 1 */
+
+ /* USER CODE END FPU_IRQn 1 */
+}
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+/**
+ * @brief This function handles USB FS global interrupt request.
+ * @param None
+ * @retval None
+ */
+void USB_LP_IRQHandler(void)
+{
+ HAL_PCD_IRQHandler(&hpcd);
+}
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+/**
+ * @brief This function handles USB FS global interrupt request.
+ * @param None
+ * @retval None
+ */
+void USB_HP_IRQHandler(void)
+{
+ HAL_PCD_IRQHandler(&hpcd);
+}
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+#if (CFG_USB_INTERFACE_ENABLE != 0)
+/**
+ * @brief This function handles USB FS global interrupt request.
+ * @param None
+ * @retval None
+ */
+void USB_FS_WKUP_IRQHandler(void)
+{
+ HAL_PCD_IRQHandler(&hpcd);
+}
+#endif /* (CFG_USB_INTERFACE_ENABLE != 0) */
+
+/* USER CODE BEGIN 1 */
+void RTC_WKUP_IRQHandler(void)
+{
+ HW_TS_RTC_Wakeup_Handler();
+}
+
+/**
+ * @brief This function handles EXTI15_10_IRQ Handler.
+ * @param None
+ * @retval None
+ */
+void EXTI15_10_IRQHandler(void)
+{
+ HAL_GPIO_EXTI_IRQHandler(BUTTON_SW1_PIN);
+}
+
+void
+IPCC_C1_TX_IRQHandler(void)
+{
+ HW_IPCC_Tx_Handler();
+
+ return;
+}
+
+void
+IPCC_C1_RX_IRQHandler(void)
+{
+ HW_IPCC_Rx_Handler();
+ return;
+}
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm_logging.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm_logging.c
new file mode 100644
index 000000000..c24b86dd8
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/stm_logging.c
@@ -0,0 +1,205 @@
+/**
+ ******************************************************************************
+ * File Name : stm_logging.c
+ * Description : This file contains all the defines and functions used
+ * for logging on Application examples.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/**
+ * @file
+ * This file implements logging functions to be used in Application examples.
+ *
+ */
+
+#include <ctype.h>
+#include <inttypes.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "app_conf.h"
+#include "stm_logging.h"
+
+#define LOG_PARSE_BUFFER_SIZE 256U
+
+#define LOG_TIMESTAMP_ENABLE 0
+#define LOG_REGION_ENABLE 1U
+#define LOG_RTT_COLOR_ENABLE 1U
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+#define RTT_COLOR_CODE_DEFAULT "\x1b[0m"
+#define RTT_COLOR_CODE_RED "\x1b[0;91m"
+#define RTT_COLOR_CODE_GREEN "\x1b[0;92m"
+#define RTT_COLOR_CODE_YELLOW "\x1b[0;93m"
+#define RTT_COLOR_CODE_CYAN "\x1b[0;96m"
+
+#else /* LOG_RTT_COLOR_ENABLE == 1 */
+#define RTT_COLOR_CODE_DEFAULT ""
+#define RTT_COLOR_CODE_RED ""
+#define RTT_COLOR_CODE_GREEN ""
+#define RTT_COLOR_CODE_YELLOW ""
+#define RTT_COLOR_CODE_CYAN ""
+#endif /* LOG_RTT_COLOR_ENABLE == 1 */
+
+#define LOG_MSG_SZ_MAX 256
+
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for outputting code region string.
+ *
+ * @param[inout] aLogString Pointer to log buffer.
+ * @param[in] aMaxSize Maximum size of log buffer.
+ * @param[in] otLogRegion The region ID.
+ *
+ * @returns String with a log level color value.
+ */
+static inline uint16_t
+logRegion(char *aLogString, uint16_t aMaxSize,
+ appliLogRegion_t aLogRegion)
+{
+ char logRegionString[30U];
+
+ switch (aLogRegion) {
+ case APPLI_LOG_REGION_GENERAL:
+ strcpy(logRegionString, "[M4 APPLICATION]");
+ break;
+ case APPLI_LOG_REGION_ZIGBEE_API:
+ strcpy(logRegionString, "[M4 ZIGBEE API]");
+ break;
+ default:
+ strcpy(logRegionString, "[M4]");
+ break;
+ }
+
+ return snprintf(aLogString, aMaxSize, "%s ", logRegionString);
+}
+
+#endif /* CFG_DEBUG_TRACE */
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for getting color of a given level log.
+ *
+ * @param[in] aLogLevel The log level.
+ *
+ * @returns String with a log level color value.
+ */
+static inline const char *levelToString(appliLogLevel_t aLogLevel)
+{
+ switch (aLogLevel)
+ {
+ case LOG_LEVEL_CRIT:
+ return RTT_COLOR_CODE_RED;
+
+ case LOG_LEVEL_WARN:
+ return RTT_COLOR_CODE_YELLOW;
+
+ case LOG_LEVEL_INFO:
+ return RTT_COLOR_CODE_GREEN;
+
+ case LOG_LEVEL_DEBG:
+ default:
+ return RTT_COLOR_CODE_DEFAULT;
+ }
+}
+#endif /* CFG_DEBUG_TRACE */
+
+#if (CFG_DEBUG_TRACE != 0)
+/**
+ * Function for printing log level.
+ *
+ * @param[inout] aLogString Pointer to log buffer.
+ * @param[in] aMaxSize Maximum size of log buffer.
+ * @param[in] aLogLevel Log level.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+static inline uint16_t logLevel(char *aLogString, uint16_t aMaxSize,
+ appliLogLevel_t aLogLevel)
+{
+ return snprintf(aLogString, aMaxSize, "%s", levelToString(aLogLevel));
+}
+#endif /* CFG_DEBUG_TRACE */
+#endif /* LOG_RTT_COLOR_ENABLE */
+
+#if (LOG_TIMESTAMP_ENABLE == 1U)
+/**
+ * Function for printing actual timestamp.
+ *
+ * @param[inout] aLogString Pointer to the log buffer.
+ * @param[in] aMaxSize Maximum size of the log buffer.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+static inline uint16_t logTimestamp(char *aLogString, uint16_t aMaxSize)
+{
+ return snprintf(aLogString, aMaxSize, "%s[%010ld]", RTT_COLOR_CODE_DEFAULT,
+ otPlatAlarmMilliGetNow());
+}
+#endif /* LOG_TIMESTAMP_ENABLE */
+
+/**
+ * Function for printing application log
+ *
+ * @param[in] aLogLevel Log level.
+ * @param[in] aLogRegion The region ID.
+ * @param[in] aFormat User string format.
+ *
+ * @returns Number of bytes successfully written to the log buffer.
+ */
+void logApplication(appliLogLevel_t aLogLevel, appliLogRegion_t aLogRegion, const char *aFormat, ...)
+{
+#if (CFG_DEBUG_TRACE != 0) /* Since the traces are disabled, there is nothing to print */
+ uint16_t length = 0;
+ char logString[LOG_PARSE_BUFFER_SIZE + 1U];
+
+#if (LOG_TIMESTAMP_ENABLE == 1U)
+ length += logTimestamp(logString, LOG_PARSE_BUFFER_SIZE);
+#endif
+
+#if (LOG_RTT_COLOR_ENABLE == 1U)
+ /* Add level information */
+ length += logLevel(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aLogLevel);
+#endif
+
+#if (LOG_REGION_ENABLE == 1U)
+ /* Add Region information */
+ length += logRegion(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aLogRegion);
+#endif
+
+ /* Parse user string */
+ va_list paramList;
+ va_start(paramList, aFormat);
+ length += vsnprintf(&logString[length], (LOG_PARSE_BUFFER_SIZE - length),
+ aFormat, paramList);
+ logString[length++] = '\r';
+ logString[length++] = '\n';
+ logString[length++] = 0;
+ va_end(paramList);
+
+ if (aLogLevel <= APPLI_CONFIG_LOG_LEVEL)
+ {
+ printf("%s", logString);
+ }else
+ {
+ /* Print nothing */
+ }
+#endif /* CFG_DEBUG_TRACE */
+}
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/system_stm32wbxx.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/system_stm32wbxx.c
new file mode 100644
index 000000000..d4653a0ce
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/Core/Src/system_stm32wbxx.c
@@ -0,0 +1,353 @@
+/**
+ ******************************************************************************
+ * @file system_stm32wbxx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex Device Peripheral Access Layer System Source File
+ *
+ * This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32wbxx.s" file.
+ *
+ * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
+ * by the user application to setup the SysTick
+ * timer or configure other parameters.
+ *
+ * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
+ * be called whenever the core clock is changed
+ * during program execution.
+ *
+ * After each device reset the MSI (4 MHz) is used as system clock source.
+ * Then SystemInit() function is called, in "startup_stm32wbxx.s" file, to
+ * configure the system clock before to branch to main program.
+ *
+ * This file configures the system clock as follows:
+ *=============================================================================
+ *-----------------------------------------------------------------------------
+ * System Clock source | MSI
+ *-----------------------------------------------------------------------------
+ * SYSCLK(Hz) | 4000000
+ *-----------------------------------------------------------------------------
+ * HCLK(Hz) | 4000000
+ *-----------------------------------------------------------------------------
+ * AHB Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB1 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB2 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * PLL_M | 1
+ *-----------------------------------------------------------------------------
+ * PLL_N | 8
+ *-----------------------------------------------------------------------------
+ * PLL_P | 7
+ *-----------------------------------------------------------------------------
+ * PLL_Q | 2
+ *-----------------------------------------------------------------------------
+ * PLL_R | 2
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_P | NA
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_Q | NA
+ *-----------------------------------------------------------------------------
+ * PLLSAI1_R | NA
+ *-----------------------------------------------------------------------------
+ * Require 48MHz for USB OTG FS, | Disabled
+ * SDIO and RNG clock |
+ *-----------------------------------------------------------------------------
+ *=============================================================================
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32WBxx_system
+ * @{
+ */
+
+/** @addtogroup stm32WBxx_System_Private_Includes
+ * @{
+ */
+
+#include "stm32wbxx.h"
+
+#if !defined (HSE_VALUE)
+ #define HSE_VALUE (32000000UL) /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (MSI_VALUE)
+ #define MSI_VALUE (4000000UL) /*!< Value of the Internal oscillator in Hz*/
+#endif /* MSI_VALUE */
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+#if !defined (LSI_VALUE)
+ #define LSI_VALUE (32000UL) /*!< Value of LSI in Hz*/
+#endif /* LSI_VALUE */
+
+#if !defined (LSE_VALUE)
+ #define LSE_VALUE (32768UL) /*!< Value of LSE in Hz*/
+#endif /* LSE_VALUE */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Defines
+ * @{
+ */
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+ Internal SRAM. */
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET 0x0U /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+
+#define VECT_TAB_BASE_ADDRESS SRAM1_BASE /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Variables
+ * @{
+ */
+ /* The SystemCoreClock variable is updated in three ways:
+ 1) by calling CMSIS function SystemCoreClockUpdate()
+ 2) by calling HAL API function HAL_RCC_GetHCLKFreq()
+ 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
+ Note: If you use this function to configure the system clock; then there
+ is no need to call the 2 first functions listed above, since SystemCoreClock
+ variable is updated automatically.
+ */
+ uint32_t SystemCoreClock = 4000000UL ; /*CPU1: M4 on MSI clock after startup (4MHz)*/
+
+ const uint32_t AHBPrescTable[16UL] = {1UL, 3UL, 5UL, 1UL, 1UL, 6UL, 10UL, 32UL, 2UL, 4UL, 8UL, 16UL, 64UL, 128UL, 256UL, 512UL};
+
+ const uint32_t APBPrescTable[8UL] = {0UL, 0UL, 0UL, 0UL, 1UL, 2UL, 3UL, 4UL};
+
+ const uint32_t MSIRangeTable[16UL] = {100000UL, 200000UL, 400000UL, 800000UL, 1000000UL, 2000000UL, \
+ 4000000UL, 8000000UL, 16000000UL, 24000000UL, 32000000UL, 48000000UL, 0UL, 0UL, 0UL, 0UL}; /* 0UL values are incorrect cases */
+
+ const uint32_t SmpsPrescalerTable[4UL][6UL]={{1UL,3UL,2UL,2UL,1UL,2UL}, \
+ {2UL,6UL,4UL,3UL,2UL,4UL}, \
+ {4UL,12UL,8UL,6UL,4UL,8UL}, \
+ {4UL,12UL,8UL,6UL,4UL,8UL}};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32WBxx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system.
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ /* Configure the Vector Table location add offset address ------------------*/
+#if defined(VECT_TAB_SRAM) && defined(VECT_TAB_BASE_ADDRESS)
+ /* program in SRAMx */
+ SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAMx for CPU1 */
+#else /* program in FLASH */
+ SCB->VTOR = VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
+#endif
+
+ /* FPU settings ------------------------------------------------------------*/
+ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+ SCB->CPACR |= ((3UL << (10UL*2UL))|(3UL << (11UL*2UL))); /* set CP10 and CP11 Full Access */
+ #endif
+
+ /* Reset the RCC clock configuration to the default reset state ------------*/
+ /* Set MSION bit */
+ RCC->CR |= RCC_CR_MSION;
+
+ /* Reset CFGR register */
+ RCC->CFGR = 0x00070000U;
+
+ /* Reset PLLSAI1ON, PLLON, HSECSSON, HSEON, HSION, and MSIPLLON bits */
+ RCC->CR &= (uint32_t)0xFAF6FEFBU;
+
+ /*!< Reset LSI1 and LSI2 bits */
+ RCC->CSR &= (uint32_t)0xFFFFFFFAU;
+
+ /*!< Reset HSI48ON bit */
+ RCC->CRRCR &= (uint32_t)0xFFFFFFFEU;
+
+ /* Reset PLLCFGR register */
+ RCC->PLLCFGR = 0x22041000U;
+
+ /* Reset PLLSAI1CFGR register */
+ RCC->PLLSAI1CFGR = 0x22041000U;
+
+ /* Reset HSEBYP bit */
+ RCC->CR &= 0xFFFBFFFFU;
+
+ /* Disable all interrupts */
+ RCC->CIER = 0x00000000;
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI_VALUE(*)
+ *
+ * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**)
+ *
+ * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***)
+ *
+ * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***)
+ * or HSI_VALUE(*) or MSI_VALUE(*) multiplied/divided by the PLL factors.
+ *
+ * (*) MSI_VALUE is a constant defined in stm32wbxx_hal.h file (default value
+ * 4 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) HSI_VALUE is a constant defined in stm32wbxx_hal_conf.h file (default value
+ * 16 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (***) HSE_VALUE is a constant defined in stm32wbxx_hal_conf.h file (default value
+ * 32 MHz), user has to ensure that HSE_VALUE is same as the real
+ * frequency of the crystal used. Otherwise, this function may
+ * have wrong result.
+ *
+ * - The result of this function could be not correct when using fractional
+ * value for HSE crystal.
+ *
+ * @param None
+ * @retval None
+ */
+void SystemCoreClockUpdate(void)
+{
+ uint32_t tmp, msirange, pllvco, pllr, pllsource , pllm;
+
+ /* Get MSI Range frequency--------------------------------------------------*/
+
+ /*MSI frequency range in Hz*/
+ msirange = MSIRangeTable[(RCC->CR & RCC_CR_MSIRANGE) >> RCC_CR_MSIRANGE_Pos];
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ switch (RCC->CFGR & RCC_CFGR_SWS)
+ {
+ case 0x00: /* MSI used as system clock source */
+ SystemCoreClock = msirange;
+ break;
+
+ case 0x04: /* HSI used as system clock source */
+ /* HSI used as system clock source */
+ SystemCoreClock = HSI_VALUE;
+ break;
+
+ case 0x08: /* HSE used as system clock source */
+ SystemCoreClock = HSE_VALUE;
+ break;
+
+ case 0x0C: /* PLL used as system clock source */
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE or MSI_VALUE/ PLLM) * PLLN
+ SYSCLK = PLL_VCO / PLLR
+ */
+ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC);
+ pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1UL ;
+
+ if(pllsource == 0x02UL) /* HSI used as PLL clock source */
+ {
+ pllvco = (HSI_VALUE / pllm);
+ }
+ else if(pllsource == 0x03UL) /* HSE used as PLL clock source */
+ {
+ pllvco = (HSE_VALUE / pllm);
+ }
+ else /* MSI used as PLL clock source */
+ {
+ pllvco = (msirange / pllm);
+ }
+
+ pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos);
+ pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1UL);
+
+ SystemCoreClock = pllvco/pllr;
+ break;
+
+ default:
+ SystemCoreClock = msirange;
+ break;
+ }
+
+ /* Compute HCLK clock frequency --------------------------------------------*/
+ /* Get HCLK1 prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)];
+ /* HCLK clock frequency */
+ SystemCoreClock = SystemCoreClock / tmp;
+
+}
+
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Project.eww b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Project.eww
index 98d679f94..cf5c06ee4 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Distrib/EWARM/Project.eww
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Project.eww
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<workspace>
<project>
- <path>$WS_DIR$\Zigbee_OnOff_Distrib.ewp</path>
+ <path>$WS_DIR$\Zigbee_OnOff_Server_Coord.ewp</path>
</project>
<batchBuild />
</workspace>
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Zigbee_OnOff_Router.ewd b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewd
index ab238be30..e0016b03f 100644
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/Zigbee/Zigbee_OnOff_Router/EWARM/Zigbee_OnOff_Router.ewd
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewd
@@ -2,7 +2,7 @@
<project>
<fileVersion>3</fileVersion>
<configuration>
- <name>Zigbee_OnOff_Router</name>
+ <name>Zigbee_OnOff_Server_Coord</name>
<toolchain>
<name>ARM</name>
</toolchain>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewp b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewp
new file mode 100644
index 000000000..9145b2546
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/Zigbee_OnOff_Server_Coord.ewp
@@ -0,0 +1,1310 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <fileVersion>3</fileVersion>
+ <configuration>
+ <name>Zigbee_OnOff_Server_Coord</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>General</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <version>30</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>ExePath</name>
+ <state>Zigbee_OnOff_Router/Exe</state>
+ </option>
+ <option>
+ <name>ObjPath</name>
+ <state>Zigbee_OnOff_Router/Obj</state>
+ </option>
+ <option>
+ <name>ListPath</name>
+ <state>Zigbee_OnOff_Router/List</state>
+ </option>
+ <option>
+ <name>GEndianMode</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>Input description</name>
+ <state>Full formatting, with multibyte support.</state>
+ </option>
+ <option>
+ <name>Output description</name>
+ <state>Full formatting, with multibyte support.</state>
+ </option>
+ <option>
+ <name>GOutputBinary</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGCoreOrChip</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelect</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelectSlave</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>RTDescription</name>
+ <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+ </option>
+ <option>
+ <name>OGProductVersion</name>
+ <state>4.41A</state>
+ </option>
+ <option>
+ <name>OGLastSavedByProductVersion</name>
+ <state>8.20.2.14834</state>
+ </option>
+ <option>
+ <name>GeneralEnableMisra</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraVerbose</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGChipSelectEditMenu</name>
+ <state>STM32WB55RG ST STM32WB55RG</state>
+ </option>
+ <option>
+ <name>GenLowLevelInterface</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GEndianModeBE</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGBufferedTerminalOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GenStdoutInterface</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules98</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>GeneralMisraVer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules04</name>
+ <version>0</version>
+ <state>011111111111111110111111111111011111111111111011110100111111111111111111111111111111111111111111101111111111111011111111111111111111111111111</state>
+ </option>
+ <option>
+ <name>RTConfigPath2</name>
+ <state>$TOOLKIT_DIR$\INC\c\DLib_Config_Full.h</state>
+ </option>
+ <option>
+ <name>GBECoreSlave</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>OGUseCmsis</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGUseCmsisDspLib</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GRuntimeLibThreads</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CoreVariant</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>GFPUDeviceSlave</name>
+ <state>STM32WB55RG ST STM32WB55RG</state>
+ </option>
+ <option>
+ <name>FPU2</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>NrRegs</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>NEON</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GFPUCoreSlave2</name>
+ <version>26</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>OGCMSISPackSelectDevice</name>
+ </option>
+ <option>
+ <name>OgLibHeap</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGLibAdditionalLocale</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGPrintfVariant</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGPrintfMultibyteSupport</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGScanfVariant</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGScanfMultibyteSupport</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GenLocaleTags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>GenLocaleDisplayOnly</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DSPExtension</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TrustZone</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ICCARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>34</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCOptimizationNoSizeConstraints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDefines</name>
+ <state>USE_HAL_DRIVER</state>
+ <state>STM32WB55xx</state>
+ <state>USE_STM32WBXX_USB_DONGLE</state>
+ <state>ZIGBEE_WB</state>
+ </option>
+ <option>
+ <name>CCPreprocFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocComments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMnemonics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMessages</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagSuppress</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagRemark</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagWarning</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagError</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCAllowList</name>
+ <version>1</version>
+ <state>00000000</state>
+ </option>
+ <option>
+ <name>CCDebugInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IEndianMode</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IExtraOptionsCheck</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IExtraOptions</name>
+ <state>--diag_suppress Pe111</state>
+ <state>--diag_suppress Pe188</state>
+ </option>
+ <option>
+ <name>CCLangConformance</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSignedPlainChar</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRequirePrototypes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagWarnAreErr</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCompilerRuntimeInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>CCLibConfigHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>PreInclude</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CompilerMisraOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIncludePath2</name>
+ <state>$PROJ_DIR$/../Core/Inc</state>
+ <state>$PROJ_DIR$/../STM32_WPAN/App</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/BSP/P-NUCLEO-WB55.USBDongle</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/STM32WBxx_HAL_Driver/Inc/Legacy</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/app</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/tl</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/interface/patterns/ble_thread/shci</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/utilities</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Device/ST/STM32WBxx/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/core/Inc</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include/mac</state>
+ <state>$PROJ_DIR$/../../../../../../Middlewares/ST/STM32_WPAN/zigbee/stack/include/M4</state>
+ <state>$PROJ_DIR$/../../../../../../Drivers/CMSIS/Include</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/sequencer</state>
+ <state>$PROJ_DIR$/../../../../../../Utilities/lpm/tiny_lpm</state>
+ <state>$PROJ_DIR$/../../../../../..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\vcp</state>
+ <state>$PROJ_DIR$/../../../../../..\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc</state>
+ <state>$PROJ_DIR$/../../../../../..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc</state>
+ </option>
+ <option>
+ <name>CCStdIncCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCodeSection</name>
+ <state>.text</state>
+ </option>
+ <option>
+ <name>IProcessorMode2</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptStrategy</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevelSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules98</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules04</name>
+ <version>0</version>
+ <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+ </option>
+ <option>
+ <name>CCPosIndRopi</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPosIndRwpi</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPosIndNoDynInit</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccLang</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCDialect</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccAllowVLA</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccStaticDestr</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCppInlineSemantics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccCmsis</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IccFloatSemantics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCNoLiteralPool</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptStrategySlave</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCGuardCalls</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCEncSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEncOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEncOutputBom</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCEncInput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccExceptions2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IccRTTI2</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>AARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>10</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>AObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ACaseSensitivity</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacroChars</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnWhat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnOne</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>ADebug</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AltRegisterNames</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ADefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AList</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AListHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AListing</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Includes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacExps</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacExec</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OnlyAssed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MultiLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>TabSpacing</name>
+ <state>8</state>
+ </option>
+ <option>
+ <name>AXRef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDefines</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefInternal</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDual</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AOutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>ALimitErrorsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ALimitErrorsEdit</name>
+ <state>100</state>
+ </option>
+ <option>
+ <name>AIgnoreStdInclude</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AUserIncludes</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AExtraOptionsCheckV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AExtraOptionsV2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AsmNoLiteralPool</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>OBJCOPY</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OOCOutputFormat</name>
+ <version>3</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>OCOutputOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCOutputFile</name>
+ <state>Zigbee_OnOff_Router.bin</state>
+ </option>
+ <option>
+ <name>OOCCommandLineProducer</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCObjCopyEnable</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CUSTOM</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <extensions></extensions>
+ <cmdline></cmdline>
+ <hasPrio>0</hasPrio>
+ </data>
+ </settings>
+ <settings>
+ <name>BICOMP</name>
+ <archiveVersion>0</archiveVersion>
+ <data />
+ </settings>
+ <settings>
+ <name>BUILDACTION</name>
+ <archiveVersion>1</archiveVersion>
+ <data>
+ <prebuild></prebuild>
+ <postbuild></postbuild>
+ </data>
+ </settings>
+ <settings>
+ <name>ILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>20</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IlinkLibIOConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XLinkMisraHandler</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkInputFileSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOutputFile</name>
+ <state>Zigbee_OnOff_Router.out</state>
+ </option>
+ <option>
+ <name>IlinkDebugInfoEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkKeepSymbols</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySymbol</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySegment</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryAlign</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkConfigDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkMapFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogInitialization</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogModule</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogSection</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogVeneer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile</name>
+ <state>$PROJ_DIR$\stm32wb55xx_flash_cm4.icf</state>
+ </option>
+ <option>
+ <name>IlinkIcfFileSlave</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkSuppressDiags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsRem</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsWarn</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsErr</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkWarningsAreErrors</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkUseExtraOptions</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkLowLevelInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAutoLibEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAdditionalLibs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkOverrideProgramEntryLabel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabelSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabel</name>
+ <state>__iar_program_start</state>
+ </option>
+ <option>
+ <name>DoFill</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FillerByte</name>
+ <state>0xFF</state>
+ </option>
+ <option>
+ <name>FillerStart</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>FillerEnd</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>CrcSize</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcAlign</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcPoly</name>
+ <state>0x11021</state>
+ </option>
+ <option>
+ <name>CrcCompl</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcBitOrder</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcInitialValue</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>DoCrc</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkBufferedTerminalOutput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkStdoutInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcFullSize</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIElfToolPostProcess</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogAutoLibSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogRedirSymbols</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogUnusedFragments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCrcReverseByteOrder</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCrcUseAsInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptInline</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOptExceptionsAllow</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptExceptionsForce</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkCmsis</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptMergeDuplSections</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOptUseVfe</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkOptForceVfe</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkStackAnalysisEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkStackControlFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkStackCallGraphFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CrcAlgorithm</name>
+ <version>1</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcUnitSize</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkThreadsSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogCallGraph</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile_AltDefault</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEncInput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkEncOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkEncOutputBom</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkHeapSelect</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLocaleSelect</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IARCHIVE</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IarchiveInputs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IarchiveOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IarchiveOutput</name>
+ <state>###Unitialized###</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>BILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data />
+ </settings>
+ </configuration>
+ <group>
+ <name>Application</name>
+ <group>
+ <name>EWARM</name>
+ <file>
+ <name>$PROJ_DIR$\startup_stm32wb55xx_cm4.s</name>
+ </file>
+ </group>
+ <group>
+ <name>User</name>
+ <group>
+ <name>Core</name>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\app_entry.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\hw_timerserver.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\hw_uart.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\main.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32wbxx_hal_msp.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm32wbxx_it.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\stm_logging.c</name>
+ </file>
+ </group>
+ <group>
+ <name>STM32_WPAN</name>
+ <group>
+ <name>App</name>
+ <file>
+ <name>$PROJ_DIR$\..\STM32_WPAN\App\app_zigbee.c</name>
+ </file>
+ </group>
+ <group>
+ <name>Target</name>
+ <file>
+ <name>$PROJ_DIR$\..\STM32_WPAN\Target\hw_ipcc.c</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>Drivers</name>
+ <group>
+ <name>BSP</name>
+ <group>
+ <name>P-NUCLEO-WB55.USBDongle</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\P-NUCLEO-WB55.USBDongle\stm32wbxx_usb_dongle.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>CMSIS</name>
+ <file>
+ <name>$PROJ_DIR$\..\Core\Src\system_stm32wbxx.c</name>
+ </file>
+ </group>
+ <group>
+ <name>STM32WBxx_HAL_Driver</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_cortex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_dma_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_exti.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_flash.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_flash_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_gpio.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_hsem.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pwr_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rcc_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_rtc_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_tim.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_tim_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_uart_ex.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_ll_usb.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pcd.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32WBxx_HAL_Driver\Src\stm32wbxx_hal_pcd_ex.c</name>
+ </file>
+
+ </group>
+ </group>
+ <group>
+ <name>Middlewares</name>
+ <group>
+ <name>STM32_USB_Device_Library</name>
+ <group>
+ <name>Class</name>
+ <group>
+ <name>CDC</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>Core</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>STM32_WPAN</name>
+ <group>
+ <name>interface</name>
+ <group>
+ <name>patterns</name>
+ <group>
+ <name>ble_thread</name>
+ <group>
+ <name>schi</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\shci\shci.c</name>
+ </file>
+ </group>
+ <group>
+ <name>tl</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\hci_tl_if.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\shci_tl_if.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\tl_mbox.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\tl\tl_zigbee_hci.c</name>
+ </file>
+ </group>
+ <group>
+ <name>vcp</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\vcp\usbd_conf.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\vcp\usbd_desc.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\interface\patterns\ble_thread\vcp\vcp.c</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>utilities</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\dbg_trace.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\otp.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_list.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\utilities\stm_queue.c</name>
+ </file>
+ </group>
+ <group>
+ <name>zigbee</name>
+ <group>
+ <name>core</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\zigbee\core\src\zigbee_core_wb.c</name>
+ </file>
+ </group>
+ <group>
+ <name>stack</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_WPAN\zigbee\lib\stm32wb_zigbee_wb_lib.a</name>
+ </file>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group>
+ <name>Utilities</name>
+ <group>
+ <name>lpm</name>
+ <group>
+ <name>tiny_lpm</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\lpm\tiny_lpm\stm32_lpm.c</name>
+ </file>
+ </group>
+ </group>
+ <group>
+ <name>sequencer</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\..\..\Utilities\sequencer\stm32_seq.c</name>
+ </file>
+ </group>
+ </group>
+</project>
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/startup_stm32wb55xx_cm4.s b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/startup_stm32wb55xx_cm4.s
new file mode 100644
index 000000000..1f886ff59
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/startup_stm32wb55xx_cm4.s
@@ -0,0 +1,517 @@
+;******************************************************************************
+;* File Name : startup_stm32wb55xx_cm4.s
+;* Author : MCD Application Team
+;* Description : M4 core vector table of the STM32WB55xx devices for the
+;* IAR (EWARM) toolchain.
+;*
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == _iar_program_start,
+;* - Set the vector table entries with the exceptions ISR
+;* address.
+;* - Branches to main in the C library (which eventually
+;* calls main()).
+;* After Reset the Cortex-M4 processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;******************************************************************************
+;* @attention
+;*
+;* <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+;* All rights reserved.</center></h2>
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+;
+;
+; The modules in this file are included in the libraries, and may be replaced
+; by any user-defined modules that define the PUBLIC symbol _program_start or
+; a user defined start symbol.
+; To override the cstartup defined in the library, simply add your modified
+; version to the workbench project.
+;
+; The vector table is normally located at address 0.
+; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
+; The name "__vector_table" has special meaning for C-SPY:
+; it is where the SP start value is found, and the NVIC vector
+; table register (VTOR) is initialized to this address if != 0.
+;
+; Cortex-M version
+;
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ PUBLIC __vector_table
+
+ DATA
+__vector_table
+ DCD sfe(CSTACK)
+ DCD Reset_Handler ; Reset Handler
+
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog
+ DCD PVD_PVM_IRQHandler ; PVD and PVM Interrupt
+ DCD TAMP_STAMP_LSECSS_IRQHandler ; RTC Tamper, TimeStamp Interrupts and LSECSS Interrupts
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup Interrupt
+ DCD FLASH_IRQHandler ; FLASH global Interrupt
+ DCD RCC_IRQHandler ; RCC Interrupt
+ DCD EXTI0_IRQHandler ; EXTI Line 0 Interrupt
+ DCD EXTI1_IRQHandler ; EXTI Line 1 Interrupt
+ DCD EXTI2_IRQHandler ; EXTI Line 2 Interrupt
+ DCD EXTI3_IRQHandler ; EXTI Line 3 Interrup
+ DCD EXTI4_IRQHandler ; EXTI Line 4 Interrupt
+ DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 Interrupt
+ DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 Interrupt
+ DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 Interrupt
+ DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 Interrupt
+ DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 Interrupt
+ DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 Interrupt
+ DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 Interrupt
+ DCD ADC1_IRQHandler ; ADC1 Interrupt
+ DCD USB_HP_IRQHandler ; USB High Priority Interrupt
+ DCD USB_LP_IRQHandler ; USB Low Priority Interrupt
+ DCD C2SEV_PWR_C2H_IRQHandler ; CPU M0+ SEV Interrupt
+ DCD COMP_IRQHandler ; COMP1 and COMP2 Interrupts
+ DCD EXTI9_5_IRQHandler ; EXTI Lines [9:5] Interrupt
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break Interrupt
+ DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16 global Interrupts
+ DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Communication and TIM17 global Interrupts
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare Interrupt
+ DCD TIM2_IRQHandler ; TIM2 Global Interrupt
+ DCD PKA_IRQHandler ; PKA Interrupt
+ DCD I2C1_EV_IRQHandler ; I2C1 Event Interrupt
+ DCD I2C1_ER_IRQHandler ; I2C1 Error Interrupt
+ DCD I2C3_EV_IRQHandler ; I2C3 Event Interrupt
+ DCD I2C3_ER_IRQHandler ; I2C3 Error Interrupt
+ DCD SPI1_IRQHandler ; SPI1 Interrupt
+ DCD SPI2_IRQHandler ; SPI2 Interrupt
+ DCD USART1_IRQHandler ; USART1 Interrupt
+ DCD LPUART1_IRQHandler ; LPUART1 Interrupt
+ DCD SAI1_IRQHandler ; SAI Interrupt
+ DCD TSC_IRQHandler ; TSC Interrupt
+ DCD EXTI15_10_IRQHandler ; EXTI Lines1[15:10 ]Interrupts
+ DCD RTC_Alarm_IRQHandler ; RTC Alarms (A and B) Interrupt
+ DCD CRS_IRQHandler ; CRS interrupt
+ DCD PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler ; WKUP Interrupt from PWR
+ DCD IPCC_C1_RX_IRQHandler ; IPCC CPU1 RX occupied interrupt
+ DCD IPCC_C1_TX_IRQHandler ; IPCC CPU1 RX free interrupt
+ DCD HSEM_IRQHandler ; HSEM0 Interrupt
+ DCD LPTIM1_IRQHandler ; LPTIM1 Interrupt
+ DCD LPTIM2_IRQHandler ; LPTIM2 Interrupt
+ DCD LCD_IRQHandler ; LCD Interrupt
+ DCD QUADSPI_IRQHandler ; QUADSPI Interrupt
+ DCD AES1_IRQHandler ; AES1 Interrupt
+ DCD AES2_IRQHandler ; AES2 Interrupt
+ DCD RNG_IRQHandler ; RNG1 Interrupt
+ DCD FPU_IRQHandler ; FPU Interrupt
+ DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1 Interrupt
+ DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2 Interrupt
+ DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3 Interrupt
+ DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4 Interrupt
+ DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5 Interrupt
+ DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6 Interrupt
+ DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7 Interrupt
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX overrun Interrupt
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ THUMB
+
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:NOROOT:REORDER(2)
+Reset_Handler
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__iar_program_start
+ BX R0
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+NMI_Handler
+ B NMI_Handler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HardFault_Handler
+ B HardFault_Handler
+
+ PUBWEAK MemManage_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+MemManage_Handler
+ B MemManage_Handler
+
+ PUBWEAK BusFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+BusFault_Handler
+ B BusFault_Handler
+
+ PUBWEAK UsageFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+UsageFault_Handler
+ B UsageFault_Handler
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK DebugMon_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DebugMon_Handler
+ B DebugMon_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SysTick_Handler
+ B SysTick_Handler
+
+ PUBWEAK WWDG_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+WWDG_IRQHandler
+ B WWDG_IRQHandler
+
+ PUBWEAK PVD_PVM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PVD_PVM_IRQHandler
+ B PVD_PVM_IRQHandler
+
+ PUBWEAK TAMP_STAMP_LSECSS_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TAMP_STAMP_LSECSS_IRQHandler
+ B TAMP_STAMP_LSECSS_IRQHandler
+
+ PUBWEAK RTC_WKUP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_WKUP_IRQHandler
+ B RTC_WKUP_IRQHandler
+
+ PUBWEAK FLASH_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FLASH_IRQHandler
+ B FLASH_IRQHandler
+
+ PUBWEAK RCC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RCC_IRQHandler
+ B RCC_IRQHandler
+
+ PUBWEAK EXTI0_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI0_IRQHandler
+ B EXTI0_IRQHandler
+
+ PUBWEAK EXTI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI1_IRQHandler
+ B EXTI1_IRQHandler
+
+ PUBWEAK EXTI2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI2_IRQHandler
+ B EXTI2_IRQHandler
+
+ PUBWEAK EXTI3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI3_IRQHandler
+ B EXTI3_IRQHandler
+
+ PUBWEAK EXTI4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI4_IRQHandler
+ B EXTI4_IRQHandler
+
+ PUBWEAK DMA1_Channel1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel1_IRQHandler
+ B DMA1_Channel1_IRQHandler
+
+ PUBWEAK DMA1_Channel2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel2_IRQHandler
+ B DMA1_Channel2_IRQHandler
+
+ PUBWEAK DMA1_Channel3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel3_IRQHandler
+ B DMA1_Channel3_IRQHandler
+
+ PUBWEAK DMA1_Channel4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel4_IRQHandler
+ B DMA1_Channel4_IRQHandler
+
+ PUBWEAK DMA1_Channel5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel5_IRQHandler
+ B DMA1_Channel5_IRQHandler
+
+ PUBWEAK DMA1_Channel6_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel6_IRQHandler
+ B DMA1_Channel6_IRQHandler
+
+ PUBWEAK DMA1_Channel7_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA1_Channel7_IRQHandler
+ B DMA1_Channel7_IRQHandler
+
+ PUBWEAK ADC1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+ADC1_IRQHandler
+ B ADC1_IRQHandler
+
+ PUBWEAK USB_HP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USB_HP_IRQHandler
+ B USB_HP_IRQHandler
+
+ PUBWEAK USB_LP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USB_LP_IRQHandler
+ B USB_LP_IRQHandler
+
+ PUBWEAK C2SEV_PWR_C2H_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+C2SEV_PWR_C2H_IRQHandler
+ B C2SEV_PWR_C2H_IRQHandler
+
+ PUBWEAK COMP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+COMP_IRQHandler
+ B COMP_IRQHandler
+
+ PUBWEAK EXTI9_5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI9_5_IRQHandler
+ B EXTI9_5_IRQHandler
+
+ PUBWEAK TIM1_BRK_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_BRK_IRQHandler
+ B TIM1_BRK_IRQHandler
+
+ PUBWEAK TIM1_UP_TIM16_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_UP_TIM16_IRQHandler
+ B TIM1_UP_TIM16_IRQHandler
+
+ PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_TRG_COM_TIM17_IRQHandler
+ B TIM1_TRG_COM_TIM17_IRQHandler
+
+ PUBWEAK TIM1_CC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM1_CC_IRQHandler
+ B TIM1_CC_IRQHandler
+
+ PUBWEAK TIM2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIM2_IRQHandler
+ B TIM2_IRQHandler
+
+ PUBWEAK PKA_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PKA_IRQHandler
+ B PKA_IRQHandler
+
+ PUBWEAK I2C1_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_EV_IRQHandler
+ B I2C1_EV_IRQHandler
+
+ PUBWEAK I2C1_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_ER_IRQHandler
+ B I2C1_ER_IRQHandler
+
+ PUBWEAK I2C3_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C3_EV_IRQHandler
+ B I2C3_EV_IRQHandler
+
+ PUBWEAK I2C3_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C3_ER_IRQHandler
+ B I2C3_ER_IRQHandler
+
+ PUBWEAK SPI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI1_IRQHandler
+ B SPI1_IRQHandler
+
+ PUBWEAK SPI2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI2_IRQHandler
+ B SPI2_IRQHandler
+
+ PUBWEAK USART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USART1_IRQHandler
+ B USART1_IRQHandler
+
+ PUBWEAK LPUART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPUART1_IRQHandler
+ B LPUART1_IRQHandler
+
+ PUBWEAK SAI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SAI1_IRQHandler
+ B SAI1_IRQHandler
+
+ PUBWEAK TSC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TSC_IRQHandler
+ B TSC_IRQHandler
+
+ PUBWEAK EXTI15_10_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI15_10_IRQHandler
+ B EXTI15_10_IRQHandler
+
+ PUBWEAK RTC_Alarm_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_Alarm_IRQHandler
+ B RTC_Alarm_IRQHandler
+
+ PUBWEAK CRS_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+CRS_IRQHandler
+ B CRS_IRQHandler
+
+ PUBWEAK PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+ B PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler
+
+ PUBWEAK IPCC_C1_RX_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+IPCC_C1_RX_IRQHandler
+ B IPCC_C1_RX_IRQHandler
+
+ PUBWEAK IPCC_C1_TX_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+IPCC_C1_TX_IRQHandler
+ B IPCC_C1_TX_IRQHandler
+
+ PUBWEAK HSEM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HSEM_IRQHandler
+ B HSEM_IRQHandler
+
+ PUBWEAK LPTIM1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPTIM1_IRQHandler
+ B LPTIM1_IRQHandler
+
+ PUBWEAK LPTIM2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LPTIM2_IRQHandler
+ B LPTIM2_IRQHandler
+
+ PUBWEAK LCD_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LCD_IRQHandler
+ B LCD_IRQHandler
+
+ PUBWEAK QUADSPI_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+QUADSPI_IRQHandler
+ B QUADSPI_IRQHandler
+
+ PUBWEAK AES1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+AES1_IRQHandler
+ B AES1_IRQHandler
+
+ PUBWEAK AES2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+AES2_IRQHandler
+ B AES2_IRQHandler
+
+ PUBWEAK RNG_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RNG_IRQHandler
+ B RNG_IRQHandler
+
+ PUBWEAK FPU_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FPU_IRQHandler
+ B FPU_IRQHandler
+
+ PUBWEAK DMA2_Channel1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel1_IRQHandler
+ B DMA2_Channel1_IRQHandler
+
+ PUBWEAK DMA2_Channel2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel2_IRQHandler
+ B DMA2_Channel2_IRQHandler
+
+ PUBWEAK DMA2_Channel3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel3_IRQHandler
+ B DMA2_Channel3_IRQHandler
+
+ PUBWEAK DMA2_Channel4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel4_IRQHandler
+ B DMA2_Channel4_IRQHandler
+
+ PUBWEAK DMA2_Channel5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel5_IRQHandler
+ B DMA2_Channel5_IRQHandler
+
+ PUBWEAK DMA2_Channel6_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel6_IRQHandler
+ B DMA2_Channel6_IRQHandler
+
+ PUBWEAK DMA2_Channel7_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA2_Channel7_IRQHandler
+ B DMA2_Channel7_IRQHandler
+
+ PUBWEAK DMAMUX1_OVR_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMAMUX1_OVR_IRQHandler
+ B DMAMUX1_OVR_IRQHandler
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/stm32wb55xx_flash_cm4.icf b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/stm32wb55xx_flash_cm4.icf
new file mode 100644
index 000000000..70aec4026
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/EWARM/stm32wb55xx_flash_cm4.icf
@@ -0,0 +1,47 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x08000000;
+/*-Memory Regions-*/
+/***** FLASH Part dedicated to M4 *****/
+define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
+define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
+define symbol __ICFEDIT_region_RAM_start__ = 0x20000004;
+define symbol __ICFEDIT_region_RAM_end__ = 0x2002F000;
+
+ /*0x2002FFFF---------------------------------------|
+ * | Emulation Flash |
+ * 0x2002F000-------------------------------------- |
+ * | Region_RAM |
+ * 0x20000004-------------------------------------- |
+
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x1000; /* 4K */
+define symbol __ICFEDIT_size_heap__ = 102400; /* was 4K */
+/**** End of ICF editor section. ###ICF###*/
+
+define symbol __ICFEDIT_region_RAM_SHARED_start__ = 0x20030000;
+define symbol __ICFEDIT_region_RAM_SHARED_end__ = 0x20031000;
+
+define memory mem with size = 4G;
+define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
+define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
+define region RAM_SHARED_region = mem:[from __ICFEDIT_region_RAM_SHARED_start__ to __ICFEDIT_region_RAM_SHARED_end__];
+
+define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
+define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
+
+/* MB_MEM1 and MB_MEM2 are sections reserved to mailbox communication. It is placed in the shared memory */
+initialize by copy { readwrite };
+do not initialize { section .noinit,
+ section MAPPING_TABLE,
+ section MB_MEM1 };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region { readonly };
+place in RAM_region { readwrite,block CSTACK, block HEAP };
+place in RAM_SHARED_region { first section MAPPING_TABLE};
+place in RAM_SHARED_region { section MB_MEM1};
+place in RAM_SHARED_region { section MB_MEM2};
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.c
new file mode 100644
index 000000000..3f5a04de3
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.c
@@ -0,0 +1,561 @@
+/**
+ ******************************************************************************
+ * File Name : App/app_zigbee.c
+ * Description : Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "app_entry.h"
+#include "dbg_trace.h"
+#include "app_zigbee.h"
+#include "zigbee_interface.h"
+#include "shci.h"
+#include "stm_logging.h"
+#include "app_conf.h"
+#include "stm32wbxx_core_interface_def.h"
+#include "zigbee_types.h"
+#include "stm32_seq.h"
+
+#include <assert.h>
+#include "zcl/zcl.h"
+#include "zcl/zcl.onoff.h"
+#include "zcl/zcl.identify.h"
+
+/* Private defines -----------------------------------------------------------*/
+#define APP_ZIGBEE_STARTUP_FAIL_DELAY 500U
+#define SW1_ENDPOINT 17
+#define SW1_GROUP_ADDR 0x0001
+#define CHANNEL 13
+
+/* Private function prototypes -----------------------------------------------*/
+static void APP_ZIGBEE_StackLayersInit(void);
+static void APP_ZIGBEE_ConfigEndpoints(void);
+static void APP_ZIGBEE_NwkForm(void);
+static void APP_ZIGBEE_ConfigGroupAddr(void);
+
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode);
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void);
+
+static void Wait_Getting_Ack_From_M0(void);
+static void Receive_Ack_From_M0(void);
+static void Receive_Notification_From_M0(void);
+
+/* Private variables -----------------------------------------------*/
+static TL_CmdPacket_t *p_ZIGBEE_otcmdbuffer;
+static TL_EvtPacket_t *p_ZIGBEE_notif_M0_to_M4;
+static __IO uint32_t CptReceiveMsgFromM0 = 0;
+
+PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_ZIGBEE_Config_t ZigbeeConfigBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t ZigbeeOtCmdBuffer;
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifRspEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t ZigbeeNotifLoggingBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255U];
+
+struct zigbee_app_info {
+ bool has_init;
+ struct ZigBeeT *zb;
+ enum ZbStartType startupControl;
+ enum ZbStatusCodeT join_status;
+ uint32_t join_delay;
+ bool init_after_join;
+
+ struct ZbZclClusterT *onoff_server_1;
+};
+static struct zigbee_app_info zigbee_app_info;
+
+static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb);
+
+static const struct ZbZclAttrT onoff_server_attr_list[] = {
+ /* OnOff Server Attributes */
+ {
+ ZCL_ONOFF_ATTR_ONOFF, ZCL_DATATYPE_BOOLEAN,
+ ZCL_ATTR_FLAG_REPORTABLE | ZCL_ATTR_FLAG_PERSISTABLE | ZCL_ATTR_FLAG_DEFAULTABLE | ZCL_ATTR_FLAG_CB_NOTIFY, 0,
+ onoff_server_attr_cb, {0, 0}, {0, 0}
+ },
+};
+
+/* Functions Definition ------------------------------------------------------*/
+
+void APP_ZIGBEE_Init(void)
+{
+ SHCI_CmdStatus_t ZigbeeInitStatus;
+
+ APP_DBG("APP_ZIGBEE_Init");
+
+ /* Check the compatibility with the Coprocessor Wireless Firmware loaded */
+ APP_ZIGBEE_CheckWirelessFirmwareInfo();
+
+ /* Register cmdbuffer */
+ APP_ZIGBEE_RegisterCmdBuffer(&ZigbeeOtCmdBuffer);
+
+ /* Init config buffer and call TL_ZIGBEE_Init */
+ APP_ZIGBEE_TL_INIT();
+
+ /* Register task */
+ /* Create the different tasks */
+ UTIL_SEQ_RegTask(1U << (uint32_t)CFG_TASK_MSG_FROM_M0_TO_M4, UTIL_SEQ_RFU,APP_ZIGBEE_ProcessMsgM0ToM4);
+
+ /* Task associated with network creation process */
+ UTIL_SEQ_RegTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, UTIL_SEQ_RFU, APP_ZIGBEE_NwkForm);
+
+ /* Start the Zigbee on the CPU2 side */
+ ZigbeeInitStatus = SHCI_C2_ZIGBEE_Init();
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(ZigbeeInitStatus);
+
+ /* Initialize Zigbee stack layers */
+ APP_ZIGBEE_StackLayersInit();
+
+} /* APP_ZIGBEE_Init */
+
+/**
+ * @brief Initialize Zigbee stack layers
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_StackLayersInit(void)
+{
+ APP_DBG("APP_ZIGBEE_StackLayersInit");
+
+ zigbee_app_info.zb = ZbInit(0U, NULL, NULL);
+ assert(zigbee_app_info.zb != NULL);
+
+ /* Create the endpoint and cluster(s) */
+ APP_ZIGBEE_ConfigEndpoints();
+
+ BSP_LED_Off(LED_RED);
+ BSP_LED_Off(LED_GREEN);
+ BSP_LED_Off(LED_BLUE);
+
+ /* Configure the joining parameters */
+ zigbee_app_info.join_status = 0x01; /* init to error status */
+ zigbee_app_info.join_delay = HAL_GetTick(); /* now */
+ zigbee_app_info.startupControl = ZbStartTypeJoin;
+
+ /* Initialization Complete */
+ zigbee_app_info.has_init = true;
+
+ /* run the task */
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+}
+
+static void APP_ZIGBEE_ConfigEndpoints(void)
+{
+ ZbApsmeAddEndpointReqT req;
+ ZbApsmeAddEndpointConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
+ req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
+
+ /* Endpoint: SW1_ENDPOINT */
+ req.endpoint = SW1_ENDPOINT;
+ ZbZclAddEndpoint(zigbee_app_info.zb, &req, &conf);
+ assert(conf.status == ZB_STATUS_SUCCESS);
+
+ /* OnOff Server */
+ zigbee_app_info.onoff_server_1 = ZbZclOnOffServerAlloc(zigbee_app_info.zb, SW1_ENDPOINT, NULL);
+ assert(zigbee_app_info.onoff_server_1 != NULL);
+ ZbZclAttrAppendList(zigbee_app_info.onoff_server_1, onoff_server_attr_list, ZCL_ATTR_LIST_LEN(onoff_server_attr_list));
+ ZbZclClusterEndpointRegister(zigbee_app_info.onoff_server_1);
+
+} /* config_endpoints */
+
+/**
+ * @brief Handle Zigbee network forming and joining
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_NwkForm(void)
+{
+ if ((zigbee_app_info.join_status != ZB_STATUS_SUCCESS) && (HAL_GetTick() >= zigbee_app_info.join_delay))
+ {
+ struct ZbStartupT config;
+ enum ZbStatusCodeT status;
+
+ /* Configure Zigbee Logging (only need to do this once, but this is a good place to put it) */
+ ZbSetLogging(zigbee_app_info.zb, ZB_LOG_MASK_LEVEL_5, NULL);
+
+ /* Attempt to join a zigbee network */
+ ZbStartupConfigGetProDefaults(&config);
+
+ /* Set the centralized network */
+ APP_DBG("Network config : APP_STARTUP_CENTRALIZED_COORD");
+ config.startupControl = ZbStartTypeForm;
+
+ /* Using the default HA preconfigured Link Key */
+ memcpy(config.security.preconfiguredLinkKey, sec_key_ha, ZB_SEC_KEYSIZE);
+
+ config.channelList.count = 1;
+ config.channelList.list[0].page = 0;
+ config.channelList.list[0].channelMask = 1 << CHANNEL; /*Channel in use */
+
+ /* Using ZbStartupWait (blocking) here instead of ZbStartup, in order to demonstrate how to do
+ * a blocking call on the M4. */
+ status = ZbStartupWait(zigbee_app_info.zb, &config);
+
+ APP_DBG("ZbStartup Callback (status = 0x%02x)", status);
+ zigbee_app_info.join_status = status;
+
+ if (status == ZB_STATUS_SUCCESS) {
+ zigbee_app_info.join_delay = 0U;
+ zigbee_app_info.init_after_join = true;
+ BSP_LED_On(LED_BLUE);
+ }
+ else
+ {
+ APP_DBG("Startup failed, re-attempting to form a network after a short delay (%d ms)", APP_ZIGBEE_STARTUP_FAIL_DELAY);
+ zigbee_app_info.join_delay = HAL_GetTick() + APP_ZIGBEE_STARTUP_FAIL_DELAY;
+ }
+ }
+
+ /* If Network forming/joining was not successful reschedule the current task to retry the process */
+ if (zigbee_app_info.join_status != ZB_STATUS_SUCCESS)
+ {
+ UTIL_SEQ_SetTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM, CFG_SCH_PRIO_0);
+ }
+ else
+ {
+ zigbee_app_info.init_after_join = false;
+
+ /* Assign ourselves to the group addresses */
+ APP_ZIGBEE_ConfigGroupAddr();
+
+ /* Since we're using group addressing (broadcast), shorten the broadcast timeout */
+ uint32_t bcast_timeout = 3;
+ ZbNwkSet(zigbee_app_info.zb, ZB_NWK_NIB_ID_NetworkBroadcastDeliveryTime, &bcast_timeout, sizeof(bcast_timeout));
+ }
+}
+
+/**
+ * @brief Set group addressing mode
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_ConfigGroupAddr(void)
+{
+ ZbApsmeAddGroupReqT req;
+ ZbApsmeAddGroupConfT conf;
+
+ memset(&req, 0, sizeof(req));
+ req.endpt = SW1_ENDPOINT;
+ req.groupAddr = SW1_GROUP_ADDR;
+ ZbApsmeAddGroupReq(zigbee_app_info.zb, &req, &conf);
+
+} /* APP_ZIGBEE_ConfigGroupAddr */
+
+static enum ZclStatusCodeT onoff_server_attr_cb(struct ZbZclClusterT *clusterPtr, struct ZbZclAttrCbInfoT *cb)
+{
+ uint8_t endpoint;
+ uint8_t attrVal;
+
+ endpoint = ZbZclClusterGetEndpoint(clusterPtr);
+ APP_DBG("onoff_server_attr_cb : endpoint = %d", endpoint);
+ switch (cb->info->attributeId) {
+ case ZCL_ONOFF_ATTR_ONOFF:
+ if (endpoint == SW1_ENDPOINT) {
+ if (ZbZclAttrRead(zigbee_app_info.onoff_server_1, ZCL_ONOFF_ATTR_ONOFF, NULL, &attrVal, sizeof(attrVal), false) == ZCL_STATUS_SUCCESS) {
+ if (attrVal != 0) {
+ APP_DBG("LED_RED ON");
+ BSP_LED_On(LED_RED);
+ }
+ else {
+ APP_DBG("LED_RED OFF");
+ BSP_LED_Off(LED_RED);
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ } /* switch */
+ return ZCL_STATUS_SUCCESS;
+} /* onoff_server_attr_notify */
+
+/*************************************************************
+ * ZbStartupWait Blocking Call
+ *************************************************************/
+struct ZbStartupWaitInfo {
+ bool active;
+ enum ZbStatusCodeT status;
+};
+
+static void ZbStartupWaitCb(enum ZbStatusCodeT status, void *cb_arg)
+{
+ struct ZbStartupWaitInfo *info = cb_arg;
+
+ info->status = status;
+ info->active = false;
+} /* ZbStartupWaitCb */
+
+enum ZbStatusCodeT ZbStartupWait(struct ZigBeeT *zb, struct ZbStartupT *config)
+{
+ struct ZbStartupWaitInfo *info;
+ enum ZbStatusCodeT status;
+
+ info = malloc(sizeof(struct ZbStartupWaitInfo));
+ if (info == NULL) {
+ return ZB_STATUS_ALLOC_FAIL;
+ }
+ memset(info, 0, sizeof(struct ZbStartupWaitInfo));
+
+ info->active = true;
+ status = ZbStartup(zb, config, ZbStartupWaitCb, info);
+ if (status != ZB_STATUS_SUCCESS) {
+ info->active = false;
+ return status;
+ }
+ while (info->active) {
+ UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
+ }
+ status = info->status;
+ free(info);
+ return status;
+} /* ZbStartupWait */
+
+/**
+ * @brief Trace the error or the warning reported.
+ * @param ErrId :
+ * @param ErrCode
+ * @retval None
+ */
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode)
+{
+ switch (ErrId) {
+ default:
+ APP_ZIGBEE_TraceError("ERROR Unknown ", 0);
+ break;
+ }
+} /* APP_ZIGBEE_Error */
+
+/*************************************************************
+ *
+ * LOCAL FUNCTIONS
+ *
+ *************************************************************/
+
+/**
+ * @brief Warn the user that an error has occurred.In this case,
+ * the LEDs on the Board will start blinking.
+ *
+ * @param pMess : Message associated to the error.
+ * @param ErrCode: Error code associated to the module (Zigbee or other module if any)
+ * @retval None
+ */
+static void APP_ZIGBEE_TraceError(const char *pMess, uint32_t ErrCode)
+{
+ APP_DBG("**** Fatal error = %s (Err = %d)", pMess, ErrCode);
+ while (1U == 1U) {
+ BSP_LED_Toggle(LED1);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED2);
+ HAL_Delay(500U);
+ BSP_LED_Toggle(LED3);
+ HAL_Delay(500U);
+ }
+} /* APP_ZIGBEE_TraceError */
+
+/**
+ * @brief Check if the Coprocessor Wireless Firmware loaded supports Zigbee
+ * and display associated informations
+ * @param None
+ * @retval None
+ */
+static void APP_ZIGBEE_CheckWirelessFirmwareInfo(void)
+{
+ WirelessFwInfo_t wireless_info_instance;
+ WirelessFwInfo_t *p_wireless_info = &wireless_info_instance;
+
+ if (SHCI_GetWirelessFwInfo(p_wireless_info) != SHCI_Success) {
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ }
+ else {
+ APP_DBG("**********************************************************");
+ APP_DBG("WIRELESS COPROCESSOR FW:");
+ /* Print version */
+ APP_DBG("VERSION ID = %d.%d.%d", p_wireless_info->VersionMajor, p_wireless_info->VersionMinor, p_wireless_info->VersionSub);
+
+ switch (p_wireless_info->StackType) {
+ case INFO_STACK_TYPE_ZIGBEE:
+ APP_DBG("FW Type : Zigbee stack");
+ break;
+ default:
+ /* No Zigbee device supported ! */
+ APP_ZIGBEE_Error((uint32_t)ERR_ZIGBEE_CHECK_WIRELESS, (uint32_t)ERR_INTERFACE_FATAL);
+ break;
+ }
+ APP_DBG("**********************************************************");
+ }
+} /* APP_ZIGBEE_CheckWirelessFirmwareInfo */
+
+/*************************************************************
+ *
+ * WRAP FUNCTIONS
+ *
+ *************************************************************/
+
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer)
+{
+ p_ZIGBEE_otcmdbuffer = p_buffer;
+} /* APP_ZIGBEE_RegisterCmdBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+} /* ZIGBEE_Get_OTCmdPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_OTCmdRspPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)((TL_EvtPacket_t *)p_ZIGBEE_otcmdbuffer)->evtserial.evt.payload;
+} /* ZIGBEE_Get_OTCmdRspPayloadBuffer */
+
+Zigbee_Cmd_Request_t * ZIGBEE_Get_NotificationPayloadBuffer(void)
+{
+ return (Zigbee_Cmd_Request_t *)(p_ZIGBEE_notif_M0_to_M4)->evtserial.evt.payload;
+} /* ZIGBEE_Get_NotificationPayloadBuffer */
+
+/**
+ * @brief This function is used to transfer the commands from the M4 to the M0.
+ *
+ * @param None
+ * @return None
+ */
+void ZIGBEE_CmdTransfer(void)
+{
+ Zigbee_Cmd_Request_t *cmd_req = (Zigbee_Cmd_Request_t *)p_ZIGBEE_otcmdbuffer->cmdserial.cmd.payload;
+
+ /* Zigbee OT command cmdcode range 0x280 .. 0x3DF = 352 */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.cmdcode = 0x280U;
+ /* Size = otCmdBuffer->Size (Number of OT cmd arguments : 1 arg = 32bits so multiply by 4 to get size in bytes)
+ * + ID (4 bytes) + Size (4 bytes) */
+ p_ZIGBEE_otcmdbuffer->cmdserial.cmd.plen = 8U + (cmd_req->Size * 4U);
+
+ TL_ZIGBEE_SendAppliCmdToM0();
+
+ /* Wait completion of cmd */
+ Wait_Getting_Ack_From_M0();
+} /* ZIGBEE_CmdTransfer */
+
+/**
+ * @brief This function is called when the M0+ acknoledge the fact that it has received a Cmd
+ *
+ *
+ * @param Otbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_CmdEvtReceived(TL_EvtPacket_t *Otbuffer)
+{
+ /* Prevent unused argument(s) compilation warning */
+ UNUSED(Otbuffer);
+
+ Receive_Ack_From_M0();
+} /* TL_ZIGBEE_CmdEvtReceived */
+
+/**
+ * @brief This function is called when notification from M0+ is received.
+ *
+ * @param Notbuffer : a pointer to TL_EvtPacket_t
+ * @return None
+ */
+void TL_ZIGBEE_NotReceived(TL_EvtPacket_t *Notbuffer)
+{
+ p_ZIGBEE_notif_M0_to_M4 = Notbuffer;
+
+ Receive_Notification_From_M0();
+} /* TL_ZIGBEE_NotReceived */
+
+/**
+ * @brief This function is called before sending any ot command to the M0
+ * core. The purpose of this function is to be able to check if
+ * there are no notifications coming from the M0 core which are
+ * pending before sending a new ot command.
+ * @param None
+ * @retval None
+ */
+void Pre_ZigbeeCmdProcessing(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_SYNCHRO_BYPASS_IDLE);
+} /* Pre_ZigbeeCmdProcessing */
+
+/**
+ * @brief This function waits for getting an acknowledgment from the M0.
+ *
+ * @param None
+ * @retval None
+ */
+static void Wait_Getting_Ack_From_M0(void)
+{
+ UTIL_SEQ_WaitEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Wait_Getting_Ack_From_M0 */
+
+/**
+ * @brief Receive an acknowledgment from the M0+ core.
+ * Each command send by the M4 to the M0 are acknowledged.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Ack_From_M0(void)
+{
+ UTIL_SEQ_SetEvt(EVENT_ACK_FROM_M0_EVT);
+} /* Receive_Ack_From_M0 */
+
+/**
+ * @brief Receive a notification from the M0+ through the IPCC.
+ * This function is called under interrupt.
+ * @param None
+ * @retval None
+ */
+static void Receive_Notification_From_M0(void)
+{
+ CptReceiveMsgFromM0++;
+ UTIL_SEQ_SetTask(1U << CFG_TASK_MSG_FROM_M0_TO_M4, CFG_SCH_PRIO_0);
+} /* Receive_Notification_From_M0 */
+
+/**
+ * @brief Perform initialization of TL for Zigbee.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_TL_INIT(void)
+{
+ ZigbeeConfigBuffer.p_ZigbeeOtCmdRspBuffer = (uint8_t *)&ZigbeeOtCmdBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeNotAckBuffer = (uint8_t *)ZigbeeNotifRspEvtBuffer;
+ ZigbeeConfigBuffer.p_ZigbeeLoggingBuffer = (uint8_t *)ZigbeeNotifLoggingBuffer;
+ TL_ZIGBEE_Init(&ZigbeeConfigBuffer);
+} /* APP_ZIGBEE_TL_INIT */
+
+/**
+ * @brief Process the messages coming from the M0.
+ * @param None
+ * @retval None
+ */
+void APP_ZIGBEE_ProcessMsgM0ToM4(void)
+{
+ if (CptReceiveMsgFromM0 != 0) {
+ /* If CptReceiveMsgFromM0 is > 1. it means that we did not serve all the events from the radio */
+ if (CptReceiveMsgFromM0 > 1U) {
+ APP_ZIGBEE_Error(ERR_REC_MULTI_MSG_FROM_M0, 0);
+ }
+ else {
+ Zigbee_CallBackProcessing();
+ }
+ /* Reset counter */
+ CptReceiveMsgFromM0 = 0;
+ }
+} /* APP_ZIGBEE_ProcessMsgM0ToM4 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.h b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.h
new file mode 100644
index 000000000..dd907ec23
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/App/app_zigbee.h
@@ -0,0 +1,61 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : app_zigbee.h
+ * Description : Header for Zigbee Application.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef APP_ZIGBEE_H
+#define APP_ZIGBEE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+/* Private includes ----------------------------------------------------------*/
+#include "tl.h"
+#include "tl_zigbee_hci.h"
+
+/* Exported types ------------------------------------------------------------*/
+
+/*
+ * List of all errors tracked by the Thread application
+ * running on M4. Some of these errors may be fatal
+ * or just warnings
+ */
+typedef enum {
+ ERR_REC_MULTI_MSG_FROM_M0,
+ ERR_ZIGBE_CMD_TO_M0,
+ ERR_ZIGBEE_CHECK_WIRELESS
+} ErrAppliIdEnum_t;
+
+/* Exported constants --------------------------------------------------------*/
+
+/* Exported functions ------------------------------------------------------- */
+void APP_ZIGBEE_Init(void);
+void APP_ZIGBEE_Error(uint32_t ErrId, uint32_t ErrCode);
+void APP_ZIGBEE_RegisterCmdBuffer(TL_CmdPacket_t *p_buffer);
+void APP_ZIGBEE_ProcessMsgM0ToM4(void);
+void APP_ZIGBEE_TL_INIT(void);
+void Pre_ZigbeeCmdProcessing(void);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* APP_ZIGBEE_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/Target/hw_ipcc.c b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/Target/hw_ipcc.c
new file mode 100644
index 000000000..ab7f75b9a
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/STM32_WPAN/Target/hw_ipcc.c
@@ -0,0 +1,491 @@
+/**
+ ******************************************************************************
+ * File Name : Target/hw_ipcc.c
+ * Description : Hardware IPCC source file for STM32WPAN Middleware.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "mbox_def.h"
+
+/* Global variables ---------------------------------------------------------*/
+/* Private defines -----------------------------------------------------------*/
+#define HW_IPCC_TX_PENDING( channel ) ( !(LL_C1_IPCC_IsActiveFlag_CHx( IPCC, channel )) ) && (((~(IPCC->C1MR)) & (channel << 16U)))
+#define HW_IPCC_RX_PENDING( channel ) (LL_C2_IPCC_IsActiveFlag_CHx( IPCC, channel )) && (((~(IPCC->C1MR)) & (channel << 0U)))
+
+/* Private macros ------------------------------------------------------------*/
+/* Private typedef -----------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+static void (*FreeBufCb)( void );
+
+/* Private function prototypes -----------------------------------------------*/
+static void HW_IPCC_BLE_EvtHandler( void );
+static void HW_IPCC_BLE_AclDataEvtHandler( void );
+static void HW_IPCC_MM_FreeBufHandler( void );
+static void HW_IPCC_SYS_CmdEvtHandler( void );
+static void HW_IPCC_SYS_EvtHandler( void );
+static void HW_IPCC_TRACES_EvtHandler( void );
+
+#ifdef THREAD_WB
+static void HW_IPCC_OT_CmdEvtHandler( void );
+static void HW_IPCC_THREAD_NotEvtHandler( void );
+static void HW_IPCC_THREAD_CliNotEvtHandler( void );
+#endif
+
+#ifdef MAC_802_15_4_WB
+static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void );
+static void HW_IPCC_MAC_802_15_4_NotEvtHandler( void );
+#endif
+
+#ifdef ZIGBEE_WB
+static void HW_IPCC_ZIGBEE_CmdEvtHandler( void );
+static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void );
+
+#endif
+
+/* Public function definition -----------------------------------------------*/
+
+/******************************************************************************
+ * INTERRUPT HANDLER
+ ******************************************************************************/
+void HW_IPCC_Rx_Handler( void )
+{
+ if (HW_IPCC_RX_PENDING( HW_IPCC_SYSTEM_EVENT_CHANNEL ))
+ {
+ HW_IPCC_SYS_EvtHandler();
+ }
+#ifdef MAC_802_15_4_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_MAC_802_15_4_NotEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef THREAD_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_THREAD_NotEvtHandler();
+ }
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL ))
+ {
+ HW_IPCC_THREAD_CliNotEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef ZIGBEE_WB
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_ZIGBEE_APPLI_NOTIF_ACK_CHANNEL ))
+ {
+ HW_IPCC_ZIGBEE_StackNotifEvtHandler();
+ }
+#endif /* ZIGBEE_WB */
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_BLE_EVENT_CHANNEL ))
+ {
+ HW_IPCC_BLE_EvtHandler();
+ }
+ else if (HW_IPCC_RX_PENDING( HW_IPCC_TRACES_CHANNEL ))
+ {
+ HW_IPCC_TRACES_EvtHandler();
+ }
+
+ return;
+}
+
+void HW_IPCC_Tx_Handler( void )
+{
+ if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_SYS_CmdEvtHandler();
+ }
+#ifdef MAC_802_15_4_WB
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_MAC_802_15_4_CmdEvtHandler();
+ }
+#endif /* MAC_802_15_4_WB */
+#ifdef THREAD_WB
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_OT_CmdEvtHandler();
+ }
+#endif /* THREAD_WB */
+#ifdef ZIGBEE_WB
+ if (HW_IPCC_TX_PENDING( HW_IPCC_ZIGBEE_CMD_APPLI_CHANNEL ))
+ {
+ HW_IPCC_ZIGBEE_CmdEvtHandler();
+ }
+#endif /* ZIGBEE_WB */
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_SYSTEM_CMD_RSP_CHANNEL ))
+ {
+ HW_IPCC_SYS_CmdEvtHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ))
+ {
+ HW_IPCC_MM_FreeBufHandler();
+ }
+ else if (HW_IPCC_TX_PENDING( HW_IPCC_HCI_ACL_DATA_CHANNEL ))
+ {
+ HW_IPCC_BLE_AclDataEvtHandler();
+ }
+
+ return;
+}
+/******************************************************************************
+ * GENERAL
+ ******************************************************************************/
+void HW_IPCC_Enable( void )
+{
+ /**
+ * In case the SBSFU is implemented, it may have already set the C2BOOT bit to startup the CPU2.
+ * In that case, to keep the mechanism transparent to the user application, it shall call the system command
+ * SHCI_C2_Reinit( ) before jumping to the application.
+ * When the CPU2 receives that command, it waits for its event input to be set to restart the CPU2 firmware.
+ * This is required because once C2BOOT has been set once, a clear/set on C2BOOT has no effect.
+ * When SHCI_C2_Reinit( ) is not called, generating an event to the CPU2 does not have any effect
+ * So, by default, the application shall both set the event flag and set the C2BOOT bit.
+ */
+ __SEV( ); /* Set the internal event flag and send an event to the CPU2 */
+ __WFE( ); /* Clear the internal event flag */
+ LL_PWR_EnableBootC2( );
+
+ return;
+}
+
+void HW_IPCC_Init( void )
+{
+ LL_AHB3_GRP1_EnableClock( LL_AHB3_GRP1_PERIPH_IPCC );
+
+ LL_C1_IPCC_EnableIT_RXO( IPCC );
+ LL_C1_IPCC_EnableIT_TXF( IPCC );
+
+ HAL_NVIC_EnableIRQ(IPCC_C1_RX_IRQn);
+ HAL_NVIC_EnableIRQ(IPCC_C1_TX_IRQn);
+
+ return;
+}
+
+/******************************************************************************
+ * BLE
+ ******************************************************************************/
+void HW_IPCC_BLE_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_BLE_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_BLE_CMD_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_BLE_EvtHandler( void )
+{
+ HW_IPCC_BLE_RxEvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_BLE_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_BLE_SendAclData( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_BLE_AclDataEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_HCI_ACL_DATA_CHANNEL );
+
+ HW_IPCC_BLE_AclDataAckNot();
+
+ return;
+}
+
+__weak void HW_IPCC_BLE_AclDataAckNot( void ){};
+__weak void HW_IPCC_BLE_RxEvtNot( void ){};
+
+/******************************************************************************
+ * SYSTEM
+ ******************************************************************************/
+void HW_IPCC_SYS_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_SYS_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_SYS_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_SYSTEM_CMD_RSP_CHANNEL );
+
+ HW_IPCC_SYS_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_SYS_EvtHandler( void )
+{
+ HW_IPCC_SYS_EvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_SYSTEM_EVENT_CHANNEL );
+
+ return;
+}
+
+__weak void HW_IPCC_SYS_CmdEvtNot( void ){};
+__weak void HW_IPCC_SYS_EvtNot( void ){};
+
+/******************************************************************************
+ * THREAD
+ ******************************************************************************/
+#ifdef THREAD_WB
+void HW_IPCC_THREAD_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_OT_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_CLI_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_CMD_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_THREAD_SendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_THREAD_CliSendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_OT_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ HW_IPCC_OT_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_THREAD_NotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_THREAD_EvtNot();
+
+ return;
+}
+
+static void HW_IPCC_THREAD_CliNotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_THREAD_CliEvtNot();
+
+ return;
+}
+
+__weak void HW_IPCC_OT_CmdEvtNot( void ){};
+__weak void HW_IPCC_CLI_CmdEvtNot( void ){};
+__weak void HW_IPCC_THREAD_EvtNot( void ){};
+
+#endif /* THREAD_WB */
+/******************************************************************************
+ * ZIGBEE
+ ******************************************************************************/
+#ifdef ZIGBEE_WB
+void HW_IPCC_ZIGBEE_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_CLI_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_ZIGBEE_SendAppliCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_ZIGBEE_SendAppliCmdAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_ZIGBEE_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_THREAD_OT_CMD_RSP_CHANNEL );
+
+ HW_IPCC_ZIGBEE_AppliCmdNotification();
+
+ return;
+}
+
+static void HW_IPCC_ZIGBEE_StackNotifEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_THREAD_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_ZIGBEE_AppliAsyncEvtNotification();
+
+ return;
+}
+
+
+
+__weak void HW_IPCC_ZIGBEE_AppliCmdNotification( void ){};
+__weak void HW_IPCC_ZIGBEE_AppliAsyncEvtNotification( void ){};
+#endif /* ZIGBEE_WB */
+
+
+/******************************************************************************
+ * MEMORY MANAGER
+ ******************************************************************************/
+void HW_IPCC_MM_SendFreeBuf( void (*cb)( void ) )
+{
+ if ( LL_C1_IPCC_IsActiveFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL ) )
+ {
+ FreeBufCb = cb;
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+ }
+ else
+ {
+ cb();
+
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+ }
+
+ return;
+}
+
+static void HW_IPCC_MM_FreeBufHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+
+ FreeBufCb();
+
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MM_RELEASE_BUFFER_CHANNEL );
+
+ return;
+}
+
+/******************************************************************************
+ * TRACES
+ ******************************************************************************/
+void HW_IPCC_TRACES_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_TRACES_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_TRACES_EvtHandler( void )
+{
+ HW_IPCC_TRACES_EvtNot();
+
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_TRACES_CHANNEL );
+
+ return;
+}
+
+__weak void HW_IPCC_TRACES_EvtNot( void ){};
+
+
+/******************************************************************************
+ * MAC 802.15.4
+ ******************************************************************************/
+#ifdef MAC_802_15_4_WB
+void HW_IPCC_MAC_802_15_4_Init( void )
+{
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_MAC_802_15_4_SendCmd( void )
+{
+ LL_C1_IPCC_SetFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+ LL_C1_IPCC_EnableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+
+ return;
+}
+
+void HW_IPCC_MAC_802_15_4_SendAck( void )
+{
+ LL_C1_IPCC_ClearFlag_CHx( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+ LL_C1_IPCC_EnableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ return;
+}
+
+static void HW_IPCC_MAC_802_15_4_CmdEvtHandler( void )
+{
+ LL_C1_IPCC_DisableTransmitChannel( IPCC, HW_IPCC_MAC_802_15_4_CMD_RSP_CHANNEL );
+
+ HW_IPCC_MAC_802_15_4_CmdEvtNot();
+
+ return;
+}
+
+static void HW_IPCC_MAC_802_15_4_NotEvtHandler( void )
+{
+ LL_C1_IPCC_DisableReceiveChannel( IPCC, HW_IPCC_MAC_802_15_4_NOTIFICATION_ACK_CHANNEL );
+
+ HW_IPCC_MAC_802_15_4_EvtNot();
+
+ return;
+}
+__weak void HW_IPCC_MAC_802_15_4_CmdEvtNot( void ){};
+__weak void HW_IPCC_MAC_802_15_4_EvtNot( void ){};
+#endif
+
+/******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/readme.txt b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/readme.txt
new file mode 100644
index 000000000..31a81e41d
--- /dev/null
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Applications/Zigbee/Zigbee_OnOff_Server_Coord/readme.txt
@@ -0,0 +1,118 @@
+/**
+ @page Zigbee_OnOff_Server_Coord application
+
+ @verbatim
+ ******************************************************************************
+ * @file Zigbee/Zigbee_OnOff_Server_Coord/readme.txt
+ * @author MCD Application Team
+ * @brief Description of the Zigbee OnOff Cluster application as a client
+ * using a centralized network.
+ ******************************************************************************
+ *
+ * Copyright (c) 2019 STMicroelectronics. All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ @endverbatim
+
+@par Application Description
+
+How to use OnOff cluster as a server on a centralized Zigbee network.
+
+The purpose of this application is to show how to create a Zigbee centralized network, and
+how to communicate from one node to another one using the OnOff cluster. Once the Zigbee mesh
+network is created, the user can send requests from the client to the server through the push button
+in order to make the LED toggling.
+
+For this application it is requested to have:
+
+- 1 STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Server_Coord
+
+- 1 or more STM32WB55xx board loaded with:
+ - wireless coprocessor : stm32wb5x_Zigbee_FFD_fw.bin
+ - application : Zigbee_OnOff_Client_Router
+
+
+ Device 1 Device 2
+
+ --------- ---------
+ | | ZbZclOnOffClientToggleReq | |
+ PushB=>|Client | -----------------------------------> |Server | =>LED
+ | | | |
+ | | | |
+ -------- ---------
+
+To setup the application :
+
+ a) Open the project, build it and load your generated application on your STM32WB devices.
+
+ To run the application :
+
+ a) Start the first board. It must be the coordinator of the Zigbee network so in this demo application it is
+ the device running Zigbee_OnOff_Server_Coord application (Device2 in the above diagram).
+ Wait for the Blue LED (LED1) ON.
+ Start the second board. This board is configured as Zigbee router and will attached to the network created
+ by the coordinator. Do the same for the other boards if applicable.
+
+ b) At this stage, the Zigbee network is automatically created and BLUE LED (LED1) is ON on all devices.
+ it is now possible to send OnOff Cluster commands from the client to the server in multicast mode
+ by pressing on the SW1 push button.
+ You must see the LED1 toggling on the server side.
+
+
+ ---------- -----------
+ |Device 1 |............|Device 2 |
+ |(distr.) | |(distr.) |
+ ----------- -----------
+ . .
+ . .
+ . .
+ ----------- .
+ |Device 3 |...................
+ |(distr.) |
+ -----------
+
+
+Note: when LED1, LED2 and LED3 are toggling it is indicating an error has occurred on application.
+
+
+@par Hardware and Software environment
+
+ - This example runs on STM32WB55xx devices
+
+ - This example has been tested with an STMicroelectronics STM32WB55xx_Usb_Dongle
+ (MB1293C) board and can be easily tailored to any other supported device and development board.
+
+@par How to use it ?
+
+=> Loading of the stm32wb5x_Zigbee_FFD_fw.bin binary
+
+ This application requests having the stm32wb5x_Zigbee_FFD_fw.bin binary flashed on the Wireless Coprocessor.
+ If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
+ All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory.
+ Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
+ Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the detailed procedure to change the
+ Wireless Coprocessor binary.
+
+=> Getting traces
+ To get the traces you need to connect your Board to the Hyperterminal (through the STLink Virtual COM Port).
+ The UART must be configured as follows:
+
+ - BaudRate = 115200 baud
+ - Word Length = 8 Bits
+ - Stop Bit = 1 bit
+ - Parity = none
+ - Flow control = none
+
+=> Running the application
+
+ Refer to the Application description at the beginning of this readme.txt
+
+ * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
+
diff --git a/Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html b/Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html
index 890acd056..339e839aa 100644
--- a/Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html
+++ b/Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html
@@ -46,11 +46,28 @@
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
-<input type="checkbox" id="collapse-section4" checked aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.3.0 / 11-September-2019</label>
+<input type="checkbox" id="collapse-section5" checked aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V1.4.0 / 06-December-2019</label>
<div>
<h2 id="main-changes">Main Changes</h2>
<h3 id="maintenance">Maintenance</h3>
<ul>
+<li><strong>Zigbee</strong>:
+<ul>
+<li>Add 2 new applications available under P-NUCLEO-WB55.USBDongle:
+<ul>
+<li>Zigbee_OnOff_Client_Router: How to use OnOff cluster as a Client on a centralized Zigbee network.</li>
+<li>Zigbee_OnOff_Server_Coord: How to use OnOff cluster as a Server on a centralized Zigbee network.</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.3.0 / 11-September-2019</label>
+<div>
+<h2 id="main-changes-1">Main Changes</h2>
+<h3 id="maintenance-1">Maintenance</h3>
+<ul>
<li>Ensure compatibility with STM32CubeMX V5.4.</li>
<li>Correct Ticket 65791 - .bin generated by SW4STM32 is too big</li>
</ul>
@@ -59,15 +76,15 @@
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.2.0 / 26-June-2019</label>
<div>
-<h2 id="main-changes-1">Main Changes</h2>
-<h3 id="maintenance-1">Maintenance</h3>
+<h2 id="main-changes-2">Main Changes</h2>
+<h3 id="maintenance-2">Maintenance</h3>
<p>Adapt applications to new utility directory tree.</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 05-April-2019</label>
<div>
-<h2 id="main-changes-2">Main Changes</h2>
+<h2 id="main-changes-3">Main Changes</h2>
<h3 id="remove-binaries-addition-of-new-examples">Remove binaries, Addition of new examples</h3>
<p>Change directory name to reflect board RPN: <a href="https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/stm32-nucleo-expansion-boards/p-nucleo-wb55.html">P-NUCLEO-WB55</a></p>
<p>Add USB Device applications:</p>
@@ -80,7 +97,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 06-February-2019</label>
<div>
-<h2 id="main-changes-3">Main Changes</h2>
+<h2 id="main-changes-4">Main Changes</h2>
<h3 id="first-release">First release</h3>
<p>First official release.</p>
</div>
diff --git a/Projects/STM32CubeProjectsList.html b/Projects/STM32CubeProjectsList.html
index 3374a993f..98064d7a4 100644
--- a/Projects/STM32CubeProjectsList.html
+++ b/Projects/STM32CubeProjectsList.html
@@ -2097,8 +2097,8 @@ the STM32WBxx UART HAL and LL API, the LL API being used for performance improve
<td>12</td>
</tr>
<tr align=center>
- <td style="background-repeat: no-repeat;background-position: right center;background-color: #39A9DC;color: #FFF;" rowspan=53><p id="Applications">Applications</p></td>
- <td align=left rowspan=19><p id="BLE">BLE</p></td>
+ <td style="background-repeat: no-repeat;background-position: right center;background-color: #39A9DC;color: #FFF;" rowspan=55><p id="Applications">Applications</p></td>
+ <td align=left rowspan=20><p id="BLE">BLE</p></td>
<td align=left><p id="BLE_Beacon">BLE_Beacon</p></td>
<td align=left>
How to advertize 3 types of beacon ( tlm, uuid, url ).
@@ -2194,6 +2194,14 @@ OTA implementation to download a new image into the user flash.
<td><font size="5" color=green>X</font></td>
</tr>
<tr align=center>
+ <td align=left><p id="BLE_Peripheral_Lite">BLE_Peripheral_Lite</p></td>
+ <td align=left>
+How to communicate with simple BLE peripheral with minimum activated features.
+</td>
+ <td>-</td>
+ <td><font size="5" color=green>X</font></td>
+ </tr>
+ <tr align=center>
<td align=left><p id="BLE_Proximity">BLE_Proximity</p></td>
<td align=left>
How to use the Proximity profile as specified by the BLE SIG.
@@ -2469,7 +2477,7 @@ Use of the STMTouch driver with 1 touchkey sensor.
<td align=left rowspan=4><p id="USB_Device">USB_Device</p></td>
<td align=left><p id="CDC_Standalone">CDC_Standalone</p></td>
<td align=left>
-This application describes how to use USB device application based on the Device
+How to use USB device application based on the Device
Communication Class (CDC) following the PSTN sub-protocol on the STM32WBxx devices.
</td>
<td>-</td>
@@ -2494,40 +2502,48 @@ Use of the USB device application based on the Human Interface (HID).
<tr align=center>
<td align=left><p id="MSC_Standalone">MSC_Standalone</p></td>
<td align=left>
-This application shows how to use the USB device application based on the Mass Storage Class (MSC) on the STM32WBxx devices.
+How to use the USB device application based on the Mass Storage Class (MSC) on the STM32WBxx devices.
</td>
<td>-</td>
<td><font size="5" color=green>CubeMx</font></td>
</tr>
<tr align=center>
- <td align=left rowspan=3><p id="Zigbee">Zigbee</p></td>
- <td align=left><p id="Zigbee_OnOff_Coord">Zigbee_OnOff_Coord</p></td>
+ <td align=left rowspan=4><p id="Zigbee">Zigbee</p></td>
+ <td align=left><p id="Zigbee_OnOff_Client_Distrib">Zigbee_OnOff_Client_Distrib</p></td>
<td align=left>
-How to use OnOff cluster on a Centralized Zigbee network with device acting as coordinator.
+How to use OnOff cluster as a client on a distributed Zigbee network.
</td>
<td>-</td>
<td><font size="5" color=green>X</font></td>
</tr>
<tr align=center>
- <td align=left><p id="Zigbee_OnOff_Distrib">Zigbee_OnOff_Distrib</p></td>
+ <td align=left><p id="Zigbee_OnOff_Client_Router">Zigbee_OnOff_Client_Router</p></td>
<td align=left>
-How to use OnOff cluster on a Distributed Zigbee network.
+How to use OnOff cluster as a client on a centralized Zigbee network.
</td>
- <td>-</td>
+ <td><font size="5" color=green>X</font></td>
+ <td><font size="5" color=green>X</font></td>
+ </tr>
+ <tr align=center>
+ <td align=left><p id="Zigbee_OnOff_Server_Coord">Zigbee_OnOff_Server_Coord</p></td>
+ <td align=left>
+How to use OnOff cluster as a server on a centralized Zigbee network.
+</td>
+ <td><font size="5" color=green>X</font></td>
<td><font size="5" color=green>X</font></td>
</tr>
<tr align=center>
- <td align=left><p id="Zigbee_OnOff_Router">Zigbee_OnOff_Router</p></td>
+ <td align=left><p id="Zigbee_OnOff_Server_Distrib">Zigbee_OnOff_Server_Distrib</p></td>
<td align=left>
-How to use OnOff cluster on a Centralized Zigbee network with device acting as router.
+How to use OnOff cluster as a server on a distributed Zigbee network.
</td>
<td>-</td>
<td><font size="5" color=green>X</font></td>
</tr>
<tr style="background-repeat: no-repeat;background-position: right center;background-color: #39A9DC;color: #FFF;" align=center>
- <td colspan="3"><b>Total number of applications: 64</b></td>
- <td>13</td>
- <td>51</td>
+ <td colspan="3"><b>Total number of applications: 68</b></td>
+ <td>15</td>
+ <td>53</td>
</tr>
<tr align=center>
<td style="background-repeat: no-repeat;background-position: right center;background-color: #39A9DC;color: #FFF;" rowspan=2><p id="Demonstrations">Demonstrations</p></td>
@@ -2546,9 +2562,9 @@ Cortex-M devices that can be plugged on a STM32 Nucleo board.
<td>1</td>
</tr>
<tr style="background-repeat: no-repeat;background-position: right center;background-color: #39A9DC;color: #FFF;" align=center>
- <td colspan="4"><b>Total number of projects: 271</b></td>
- <td>14</td>
- <td>257</td>
+ <td colspan="4"><b>Total number of projects: 275</b></td>
+ <td>16</td>
+ <td>259</td>
</tr>
</table>
</body>
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html b/Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html
index cc2ba5e4f..48e5a5e1b 100644
--- a/Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html
+++ b/Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html
@@ -72,7 +72,7 @@
<li>Dedicated firmware binary to be used with STM32CubeMonitor-RF application.</li>
<li>Refer to STM32CubeMonitor-RF User Manual (UM2288) to get application details.</li>
</ul></li>
-<li>stm32wb5x_zigbee_full_fw.bin
+<li>stm32wb5x_Zigbee_FFD_Full_fw.bin
<ul>
<li>Zigbee Compliant Platform certified</li>
<li>Supports Full Function Device (FFD)</li>
@@ -135,13 +135,157 @@
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
-<input type="checkbox" id="collapse-section5" checked aria-hidden="true"> <label for="collapse-section5" aria-hidden="false">V1.3.0 / 09-September-2019</label>
+<input type="checkbox" id="collapse-section6" checked aria-hidden="true"> <label for="collapse-section6" aria-hidden="false">V1.4.0 / 06-December-2019</label>
<div>
<h2 id="main-changes">Main Changes</h2>
<p><strong>Associated changes in Wireless Coprocessor Binary</strong>:</p>
<ul>
<li>ZIGBEE :
<ul>
+<li>Use Hardware Acceleration for AES processing</li>
+<li>Improved trace mechanism</li>
+</ul></li>
+<li>BLE :
+<ul>
+<li>Add GAP appearance definitions in ble_defs.h</li>
+<li>Fix issue with ACI_GATT_[SIGNED_]WRITE_WITHOUT_RESP when ATT packet with a size between 61 and 63 bytes</li>
+<li>Improvement of the NVM management</li>
+<li>Support of External PA</li>
+</ul></li>
+<li>MAC 802.15.4 :
+<ul>
+<li>MAC Promiscuous mode enablement</li>
+<li>New MAC/PHY PIB attribute support (TxPower)</li>
+</ul></li>
+</ul>
+<p><strong>Firmware Upgrade Services Binary Table</strong>: Provides Install address for the targeted binary to be used in “STEP 5” of flash procedure.</p>
+<table>
+<colgroup>
+<col style="width: 41%" />
+<col style="width: 15%" />
+<col style="width: 15%" />
+<col style="width: 15%" />
+<col style="width: 7%" />
+<col style="width: 4%" />
+</colgroup>
+<thead>
+<tr class="header">
+<th>Wireless Coprocessor Binary</th>
+<th>STM32WB5xG(1M)</th>
+<th>STM32WB5xE(512K)</th>
+<th>STM32WB5xC(256K)</th>
+<th>Version</th>
+<th>Date</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td>stm32wb5x_FUS_fw.bin</td>
+<td>0x080<strong>EC</strong>000</td>
+<td>0x080<strong>7A</strong>000</td>
+<td>0x080<strong>3A</strong>000</td>
+<td>v1.0.2</td>
+<td>04/10/2019</td>
+</tr>
+</tbody>
+</table>
+<p><strong>Wireless Coprocessor Binary Table</strong>: Provides Install address for the targeted binary to be used in “STEP 6” of flash procedure.</p>
+<table>
+<colgroup>
+<col style="width: 41%" />
+<col style="width: 15%" />
+<col style="width: 15%" />
+<col style="width: 15%" />
+<col style="width: 7%" />
+<col style="width: 4%" />
+</colgroup>
+<thead>
+<tr class="header">
+<th>Wireless Coprocessor Binary</th>
+<th>STM32WB5xG(1M)</th>
+<th>STM32WB5xE(512K)</th>
+<th>STM32WB5xC(256K)</th>
+<th>Version</th>
+<th>Date</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td>stm32wb5x_BLE_HCILayer_fw.bin</td>
+<td>0x080DC000</td>
+<td>0x08068000</td>
+<td>0x08028000</td>
+<td><strong>v1.4.0</strong></td>
+<td>11/22/2019</td>
+</tr>
+<tr class="even">
+<td>stm32wb5x_BLE_Stack_fw.bin</td>
+<td>0x080CB000</td>
+<td>0x08057000</td>
+<td>0x08017000</td>
+<td><strong>v1.4.0</strong></td>
+<td>11/22/2019</td>
+</tr>
+<tr class="odd">
+<td>stm32wb5x_BLE_Thread_fw.bin</td>
+<td>0x08078000</td>
+<td>NA</td>
+<td>NA</td>
+<td><strong>v1.4.0</strong></td>
+<td>11/22/2019</td>
+</tr>
+<tr class="even">
+<td>stm32wb5x_Mac_802_15_4_fw.bin</td>
+<td>0x080E5000</td>
+<td>0x08071000</td>
+<td>0x08031000</td>
+<td><strong>v1.4.0</strong></td>
+<td>11/22/2019</td>
+</tr>
+<tr class="odd">
+<td>stm32wb5x_rfmonitor_phy802_15_4_fw.bin</td>
+<td>0x080EC000</td>
+<td>0x08078000</td>
+<td>0x08038000</td>
+<td>v1.1.0</td>
+<td>04/05/2019</td>
+</tr>
+<tr class="even">
+<td>stm32wb5x_Thread_FTD_fw.bin</td>
+<td>0x0809F000</td>
+<td>0x0802B000</td>
+<td>NA</td>
+<td><strong>v1.4.0</strong></td>
+<td>11/22/2019</td>
+</tr>
+<tr class="odd">
+<td>stm32wb5x_Thread_MTD_fw.bin</td>
+<td>0x080B5000</td>
+<td>0x08041000</td>
+<td>NA</td>
+<td><strong>v1.4.0</strong></td>
+<td>11/22/2019</td>
+</tr>
+<tr class="even">
+<td>stm32wb5x_Zigbee_FFD_Full_fw.bin</td>
+<td>0x080A3000 </td>
+<td>0x0802F000</td>
+<td>NA</td>
+<td><strong>v1.4.0</strong></td>
+<td>11/22/2019</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V1.3.0 / 09-September-2019</label>
+<div>
+<h2 id="main-changes-1">Main Changes</h2>
+<p><strong>Associated changes in Wireless Coprocessor Binary</strong>:</p>
+<ul>
+<li>ZIGBEE :
+<ul>
<li>Introducing support of Zigbee FFD (Full Function Device)</li>
</ul></li>
<li>BLE :
@@ -167,9 +311,9 @@
<thead>
<tr class="header">
<th>Wireless Coprocessor Binary</th>
-<th>STM32WB5xxG(1M)</th>
-<th>STM32WB5xxE(512K)</th>
-<th>STM32WB5xxC(256K)</th>
+<th>STM32WB5xG(1M)</th>
+<th>STM32WB5xE(512K)</th>
+<th>STM32WB5xC(256K)</th>
<th>Version</th>
<th>Date</th>
</tr>
@@ -198,9 +342,9 @@
<thead>
<tr class="header">
<th>Wireless Coprocessor Binary</th>
-<th>STM32WB5xxG(1M)</th>
-<th>STM32WB5xxE(512K)</th>
-<th>STM32WB5xxC(256K)</th>
+<th>STM32WB5xG(1M)</th>
+<th>STM32WB5xE(512K)</th>
+<th>STM32WB5xC(256K)</th>
<th>Version</th>
<th>Date</th>
</tr>
@@ -277,7 +421,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.2.0 / 3rd-July-2019</label>
<div>
-<h2 id="main-changes-1">Main Changes</h2>
+<h2 id="main-changes-2">Main Changes</h2>
<p><strong>Associated changes in Wireless Coprocessor Binary</strong>:</p>
<ul>
<li>BLE Link layer : fix issues with pairing</li>
@@ -309,21 +453,21 @@
<tbody>
<tr class="odd">
<td>stm32wb5x_FUS_fw.bin</td>
-<td>STM32WB5xxC(256K)</td>
+<td>STM32WB5xC(256K)</td>
<td>0x080<strong>3E</strong>000</td>
<td>v1.0.2</td>
<td>04/10/2019</td>
</tr>
<tr class="even">
<td>stm32wb5x_FUS_fw.bin</td>
-<td>STM32WB5xxE(512K)</td>
+<td>STM32WB5xE(512K)</td>
<td>0x080<strong>7E</strong>000</td>
<td>v1.0.2</td>
<td>04/10/2019</td>
</tr>
<tr class="odd">
<td>stm32wb5x_FUS_fw.bin</td>
-<td>STM32WB5xxG(1M)</td>
+<td>STM32WB5xG(1M)</td>
<td>0x080<strong>EC</strong>000</td>
<td>v1.0.2</td>
<td>04/10/2019</td>
@@ -390,11 +534,11 @@
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.1.1 / 10-May-2019</label>
<div>
-<h2 id="main-changes-2">Main Changes</h2>
+<h2 id="main-changes-3">Main Changes</h2>
<p><strong>Associated changes in Firmware Upgrade Services (FUS)</strong>:</p>
<ul>
-<li>Add support for STM32WB5xxE(512K) and STM32WB5xxC(256K) devices.</li>
-<li>On STM32WB5xxC and STM32WB5xxE, it is mandatory to install FUS V1.0.2 before any other operation. Otherwise, the device might be locked in an unrecoverable state.</li>
+<li>Add support for STM32WB5xE(512K) and STM32WB5xC(256K) devices.</li>
+<li>On STM32WB5xC and STM32WB5xE, it is mandatory to install FUS V1.0.2 before any other operation. Otherwise, the device might be locked in an unrecoverable state.</li>
</ul>
<p>The following table provide the address to use in correspondence with the flash procedure of Wireless Coprocessor Binaries and the device to be used.</p>
<table>
@@ -410,21 +554,21 @@
<tbody>
<tr class="odd">
<td>stm32wb5x_FUS_fw.bin</td>
-<td><strong>STM32WB5xxC</strong>(256K)</td>
+<td><strong>STM32WB5xC</strong>(256K)</td>
<td>0x080<strong>3E</strong>000</td>
<td><strong>v1.0.2</strong></td>
<td>04/10/2019</td>
</tr>
<tr class="even">
<td>stm32wb5x_FUS_fw.bin</td>
-<td><strong>STM32WB5xxE</strong>(512K)</td>
+<td><strong>STM32WB5xE</strong>(512K)</td>
<td>0x080<strong>7E</strong>000</td>
<td><strong>v1.0.2</strong></td>
<td>04/10/2019</td>
</tr>
<tr class="odd">
<td>stm32wb5x_FUS_fw.bin</td>
-<td><strong>STM32WB5xxG</strong>(1M)</td>
+<td><strong>STM32WB5xG</strong>(1M)</td>
<td>0x080<strong>EC</strong>000</td>
<td><strong>v1.0.2</strong></td>
<td>04/10/2019</td>
@@ -496,7 +640,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 05-April-2019</label>
<div>
-<h2 id="main-changes-3">Main Changes</h2>
+<h2 id="main-changes-4">Main Changes</h2>
<p><strong>Introduction of the Firmware Upgrade Services (FUS)</strong>:</p>
<ul>
<li>This feature is embedded inside stm32wb5x_FUS_fw.bin.</li>
@@ -605,7 +749,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 06-February-2019</label>
<div>
-<h2 id="main-changes-4">Main Changes</h2>
+<h2 id="main-changes-5">Main Changes</h2>
<h3 id="first-release">First release</h3>
<p>First official release.</p>
<p><strong>Binary Install Address and version</strong> : Provides Install address for the targeted binary to be used in “STEP 6” of flash procedure.</p>
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_HCILayer_fw.bin b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_HCILayer_fw.bin
index 8e74b3928..2b4efc711 100644
--- a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_HCILayer_fw.bin
+++ b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_HCILayer_fw.bin
Binary files differ
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Stack_fw.bin b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Stack_fw.bin
index 6bdb5705e..396c67c59 100644
--- a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Stack_fw.bin
+++ b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Stack_fw.bin
Binary files differ
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Thread_fw.bin b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Thread_fw.bin
index 5a1d71289..f4150ce70 100644
--- a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Thread_fw.bin
+++ b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_BLE_Thread_fw.bin
Binary files differ
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Mac_802_15_4_fw.bin b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Mac_802_15_4_fw.bin
index bc82de3df..3c7429d82 100644
--- a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Mac_802_15_4_fw.bin
+++ b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Mac_802_15_4_fw.bin
Binary files differ
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_FTD_fw.bin b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_FTD_fw.bin
index a4541a329..2438139ff 100644
--- a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_FTD_fw.bin
+++ b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_FTD_fw.bin
Binary files differ
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_MTD_fw.bin b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_MTD_fw.bin
index a916296e3..96b07a62c 100644
--- a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_MTD_fw.bin
+++ b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Thread_MTD_fw.bin
Binary files differ
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Zigbee_FFD_Full_fw.bin b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Zigbee_FFD_Full_fw.bin
new file mode 100644
index 000000000..508d2cdd3
--- /dev/null
+++ b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_Zigbee_FFD_Full_fw.bin
Binary files differ
diff --git a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_zigbee_full_fw.bin b/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_zigbee_full_fw.bin
deleted file mode 100644
index 6cbe8326d..000000000
--- a/Projects/STM32WB_Copro_Wireless_Binaries/stm32wb5x_zigbee_full_fw.bin
+++ /dev/null
Binary files differ
diff --git a/Release_Notes.html b/Release_Notes.html
index 0a512670d..6461cd331 100644
--- a/Release_Notes.html
+++ b/Release_Notes.html
@@ -68,9 +68,329 @@
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
-<input type="checkbox" id="collapse-section5" checked aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V1.3.0 / 11-September-2019</label>
+<input type="checkbox" id="collapse-section6" checked aria-hidden="true"> <label for="collapse-section6" aria-hidden="true">V1.4.0 / 06-December-2019</label>
<div>
<h2 id="main-changes">Main Changes</h2>
+<h3 id="maintenance-release">Maintenance Release</h3>
+<ul>
+<li><strong>BLE</strong>:
+<ul>
+<li>Add new application under “Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_Peripheral_Lite”:
+<ul>
+<li>BLE_Peripheral_Lite: STM32WB simplified application without Sequencer, Low Power Manager and Timer Server.</li>
+</ul></li>
+</ul></li>
+<li><strong>Zigbee</strong>:
+<ul>
+<li>Simplify the existing Zigbee OnOff Cluster applications for P-NUCLEO-WB55.Nucleo.</li>
+<li>Add 2 new applications available under P-NUCLEO-WB55.USBDongle:
+<ul>
+<li>Zigbee_OnOff_Client_Router: How to use OnOff cluster as a Client on a centralized Zigbee network.</li>
+<li>Zigbee_OnOff_Server_Coord: How to use OnOff cluster as a Server on a centralized Zigbee network.</li>
+</ul></li>
+</ul></li>
+<li><strong>MAC 802.15.4</strong>:
+<ul>
+<li>MAC examples now ported on MDK-ARM and SW4STM32 IDEs.</li>
+</ul></li>
+<li>Maintenance release for HAL and LL drivers.</li>
+</ul>
+<h2 id="contents">Contents</h2>
+<h3 id="projects">Projects</h3>
+<p>The STM32CubeWB Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.</p>
+<p>The exhaustive list of projects and their short description is provided in this table (<a href="Projects/STM32CubeProjectsList.html">STM32CubeProjectsList.html</a>).</p>
+<ul>
+<li><strong>P-NUCLEO-WB55.Nucleo</strong> (<a href="Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/readme.txt">default application</a>)</li>
+<li><strong>P-NUCLEO-WB55.USBDongle</strong> (<a href="Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/readme.txt">default application</a>)</li>
+</ul>
+<h3 id="components">Components</h3>
+<table>
+<caption>Firmware Upgrade Services Binary</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Name</th>
+<th style="text-align: left;">Version</th>
+<th>License</th>
+<th>Release note</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">stm32wb5x_FUS_fw.bin</td>
+<td style="text-align: left;">V1.0.2</td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption>Coprocessor Wireless Binaries</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Name</th>
+<th style="text-align: left;">Version</th>
+<th>License</th>
+<th>Release note</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">stm32wb5x_BLE_HCILayer_fw.bin</td>
+<td style="text-align: left;"><strong>v1.4.0</strong></td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">stm32wb5x_BLE_Stack_fw.bin</td>
+<td style="text-align: left;"><strong>v1.4.0</strong></td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">stm32wb5x_BLE_Thread_fw.bin</td>
+<td style="text-align: left;"><strong>v1.4.0</strong></td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">stm32wb5x_Mac_802_15_4_fw.bin</td>
+<td style="text-align: left;"><strong>v1.4.0</strong></td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">stm32wb5x_rfmonitor_phy802_15_4_fw.bin</td>
+<td style="text-align: left;">v1.1.0</td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">stm32wb5x_Thread_FTD_fw.bin</td>
+<td style="text-align: left;"><strong>v1.4.0</strong></td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">stm32wb5x_Thread_MTD_fw.bin</td>
+<td style="text-align: left;"><strong>v1.4.0</strong></td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">stm32wb5x_Zigbee_FFD_Full_fw.bin</td>
+<td style="text-align: left;"><strong>v1.4.0</strong></td>
+<td><a href="http://www.st.com/SLA0044">SLA0044 (binary release)</a></td>
+<td><a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a></td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption>Drivers</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Name</th>
+<th>Version</th>
+<th>License</th>
+<th>Release note</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">Cortex-M CMSIS</td>
+<td>V5.4.0</td>
+<td><a href="Drivers/CMSIS/LICENSE.txt">Apache License 2.0</a></td>
+<td><a href="Drivers/CMSIS/README.md">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">STM32WB CMSIS</td>
+<td>V1.3.0</td>
+<td><a href="Drivers/CMSIS/LICENSE.txt">Apache License 2.0</a></td>
+<td><a href="Drivers/CMSIS/Device/ST/STM32WBxx/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">STM32WBxx_HAL_Driver</td>
+<td><strong>V1.4.0</strong></td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Drivers/STM32WBxx_HAL_Driver/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">P-NUCLEO-WB55.USBDongle</td>
+<td>V1.0.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Drivers/BSP/P-NUCLEO-WB55.USBDongle/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">P-NUCLEO-WB55.Nucleo</td>
+<td>V1.0.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Drivers/BSP/P-NUCLEO-WB55.Nucleo/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">BSP Adafruit Shield</td>
+<td>V3.0.3</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Drivers/BSP/Adafruit_Shield/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">BSP Common</td>
+<td>V5.0.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Drivers/BSP/Components/Common/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">BSP st7735</td>
+<td>V1.1.2</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Drivers/BSP/Components/st7735/Release_Notes.html">release notes</a></td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption>Middleware</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Name</th>
+<th style="text-align: left;">Version</th>
+<th>License</th>
+<th>Release note</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">STM32 USB Device Library</td>
+<td style="text-align: left;">V2.5.3</td>
+<td><a href="http://www.st.com/SLA0044">SLA0044</a></td>
+<td><a href="Middlewares/ST/STM32_USB_Device_Library/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">STM32 WPAN</td>
+<td style="text-align: left;"><strong>V1.4.0</strong></td>
+<td><a href="http://www.st.com/SLA0044">SLA0044</a></td>
+<td><a href="Middlewares/ST/STM32_WPAN/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">FatFS</td>
+<td style="text-align: left;">R0.12c</td>
+<td><a href="Middlewares/Third_Party/FatFs/doc/en/appnote.html#license">FatFs License</a></td>
+<td><a href="Middlewares/Third_Party/FatFs/doc/updates.txt">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;"></td>
+<td style="text-align: left;">ST modified 20190329</td>
+<td><a href="http://www.st.com/SLA0044">SLA0044</a></td>
+<td><a href="Middlewares/Third_Party/FatFs/src/st_readme.txt">release notes ST</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">FreeRTOS</td>
+<td style="text-align: left;">V10.0.1</td>
+<td><a href="Middlewares/Third_Party/FreeRTOS/License/license.txt">MIT</a></td>
+<td><a href="Middlewares/Third_Party/FreeRTOS/Source/readme.txt">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;"></td>
+<td style="text-align: left;">ST modified 20190329</td>
+<td><a href="http://www.st.com/SLA0044">SLA0044</a></td>
+<td><a href="Middlewares/Third_Party/FreeRTOS/Source/st_readme.txt">release notes ST</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">STM32_TouchSensing_Library</td>
+<td style="text-align: left;">V2.2.0</td>
+<td><a href="http://www.st.com/SLA0044">SLA0044</a></td>
+<td><a href="Middlewares/ST/STM32_TouchSensing_Library/Release_Notes.html">release notes</a></td>
+</tr>
+</tbody>
+</table>
+<table>
+<caption>Utilities</caption>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Name</th>
+<th style="text-align: left;">Version</th>
+<th>License</th>
+<th>Release note</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">CPU</td>
+<td style="text-align: left;">V1.1.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Utilities/CPU/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">Fonts</td>
+<td style="text-align: left;">V1.0.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Utilities/Fonts/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">Log</td>
+<td style="text-align: left;">V1.0.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Utilities/Log/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">conf</td>
+<td style="text-align: left;">V1.0.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Utilities/conf/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">lpm</td>
+<td style="text-align: left;">V1.1.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Utilities/lpm/tiny_lpm/Release_Notes.html">release notes</a></td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">sequencer</td>
+<td style="text-align: left;">V1.2.0</td>
+<td><a href="https://opensource.org/licenses/BSD-3-Clause">BSD 3-Clause</a></td>
+<td><a href="Utilities/sequencer/Release_Notes.html">release notes</a></td>
+</tr>
+</tbody>
+</table>
+<h2 id="known-limitations">Known Limitations</h2>
+<ul>
+<li>With the ability to change the Coprocessor Wireless Binaries Over The Air (OTA), it is possible to switch from one binary to another. Only, the following case is not possible due to available memory size:
+<ul>
+<li>Moving from stm32wb5x_BLE_Stack_fw.bin to stm32wb5x_BLE_Thread_fw.bin</li>
+</ul></li>
+<li>BLE_MeshLightingDemo application is not functionnal under Linux platform.</li>
+</ul>
+<h2 id="development-toolchains-and-compilers">Development Toolchains and Compilers</h2>
+<ul>
+<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2 + ST-Link</li>
+<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25 + ST-Link</li>
+<li>System Workbench for STM32 (SW4STM32) toolchain V2.7 + ST-Link</li>
+</ul>
+<h2 id="supported-devices-and-boards">Supported Devices and boards</h2>
+<ul>
+<li>STM32WB55xx and STM32WB50xx devices</li>
+<li>P-NUCLEO-WB55 kit composed of P-NUCLEO-WB55.Nucleo and P-NUCLEO-WB55.USBDongle</li>
+</ul>
+<h2 id="dependencies">Dependencies</h2>
+<p>This software release is compatible with:</p>
+<ul>
+<li>STM32WB_Copro_Wireless_Binaries available under Projects/STM32WB_Copro_Wireless_Binaries</li>
+</ul>
+<p>Several applications (BLE (Bluetooth low energy), Thread or Mac 802-15-4) are available under:</p>
+<ul>
+<li>Projects/P-NUCLEO-WB55.Nucleo/Applications</li>
+<li>Projects/P-NUCLEO-WB55.USBDongle/Applications</li>
+</ul>
+<p>All of them are provided in source code and some of them are also available in binary format directly for ready to use usage:</p>
+<ul>
+<li>Projects/P-NUCLEO-WB55.Nucleo/Applications/xxx/Binary/<projectName>.hex</li>
+<li>Projects/P-NUCLEO-WB55.USBDongle/Applications/xxx/Binary/<projectName>.hex</li>
+</ul>
+<p>Each of them require a different coprocessor binary in order to behave correctly. This is documented inside each readme.txt of those applications.</p>
+<p>You can refer to the <a href="Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html">release note</a> of the binaries for a detailed explanation on how to use and how to flash them.</p>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V1.3.0 / 11-September-2019</label>
+<div>
+<h2 id="main-changes-1">Main Changes</h2>
<h3 id="introduction-of-zigbee-support">Introduction of ZIGBEE support</h3>
<p>STM32WB ecosystem keeps growing, now with the introduction of ZigBee protocol support as <strong>certified compliant platform</strong>, running on <strong>certified 802.15.4 2015 LLD MAC and PHY</strong>.</p>
<p>The wireless stack is based on <strong>ZigBee pro 2017, R22 release version</strong> in order to propose a ZigBee 3.0 solution. First ON/OFF cluster is coming in this STM32CubeWB Firmware Package delivery release.</p>
@@ -99,15 +419,15 @@
<li>Integration of BLE Mesh library v1.10.004</li>
<li>Maintenance release for CMSIS, HAL and LL drivers.</li>
</ul>
-<h2 id="contents">Contents</h2>
-<h3 id="projects">Projects</h3>
+<h2 id="contents-1">Contents</h2>
+<h3 id="projects-1">Projects</h3>
<p>The STM32CubeWB Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.</p>
<p>The exhaustive list of projects and their short description is provided in this table (<a href="Projects/STM32CubeProjectsList.html">STM32CubeProjectsList.html</a>).</p>
<ul>
<li><strong>P-NUCLEO-WB55.Nucleo</strong> (<a href="Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/readme.txt">default application</a>)</li>
<li><strong>P-NUCLEO-WB55.USBDongle</strong> (<a href="Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/readme.txt">default application</a>)</li>
</ul>
-<h3 id="components">Components</h3>
+<h3 id="components-1">Components</h3>
<table>
<caption>Firmware Upgrade Services Binary</caption>
<thead>
@@ -347,7 +667,7 @@
</tr>
</tbody>
</table>
-<h2 id="known-limitations">Known Limitations</h2>
+<h2 id="known-limitations-1">Known Limitations</h2>
<ul>
<li>With the ability to change the Coprocessor Wireless Binaries Over The Air (OTA), it is possible to switch from one binary to another. Only, the following case is not possible due to available memory size:
<ul>
@@ -356,18 +676,18 @@
<li>Mac 802-15-4 applications are provided with EWARM IDE. MDK-ARM and SW4STM32 IDE are planned for a future release.</li>
<li>BLE_MeshLightingDemo application is not functionnal under Linux platform.</li>
</ul>
-<h2 id="development-toolchains-and-compilers">Development Toolchains and Compilers</h2>
+<h2 id="development-toolchains-and-compilers-1">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2 + ST-Link</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25 + ST-Link</li>
<li>System Workbench for STM32 (SW4STM32) toolchain V2.7 + ST-Link</li>
</ul>
-<h2 id="supported-devices-and-boards">Supported Devices and boards</h2>
+<h2 id="supported-devices-and-boards-1">Supported Devices and boards</h2>
<ul>
<li>STM32WB55xx and STM32WB50xx devices</li>
<li>P-NUCLEO-WB55 kit composed of P-NUCLEO-WB55.Nucleo and P-NUCLEO-WB55.USBDongle</li>
</ul>
-<h2 id="dependencies">Dependencies</h2>
+<h2 id="dependencies-1">Dependencies</h2>
<p>This software release is compatible with:</p>
<ul>
<li>STM32WB_Copro_Wireless_Binaries available under Projects/STM32WB_Copro_Wireless_Binaries</li>
@@ -389,7 +709,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.2.0 / 3rd-July-2019</label>
<div>
-<h2 id="main-changes-1">Main Changes</h2>
+<h2 id="main-changes-2">Main Changes</h2>
<h3 id="stm32wb50xx-introduction-and-new-features-addition">STM32WB50xx introduction and new features addition</h3>
<p>This release introduces the following feature:</p>
<ul>
@@ -416,15 +736,15 @@
<li>Mesh Library V1.10.000</li>
</ul></li>
</ul>
-<h2 id="contents-1">Contents</h2>
-<h3 id="projects-1">Projects</h3>
+<h2 id="contents-2">Contents</h2>
+<h3 id="projects-2">Projects</h3>
<p>The STM32CubeWB Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.</p>
<p>The exhaustive list of projects and their short description is provided in this table (<a href="Projects/STM32CubeProjectsList.html">STM32CubeProjectsList.html</a>).</p>
<ul>
<li><strong>P-NUCLEO-WB55.Nucleo</strong> (<a href="Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/readme.txt">default application</a>)</li>
<li><strong>P-NUCLEO-WB55.USBDongle</strong> (<a href="Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/readme.txt">default application</a>)</li>
</ul>
-<h3 id="components-1">Components</h3>
+<h3 id="components-2">Components</h3>
<table>
<caption>Firmware Upgrade Services Binary</caption>
<thead>
@@ -664,7 +984,7 @@
</tr>
</tbody>
</table>
-<h2 id="known-limitations-1">Known Limitations</h2>
+<h2 id="known-limitations-2">Known Limitations</h2>
<ul>
<li>With the ability to change the Coprocessor Wireless Binaries Over The Air (OTA), it is possible to switch from one binary to another. Only, the following case is not possible due to available memory size:
<ul>
@@ -674,18 +994,18 @@
<li>BLE_MeshLightingDemo application is not functionnal under Linux platform.</li>
<li>Zigbee supports only OnOff cluster.</li>
</ul>
-<h2 id="development-toolchains-and-compilers-1">Development Toolchains and Compilers</h2>
+<h2 id="development-toolchains-and-compilers-2">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2 + ST-Link</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25 + ST-Link</li>
<li>System Workbench for STM32 (SW4STM32) toolchain V2.7 + ST-Link</li>
</ul>
-<h2 id="supported-devices-and-boards-1">Supported Devices and boards</h2>
+<h2 id="supported-devices-and-boards-2">Supported Devices and boards</h2>
<ul>
<li>STM32WB55xx and STM32WB50xx devices</li>
<li>P-NUCLEO-WB55 kit composed of P-NUCLEO-WB55.Nucleo and P-NUCLEO-WB55.USBDongle</li>
</ul>
-<h2 id="dependencies-1">Dependencies</h2>
+<h2 id="dependencies-2">Dependencies</h2>
<p>This software release is compatible with:</p>
<ul>
<li>STM32WB_Copro_Wireless_Binaries available under Projects/STM32WB_Copro_Wireless_Binaries</li>
@@ -707,7 +1027,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.1.1 / 17-May-2019</label>
<div>
-<h2 id="main-changes-2">Main Changes</h2>
+<h2 id="main-changes-3">Main Changes</h2>
<h3 id="patch-release-for-fus-v1.0.2wireless-coprocessor-binary-bug-fix-and-ble-mesh-library-improvements">Patch release for FUS V1.0.2,Wireless Coprocessor Binary bug fix and BLE Mesh Library improvements</h3>
<p>This release introduces the following feature:</p>
<ul>
@@ -733,8 +1053,8 @@
</ul></li>
</ul></li>
</ul>
-<h2 id="contents-2">Contents</h2>
-<h3 id="projects-2">Projects</h3>
+<h2 id="contents-3">Contents</h2>
+<h3 id="projects-3">Projects</h3>
<p>The STM32CubeWB Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.</p>
<p>The exhaustive list of projects and their short description is provided in this table (<a href="Projects/STM32CubeProjectsList.html">STM32CubeProjectsList.html</a>).</p>
<ul>
@@ -742,7 +1062,7 @@
<li><strong>P-NUCLEO-WB55.USBDongle</strong> (<a href="Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/readme.txt">default application</a>)</li>
</ul>
<p><em>Please note that the path of the example projects have been change to P-NUCLEO-WB55.Nucleo and P-NUCLEO-WB55.USBDongle.</em></p>
-<h3 id="components-2">Components</h3>
+<h3 id="components-3">Components</h3>
<table>
<caption>Firmware Upgrade Services Binary</caption>
<thead>
@@ -964,7 +1284,7 @@
</tr>
</tbody>
</table>
-<h2 id="known-limitations-2">Known Limitations</h2>
+<h2 id="known-limitations-3">Known Limitations</h2>
<ul>
<li>With the ability to change the Coprocessor Wireless Binaries Over The Air (OTA), it is possible to switch from one binary to another. Only, the following case is not possible due to available memory size:
<ul>
@@ -982,18 +1302,18 @@
<li>SW4STM32 project is compiled without optimisation. (With optimised size compilation, the virtual com port required for the application is not functionnal)</li>
</ul></li>
</ul>
-<h2 id="development-toolchains-and-compilers-2">Development Toolchains and Compilers</h2>
+<h2 id="development-toolchains-and-compilers-3">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2 + ST-Link</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25 + ST-Link</li>
<li>System Workbench for STM32 (SW4STM32) toolchain V2.7 + ST-Link</li>
</ul>
-<h2 id="supported-devices-and-boards-2">Supported Devices and boards</h2>
+<h2 id="supported-devices-and-boards-3">Supported Devices and boards</h2>
<ul>
<li>STM32WB55xx devices</li>
<li>P-NUCLEO-WB55 kit composed of P-NUCLEO-WB55.Nucleo and P-NUCLEO-WB55.USBDongle</li>
</ul>
-<h2 id="dependencies-2">Dependencies</h2>
+<h2 id="dependencies-3">Dependencies</h2>
<p>This software release is compatible with:</p>
<ul>
<li>STM32WB_Copro_Wireless_Binaries available under Projects/STM32WB_Copro_Wireless_Binaries</li>
@@ -1015,7 +1335,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 05-April-2019</label>
<div>
-<h2 id="main-changes-3">Main Changes</h2>
+<h2 id="main-changes-4">Main Changes</h2>
<h3 id="new-features-introduction-and-maintenance-release">New features introduction and maintenance release</h3>
<p>This release introduces the following feature:</p>
<ul>
@@ -1077,8 +1397,8 @@
<li>Projects\P-NUCLEO-WB55.USBDongle\Applications\BLE</li>
<li>Projects\P-NUCLEO-WB55.USBDongle\Applications\Thread</li>
</ul>
-<h2 id="contents-3">Contents</h2>
-<h3 id="projects-3">Projects</h3>
+<h2 id="contents-4">Contents</h2>
+<h3 id="projects-4">Projects</h3>
<p>The STM32CubeWB Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.</p>
<p>The exhaustive list of projects and their short description is provided in this table (<a href="Projects/STM32CubeProjectsList.html">STM32CubeProjectsList.html</a>).</p>
<ul>
@@ -1086,7 +1406,7 @@
<li><strong>P-NUCLEO-WB55.USBDongle</strong> (<a href="Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/readme.txt">default application</a>)</li>
</ul>
<p><em>Please note that the path of the example projects have been change to P-NUCLEO-WB55.Nucleo and P-NUCLEO-WB55.USBDongle.</em></p>
-<h3 id="components-3">Components</h3>
+<h3 id="components-4">Components</h3>
<table>
<caption>Firmware Upgrade Services Binary</caption>
<thead>
@@ -1308,7 +1628,7 @@
</tr>
</tbody>
</table>
-<h2 id="known-limitations-3">Known Limitations</h2>
+<h2 id="known-limitations-4">Known Limitations</h2>
<ul>
<li>With the ability to change the Coprocessor Wireless Binaries Over The Air (OTA), it is possible to switch from one binary to another. Only, the following case is not possible due to available memory size:
<ul>
@@ -1326,18 +1646,18 @@
<li>SW4STM32 project is compiled without optimisation. (With optimised size compilation, the virtual com port required for the application is not functionnal)</li>
</ul></li>
</ul>
-<h2 id="development-toolchains-and-compilers-3">Development Toolchains and Compilers</h2>
+<h2 id="development-toolchains-and-compilers-4">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2 + ST-Link</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25 + ST-Link</li>
<li>System Workbench for STM32 (SW4STM32) toolchain V2.7 + ST-Link</li>
</ul>
-<h2 id="supported-devices-and-boards-3">Supported Devices and boards</h2>
+<h2 id="supported-devices-and-boards-4">Supported Devices and boards</h2>
<ul>
<li>STM32WB55xx devices</li>
<li>P-NUCLEO-WB55 kit composed of P-NUCLEO-WB55.Nucleo and P-NUCLEO-WB55.USBDongle</li>
</ul>
-<h2 id="dependencies-3">Dependencies</h2>
+<h2 id="dependencies-4">Dependencies</h2>
<p>This software release is compatible with:</p>
<ul>
<li>STM32WB_Copro_Wireless_Binaries available under Projects/STM32WB_Copro_Wireless_Binaries</li>
@@ -1359,7 +1679,7 @@
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 06-February-2019</label>
<div>
-<h2 id="main-changes-4">Main Changes</h2>
+<h2 id="main-changes-5">Main Changes</h2>
<h3 id="first-release">First release</h3>
<p>First release of STM32CubeWB (STM32Cube for STM32WB Series) supporting STM32WB55xx devices.</p>
<p>In the STM32CubeWB MCU Package, most of the examples and applications projects are generated with the STM32CubeMX tool to initialize the system, peripherals and middleware stacks.</p>
@@ -1375,15 +1695,15 @@
<li>Projects\P-NUCLEO-WB55.USBDongle\Applications\BLE</li>
<li>Projects\P-NUCLEO-WB55.USBDongle\Applications\Thread</li>
</ul>
-<h2 id="contents-4">Contents</h2>
-<h3 id="projects-4">Projects</h3>
+<h2 id="contents-5">Contents</h2>
+<h3 id="projects-5">Projects</h3>
<p>The STM32CubeWB Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.</p>
<p>The exhaustive list of projects and their short description is provided in this table (<a href="Projects/STM32CubeProjectsList.html">STM32CubeProjectsList.html</a>).</p>
<ul>
<li><strong>P-NUCLEO-WB55.Nucleo</strong> (<a href="Projects/P-NUCLEO-WB55.Nucleo/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_p2pServer/readme.txt">default application</a>)</li>
<li><strong>P-NUCLEO-WB55.USBDongle</strong> (<a href="Projects/P-NUCLEO-WB55.USBDongle/Release_Notes.html">release notes</a>) (<a href="Projects/P-NUCLEO-WB55.USBDongle/Applications/BLE/BLE_p2pClient/readme.txt">default application</a>)</li>
</ul>
-<h3 id="components-4">Components</h3>
+<h3 id="components-5">Components</h3>
<table>
<caption>Coprocessor Wireless Binaries</caption>
<thead>
@@ -1574,7 +1894,7 @@
</tr>
</tbody>
</table>
-<h2 id="known-limitations-4">Known Limitations</h2>
+<h2 id="known-limitations-5">Known Limitations</h2>
<ul>
<li>BLE\BLE_p2pClient is provided with EWARM and MDK-ARM IDE. A connection issue with BLE_p2pServer is encounter with SW4STM32.</li>
<li>BLE\BLE_p2pRouter is provided with EWARM and MDK-ARM IDE. A connection issue with BLE_p2pServer is encounter with SW4STM32.</li>
@@ -1604,18 +1924,18 @@
</ul></li>
</ul></li>
</ul>
-<h2 id="development-toolchains-and-compilers-4">Development Toolchains and Compilers</h2>
+<h2 id="development-toolchains-and-compilers-5">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2 + ST-Link</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25 + ST-Link</li>
<li>System Workbench for STM32 (SW4STM32) toolchain V2.7 + ST-Link</li>
</ul>
-<h2 id="supported-devices-and-boards-4">Supported Devices and boards</h2>
+<h2 id="supported-devices-and-boards-5">Supported Devices and boards</h2>
<ul>
<li>STM32WB55xx devices</li>
<li>P-NUCLEO-WB55 kit composed of P-NUCLEO-WB55.Nucleo and P-NUCLEO-WB55.USBDongle</li>
</ul>
-<h2 id="dependencies-4">Dependencies</h2>
+<h2 id="dependencies-5">Dependencies</h2>
<p>This software release is compatible with:</p>
<ul>
<li>STM32WB_Copro_Wireless_Binaries available under Projects/STM32WB_Copro_Wireless_Binaries</li>
diff --git a/Utilities/lpm/tiny_lpm/Release_Notes.md b/Utilities/lpm/tiny_lpm/Release_Notes.md
deleted file mode 100644
index c808f595e..000000000
--- a/Utilities/lpm/tiny_lpm/Release_Notes.md
+++ /dev/null
@@ -1,116 +0,0 @@
----
-pagetitle: Release Notes for STM32 TINY low power manager
-lang: en
----
-
-::: {.row}
-::: {.col-sm-12 .col-lg-4}
-
-::: {.card .fluid}
-::: {.sectione .dark}
-<center>
-# <small>Release Notes for</small> STM32 TINY low power manger
-Copyright &copy; 2019 STMicroelectronics\
-
-[![ST logo](_htmresc/st_logo.png)](https://www.st.com){.logo}
-</center>
-:::
-:::
-
-# License
-
-This software component is licensed by ST under BSD 3-Clause license, the "License";
-You may not use this file except in compliance with the License. You may obtain a copy of the License at:
-
- [https://opensource.org/licenses/BSD-3-Clause]
-
-# Purpose
-
-The code source delivered is an utility to help customer to build a low power application.
-:::
-
-::: {.col-sm-12 .col-lg-8}
-# Update History
-
-::: {.collapse}
-<input type="checkbox" id="collapse-section1" checked aria-hidden="true">
-<label for="collapse-section1" aria-hidden="true">V1.1.0 / 04-June-2019</label>
-<div>
-
-## Main Changes
-
-### release V1.1.0
-
-## Contents
-
- Headline
- --------
- Add CubeMx tag inside the template file.
-
- : Fixed bugs list
-\
-
-## known limitations
-
-## Development Toolchains and Compilers
-
-- IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2
-- RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25
-- System Workbench STM32 (SW4STM32) toolchain V2.7.2
-
-## Supported Devices and boards
-
-## backward compatibility
-
-## Dependencies
-
-
-</div>
-:::
-
-::: {.collapse}
-<input type="checkbox" id="collapse-section2" aria-hidden="true">
-<label for="collapse-section2" aria-hidden="true">V1.0.0 / 13-May-2019</label>
-<div>
-
-## Main Changes
-
-### first release
-
-
-## Contents
-
- Headline
- --------
- first official release
-
- : Fixed bugs list
-\
-
-## known limitations
-
-## Development Toolchains and Compilers
-
-- IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2
-- RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25
-- System Workbench STM32 (SW4STM32) toolchain V2.7.2
-
-## Supported Devices and boards
-
-## backward compatibility
-
-## Dependencies
-
-
-</div>
-:::
-
-:::
-:::
-
-<footer class="sticky">
-For complete documentation on STM32,visit: [[www.st.com/stm32](http://www.st.com)]
-
-This release note uses up to date web standards and, for this reason, should not be opened with Internet Explorer
-but preferably with popular browsers such as Google Chrome, Mozilla Firefox, Opera or Microsoft Edge.
-</footer>
diff --git a/package.xml b/package.xml
index 16181aa58..c07095473 100644
--- a/package.xml
+++ b/package.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Package DBVersion="2.0">
- <PackDescription Release="FW.WB.1.3.0">
+ <PackDescription Release="FW.WB.1.4.0">
<Note Release="ReleaseNotes.html"/>
</PackDescription>
</Package> \ No newline at end of file