mbox series

[v2,0/9] Initial BAP support

Message ID 20220826232031.20391-1-luiz.dentz@gmail.com
Headers show
Series Initial BAP support | expand

Message

Luiz Augusto von Dentz Aug. 26, 2022, 11:20 p.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This set add initial support for BAP (Basic Audio Profile) which is
an essential part of LE Audio responsible for stream control.

The plugin is considered experimental and depends on ISO socket in order
to work so the following setting needs to be changed in order to enable it:

 # Enables D-Bus experimental interfaces
 # Possible values: true or false
+Experimental = true

 # Enables kernel experimental features, alternatively a list of UUIDs
 # can be given.
@@ -126,7 +126,7 @@
 # a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Codecs)
 # 6fbaf188-05e0-496a-9885-d6ddfdb4e03e (BlueZ Experimental ISO socket)
 # Defaults to false.
+KernelExperimental = 6fbaf188-05e0-496a-9885-d6ddfdb4e03e

While proper support to the likes of PulseAudio and Pipewire are still
in progress it is possible to test using bluetoothctl with the following
commands:

[Server/Peripheral]
[bluetooth]# power on
[bluetooth]# advertise on
[bluetooth]# endpoint.register 00002bc9-0000-1000-8000-00805f9b34fb 0x06
[/local/endpoint/ep0] Auto Accept (yes/no): y
[/local/endpoint/ep0] CIG (auto/value): a
[/local/endpoint/ep0] CIS (auto/value): a
Capabilities:
  03 01 ff 00 02 02 03 02 03 03 05 04 1e 00 f0 00  ................
Endpoint /local/endpoint/ep0 registered
[bluetooth]# endpoint.register 00002bcb-0000-1000-8000-00805f9b34fb 0x06
[/local/endpoint/ep1] Auto Accept (yes/no): y
[/local/endpoint/ep1] CIG (auto/value): a
[/local/endpoint/ep1] CIS (auto/value): a
Capabilities:
  03 01 ff 00 02 02 03 02 03 03 05 04 1e 00 f0 00  ................
Endpoint /local/endpoint/ep1 registered

[Client/Central]
[bluetooth]# power on
[bluetooth]# endpoint.register 00002bc9-0000-1000-8000-00805f9b34fb 0x06
[/local/endpoint/ep0] Auto Accept (yes/no): y
[/local/endpoint/ep0] CIG (auto/value): a
[/local/endpoint/ep0] CIS (auto/value): a
Capabilities:
  03 01 ff 00 02 02 03 02 03 03 05 04 1e 00 f0 00  ................
Endpoint /local/endpoint/ep0 registered
[bluetooth]# endpoint.register 00002bcb-0000-1000-8000-00805f9b34fb 0x06
[/local/endpoint/ep1] Auto Accept (yes/no): y
[/local/endpoint/ep1] CIG (auto/value): a
[/local/endpoint/ep1] CIS (auto/value): a
Capabilities:
  03 01 ff 00 02 02 03 02 03 03 05 04 1e 00 f0 00  ................
Endpoint /local/endpoint/ep1 registered
[bluetooth]# scan on
[bluetooth]# scan off
[bluetooth]# connect <bdaddr>
[NEW] Transport /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_source0/fd0
Endpoint: SetConfiguration
        Transport /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_source0/fd0
        Device: /org/bluez/hci0/dev_00_AA_01_01_00_02
Auto Accepting...
[NEW] Transport /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_sink0/fd1
Endpoint: SetConfiguration
        Transport /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_sink0/fd1
        Device: /org/bluez/hci0/dev_00_AA_01_01_00_02
Auto Accepting...
[bluetooth]# transport.acquire /org/bluez/hci0/dev_00_AA_01_01_00_02/pac_sink0/fd1

Luiz Augusto von Dentz (9):
  adapter: Add btd_adapter_find_device_by_fd
  lib/uuid: Add PACS/ASCS UUIDs
  shared/bap: Add initial code for handling BAP
  profiles: Add initial code for bap plugin
  shared: Add definition for LC3 codec
  media-api: Add SelectProperties
  test/simple-endpoint: Add support for LC3 endpoints
  client/player: Add support for PACS endpoints
  client/player: Use QoS interval on transport.send

 Makefile.am                |    3 +-
 Makefile.plugins           |    5 +
 client/player.c            |  688 +++++-
 configure.ac               |    4 +
 doc/media-api.txt          |   88 +-
 lib/uuid.h                 |   18 +
 profiles/audio/bap.c       | 1324 ++++++++++
 profiles/audio/media.c     |  678 ++++-
 profiles/audio/transport.c |  552 ++++-
 profiles/audio/transport.h |    3 +-
 src/adapter.c              |   33 +
 src/adapter.h              |    1 +
 src/device.c               |   10 +-
 src/shared/ascs.h          |  196 ++
 src/shared/bap.c           | 4776 ++++++++++++++++++++++++++++++++++++
 src/shared/bap.h           |  269 ++
 src/shared/lc3.h           |  112 +
 test/simple-endpoint       |   17 +
 tools/bluetooth-player.c   |    1 -
 19 files changed, 8634 insertions(+), 144 deletions(-)
 create mode 100644 profiles/audio/bap.c
 create mode 100644 src/shared/ascs.h
 create mode 100644 src/shared/bap.c
 create mode 100644 src/shared/bap.h
 create mode 100644 src/shared/lc3.h