Hello @vkosuri
The STM32WB0 Bluetooth® LE stack v4.x provides the capability to enable/disable, at compile time, the following Bluetooth® LE stack features based on a user-specific application scenario:
1. Enable/disable controller privacy
2. Enable/disable LE secure connections
3. Enable/disable scan capability
4. Enable/disable data length extension (valid only for the device supporting the data length extension feature)
5. Enable/disable LE 2M and LE Coded PHYs features
6. Enable/disable extended advertising and scanning features
7. Enable/disable L2CAP, connection-oriented data service feature (L2CAP-COS)
8. Enable/disable periodic advertising
9. Enable/disable periodic advertising with responses
10. Enable/disable constant tone extension (where applicable)
11. Enable/disable LE Power Control and Path Loss Monitoring
12. Enable/disable the connection capability.
13. Enable/disable the connection subrating
14. Enable/disable the channel classification
15. Enable/disable the broadcast isochronous streams
16. Enable/disable the connected isochronous streams
As consequence, user can define which Bluetooth LE specific features to be used according to application scenario and optimize the overall application memory footprint.
The selection is done through the app_conf.h file and the following define values:
/******************************************************************************
* BLE Stack modularity options
******************************************************************************/
#define CFG_BLE_CONTROLLER_SCAN_ENABLED (0U)
#define CFG_BLE_CONTROLLER_PRIVACY_ENABLED (0U)
#define CFG_BLE_SECURE_CONNECTIONS_ENABLED (1U)
#define CFG_BLE_CONTROLLER_DATA_LENGTH_EXTENSION_ENABLED (0U)
#define CFG_BLE_CONTROLLER_2M_CODED_PHY_ENABLED (1U)
#define CFG_BLE_CONTROLLER_EXT_ADV_SCAN_ENABLED (0U)
#define CFG_BLE_L2CAP_COS_ENABLED (0U)
#define CFG_BLE_CONTROLLER_PERIODIC_ADV_ENABLED (0U)
#define CFG_BLE_CONTROLLER_PERIODIC_ADV_WR_ENABLED (0U)
#define CFG_BLE_CONTROLLER_CTE_ENABLED (0U)
#define CFG_BLE_CONTROLLER_POWER_CONTROL_ENABLED (0U)
#define CFG_BLE_CONNECTION_ENABLED (1U)
#define CFG_BLE_CONTROLLER_CHAN_CLASS_ENABLED (0U)
#define CFG_BLE_CONTROLLER_BIS_ENABLED (0U)
#define CFG_BLE_CONNECTION_SUBRATING_ENABLED (0U)
#define CFG_BLE_CONTROLLER_CIS_ENABLED (0U)
The modular configuration can be handled through the CubeMX STM32_BLE tab when user generates his application.
You could refer to the following documents for detailed information about this key capability:
PM0274: Section 3.1 Bluetooth® Low Energy stack library framework
AN5977: Section 4.1.2.1 Bluetooth® LE host stack, Section 5.3 How to build STM32_BLE applications with STM32CubeMX.
Wiki.
This framework allows to target typical Bluetooth LE applications as Beacon, peripheral/gatt server or central/gatt client with optimized memory footprint and within the STM32WB05 memory layout. OnSTM32CubeWB0 Sw package, you can find a full set of BLE applications (Projects\NUCLEO-WB05KZ\Applications\BLE).
You can refer to the AN5977: Table 6. Library footprints for memory footprint related to BLE Beacon, Hearth Rate, p2pserver which are fully in line with WB05 memory layout.
Best regards.
STTwo-32