Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions lib/stm32wb/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,132 @@
#
# SPDX-License-Identifier: Apache-2.0

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_LL_ONLY "1 << 0")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_LL_HOST "0 << 0")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_NO_SVC_CHANGE_DESC "1 << 1")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_WITH_SVC_CHANGE_DESC "0 << 1")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_DEVICE_NAME_RO "1 << 2")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_DEVICE_NAME_RW "0 << 2")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_EXT_ADV "1 << 3")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_NO_EXT_ADV "0 << 3")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_CS_ALGO2 "1 << 4")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_NO_CS_ALGO2 "0 << 4")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_REDUC_GATTDB_NVM "1 << 5")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_FULL_GATTDB_NVM "0 << 5")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_GATT_CACHING_USED "1 << 6")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_GATT_CACHING_NOTUSED "0 << 6")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_POWER_CLASS_1 "1 << 7")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_POWER_CLASS_2_3 "0 << 7")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_APPEARANCE_WRITABLE "1 << 0")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_APPEARANCE_READONLY "0 << 0")

MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_ENHANCED_ATT_SUPPORTED "1 << 1")
MATH(EXPR SHCI_C2_BLE_INIT_OPTIONS_ENHANCED_ATT_NOTSUPPORTED "0 << 1")

if(CONFIG_BT_DEVICE_NAME_GATT_WRITABLE)
message(STATUS "CONFIG_BT_DEVICE_NAME_GATT_WRITABLE: ${CONFIG_BT_DEVICE_NAME_GATT_WRITABLE}")
set(CFG_DEVICE_NAME ${SHCI_C2_BLE_INIT_OPTIONS_DEVICE_NAME_RW})
else()
message(STATUS "CONFIG_BT_DEVICE_NAME_GATT_WRITABLE: UNDEFINED")
set(CFG_DEVICE_NAME ${SHCI_C2_BLE_INIT_OPTIONS_DEVICE_NAME_RO})
endif()

if(CONFIG_BT_EXT_ADV)
message(STATUS "CONFIG_BT_EXT_ADV: ${CONFIG_BT_EXT_ADV}")
MATH(EXPR CFG_EXT_ADV "${SHCI_C2_BLE_INIT_OPTIONS_EXT_ADV} | ${SHCI_C2_BLE_INIT_OPTIONS_CS_ALGO2}")
else()
message(STATUS "CONFIG_BT_EXT_ADV: UNDEFINED")
MATH(EXPR CFG_EXT_ADV "${SHCI_C2_BLE_INIT_OPTIONS_NO_EXT_ADV} | ${SHCI_C2_BLE_INIT_OPTIONS_NO_CS_ALGO2}")
endif()

if(CONFIG_BT_GATT_CACHING)
message(STATUS "CONFIG_BT_GATT_CACHING: ${CONFIG_BT_GATT_CACHING}")
set(CFG_GATT_CACHING ${SHCI_C2_BLE_INIT_OPTIONS_GATT_CACHING_USED})
else()
message(STATUS "CONFIG_BT_GATT_CACHING: UNDEFINED")
set(CFG_GATT_CACHING ${SHCI_C2_BLE_INIT_OPTIONS_GATT_CACHING_NOTUSED})
endif()

MATH(EXPR CFG_BLE_OPTIONS "${SHCI_C2_BLE_INIT_OPTIONS_LL_HOST} | ${SHCI_C2_BLE_INIT_OPTIONS_WITH_SVC_CHANGE_DESC} | ${CFG_DEVICE_NAME} | ${CFG_EXT_ADV} | ${SHCI_C2_BLE_INIT_OPTIONS_FULL_GATTDB_NVM} | ${CFG_GATT_CACHING} | ${SHCI_C2_BLE_INIT_OPTIONS_POWER_CLASS_2_3}" OUTPUT_FORMAT HEXADECIMAL)

