Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
# Conflicts:
#	CHANGELOG.md
#	README.md
#	src/classic/hfp.c
  • Loading branch information
mringwal committed Jul 31, 2020
2 parents 5eed67d + 7c9f6e7 commit 1bced15
Show file tree
Hide file tree
Showing 511 changed files with 346,047 additions and 7,787 deletions.
39 changes: 35 additions & 4 deletions CHANGELOG.md
Expand Up @@ -8,13 +8,44 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## [Unreleased]

### Fixed
### Added
### Changed


## Changes July 2020

### Fixed
- AVDTP: fix invalid response for Get Capabilities request if Delay Reporting was supported
- AVDTP: handle concurrent signaling establishment with reject and retry

### Added
- GAP: Detect Secure Connection -> Legacy Connection Downgrade Attack (BIAS)
- example/hid_host_demo: support reconnect from HID device
- Crypto: support software AES128 for AES-CCM operations
- AVRCP: introduced AVRCP_FEATURE_MASK_* as alternative to avrcp_controller_supported_feature_t and avrcp_target_supported_feature_t enums
- btstack_audio: add set_volume() to sink and set_gain() to source interfaces, minimal volume control for portaudio playback
- AVDTP: renamed definition of supported features from AVDTP_SOURCE_SF_ and AVDTP_SINK_SF_ to AVDTP_SOURCE_FEATURE_MASK_ and AVDTP_SINK_FEATURE_MASK_ respectively
- GAP: Provide gap_get_role to query master/slave role for HCI connection handle
- GAP: Provide gap_pin_code_response_binary to use binary data as PIN, e.g. for pairing with Nintendo Wii Remote

### Changed
- GAP: set minimum required encryption key size for Classic connections back from 16 to 7, matching the Core spec


## Changes June 2020

### Fixed
- HFP: Fix parsing of empty fields, e.g. phone number in +CLCC and other AT commands
- sm: Fix validation of confirm value for secure connection Passkey entry
- AVRCP: handle concurrent signaling establishment with reject and retry

### Added
- GAP: Detect Secure Connection -> Legacy Connection Downgrade Attack by remote features and actual encryption type (BIAS)
- GAP: Mutual authentication: request authentication after Classic connection got encrypted (BIAS)
- Windows port for Dialog DA14585 connected via serial port

## Changes
- CVSD PLC: treat zero frames as good and allow to mark data as bad, e.g. if reported by Controller as erroneous

## Changes May 2020

Expand Down Expand Up @@ -83,7 +114,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- hid_host_mode: allow sniff mode

### Added
- port/qt-usb and port/qt-h4: integrate BTstack Qt run loop for Unix- and Win32-based Qt application connected to Bluetooth module via H4 over serial port or USB.
- port/qt-usb and port/qt-h4: integrate BTstack Qt run loop for Unix- and Win32-based Qt application connected to Bluetooth module via H4 over serial port or USB


## Changes January 2020
Expand All @@ -101,7 +132,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- ATT Server: validate request pdu length

### Changed
- btstack_crypto: update AES-CMAC implementation to access all message bytes sequentially
- Crypto: update AES-CMAC implementation to access all message bytes sequentially


## Changes December 2019
Expand Down Expand Up @@ -178,7 +209,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- SM: generate local nonce for confirm value in JW+NC+PK in Secure Connections Responder role

### Added
- `btstack_run_loop_base`: portable implementation of timer and data source managment as base for platform specific implementations
- `btstack_run_loop_base`: portable implementation of timer and data source management as base for platform specific implementations

