diff --git a/CHANGELOG.md b/CHANGELOG.md index 1722aaed1..2fd49dc56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,105 +9,105 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## Unreleased ### Added -HCI: `btstack_transport_sco.h` allows to support SCO over physical PCM/I2S interface (`HAVE_SCO_TRANSPORT`) -POSIX: `btstack_transport_sco_i2s_test_bridge.c` implements SCO transport interface for UART-to-I2S test bridge -btstack_uart: `btstack_uart_t` interface extends `btstack_uart_block_t`: +- HCI: `btstack_transport_sco.h` allows to support SCO over physical PCM/I2S interface (`HAVE_SCO_TRANSPORT`) +- POSIX: `btstack_transport_sco_i2s_test_bridge.c` implements SCO transport interface for UART-to-I2S test bridge +- btstack_uart: `btstack_uart_t` interface extends `btstack_uart_block_t`: - supports sending and receiving SLIP frames for HCI H5 - suppports odd parity as well - `hci_transport_h4` and chipset drivers have new functions to pass provide `btstack_uart_t` -btstack_uart_slip_wrapper: wrapper that implements SLIP functionality for existing `btstack_uart_block` drivers. -hci_transport: add parity field and pass on to `btstack_uart_t` in h4 and h5 -GATT Client: Battery Service Client -GATT Client: Device Information Service Client -GATT Client: Scan Parameters Service Client -GAP: add `gap_set_page_scan_activity` and `gap_set_page_scan_type` -AVRCP: new field `button_pressed` in `AVRCP_SUBEVENT_OPERATION` -AVRCP: `AVRCP_SUBEVENT_OPERATION` emitted for button release -AVRCP Controller: avrcp_controller_start_press_and_hold_cmd helps to support device buttons -AVDTP: `avdtp_register_media_config_validator` allows to validate media codec configuration -A2DP Source: `ENABLE_A2DP_SOURCE_EXPLICIT_CONFIG` disables auto config. Requires call to `a2dp_source_set_config_{CODEC}' +- btstack_uart_slip_wrapper: wrapper that implements SLIP functionality for existing `btstack_uart_block` drivers. +- hci_transport: add parity field and pass on to `btstack_uart_t` in h4 and h5 +- GATT Client: Battery Service Client +- GATT Client: Device Information Service Client +- GATT Client: Scan Parameters Service Client +- GAP: add `gap_set_page_scan_activity` and `gap_set_page_scan_type` +- AVRCP: new field `button_pressed` in `AVRCP_SUBEVENT_OPERATION` +- AVRCP: `AVRCP_SUBEVENT_OPERATION` emitted for button release +- AVRCP Controller: avrcp_controller_start_press_and_hold_cmd helps to support device buttons +- AVDTP: `avdtp_register_media_config_validator` allows to validate media codec configuration +- A2DP Source: `ENABLE_A2DP_SOURCE_EXPLICIT_CONFIG` disables auto config. Requires call to `a2dp_source_set_config_{CODEC}' ### Fixed -HCI: handle start inquiry failure -AVRCP Target: fix notification changed event -HFP: Emit Audio Connection Released on SLC Release, e.g. remote power off -GAP: calculate IO Cap AuthReq Bondable Mode based on `gap_ssp_set_authentication_requirement` and `gap_set_bondable_mode` -GAP: only store link key for ssp if remote side has set bondable in io cap auth requirements as well +- HCI: handle start inquiry failure +- AVRCP Target: fix notification changed event +- HFP: Emit Audio Connection Released on SLC Release, e.g. remote power off +- GAP: calculate IO Cap AuthReq Bondable Mode based on `gap_ssp_set_authentication_requirement` and `gap_set_bondable_mode` +- GAP: only store link key for ssp if remote side has set bondable in io cap auth requirements as well ### Changed -HCI: config I2S for BCM Controllers if `ENABLE_SCO_OVER_PCM`, reduce bit clock to 256/512 kHz -btstack_uart_posix: supports SLIP frames and replaces `btstack_uart_block_posix` -hci_transport_h5: new more performant H5 implementation that requires `btstack_uart_t` driver with SLIP support. -POSIX Ports: use new `btstack_uart_posix` implementation -posix-h5/posix-h5-bcm: use even parity for UART -Port Archive: moved ports that are not recommended for new designs to port/archive folder: +- HCI: config I2S for BCM Controllers if `ENABLE_SCO_OVER_PCM`, reduce bit clock to 256/512 kHz +- btstack_uart_posix: supports SLIP frames and replaces `btstack_uart_block_posix` +- hci_transport_h5: new more performant H5 implementation that requires `btstack_uart_t` driver with SLIP support. +- POSIX Ports: use new `btstack_uart_posix` implementation +- posix-h5/posix-h5-bcm: use even parity for UART +- Port Archive: moved ports that are not recommended for new designs to port/archive folder: - MSP430: the ports used the older community GCC version without 20-bit support needed for code size > 64kB - Broadcom/Cypress H5: uploading PatchRAM is only possible in H4 mode. It's better to also use H4 in general - PIC32-Harmony: the port used Harmony v1 while Harmony v3 has been out since a while. -Run Loop Base: functionality used in most platform run loop implementations +- Run Loop Base: functionality used in most platform run loop implementations - code from `btstack_run_loop_base.c` moved into `btstack_run_loop.c` to minimize changes to build systems - `btstack_run_loop_base.c` is a placeholder and can be removed from build -HCI Dump: replace monolithic `hci_dump.c` (with many #ifdefs) into dispatcher with platform-specific implementations: +- HCI Dump: replace monolithic `hci_dump.c` (with many #ifdefs) into dispatcher with platform-specific implementations: - `posix/hci_dump_posix_fs` - writes binary log file - `posix/hci_dump_stdout` - log to console using printf with local system time - `embedded/hci_dump_embedded_stdout` - log to console using printf - `embedded/hci_dump_segger_stdout` - log to RTT console using `SEGGER_printf` - `embedded/hci_dump_segger_binary` - writes binary log over RTT to host -Nordic SPP Service Server: use `GATTSERVICE_SUBEVENT_SPP_SERVICE_CONNECTED` and `GATTSERVICE_SUBEVENT_SPP_SERVICE_CONNECTED` - events instead of callback, and `RFCOMM_DATA_PACKET` for received data -u-blox SPP Service Server: use `GATTSERVICE_SUBEVENT_SPP_SERVICE_CONNECTED` and `GATTSERVICE_SUBEVENT_SPP_SERVICE_CONNECTED` - events instead of callback, and `RFCOMM_DATA_PACKET` for received data -HSP AG: emit HSP_SUBEVENT_BUTTON_PRESSED instead of audio connection setup/release -Examples: use `btstack_event.h` getters instead of direct array access, use enum to compare status codes -HCI Transport: extract convenience function declaration for h4, h5, em9304_spi, and usb into separate hci_transport_{type}.h +- Nordic SPP Service Server: use `GATTSERVICE_SUBEVENT_SPP_SERVICE_CONNECTED` and `GATTSERVICE_SUBEVENT_SPP_SERVICE_CONNECTED` + events instead of callback, and `RFCOMM_DATA_PACKET` for received data +- u-blox SPP Service Server: use `GATTSERVICE_SUBEVENT_SPP_SERVICE_CONNECTED` and `GATTSERVICE_SUBEVENT_SPP_SERVICE_CONNECTED` + events instead of callback, and `RFCOMM_DATA_PACKET` for received data +- HSP AG: emit HSP_SUBEVENT_BUTTON_PRESSED instead of audio connection setup/release +- Examples: use `btstack_event.h` getters instead of direct array access, use enum to compare status codes +- HCI Transport: extract convenience function declaration for h4, h5, em9304_spi, and usb into separate hci_transport_{type}.h ## Release v1.3.2 ### Added -GAP: support for Classic Out-of-Band (OOB) pairing via `gap_ssp_remote_oob_data` with `ENABLE_CLASSIC_OOB_PAIRING` -GAP: read local OOB data on start and on call to `gap_ssp_generate_oob_data`, provided via `GAP_EVENT_LOCAL_OOB_DATA` -HID Host: add profile, update `hid_host_demo.c` example +- GAP: support for Classic Out-of-Band (OOB) pairing via `gap_ssp_remote_oob_data` with `ENABLE_CLASSIC_OOB_PAIRING` +- GAP: read local OOB data on start and on call to `gap_ssp_generate_oob_data`, provided via `GAP_EVENT_LOCAL_OOB_DATA` +- HID Host: add profile, update `hid_host_demo.c` example ### Fixed -L2CAP: make handling of HCI disconnect more robust -AVDTP: emit stream release for active stream if signaling connection is closed first, e.g. caused by HCI disconnect -AVRCP: fix issue when Controller and Target send at the same time +- L2CAP: make handling of HCI disconnect more robust +- AVDTP: emit stream release for active stream if signaling connection is closed first, e.g. caused by HCI disconnect +- AVRCP: fix issue when Controller and Target send at the same time ### Changed -A2DP, AVDTP: use `a2dp_source_set_config_{TYPE}` and `avdtp_config{TYPE}_store` to avoid large number of parameters +- A2DP, AVDTP: use `a2dp_source_set_config_{TYPE}` and `avdtp_config{TYPE}_store` to avoid large number of parameters ## Release v1.3 ### Added -CC256x: with ENABLE_CC256X_ASSISTED_HFP, HFP enables WBS codec on demand and configures PCM/I2S interface for 8kH/16kHz -BCM: with ENABLE_BCM_PCM_WBS, HFP enables WBS codec on demand and configures PCM/I2S interface for 8kH/16kHz -SDP Client RFCOMM: add `sdp_client_query_rfcomm_channel_and_name_for_service_class_uuid` -HFP: `ENABLE_HFP_AT_MESSAGES` lets HFP emit `HFP_SUBEVENT_AT_MESSAGE_SENT` and `HFP_SUBEVENT_AT_MESSAGE_RECEIVED` -A2DP, AVDTP: provide capabilities and configuration events for A2DP codecs: SBC, MPEG Audio, MPEG AAC, ATRAC -A2DP + AVDTP Source: allow to send media packet with `avdtp_source_stream_send_media_packet` and `a2dp_source_stream_send_media_packet` -A2DP + AVDTP Source: add `avdtp_source_stream_send_media_payload_rtp` and `a2dp_source_stream_send_media_payload_rtp` -A2DP Source: emit `A2DP_SUBEVENT_SIGNALING_CAPABILITIES_COMPLETE` -A2DP Source: allow to configure endpoints by calling `a2dp_source_set_config_{TYPE}` during SEP discovery with SBC fallback +- CC256x: with ENABLE_CC256X_ASSISTED_HFP, HFP enables WBS codec on demand and configures PCM/I2S interface for 8kH/16kHz +- BCM: with ENABLE_BCM_PCM_WBS, HFP enables WBS codec on demand and configures PCM/I2S interface for 8kH/16kHz +- SDP Client RFCOMM: add `sdp_client_query_rfcomm_channel_and_name_for_service_class_uuid` +- HFP: `ENABLE_HFP_AT_MESSAGES` lets HFP emit `HFP_SUBEVENT_AT_MESSAGE_SENT` and `HFP_SUBEVENT_AT_MESSAGE_RECEIVED` +- A2DP, AVDTP: provide capabilities and configuration events for A2DP codecs: SBC, MPEG Audio, MPEG AAC, ATRAC +- A2DP + AVDTP Source: allow to send media packet with `avdtp_source_stream_send_media_packet` and `a2dp_source_stream_send_media_packet` +- A2DP + AVDTP Source: add `avdtp_source_stream_send_media_payload_rtp` and `a2dp_source_stream_send_media_payload_rtp` +- A2DP Source: emit `A2DP_SUBEVENT_SIGNALING_CAPABILITIES_COMPLETE` +- A2DP Source: allow to configure endpoints by calling `a2dp_source_set_config_{TYPE}` during SEP discovery with SBC fallback ### Fixed -HCI: keep `le connecting request` on connection complete active, fixes gap_auto_connection_stop() + gap_auto_connection_start() -L2CAP: fix packet size check for incoming classic basic channels (regression introduced in v1.2.1) -HFP AG/HSP AG: avoid connecting to remote service with same role -A2DP Source: support multiple Stream Endpoints with different Media Codec types -A2DP Source: emit codec configure event with reconfigure flag set on reconfigure -GATT Compiler: support multiple instances of the same service +- HCI: keep `le connecting request` on connection complete active, fixes gap_auto_connection_stop() + gap_auto_connection_start() +- L2CAP: fix packet size check for incoming classic basic channels (regression introduced in v1.2.1) +- HFP AG/HSP AG: avoid connecting to remote service with same role +- A2DP Source: support multiple Stream Endpoints with different Media Codec types +- A2DP Source: emit codec configure event with reconfigure flag set on reconfigure +- GATT Compiler: support multiple instances of the same service ### Changed -GAP: provide Link Type parameter to incoming connection filter for `gap_register_classic_connection_filter` -HFP/GOEP Client/AVDTP/A2DP: return `SDP_SERVICE_NOT_FOUND` if no suitable SDP record is found -AVDTP Source: `avdtp_source_stream_send_media_payload` includes SBC Header and was deprecated -AVDTP/A2DP: use `avdtp_channel_mode_t` in `A2DP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CONFIGURATION` -A2DP: fix events and use `a2dp_cid`, `local_seid,` `remote_seid` field names in A2DP sub-events -GATT Client: Skip MTU exchange after MTU exchange on ATT Server -Ports: STM32-F103RB Nucleo + CC256x port removed -ESP32: enabled HFP Wide-Band Speech, disable classic secure connections in HSP/HFP demos +- GAP: provide Link Type parameter to incoming connection filter for `gap_register_classic_connection_filter` +- HFP/GOEP Client/AVDTP/A2DP: return `SDP_SERVICE_NOT_FOUND` if no suitable SDP record is found +- AVDTP Source: `avdtp_source_stream_send_media_payload` includes SBC Header and was deprecated +- AVDTP/A2DP: use `avdtp_channel_mode_t` in `A2DP_SUBEVENT_SIGNALING_MEDIA_CODEC_SBC_CONFIGURATION` +- A2DP: fix events and use `a2dp_cid`, `local_seid,` `remote_seid` field names in A2DP sub-events +- GATT Client: Skip MTU exchange after MTU exchange on ATT Server +- Ports: STM32-F103RB Nucleo + CC256x port removed +- ESP32: enabled HFP Wide-Band Speech, disable classic secure connections in HSP/HFP demos ## Release v1.2.1