diff --git a/components/bt/CMakeLists.txt b/components/bt/CMakeLists.txt index bbfc4f222e..65c5b6e85c 100644 --- a/components/bt/CMakeLists.txt +++ b/components/bt/CMakeLists.txt @@ -759,6 +759,13 @@ if(CONFIG_BT_ENABLED) "host/nimble/nimble/nimble/host/src/ble_eatt.c" ) + if(CONFIG_BT_NIMBLE_ISO) + list(APPEND srcs + "host/nimble/nimble/nimble/host/src/ble_hs_iso_hci.c" + "host/nimble/nimble/nimble/host/src/ble_hs_iso.c" + ) + endif() + if(CONFIG_BT_CONTROLLER_DISABLED AND CONFIG_BT_NIMBLE_TRANSPORT_UART) list(APPEND srcs "host/nimble/nimble/nimble/transport/uart_ll/src/hci_uart.c" diff --git a/components/bt/host/nimble/Kconfig.in b/components/bt/host/nimble/Kconfig.in index 36c4c2e8e6..6697ac3d77 100644 --- a/components/bt/host/nimble/Kconfig.in +++ b/components/bt/host/nimble/Kconfig.in @@ -734,6 +734,84 @@ if BT_NIMBLE_50_FEATURE_SUPPORT default n help Enable support for Connectionless and Connection Oriented Direction Finding + + config BT_NIMBLE_ISO + bool "Isochronous channels" + depends on BT_NIMBLE_50_FEATURE_SUPPORT + help + Enable BLE Isochronous functionality. + + if BT_NIMBLE_ISO + choice BT_NIMBLE_ISO_FLOW_CONTROL + prompt "ISO flow control mode" + default BT_NIMBLE_ISO_NON_STD_FLOW_CTRL + help + ISO flow control mode + + config BT_NIMBLE_ISO_STD_FLOW_CTRL + bool "Standard" + help + ISO standard flow control + + config BT_NIMBLE_ISO_NON_STD_FLOW_CTRL + bool "Non-standard" + help + ISO non-standard flow control + endchoice + + config BT_NIMBLE_ISO_TEST + bool "ISO Test mode" + default y + help + Enable BLE Isochronous Test functionality. + + config BT_NIMBLE_ISO_BIG + int "Maximum number of BIG" + range 1 2 + default 1 + help + Maximum number of BIG. + + config BT_NIMBLE_ISO_BIS + int "Maximum number of BIS" + range 1 3 + default 2 + help + Maximum number of BIS. + + config BT_NIMBLE_ISO_BIS_PER_BIG + int "Maximum number of BIS per BIG" + range 1 3 + default 2 + help + Maximum number of BIS per BIG. + + config BT_NIMBLE_ISO_CIG + int "Maximum number of CIG" + range 1 2 + default 1 + help + Maximum number of CIG. + + config BT_NIMBLE_ISO_CIS + int "Maximum number of CIS" + range 1 3 + default 2 + help + Maximum number of CIS. + + config BT_NIMBLE_ISO_CIS_PER_CIG + int "Maximum number of CIS per CIG" + range 1 3 + default 2 + help + Maximum number of CIS per CIG. + + config BT_NIMBLE_ISO_CIS_ESTAB_V2 + bool "LE CIS Established event [v2]" + help + Enable this to support LE CIS Established event [v2]. + endif endif menuconfig BT_NIMBLE_GATT_CACHING diff --git a/components/bt/host/nimble/port/include/esp_nimble_cfg.h b/components/bt/host/nimble/port/include/esp_nimble_cfg.h index 01adb1bacf..06d13b8f30 100644 --- a/components/bt/host/nimble/port/include/esp_nimble_cfg.h +++ b/components/bt/host/nimble/port/include/esp_nimble_cfg.h @@ -2010,6 +2010,94 @@ #endif #endif +#ifndef MYNEWT_VAL_BLE_ISO +#ifdef CONFIG_BT_NIMBLE_ISO +#define MYNEWT_VAL_BLE_ISO CONFIG_BT_NIMBLE_ISO +#else +#define MYNEWT_VAL_BLE_ISO (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_STD_FLOW_CTRL +#ifdef CONFIG_BT_NIMBLE_ISO_STD_FLOW_CTRL +#define MYNEWT_VAL_BLE_ISO_STD_FLOW_CTRL CONFIG_BT_NIMBLE_ISO_STD_FLOW_CTRL +#else +#define MYNEWT_VAL_BLE_ISO_STD_FLOW_CTRL (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_NON_STD_FLOW_CTRL +#ifdef CONFIG_BT_NIMBLE_ISO_NON_STD_FLOW_CTRL +#define MYNEWT_VAL_BLE_ISO_NON_STD_FLOW_CTRL CONFIG_BT_NIMBLE_ISO_NON_STD_FLOW_CTRL +#else +#define MYNEWT_VAL_BLE_ISO_NON_STD_FLOW_CTRL (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_TEST +#ifdef CONFIG_BT_NIMBLE_ISO_TEST +#define MYNEWT_VAL_BLE_ISO_TEST CONFIG_BT_NIMBLE_ISO_TEST +#else +#define MYNEWT_VAL_BLE_ISO_TEST (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_BIG +#ifdef CONFIG_BT_NIMBLE_ISO_BIG +#define MYNEWT_VAL_BLE_ISO_BIG CONFIG_BT_NIMBLE_ISO_BIG +#else +#define MYNEWT_VAL_BLE_ISO_BIG (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_BIS +#ifdef CONFIG_BT_NIMBLE_ISO_BIS +#define MYNEWT_VAL_BLE_ISO_BIS CONFIG_BT_NIMBLE_ISO_BIS +#else +#define MYNEWT_VAL_BLE_ISO_BIS (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_BIS_PER_BIG +#ifdef CONFIG_BT_NIMBLE_ISO_BIS_PER_BIG +#define MYNEWT_VAL_BLE_ISO_BIS_PER_BIG CONFIG_BT_NIMBLE_ISO_BIS_PER_BIG +#else +#define MYNEWT_VAL_BLE_ISO_BIS_PER_BIG (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_CIG +#ifdef CONFIG_BT_NIMBLE_ISO_CIG +#define MYNEWT_VAL_BLE_ISO_CIG CONFIG_BT_NIMBLE_ISO_CIG +#else +#define MYNEWT_VAL_BLE_ISO_CIG (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_CIS +#ifdef CONFIG_BT_NIMBLE_ISO_CIS +#define MYNEWT_VAL_BLE_ISO_CIS CONFIG_BT_NIMBLE_ISO_CIS +#else +#define MYNEWT_VAL_BLE_ISO_CIS (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_CIS_PER_CIG +#ifdef CONFIG_BT_NIMBLE_ISO_CIS_PER_CIG +#define MYNEWT_VAL_BLE_ISO_CIS_PER_CIG CONFIG_BT_NIMBLE_ISO_CIS_PER_CIG +#else +#define MYNEWT_VAL_BLE_ISO_CIS_PER_CIG (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_ISO_CIS_ESTAB_V2 +#ifdef CONFIG_BT_NIMBLE_ISO_CIS_ESTAB_V2 +#define MYNEWT_VAL_BLE_ISO_CIS_ESTAB_V2 CONFIG_BT_NIMBLE_ISO_CIS_ESTAB_V2 +#else +#define MYNEWT_VAL_BLE_ISO_CIS_ESTAB_V2 (0) +#endif +#endif + #ifndef MYNEWT_VAL_BLE_GATTC_PROC_PREEMPTION_PROTECT #ifdef CONFIG_BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT #define MYNEWT_VAL_BLE_GATTC_PROC_PREEMPTION_PROTECT CONFIG_BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT