Refactor and simplify the bluetooth buffer configurations to improve the easy of configurations and eliminate invalid ones. By moving configurations out of host and controller specific configurations and into a common one it becomes easier to configure the host and controller separately as the same configurations can be used as would be for a combined build. All HCI configurations are now given exluding the matching HCI header, which eases the configuration as the application don't have to know the different header sizes. The BT_RX_BUF_LEN is split into ACL and Event, as well as the suprising use of Command size. BT_L2CAP_RX_MTU is removed as the stack does not support reassembling of HCI ACL data to larger L2CAP PDUs. The application will have to set ACL RX size and account for the L2CAP PDU header itself. BT_EATT_RX_MTU was removed as it is only used for setting a different default value for another option which leads to the stuck kconfig symbol problem. The configurations can be updated according to the table below: ** New configuration | ** Old configuration All configurations BT_BUF_ACL_RX_SIZE | BT_L2CAP_RX_MTU + 4 BT_BUF_ACL_RX_SIZE | BT_RX_BUF_LEN - 4 BT_BUF_EVT_RX_SIZE | BT_RX_BUF_LEN - 2 BT_BUF_CMD_TX_SIZE | BT_RX_BUF_LEN - 3 BT_BUF_CMD_TX_COUNT | BT_HCI_CMD_COUNT BT_BUF_EVT_RX_COUNT | BT_RX_BUF_COUNT BT_BUF_ACL_RX_COUNT | BT_RX_BUF_COUNT BT_BUF_ACL_RX_COUNT | BT_ACL_RX_COUNT BT_BUF_EVT_DISCARDABLE_SIZE | BT_DISCARDABLE_BUF_SIZE - 2 BT_BUF_EVT_DISCARDABLE_COUNT | BT_DISCARDABLE_BUF_COUNT Controller-build BT_BUF_ACL_TX_SIZE | BT_CTLR_TX_BUFFERS_SIZE BT_BUF_ACL_TX_COUNT | BT_CTLR_TX_BUFFER HCI-bridge BT_BUF_ACL_TX_SIZE | BT_HCI_ACL_DATA_SIZE BT_BUF_ACL_TX_COUNT | 6 Fixed invalid configurations setting either BT_L2CAP_RX_MTU or BT_CTLR_DATA_LENGTH_MAX larger than BT_RX_BUF_LEN could lead to buffer overruns. Fix advertising report max data length calculation. This always used the BT_DISCARDABLE_BUF_SIZE macro but this feature can be turned off and advertising reports will be allocated from the RX buffer in that case. Also controller-build does not have this buffer (in hci_raw.c). Also the wrong HCI header was used in the calculation, HCI event header should have been used instead of HCI ACL header. Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
155 lines
4.2 KiB
Text
155 lines
4.2 KiB
Text
# USB device stack configuration options
|
|
|
|
# Copyright (c) 2016 Wind River Systems, Inc.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig USB_DEVICE_STACK
|
|
bool "USB Device Support"
|
|
depends on USB_DEVICE_DRIVER || ARCH_POSIX
|
|
select HWINFO
|
|
help
|
|
Enable USB device stack.
|
|
|
|
if USB_DEVICE_STACK
|
|
|
|
module = USB_DEVICE
|
|
module-str = usb device
|
|
source "subsys/logging/Kconfig.template.log_config"
|
|
|
|
source "samples/subsys/usb/usb_pid.Kconfig"
|
|
|
|
config USB_DEVICE_VID
|
|
hex "USB Vendor ID"
|
|
default 0x2FE3
|
|
help
|
|
USB device vendor ID. MUST be configured by vendor.
|
|
|
|
config USB_DEVICE_PID
|
|
hex "USB Product ID"
|
|
default 0x0100
|
|
help
|
|
USB device product ID. MUST be configured by vendor.
|
|
|
|
config USB_DEVICE_MANUFACTURER
|
|
string "USB manufacturer name"
|
|
default "ZEPHYR"
|
|
help
|
|
USB device Manufacturer string. MUST be configured by vendor.
|
|
|
|
config USB_DEVICE_PRODUCT
|
|
string "USB product name"
|
|
default "USB-DEV"
|
|
help
|
|
USB device Product string. MUST be configured by vendor.
|
|
|
|
config USB_DEVICE_SN
|
|
string "USB device Serial Number String"
|
|
default "0123456789ABCDEF"
|
|
help
|
|
Placeholder for USB device Serial Number String.
|
|
Serial Number String will be derived from
|
|
Hardware Information Driver (HWINFO).
|
|
|
|
config USB_COMPOSITE_DEVICE
|
|
bool "Enable composite device driver"
|
|
depends on USB
|
|
help
|
|
Enable composite USB device driver.
|
|
|
|
config USB_MAX_NUM_TRANSFERS
|
|
int "Set number of USB transfer data buffers"
|
|
range 1 32
|
|
default 4
|
|
help
|
|
Allocates buffers used for parallel transfers. Increase this number
|
|
according to USB devices count.
|
|
|
|
config USB_DEVICE_BLUETOOTH_BIG_BUF
|
|
bool
|
|
# Hidden option to simplify bluetooth buffer requirement
|
|
# TODO: Add BUF reserve in H4 mode and ISO?
|
|
default y if BT_BUF_ACL_RX_SIZE > 123 # 4 byte header
|
|
default y if BT_BUF_ACL_TX_SIZE > 123 # 4 byte header
|
|
default y if BT_BUF_EVT_RX_SIZE > 125 # 2 byte header
|
|
default y if BT_BUF_CMD_TX_SIZE > 124 # 3 byte header
|
|
|
|
config USB_REQUEST_BUFFER_SIZE
|
|
int "Set buffer size for Standard, Class and Vendor request handlers"
|
|
range 256 65536 if USB_DEVICE_NETWORK_RNDIS
|
|
range 8 65536
|
|
default 256 if USB_DEVICE_NETWORK_RNDIS
|
|
default 266 if (USB_DEVICE_BLUETOOTH && USB_DEVICE_BLUETOOTH_BIG_BUF)
|
|
default 1024 if USB_DEVICE_LOOPBACK
|
|
default 128
|
|
|
|
config USB_NUMOF_EP_WRITE_RETRIES
|
|
int "Number of endpoint write retries"
|
|
default 3
|
|
help
|
|
Number of endpoint write retries.
|
|
|
|
config USB_DEVICE_SOF
|
|
bool "Enable Start of Frame processing in events"
|
|
default y if (USB_DEVICE_AUDIO && NRFX_USBD)
|
|
|
|
config USB_DEVICE_REMOTE_WAKEUP
|
|
bool "Enable support for remote wakeup"
|
|
help
|
|
This option requires USBD peripheral driver to also support remote wakeup.
|
|
|
|
config USB_DEVICE_BOS
|
|
bool "Enable USB Binary Device Object Store (BOS)"
|
|
|
|
config USB_DEVICE_OS_DESC
|
|
bool "Enable MS OS Descriptors support"
|
|
|
|
config USB_SELF_POWERED
|
|
bool "Set Self-powered characteristic"
|
|
default y
|
|
help
|
|
Set Self-powered characteristic in bmAttributes to indicate
|
|
self powered USB device.
|
|
|
|
config USB_MAX_POWER
|
|
int "Set bMaxPower value"
|
|
default 50
|
|
range 0 250
|
|
help
|
|
Set bMaxPower value in the Standard Configuration Descriptor,
|
|
the result is 2mA times the value provided.
|
|
|
|
config USB_WORKQUEUE
|
|
bool "Use a dedicate work queue in the USB subsystem"
|
|
default y if USB_CDC_ACM
|
|
help
|
|
This option provides a dedicated work queue that is used for
|
|
all offloaded operations initiated by the USB subsystem.
|
|
This prevents deadlock situations where tasks on the system
|
|
workqueue inadvertently initiate operations that block, such
|
|
as UART transmission on CDC-ACM, preventing the system work
|
|
queue from making progress on the USB tasks that would
|
|
release the task.
|
|
|
|
Without this the system work queue is used for all USB
|
|
offloaded transfers.
|
|
|
|
config USB_WORKQUEUE_STACK_SIZE
|
|
int "USB workqueue stack size"
|
|
depends on USB_WORKQUEUE
|
|
default 4096 if COVERAGE
|
|
default 1024
|
|
|
|
config USB_WORKQUEUE_PRIORITY
|
|
int "USB workqueue priority"
|
|
depends on USB_WORKQUEUE
|
|
default -2 if COOP_ENABLED && !PREEMPT_ENABLED
|
|
default 0 if !COOP_ENABLED
|
|
default -1
|
|
help
|
|
By default, USB work queue priority is the lowest cooperative
|
|
priority. This means that any work handler, once started, won't
|
|
be preempted by any other thread until finished.
|
|
|
|
source "subsys/usb/class/Kconfig"
|
|
|
|
endif # USB_DEVICE_STACK
|