if(CONFIG_BT_DEVICE_APPEARANCE_GATT_WRITABLE)
message(STATUS "CONFIG_BT_DEVICE_APPEARANCE_GATT_WRITABLE: ${CONFIG_BT_DEVICE_APPEARANCE_GATT_WRITABLE}")
set(CFG_DEVICE_APPEARANCE ${SHCI_C2_BLE_INIT_OPTIONS_APPEARANCE_WRITABLE})
else()
message(STATUS "CONFIG_BT_DEVICE_APPEARANCE_GATT_WRITABLE: UNDEFINED")
set(CFG_DEVICE_APPEARANCE ${SHCI_C2_BLE_INIT_OPTIONS_APPEARANCE_READONLY})
endif()

if(CONFIG_BT_EATT)
message(STATUS "CONFIG_BT_EATT: ${CONFIG_BT_EATT}")
set(CFG_EATT ${SHCI_C2_BLE_INIT_OPTIONS_ENHANCED_ATT_SUPPORTED})
else()
message(STATUS "CONFIG_BT_EATT: UNDEFINED")
set(CFG_EATT ${SHCI_C2_BLE_INIT_OPTIONS_ENHANCED_ATT_NOTSUPPORTED})
endif()

set(CFG_BLE_OPTIONS_EXT ${CFG_DEVICE_APPEARANCE} | ${CFG_EATT})
MATH(EXPR CFG_BLE_OPTIONS_EXT "${CFG_DEVICE_APPEARANCE} | ${CFG_EATT}" OUTPUT_FORMAT HEXADECIMAL)

if(CONFIG_BT_EXT_ADV_MAX_ADV_SET)
message(STATUS "CONFIG_BT_EXT_ADV_MAX_ADV_SET: ${CONFIG_BT_EXT_ADV_MAX_ADV_SET}")
if(CONFIG_BT_EXT_ADV_MAX_ADV_SET GREATER 8)
set(CFG_BLE_MAX_ADV_SET_NBR 1)
else()
set(CFG_BLE_MAX_ADV_SET_NBR ${CONFIG_BT_EXT_ADV_MAX_ADV_SET})
endif()
else()
message(STATUS "CONFIG_BT_EXT_ADV_MAX_ADV_SET: UNDEFINED")
set(CFG_BLE_MAX_ADV_SET_NBR 1)
endif()

if(CFG_BLE_MAX_ADV_SET_NBR LESS 4)
set(CFG_BLE_MAX_ADV_DATA_LEN 1650)
elseif(CFG_BLE_MAX_ADV_SET_NBR EQUAL 4)
set(CFG_BLE_MAX_ADV_DATA_LEN 1035)
elseif(CFG_BLE_MAX_ADV_SET_NBR EQUAL 5)
set(CFG_BLE_MAX_ADV_DATA_LEN 621)
elseif(CFG_BLE_MAX_ADV_SET_NBR EQUAL 6)
set(CFG_BLE_MAX_ADV_DATA_LEN 414)
elseif(CFG_BLE_MAX_ADV_SET_NBR GREATER 6)
set(CFG_BLE_MAX_ADV_DATA_LEN 207)
endif()

if(CONFIG_BT_EATT_MAX)
message(STATUS "CONFIG_BT_EATT_MAX: ${CONFIG_BT_EATT_MAX}")
if(CONFIG_BT_EATT_MAX GREATER 4)
set(CFG_BLE_MAX_ADD_EATT_BEARERS 4)
else()
set(CFG_BLE_MAX_ADD_EATT_BEARERS ${CONFIG_BT_EATT_MAX})
endif()
else()
message(STATUS "CONFIG_BT_EATT_MAX: UNDEFINED")
set(CFG_BLE_MAX_ADD_EATT_BEARERS 4)
endif()

message(STATUS "BLE Stack modularity configuration:")
message(STATUS "CFG_BLE_OPTIONS: ${CFG_BLE_OPTIONS}")
message(STATUS "CFG_BLE_OPTIONS_EXT: ${CFG_BLE_OPTIONS_EXT}")
message(STATUS "CFG_BLE_MAX_ADV_SET_NBR: ${CFG_BLE_MAX_ADV_SET_NBR}")
message(STATUS "CFG_BLE_MAX_ADV_DATA_LEN: ${CFG_BLE_MAX_ADV_DATA_LEN}")
message(STATUS "CFG_BLE_MAX_ADD_EATT_BEARERS: ${CFG_BLE_MAX_ADD_EATT_BEARERS}")