## Changed
- FreeRTOS: use xQueueCreateStatic (static variant of xQueueCreate) if available for static memory-only setups
Expand Down
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -74,6 +74,7 @@ No build server | [posix-h5-bcm](https://github.com/bluekitchen/btstack/tree/mas
No build server | [qt-h4](https://github.com/bluekitchen/btstack/tree/master/port/qt-h4) | Unix- or Win32-based [Qt application](https://qt.io) connected to Bluetooth module via H4 over serial port
No build server | [qt-usb](https://github.com/bluekitchen/btstack/tree/master/port/qt-usb) | Unix- or Win32-based [Qt application](https://qt.io) with dedicated USB Bluetooth dongle
No build server | [windows-h4](https://github.com/bluekitchen/btstack/tree/master/port/windows-h4) | Win32-based system connected to Bluetooth module via serial port
No build server | [windows-h4-da14585](https://github.com/bluekitchen/btstack/tree/master/port/windows-h4-da14585) | Win32-based system connected to Dialog Semiconductor DA14585 via H4 over serial port
No build server | [windows-winusb](https://github.com/bluekitchen/btstack/tree/master/port/windows-winusb) | Win32-based system with dedicated USB Bluetooth dongle
No build server | [windows-winusb-intel](https://github.com/bluekitchen/btstack/tree/master/port/windows-winusb-intel) | Win32-based system with Intel Wireless 8260/8265 Controller
No build server | [raspi](https://github.com/bluekitchen/btstack/tree/master/port/raspi) | Raspberry Pi 3 or Raspberry Pi Zero W with built-in BCM4343 Bluetooth/Wifi Controller
Expand Down Expand Up @@ -101,6 +102,7 @@ Espressif ESP32 | Dual mode | VHCI | Not yet |
EM 9301, 9304 | LE | SPI | n.a. | em9301 | Custom HCI SPI implementation
Intel Dual Wireless 8260, 8265 | Dual mode | USB | Probably | intel | Firmware size: 400 kB
Nordic nRF | LE | H4 | n.a. | | Requires custom HCI firmware
Renesas RX23W | LE | H4 | n.a. | | HCI Firmware part of BTTS
STM STLC2500D | Classic | H4 | No (didn't try) | stlc2500d | Custom deep sleep management not supported
STM32-WB5x | LE | VHCI | n.a. | | SoC with multi-protocol Radio co-processor
Toshiba TC35661 | Dual mode | H4 | No | tc3566 |
Expand Down
22 changes: 22 additions & 0 deletions chipset/README.md
Expand Up @@ -70,6 +70,7 @@ EM 9304 | LE | SPI, H4 | Yes | n.a.
Intel Dual Wireless 8260, 8265 | Dual mode | USB | Yes | Probably | Don't know | Don't know | Don't know | intel | Firmware size: 400 kB
Nordic nRF | LE | H4 | Fixed Random | n.a. | Yes | Yes | n.a. | | Requires HCI firmware
STM STLC2500D | Classic | H4 | No | Don't know | n.a | n.a. | No | stlc2500d | Custom deep sleep management not supported
Renesas RX23W | LE | H4 | No | n.a. | Yes | Yes | n.a . | | HCI Firmware part of BTTS
Toshiba TC35661 | Dual mode | H4 | No | No | No | No | No | tc3566 | Only -007/009 models provide full HCI. See below
TI CC256x, WL183x | Dual mode | H4, H5, eHCILL | Yes | Yes | No | Yes for CC256XC | No | cc256x | Also WL185x, WL187x, and WL189x

Expand Down Expand Up @@ -225,6 +226,27 @@ To use these chipsets with BTstack, you need to install an arm-none-eabi gcc too
* For the nRF51 Dev Kit, use `make BOARD=nrf51_pca10028` and `./flash_nrf51_10028.sh` with the nRF51 kit.
* The nRF5 dev kit acts as an LE HCI Controller with H4 interface.

## Renesas Electronics

Renesas currently has 3 LE-only SoCs: the older 16-bit RL78 and the newer RX23W and the RA4W1.
For the newer SoCs, Renesas provides a pre-compiled HCI firmware as well as an HCI project for their e2 Studio IDE.
The HCI firmware needs to be programmed into the SoC Flash.

Both newer SoC provide the newer Bluetooth 5.0 features like DLE, 2M-PHY, Long Range, and Multiple Roles.

To install the HCI Firmware on the [Target Board for RX23W](https://www.renesas.com/us/en/products/software-tools/boards-and-kits/eval-kits/rx-family-target-board.html):

* Download [Bluetooth Test Tool Suite](https://www.renesas.com/eu/en/software/D6004348.html)
* Install [Renesas Flash Programmer](https://www.renesas.com/tw/en/products/software-tools/tools/programmer/renesas-flash-programmer-programming-gui.html)
* Follow instruction in [Target Board for RX23W Quick Start Guide](https://www.renesas.com/us/en/doc/products/mpumcu/apn/rx/013/r20qs0014ej0100-23wtbqsg.pdf) to flash `rx23w_uart_hci_sci8_br2000k_v1.00.mot`

**BD Addr** fixed to 74:90:50:FF:FF:FF. A Windows tool in the BTTS suite allows to set a public Bluetooth Address.

**Baud rate**: The baud rate is fixed at 115200 resp. 2000000 with the provided firmware images. With 2 mbps, there's no need to update the baudrate at run-time.

**BTstack integration**: No special support needed.


## STMicroelectronics

STMicroelectronics offers the Bluetooth V2.1 + EDR chipset STLC2500D that supports SPI and UART H4 connection.
Expand Down
15 changes: 13 additions & 2 deletions example/Makefile.inc
Expand Up @@ -96,6 +96,7 @@ MBEDTLS = \
memory_buffer_alloc.c \
platform.c \


LWIP_CORE_SRC = init.c mem.c memp.c netif.c udp.c ip.c pbuf.c inet_chksum.c def.c tcp.c tcp_in.c tcp_out.c timeouts.c sys_arch.c
LWIP_IPV4_SRC = acd.c dhcp.c etharp.c icmp.c ip4.c ip4_frag.c ip4_addr.c
LWIP_NETIF_SRC = ethernet.c
Expand Down Expand Up @@ -128,6 +129,15 @@ AVDTP += \
a2dp_sink.c \
btstack_ring_buffer.c \

AVRCP += \
avrcp.c \
avrcp_controller.c \
avrcp_target.c \
avrcp_browsing.c \
avrcp_browsing_controller.c \
avrcp_browsing_target.c \
avrcp_media_item_iterator.c \

HXCMOD_PLAYER = \
hxcmod.c \
nao-deceased_by_disease.c \
Expand Down Expand Up @@ -269,6 +279,7 @@ SBC_DECODER_OBJ = $(SBC_DECODER:.c=.o)
SBC_ENCODER_OBJ = $(SBC_ENCODER:.c=.o)
CVSD_PLC_OBJ = $(CVSD_PLC:.c=.o)
AVDTP_OBJ = $(AVDTP:.c=.o)
AVRCP_OBJ = $(AVRCP:.c=.o)
HXCMOD_PLAYER_OBJ = $(HXCMOD_PLAYER:.c=.o)
LWIP_OBJ = $(LWIP_SRC:.c=.o)
MESH_OBJ = $(MESH:.c=.o)
Expand All @@ -277,7 +288,7 @@ default_target: all

# compile .gatt descriptions
%.h: %.gatt
python ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@
python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@

# examples
ant_test: ${CORE_OBJ} ${COMMON_OBJ} ${CLASSIC_OBJ} ant_test.c
Expand Down Expand Up @@ -403,7 +414,7 @@ a2dp_source_demo: ${CORE_OBJ} ${COMMON_OBJ} ${CLASSIC_OBJ} ${SDP_CLIENT} ${SBC_E
a2dp_sink_demo: ${CORE_OBJ} ${COMMON_OBJ} ${CLASSIC_OBJ} ${SDP_CLIENT} ${SBC_DECODER_OBJ} ${AVDTP_OBJ} avrcp.o avrcp_controller.o avrcp_target.o btstack_resample.o a2dp_sink_demo.c
${CC} $^ ${CFLAGS} ${LDFLAGS} -o $@

avrcp_browsing_client: ${CORE_OBJ} ${COMMON_OBJ} ${CLASSIC_OBJ} ${SDP_CLIENT} avrcp.o avrcp_controller.o avrcp_browsing_controller.o avrcp_media_item_iterator.o avrcp_browsing_client.c
avrcp_browsing_client: ${CORE_OBJ} ${COMMON_OBJ} ${CLASSIC_OBJ} ${SDP_CLIENT} ${AVRCP_OBJ} avrcp_browsing_client.c
${CC} $^ ${CFLAGS} ${LDFLAGS} -o $@

dut_mode_classic: ${CORE_OBJ} ${COMMON_OBJ} ${CLASSIC_OBJ} dut_mode_classic.c
Expand Down

0 comments on commit 1bced15

Please sign in to comment.