zmk/app/src/split/bluetooth/Kconfig
2026-06-24 18:55:49 +08:00

127 lines
3.5 KiB
Text

# Copyright (c) 2022 The ZMK Contributors
# SPDX-License-Identifier: MIT
if ZMK_SPLIT && ZMK_SPLIT_BLE
menu "BLE Transport"
config ZMK_SPLIT_BLE_PRIORITY
int "BLE transport priority"
help
Lower number priorities transports are favored over higher numbers.
# Added for backwards compatibility. New shields / board should set `ZMK_SPLIT_ROLE_CENTRAL` only.
config ZMK_SPLIT_BLE_ROLE_CENTRAL
bool
select ZMK_SPLIT_ROLE_CENTRAL
config ZMK_SPLIT_ROLE_CENTRAL
select BT_CENTRAL
select BT_GATT_CLIENT
select BT_GATT_AUTO_DISCOVER_CCC
select BT_SCAN_WITH_IDENTITY
# Bump this value needed for concurrent GATT discovery of splits
config BT_L2CAP_TX_BUF_COUNT
default 5 if ZMK_SPLIT_ROLE_CENTRAL
if ZMK_SPLIT_ROLE_CENTRAL
config ZMK_SPLIT_BLE_CENTRAL_PERIPHERALS
int "Number of peripherals that will connect to the central."
menuconfig ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING
bool "Fetch Peripheral Battery Level Info"
help
Adds internal support for fetching the battery levels from peripherals
and generating events in the ZMK eventing system.
if ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING
config ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_QUEUE_SIZE
int "Max number of battery level events to queue when received from peripherals"
default ZMK_SPLIT_BLE_CENTRAL_PERIPHERALS
config ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_PROXY
bool "Proxy Peripheral Battery Level Info"
help
Adds support for reporting the battery levels of connected split
peripherals through an additional Battery Level service.
endif
config ZMK_SPLIT_BLE_CENTRAL_POSITION_QUEUE_SIZE
int "Max number of key position state events to queue when received from peripherals"
default 5
config ZMK_SPLIT_BLE_CENTRAL_SPLIT_RUN_STACK_SIZE
int "BLE split central write thread stack size"
default 512
config ZMK_SPLIT_BLE_CENTRAL_SPLIT_RUN_QUEUE_SIZE
int "Max number of behavior run events to queue to send to the peripheral(s)"
default 5
config ZMK_SPLIT_BLE_PREF_INT
int "Connection interval to use for split central/peripheral connection"
default 6
config ZMK_SPLIT_BLE_PREF_LATENCY
int "Latency to use for split central/peripheral connection"
default 30
config ZMK_SPLIT_BLE_PREF_TIMEOUT
int "Supervision timeout to use for split central/peripheral connection"
default 400
config ZMK_SPLIT_BLE_PREF_IDLE
bool "Set slower split peripheral BLE params on idle to save power"
default y
if ZMK_SPLIT_BLE_PREF_IDLE
config ZMK_SPLIT_BLE_PREF_IDLE_INT
int "Peripheral idle connection interval in 1.25ms units"
default 18
config ZMK_SPLIT_BLE_PREF_IDLE_LATENCY
int "Peripheral idle latency in Connection Intervals"
default 10
config ZMK_SPLIT_BLE_PREF_IDLE_TIMEOUT
int "Peripheral idle supervision timeout in 10ms units"
default 400
endif # ZMK_SPLIT_BLE_PREF_IDLE
endif # ZMK_SPLIT_ROLE_CENTRAL
if !ZMK_SPLIT_ROLE_CENTRAL
config ZMK_SPLIT_BLE_PERIPHERAL_STACK_SIZE
int "BLE split peripheral notify thread stack size"
default 756
config ZMK_SPLIT_BLE_PERIPHERAL_PRIORITY
int "BLE split peripheral notify thread priority"
default 5
config ZMK_SPLIT_BLE_PERIPHERAL_POSITION_QUEUE_SIZE
int "Max number of key position state events to queue to send to the central"
default 10
config BT_MAX_PAIRED
default 1
config BT_MAX_CONN
default 1
# Allow central to specify connection parameters.
config BT_GAP_AUTO_UPDATE_CONN_PARAMS
default n
endif # !ZMK_SPLIT_ROLE_CENTRAL
endmenu
endif # ZMK_SPLIT_BLE