zephyr_compile_definitions(
-DCFG_BLE_OPTIONS=${CFG_BLE_OPTIONS}
-DCFG_BLE_OPTIONS_EXT=${CFG_BLE_OPTIONS_EXT}
-DCFG_BLE_MAX_ADV_SET_NBR=${CFG_BLE_MAX_ADV_SET_NBR}
-DCFG_BLE_MAX_ADV_DATA_LEN=${CFG_BLE_MAX_ADV_DATA_LEN}
-DCFG_BLE_MAX_ADD_EATT_BEARERS=${CFG_BLE_MAX_ADD_EATT_BEARERS}
)

zephyr_include_directories(hci)

zephyr_sources(hci/hw_ipcc.c)
Expand Down
13 changes: 10 additions & 3 deletions lib/stm32wb/hci/app_conf.h
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,9 @@
* other bits: complete with Options_extension flag
*/
/* Z-WB-3 */
#ifndef __ZEPHYR__
#define CFG_BLE_OPTIONS (SHCI_C2_BLE_INIT_OPTIONS_LL_ONLY | SHCI_C2_BLE_INIT_OPTIONS_WITH_SVC_CHANGE_DESC | SHCI_C2_BLE_INIT_OPTIONS_DEVICE_NAME_RW | SHCI_C2_BLE_INIT_OPTIONS_NO_EXT_ADV | SHCI_C2_BLE_INIT_OPTIONS_NO_CS_ALGO2 | SHCI_C2_BLE_INIT_OPTIONS_FULL_GATTDB_NVM | SHCI_C2_BLE_INIT_OPTIONS_GATT_CACHING_NOTUSED | SHCI_C2_BLE_INIT_OPTIONS_POWER_CLASS_2_3)
#endif

/**
* BLE stack Options_extension flags to be configured with:
Expand All @@ -319,7 +321,9 @@
* 0: Enhanced ATT not supported
* other bits: reserved (shall be set to 0)
*/
#ifndef __ZEPHYR__
#define CFG_BLE_OPTIONS_EXT (SHCI_C2_BLE_INIT_OPTIONS_APPEARANCE_READONLY | SHCI_C2_BLE_INIT_OPTIONS_ENHANCED_ATT_NOTSUPPORTED)
#endif

#define CFG_BLE_MAX_COC_INITIATOR_NBR (32)

Expand All @@ -332,8 +336,9 @@
* in addition to the number of links
* - Range: 0 .. 4
*/
#ifndef __ZEPHYR__
#define CFG_BLE_MAX_ADD_EATT_BEARERS (4)

#endif

/**
* BLE Rx model configuration flags to be configured with:
Expand All @@ -353,17 +358,19 @@
* on Max Extended advertising configuration supported.
* This parameter is considered by the CPU2 when CFG_BLE_OPTIONS has SHCI_C2_BLE_INIT_OPTIONS_EXT_ADV flag set
*/

#ifndef __ZEPHYR__
#define CFG_BLE_MAX_ADV_SET_NBR (3)
#endif

/* Maximum advertising data length (in bytes)
* Range: 31 .. 1650 with limitation:
* This parameter is linked to CFG_BLE_MAX_ADV_SET_NBR such as both compliant with allocated Total memory computed with BLE_EXT_ADV_BUFFER_SIZE based
* on Max Extended advertising configuration supported.
* This parameter is considered by the CPU2 when CFG_BLE_OPTIONS has SHCI_C2_BLE_INIT_OPTIONS_EXT_ADV flag set
*/

#ifndef __ZEPHYR__
#define CFG_BLE_MAX_ADV_DATA_LEN (1650)
#endif

/* RF TX Path Compensation Value (16-bit signed integer). Units: 0.1 dB.
* Range: -1280 .. 1280
Expand Down