platform/upstream/bluez.git
6 months agoshared/ad: Add RSI data type
Luiz Augusto von Dentz [Thu, 2 Mar 2023 22:16:07 +0000 (14:16 -0800)]
shared/ad: Add RSI data type

This adds BT_AD_CSIP_RSI advertising data type.

6 months agoshared/crypto: Add bt_crypto_sirk
Luiz Augusto von Dentz [Thu, 2 Mar 2023 21:47:44 +0000 (13:47 -0800)]
shared/crypto: Add bt_crypto_sirk

This adds bt_crypto_sirk which attempts to generate a unique SIRK using
the following steps:

 - Generate a hash (k) using the str as input
 - Generate a hash (sirk) using vendor, product, version and source as input
 - Encrypt sirk using k as LTK with sef function.

6 months agoclient/player: Update High Reliability presets
Luiz Augusto von Dentz [Fri, 10 Mar 2023 21:18:45 +0000 (13:18 -0800)]
client/player: Update High Reliability presets

This updates High Reliability presets as published in BAP 1.0.1:

https://www.bluetooth.com/specifications/bap-1-0-1/

6 months agoiso-tester: Update High Reliability presets
Luiz Augusto von Dentz [Fri, 10 Mar 2023 21:17:22 +0000 (13:17 -0800)]
iso-tester: Update High Reliability presets

This updates High Reliability presets as published in BAP 1.0.1:

https://www.bluetooth.com/specifications/bap-1-0-1/

6 months agol2cap-tester: Add server tests for Ext-Flowctl
Luiz Augusto von Dentz [Wed, 8 Mar 2023 23:30:46 +0000 (15:30 -0800)]
l2cap-tester: Add server tests for Ext-Flowctl

This adds the following tests:

L2CAP Ext-Flowctl Server - Success
L2CAP Ext-Flowctl Server - Nval SCID
L2CAP LE EATT Client - Success
L2CAP LE EATT Server - Success
L2CAP LE EATT Server - Reject

6 months agogatt: Use DEFER_SETUP for EATT channels
Luiz Augusto von Dentz [Thu, 9 Mar 2023 22:20:17 +0000 (14:20 -0800)]
gatt: Use DEFER_SETUP for EATT channels

This makes use of DEFER_SETUP mechanism to do the following checks
before accepting the connection:

 - Checks a valid device object exits
 - Checks if initiator/central as if the peripheral start connecting it
   may cause collisions.
 - Checks if the limit of allowed connections has been reached.

6 months agomain: Disable EATT by default
Luiz Augusto von Dentz [Thu, 9 Mar 2023 18:51:46 +0000 (10:51 -0800)]
main: Disable EATT by default

EATT is causing some problem with some platforms as they also attempt to
configure it may cause a connection collision which needs to be handled
by the kernel.

6 months agogatt: Fix creating duplicated objects
Luiz Augusto von Dentz [Wed, 8 Mar 2023 00:49:38 +0000 (16:49 -0800)]
gatt: Fix creating duplicated objects

This checks cid before attempting to create device, if the device is
using an RPA it could be that the MGMT event has not been processed yet
which would lead to create a second copy of the same device using its
identity address.

6 months agodevice: Fix not always storing device info
Luiz Augusto von Dentz [Wed, 8 Mar 2023 00:47:33 +0000 (16:47 -0800)]
device: Fix not always storing device info

When updating the device address check if the device is marked as
temporary before attempting to call store_device_info otherwise it will
have no effect and instead btd_device_set_temporary must be called.

6 months agoshared/att: Always queue BT_ATT_OP_MTU_REQ on the fixed channel
Luiz Augusto von Dentz [Tue, 7 Mar 2023 21:00:22 +0000 (13:00 -0800)]
shared/att: Always queue BT_ATT_OP_MTU_REQ on the fixed channel

BT_ATT_OP_MTU_REQ shall only be sent on the so called fixed channel
since EATT channels shall use L2CAP procedure to update its MTU.

6 months agobap: Fix crash on unexpected disconnect
Luiz Augusto von Dentz [Thu, 2 Mar 2023 19:56:36 +0000 (11:56 -0800)]
bap: Fix crash on unexpected disconnect

If an unexpected disconnect happens while bt_bap_config is pending the
following trace can be observed, to fix it bt_bap_config is reworked so
it no longer attempts to create and config the stream in place, instead
it just return the new stream and the function is renamed to
bt_bap_stream_new:

Invalid write of size 4
   at 0x3980D8: config_cb (bap.c:395)
   by 0x4DF5A3: bap_req_complete (bap.c:3471)
   by 0x4E9D33: bap_req_detach (bap.c:3807)
   by 0x4E9D33: bt_bap_detach (bap.c:3819)
   by 0x4E9D33: bt_bap_detach (bap.c:3810)
   by 0x397AA9: bap_disconnect (bap.c:1342)
   by 0x4223E0: btd_service_disconnect (service.c:305)
   by 0x4974D8F: g_slist_foreach (in /usr/lib64/libglib-2.0.so.0.7200.3)
   by 0x438FC3: att_disconnected_cb (device.c:5160)
   by 0x49A6C6: queue_foreach (queue.c:207)
   by 0x4B463B: disconnect_cb (att.c:701)
   by 0x5054DF: watch_callback (io-glib.c:157)
   by 0x495BFAE: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.7200.3)
   by 0x49B12C7: ??? (in /usr/lib64/libglib-2.0.so.0.7200.3)
 Address 0x6576940 is 96 bytes inside a block of size 112 free'd
   at 0x48480E4: free (vg_replace_malloc.c:872)
   by 0x48F78D: remove_interface (object.c:660)
   by 0x490489: g_dbus_unregister_interface (object.c:1394)
   by 0x397BA8: ep_remove (bap.c:1330)
   by 0x49ACF4: queue_remove_if (queue.c:279)
   by 0x49B0AC: queue_remove_all (queue.c:321)
   by 0x397A7C: bap_disconnect (bap.c:1339)
   by 0x4223E0: btd_service_disconnect (service.c:305)
   by 0x4974D8F: g_slist_foreach (in /usr/lib64/libglib-2.0.so.0.7200.3)
   by 0x438FC3: att_disconnected_cb (device.c:5160)
   by 0x49A6C6: queue_foreach (queue.c:207)
   by 0x4B463B: disconnect_cb (att.c:701)
 Block was alloc'd at
   at 0x484586F: malloc (vg_replace_malloc.c:381)
   by 0x49B432: util_malloc (util.c:43)
   by 0x39A1D9: ep_register (bap.c:563)
   by 0x39A1D9: pac_found (bap.c:664)
   by 0x4E5FEA: bap_foreach_pac (bap.c:3980)
   by 0x4EA437: bap_notify_ready (bap.c:2736)
   by 0x4EA437: bap_idle (bap.c:3711)
   by 0x4B52F0: idle_notify (gatt-client.c:171)
   by 0x49ACF4: queue_remove_if (queue.c:279)
   by 0x49B0AC: queue_remove_all (queue.c:321)
   by 0x4C092C: notify_client_idle (gatt-client.c:180)
   by 0x4C092C: request_unref (gatt-client.c:199)
   by 0x4AACB5: destroy_att_send_op (att.c:209)
   by 0x4B2B88: handle_rsp (att.c:862)
   by 0x4B2B88: can_read_data (att.c:1052)
   by 0x5054DF: watch_callback (io-glib.c:157)

6 months agoshared/bap: Make use of bt_gatt_client_idle_register
Luiz Augusto von Dentz [Thu, 2 Mar 2023 00:23:15 +0000 (16:23 -0800)]
shared/bap: Make use of bt_gatt_client_idle_register

This uses bt_gatt_client_idle_register to track when instance is ready
instead of using a dedicated queue to track requests.

Fixes: https://github.com/bluez/bluez/issues/485

6 months agomedia: Fix not checking BREDR support for A2DP
Luiz Augusto von Dentz [Wed, 1 Mar 2023 01:33:27 +0000 (17:33 -0800)]
media: Fix not checking BREDR support for A2DP

A2DP shall depend on MGMT_SETTING_BREDR setting so the likes of
bluetoothctl -e don't attempt to register A2DP with controller that
are on LE only mode.

6 months agoshare/gatt-client: Introduce idle callback
Luiz Augusto von Dentz [Wed, 1 Mar 2023 00:05:47 +0000 (16:05 -0800)]
share/gatt-client: Introduce idle callback

This introduces the concept of idle callback which can be used to get
notified when there is no more pending requests by the client.

6 months agoshared/bap: Cleanup requests on detach
Luiz Augusto von Dentz [Tue, 28 Feb 2023 22:22:31 +0000 (14:22 -0800)]
shared/bap: Cleanup requests on detach

If session is being detached any ongoing/queue request shall be
cancelled as well otherwise when the session is attach again they would
be invalid.

6 months agoclient: Allow transport.send command to work with multiple transports
Luiz Augusto von Dentz [Tue, 28 Feb 2023 01:07:43 +0000 (17:07 -0800)]
client: Allow transport.send command to work with multiple transports

This enables transport.send to work with multiple transports instead of
sending one by one which can create synchronization problems.

6 months agodevice: Don't attempt to connect LE if ATT is already connected
Luiz Augusto von Dentz [Fri, 24 Feb 2023 00:31:19 +0000 (16:31 -0800)]
device: Don't attempt to connect LE if ATT is already connected

This checks if an att instance already exists before attempting to
connect it once again.

6 months agoiso-tester: Add test for central receiving timestamped ISO packet
Pauli Virtanen [Sat, 25 Feb 2023 21:42:51 +0000 (21:42 +0000)]
iso-tester: Add test for central receiving timestamped ISO packet

This attempts to receive a timestamped HCI ISO data packet on central.

With kernel 6.2 HCI ISO packet parsing this test fails with
Bluetooth: Frame malformed (len 40, expected len 0)

Link: https://lore.kernel.org/linux-bluetooth/1fd2d4523c139deda93aab2c31f1508d79c32472.1676921889.git.pav@iki.fi/
6 months agobthost: Allow sending ISO packets with sequence number and timestamp
Pauli Virtanen [Sat, 25 Feb 2023 21:42:50 +0000 (21:42 +0000)]
bthost: Allow sending ISO packets with sequence number and timestamp

Change bthost_send_iso to take packet sequence number and timestamp, and
allow it to send timestamped HCI ISO data packets.

Currently, btdev passes through ISO packets, so this can also be used to
test RX timestamping.

6 months agoshared/bap: fix crash unregistering media endpoint while streaming
Pauli Virtanen [Fri, 24 Feb 2023 18:09:46 +0000 (18:09 +0000)]
shared/bap: fix crash unregistering media endpoint while streaming

Always free BAP stream in bt_bap_stream_release if it is not attached to
a client session, simplifying the cleanup.

Fixes the following ASAN crash is observed when media endpoint is
unregistered (stopping sound server) while streaming from remote BAP
client:

ERROR: AddressSanitizer: heap-use-after-free on address 0x60b0000474d8
READ of size 8 at 0x60b0000474d8 thread T0
    #0 0x7a27c6 in stream_set_state src/shared/bap.c:1227
    #1 0x7aff61 in remove_streams src/shared/bap.c:2483
    #2 0x71d2d0 in queue_foreach src/shared/queue.c:207
    #3 0x7b0152 in bt_bap_remove_pac src/shared/bap.c:2501
    #4 0x463cda in media_endpoint_destroy profiles/audio/media.c:179
    ...
0x60b0000474d8 is located 8 bytes inside of 112-byte region
freed by thread T0 here:
    #0 0x7f93b12b9388 in __interceptor_free.part.0 (/lib64/libasan.so.8+0xb9388)
    #1 0x7a0504 in bap_stream_free src/shared/bap.c:972
    #2 0x7a0800 in bap_stream_detach src/shared/bap.c:989
    #3 0x7a26d1 in bap_stream_state_changed src/shared/bap.c:1208
    #4 0x7a2ab4 in stream_set_state src/shared/bap.c:1252
    #5 0x7ab18a in stream_release src/shared/bap.c:1985
    #6 0x7c6919 in bt_bap_stream_release src/shared/bap.c:4572
    #7 0x7aff50 in remove_streams src/shared/bap.c:2482
    ...
previously allocated by thread T0 here:
    #0 0x7f93b12ba6af in __interceptor_malloc (/lib64/libasan.so.8+0xba6af)
    #1 0x71e9ae in util_malloc src/shared/util.c:43
    #2 0x79c2f5 in bap_stream_new src/shared/bap.c:766
    #3 0x7a4863 in ep_config src/shared/bap.c:1446
    #4 0x7a4f22 in ascs_config src/shared/bap.c:1481
    ...

6 months agodevice: wait GATT client ready before service accept() if no cache
Pauli Virtanen [Thu, 23 Feb 2023 19:14:44 +0000 (19:14 +0000)]
device: wait GATT client ready before service accept() if no cache

On device ATT attach, do not immediately call accept() for profiles, if
there is no cached data in GATT database. Instead, wait for service
resolution to complete, as likely accept() cannot succeed before that.

Several profiles (bap, vcp, midi, deviceinfo) assume that GATT
attributes are available when their accept() is called, returning
success even if not.  In this case, the services never find the remote
attributes and are not operable.  Other profiles (hog, batt, ...) fail
their accept which prompts core to retry after discovery, and work
correctly also in this case.

Fix the failing services by waiting for service resolution as necessary,
so profiles can assume the GATT DB has some content.

6 months agoconfigure: Check ell path
Tedd Ho-Jeong An [Mon, 20 Feb 2023 18:12:05 +0000 (10:12 -0800)]
configure: Check ell path

If the 'enable-external-ell' is not specified in the configure parameter,
the build system assumes that the ELL source is located same level where
the bluez source is cloned. But the configure doens't check the folder
and user will get the build error while building the source.

This patch checks if the ELL source path if the 'enable-external-ell'
flag is not set and throws an error if the ELL doesn't exist.

6 months agoaudio/transport: update BAP transport QOS values when changed
Pauli Virtanen [Sun, 19 Feb 2023 18:02:03 +0000 (18:02 +0000)]
audio/transport: update BAP transport QOS values when changed

Currently, BAP transport publishes on DBus QOS values obtained at
transport creation time. For BAP server the transport creation usually
occurs before stream QOS is configured, and these values are then all
zero. bap->sdu is also never set.

Update transport QOS values in DBus when stream state changes.  Since
nearly all QOS values are exposed in the transport, use bt_bap_qos to
store them there for simplicity.

6 months agomedia: fix ASAN crash in pac_config_cb
Pauli Virtanen [Wed, 15 Feb 2023 22:26:02 +0000 (22:26 +0000)]
media: fix ASAN crash in pac_config_cb

Don't call configuration callback if stream's transport was cleared in
the meantime.  The clear callback is called just before the stream is
freed.

Fixes ASAN crash on disconnect while waiting for SetConfiguration DBus
reply:

ERROR: AddressSanitizer: heap-use-after-free on address 0x60b00002eb90
READ of size 8 at 0x60b00002eb90 thread T0
    #0 0x7a4892 in bap_stream_config_cfm_cb src/shared/bap.c:3201
    #1 0x4688fb in pac_config_cb profiles/audio/media.c:1010
    #2 0x462164 in media_endpoint_cancel profiles/audio/media.c:157
    #3 0x462243 in media_endpoint_cancel_all profiles/audio/media.c:165
    #4 0x46365b in clear_endpoint profiles/audio/media.c:297
    #5 0x463a21 in endpoint_reply profiles/audio/media.c:325
...
freed by thread T0 here:
    #0 0x7eff644b9388 in __interceptor_free.part.0 (/lib64/libasan.so.8+0xb9388)
    #1 0x78d8cc in bap_stream_free src/shared/bap.c:974
    #2 0x78dbc8 in bap_stream_detach src/shared/bap.c:991
    #3 0x78fa43 in bap_stream_state_changed src/shared/bap.c:1210
    #4 0x78fe26 in stream_set_state src/shared/bap.c:1254
    #5 0x7ab5ce in stream_foreach_detach src/shared/bap.c:3820
    #6 0x70ce06 in queue_foreach src/shared/queue.c:207
    #7 0x7ab942 in bt_bap_detach src/shared/bap.c:3836
    #8 0x51da7a in bap_disconnect profiles/audio/bap.c:1342
    #9 0x626e57 in btd_service_disconnect src/service.c:305

6 months agomedia: look up BAP transports by their associated stream
Pauli Virtanen [Wed, 15 Feb 2023 22:26:01 +0000 (22:26 +0000)]
media: look up BAP transports by their associated stream

To look up transports, use BAP stream pointers associated with them, not
the path strings stored in the stream user data. This makes it clearer
that transports presented to the sound server correspond to the actual
streams.  The Acquire/etc. of BAP transports are already tied to the
associated stream.

This fixes use-after-free crashes in pac_clear.  They occur because the
lifetime of the path string was either that of media transport or media
endpoint, which may be shorter than that of the BAP stream.  In such
case, pac_clear is entered with invalid pointer in stream user data,
leading to crash.  There are a few code paths for this, e.g. making
sound server delay its SetConfiguration response (e.g. gdb breakpoint)
to get dbus timeout, then disconnecting:

ERROR: AddressSanitizer: heap-use-after-free on address XXXX
READ of size 3 at 0x606000031640 thread T0
...
    #4 0x559891 in btd_debug src/log.c:117
    #5 0x46abfd in pac_clear profiles/audio/media.c:1096
    #6 0x79fcaf in bap_stream_clear_cfm src/shared/bap.c:914
    #7 0x7a060d in bap_stream_detach src/shared/bap.c:987
    #8 0x7a25ea in bap_stream_state_changed src/shared/bap.c:1210
    #9 0x7a29cd in stream_set_state src/shared/bap.c:1254
    #10 0x7be824 in stream_foreach_detach src/shared/bap.c:3820
    #11 0x71d15d in queue_foreach src/shared/queue.c:207
    #12 0x7beb98 in bt_bap_detach src/shared/bap.c:3836
    #13 0x5228cb in bap_disconnect profiles/audio/bap.c:1342
    #14 0x63247c in btd_service_disconnect src/service.c:305
freed by thread T0 here:
    #0 0x7f16708b9388 in __interceptor_free.part.0 (/lib64/libasan.so.8+0xb9388)
    #1 0x7f167071b8cc in g_free (/lib64/libglib-2.0.so.0+0x5b8cc)
    #2 0x7047b7 in remove_interface gdbus/object.c:660
    #3 0x70aef6 in g_dbus_unregister_interface gdbus/object.c:1394
    #4 0x47be30 in media_transport_destroy profiles/audio/transport.c:217
    #5 0x464ab9 in endpoint_remove_transport profiles/audio/media.c:270
    #6 0x464d26 in clear_configuration profiles/audio/media.c:292
    #7 0x464e69 in clear_endpoint profiles/audio/media.c:300
    #8 0x46516e in endpoint_reply profiles/audio/media.c:325
...

Fixes: 7b1b1a499cf3 ("media: clear the right transport when clearing BAP endpoint")

6 months agoaudio/transport: add media_transport_get_stream method for transports
Pauli Virtanen [Wed, 15 Feb 2023 22:26:00 +0000 (22:26 +0000)]
audio/transport: add media_transport_get_stream method for transports

Add a method for getting the audio stream associated with a media
transport.

6 months agomonitor/att: Fix ASE frequency values
Luiz Augusto von Dentz [Thu, 1 Dec 2022 22:10:16 +0000 (14:10 -0800)]
monitor/att: Fix ASE frequency values

This fixes the printed hex value of some of the frequencies.

6 months agogatttool: Use consistent spacing before brackets
Dave Nicolson [Sun, 12 Feb 2023 17:24:02 +0000 (18:24 +0100)]
gatttool: Use consistent spacing before brackets

6 months agomgmt: Use BIT macro when defining bitfields
Luiz Augusto von Dentz [Tue, 14 Feb 2023 02:15:31 +0000 (18:15 -0800)]
mgmt: Use BIT macro when defining bitfields

This makes use of BIT macro when defining bitfields which makes it
clearer what bit it is toggling.

6 months agomedia: Check adapter CIS support to add BAP in SupportedUUIDs
Pauli Virtanen [Sat, 11 Feb 2023 10:53:51 +0000 (10:53 +0000)]
media: Check adapter CIS support to add BAP in SupportedUUIDs

Don't indicate BAP support in SupportedUUIDs, if adapter supports
neither CIS Central nor Peripheral.

6 months agoadapter: Add function for checking adapter settings
Pauli Virtanen [Sat, 11 Feb 2023 10:53:50 +0000 (10:53 +0000)]
adapter: Add function for checking adapter settings

Add function for checking adapter current settings.

6 months agotools/btmgmt: add MGMT setting bit names for CIS feature support
Pauli Virtanen [Sat, 11 Feb 2023 10:53:49 +0000 (10:53 +0000)]
tools/btmgmt: add MGMT setting bit names for CIS feature support

Add names for CIS Central/Peripheral MGMT setting bits:

[mgmt]# info
Index list with 1 item
hci0: Primary controller
addr XX:XX:XX:XX:XX:XX version 12 manufacturer 2 class 0x7c0104
supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr le advertising secure-conn debug-keys privacy configuration static-addr phy-configuration wide-band-speech cis-central cis-peripheral
current settings: powered bondable ssp br/edr le secure-conn cis-central cis-peripheral
name xxx
short name
hci0: Configuration options
supported options: public-address
missing options:

6 months agomonitor: add MGMT setting bit names for CIS feature support
Pauli Virtanen [Sat, 11 Feb 2023 10:53:48 +0000 (10:53 +0000)]
monitor: add MGMT setting bit names for CIS feature support

Add names for CIS Central/Peripheral MGMT bits:

@ MGMT Event: Command Complete (0x0001) plen 283  {0x0002} [hci0] 3.745117
      Read Controller Information (0x0004) plen 280
        Status: Success (0x00)
        Address: XX:XX:XX:XX:XX:XX (Intel Corporate)
        Version: Bluetooth 5.3 (0x0c)
        Manufacturer: Intel Corp. (2)
        Supported settings: 0x000ffeff
          Powered
          Connectable
          Fast Connectable
          Discoverable
          Bondable
          Link Security
          Secure Simple Pairing
          BR/EDR
          Low Energy
          Advertising
          Secure Connections
          Debug Keys
          Privacy
          Controller Configuration
          Static Address
          PHY Configuration
          Wideband Speech
          CIS Central
          CIS Peripheral
        Current settings: 0x000c0ad1
          Powered
          Bondable
          Secure Simple Pairing
          BR/EDR
          Low Energy
          Secure Connections
          CIS Central
          CIS Peripheral
        Class: 0x7c0104
          Major class: Computer (desktop, notebook, PDA, organizers)
          Minor class: Desktop workstation
          Rendering (Printing, Speaker)
          Capturing (Scanner, Microphone)
          Object Transfer (v-Inbox, v-Folder)
          Audio (Speaker, Microphone, Headset)
          Telephony (Cordless telephony, Modem, Headset)
        Name: xxx
        Short name:

6 months agolib: Add defines for MGMT setting bits for CIS feature support
Pauli Virtanen [Sat, 11 Feb 2023 10:53:47 +0000 (10:53 +0000)]
lib: Add defines for MGMT setting bits for CIS feature support

6 months agodoc: add MGMT setting for CIS features
Pauli Virtanen [Sat, 11 Feb 2023 10:53:46 +0000 (10:53 +0000)]
doc: add MGMT setting for CIS features

Add definitions for new MGMT Controller Information settings bits,
indicating adapter Connected Isochronous Stream - Central/Peripheral
feature support.

6 months agodoc: remove unimplemented Quality Report from MGMT settings
Pauli Virtanen [Sat, 11 Feb 2023 10:53:45 +0000 (10:53 +0000)]
doc: remove unimplemented Quality Report from MGMT settings

The Set Quality Report command was removed in
commit 0454e2d09570 ("mgmt: Add support for Mesh in the kernel"),
but the settings bit was not removed. It's also not implemented on
kernel side, so remove it now.

6 months agomedia: clear the right transport when clearing BAP endpoint
Pauli Virtanen [Sat, 11 Feb 2023 19:55:53 +0000 (19:55 +0000)]
media: clear the right transport when clearing BAP endpoint

Each configured BAP stream is associated with a transport, and only that
transport should be cleared when the stream's configuration is cleared.

This is required for multiple BAP clients to use the same Media1
endpoint, which is what we should aim for to follow the spirit in which
the endpoints work in ASCS.  Sound servers generally can handle this,
since the *Configuration calls provide the transport paths, and for
different clients they are associated with different devices.

6 months agoshared/bap: fix local endpoint state to be per-client
Pauli Virtanen [Sat, 11 Feb 2023 19:55:52 +0000 (19:55 +0000)]
shared/bap: fix local endpoint state to be per-client

ASCS v1.0 Sec. 4.1: "For each ASE characteristic (distinguished by their
attribute handles), the server shall expose separate ASE characteristic
values for each client."  In shared/bap.c, the ASE chrc value is
contained in bt_bap_endpoint struct.

As implemented currently, the same local ASE chrc value is shared
between all clients, in contradiction with the above.  Namely, the
bt_bap_endpoint is looked up based on the gatt_db_attribute handles, in
bap_get_endpoint and bap_get_endpoint_id, but the handles correspond to
the ASCS registrations, and do not depend on which client is in
question.

Fix this by moving the endpoint states to the bt_bap BAP session struct,
so that the ASE state is associated with the sessions, and each session
has separate state.

6 months agomedia: set default value for BAP endpoint Vendor field
Pauli Virtanen [Wed, 1 Feb 2023 19:51:47 +0000 (19:51 +0000)]
media: set default value for BAP endpoint Vendor field

The "Vendor" field is optional, and should have an initialized valid
default value.

It has the default values in register_endpoint, but not in
app_register_endpoint, so make the latter match the former.

6 months agomedia: Rework support of Vendor to use uint32_t as type
Luiz Augusto von Dentz [Mon, 23 Jan 2023 23:56:49 +0000 (15:56 -0800)]
media: Rework support of Vendor to use uint32_t as type

This reworks the handlings of Vendor property to use a single uint32_t.

6 months agomedia-api: Make Vendor a uint32_t
Luiz Augusto von Dentz [Mon, 23 Jan 2023 23:56:48 +0000 (15:56 -0800)]
media-api: Make Vendor a uint32_t

Using two uint16_t requires the use of a container which makes things a
lot more complicated so this switch to use a single uint32_t.

6 months agoshared/util: Check arguments on util_memcpy
Luiz Augusto von Dentz [Mon, 23 Jan 2023 23:56:47 +0000 (15:56 -0800)]
shared/util: Check arguments on util_memcpy

This avoids having to check for !src or !len before calling util_memcpy
since otherwise it can cause runtime errors.

6 months agoclient/player: Add support for Company ID, Vendor ID
Abhay Maheta [Mon, 23 Jan 2023 23:56:46 +0000 (15:56 -0800)]
client/player: Add support for Company ID, Vendor ID

This adds support for Company ID and Vendor Codec ID in  BAP profile.
This also adds handling of Vendor Specific Coding format for BAP
Profile.

Now it allows to enter zero codec capabilities for vendor codec.
In order to register zero codec capabilities, 0 shall be
entered when prompted.

6 months agoprofiles: Add Support for Metadata, CID and VID
Maheta, Abhay [Mon, 23 Jan 2023 23:56:45 +0000 (15:56 -0800)]
profiles: Add Support for Metadata, CID and VID

This adds support for Metadata, Company ID and Vendor Codec ID

6 months agoshared: define MAX_INPUT for musl
Sam James [Tue, 31 Jan 2023 05:52:58 +0000 (05:52 +0000)]
shared: define MAX_INPUT for musl

musl systems don't have MAX_INPUT. Just define it to _POSIX_MAX_INPUT
which musl does have if it's not already defined.

Note that on glibc, the values match anyway (as of glibc-2.36), and
indeed POSIX_MAX_INPUT has the same value on musl too.

Bug: https://bugs.gentoo.org/888467

6 months agomesh: Remove unused byte swap for ScanBuild
Brian Gix [Tue, 24 Jan 2023 20:22:16 +0000 (12:22 -0800)]
mesh: Remove unused byte swap for ScanBuild

6 months agomesh: Fix Checksmatch warning
Brian Gix [Tue, 24 Jan 2023 19:24:23 +0000 (11:24 -0800)]
mesh: Fix Checksmatch warning

6 months agomesh: Switch beaconing net key
Brian Gix [Fri, 9 Apr 2021 15:45:24 +0000 (08:45 -0700)]
mesh: Switch beaconing net key

When transitioning from Phase 1 to Phase 2 of a network key and we are
beaconing, we need to halt the beaconing on the old key version, and
begin beaconing on the new key version.

6 months agotools/mesh: Add support for Mesh Private Beacons
Brian Gix [Thu, 8 Oct 2020 18:10:59 +0000 (11:10 -0700)]
tools/mesh: Add support for Mesh Private Beacons

This allows generation of Mesh Private Beacon server commands, and
recognition of the resulting Status messages.

6 months agomesh: Add internal Mesh Private Beacon model
Brian Gix [Thu, 8 Oct 2020 18:05:47 +0000 (11:05 -0700)]
mesh: Add internal Mesh Private Beacon model

Adds recgnition that the Mesh Private Beacon model is internal
and foundational, without bindings.

6 months agomesh: Add Tx/Rx support of Mesh Private Beacons
Brian Gix [Thu, 8 Oct 2020 17:44:59 +0000 (10:44 -0700)]
mesh: Add Tx/Rx support of Mesh Private Beacons

With this change, we start evaluating received Mesh Private Beacons in
addition to the legacy Secure Network Beacons. We also add the ability
to request Tx of Mesh Private Beacons, which are regenerated with new
Random Nonce a minimum of every 0 - 2550 seconds.

6 months agomesh: Add Mesh Private Beacon server
Brian Gix [Thu, 8 Oct 2020 17:32:36 +0000 (10:32 -0700)]
mesh: Add Mesh Private Beacon server

This initial server supports only the Mesh Private Beacon and returns
"Not Suppoerted" for Get/Set of Private GATT Proxy and Private Node
Identity beacons.

6 months agomesh: Add storage of Mesh Private Beacon settings
Brian Gix [Thu, 8 Oct 2020 17:59:48 +0000 (10:59 -0700)]
mesh: Add storage of Mesh Private Beacon settings

If current storage does not exist in node.json, the Mesh Private
Beacon will be disabled.

6 months agounit/mesh: Add unit testing of Mesh Private Beaconing
Brian Gix [Thu, 8 Oct 2020 18:09:30 +0000 (11:09 -0700)]
unit/mesh: Add unit testing of Mesh Private Beaconing

This includes the Sample Data from the Mesh Profile specification v1.1,
and validates that the beacon crypto functions work as expected.

6 months agomesh: Rename parameter list per crypto usage
Brian Gix [Tue, 29 Sep 2020 20:45:49 +0000 (13:45 -0700)]
mesh: Rename parameter list per crypto usage

The derived key generated by the "nkpk" salt and network master key is
used to create Private Beacons as of Mesh Profile Specification v1.1

6 months agotools/mesh: Optimize for multiple RPR servers and NPPI
Brian Gix [Tue, 25 Oct 2022 21:34:40 +0000 (14:34 -0700)]
tools/mesh: Optimize for multiple RPR servers and NPPI

These changes allow the mesh-cfgclient tool to request remote node
compositions from page 128. Depending on the differences between
there and what is stored in the local configuration database, it may
recomend reprovisioning with NPPI-1 (Address Refresh) or NPPI-2
(Composition Refresh).

Additionally, NPPI-0 may be performed to refresh the Device Key only.

6 months agomesh: Add Remote Provisioning
Brian Gix [Tue, 25 Oct 2022 21:33:48 +0000 (14:33 -0700)]
mesh: Add Remote Provisioning

Add Remote Provisioning Server
Add Remote Provisioning Client
Remove local scanning/provisioning
Add delete-all dev key function
Add NPPI procedures

6 months agodoc/mesh: Add Remote Provisioning DBus APIs
Brian Gix [Fri, 1 May 2020 17:46:26 +0000 (10:46 -0700)]
doc/mesh: Add Remote Provisioning DBus APIs

Remote Provisioning (introduced in Mesh Profile Specification v1.1)

* Allows Provisioners to use a remote server to scan for and
  provision devices.

* Allows Config managers to reprovision existing nodes to:
* Refresh Device Keys
* Reassign Node Addresses
* Refresh Node Composition

6 months agoAUTHORS: modify Brian Gix email address
Brian Gix [Tue, 24 Jan 2023 22:02:03 +0000 (14:02 -0800)]
AUTHORS: modify Brian Gix email address

6 months agomonitor/att: Fix Set Member Lock decoding
Marcin Kraglak [Mon, 30 Jan 2023 09:13:36 +0000 (10:13 +0100)]
monitor/att: Fix Set Member Lock decoding

According to CSIS specification v1.0.1: "Allowed values for the Set
Member Lock characteristic are Unlocked (corresponding to the
numeric value 0x01) and Locked (corresponding to the numeric
value 0x02); all other values are RFU".

6 months agoAUTHORS: Update Marcin's email
Marcin Kraglak [Sat, 28 Jan 2023 06:37:33 +0000 (07:37 +0100)]
AUTHORS: Update Marcin's email

6 months agoshared/util: Add CAS, HAS, TMAS and PBAS UUIDs
Marcin Kraglak [Sat, 28 Jan 2023 06:37:32 +0000 (07:37 +0100)]
shared/util: Add CAS, HAS, TMAS and PBAS UUIDs

Add UUIDs for: Common Audio service, Hearing Aid service,
TMAS service and Public Broadcast Announcement service.

6 months agobap: Fix registering multiple endpoint for the same PAC set
Luiz Augusto von Dentz [Thu, 26 Jan 2023 20:10:13 +0000 (12:10 -0800)]
bap: Fix registering multiple endpoint for the same PAC set

This makes sure there is only one endpoint representing a local and
remote PAC set.

6 months agobap: Fix not checking if request fits when grouping
Luiz Augusto von Dentz [Thu, 26 Jan 2023 00:04:01 +0000 (16:04 -0800)]
bap: Fix not checking if request fits when grouping

When grouping requests with the same opcode the code was queueing them
without attempt to check that that would fit in the ATT MTU causing the
following trace:

stack-buffer-overflow on address 0x7fffdba951f0 at pc 0x7fc15fc49d21 bp
0x7fffdba95020 sp 0x7fffdba947d0
WRITE of size 9 at 0x7fffdba951f0 thread T0
   #0 0x7fc15fc49d20 in __interceptor_memcpy
(/lib64/libasan.so.8+0x49d20)
   #1 0x71f698 in util_iov_push_mem src/shared/util.c:266
   #2 0x7b9312 in append_group src/shared/bap.c:3424
   #3 0x71ba01 in queue_foreach src/shared/queue.c:207
   #4 0x7b9b66 in bap_send src/shared/bap.c:3459
   #5 0x7ba594 in bap_process_queue src/shared/bap.c:351

Fixes: https://github.com/bluez/bluez/issues/457#issuecomment-1403924708

6 months agobap: Fix not removing endpoint if local PAC is unregistered
Luiz Augusto von Dentz [Tue, 24 Jan 2023 23:45:39 +0000 (15:45 -0800)]
bap: Fix not removing endpoint if local PAC is unregistered

If local PAC is unregistered it would also notify via pac_removed
callback which shall unregister the endpoint D-Bus object.

Fixes: https://github.com/bluez/bluez/issues/457#issuecomment-1402178691

6 months agobap: Fix not setting stream to NULL
Luiz Augusto von Dentz [Mon, 23 Jan 2023 21:27:14 +0000 (13:27 -0800)]
bap: Fix not setting stream to NULL

If the stream state is idle the ep->stream shall be set to NULL
otherwise it may be reused causing the following trace:

==32623==ERROR: AddressSanitizer: heap-use-after-free on address ...
 READ of size 8 at 0x60b000103550 thread T0
    #0 0x7bf7b7 in bap_stream_valid src/shared/bap.c:4065
    #1 0x7bf981 in bt_bap_stream_config src/shared/bap.c:4082
    #2 0x51a7c8 in bap_config profiles/audio/bap.c:584
    #3 0x71b907 in queue_foreach src/shared/queue.c:207
    #4 0x51b61f in select_cb profiles/audio/bap.c:626
    #5 0x4691ed in pac_select_cb profiles/audio/media.c:884
    #6 0x4657ea in endpoint_reply profiles/audio/media.c:369

Fixes: https://github.com/bluez/bluez/issues/457#issuecomment-1399232486

6 months agoshared/bap: Fix not detaching streams when PAC is removed
Luiz Augusto von Dentz [Mon, 23 Jan 2023 21:06:07 +0000 (13:06 -0800)]
shared/bap: Fix not detaching streams when PAC is removed

When local PAC is removed we attempt to release the streams but we left
it still attached to the endpoint, so this makes sure the stream is
properly detached by setting its state to idle.

Fixes: https://github.com/bluez/bluez/issues/457

6 months agoshared/bap: Fixing Company ID and Vendor ID endianess
Abhay Maheta [Fri, 13 Jan 2023 05:06:05 +0000 (10:36 +0530)]
shared/bap: Fixing Company ID and Vendor ID endianess

This fixes Company ID and Vendor Codec ID which are supposed to be
little endian.

6 months agoshared/bap: Fix scan-build warning
Luiz Augusto von Dentz [Fri, 13 Jan 2023 21:15:21 +0000 (13:15 -0800)]
shared/bap: Fix scan-build warning

This fixes the following warning:

src/shared/bap.c:2268:26: warning: Access to field 'iov_len' results in
a dereference of a null pointer (loaded from variable 'cont')
        return iov_append(data, cont->iov_len, cont->iov_base);
                                ^~~~~~~~~~~~~

6 months agoshared/gatt-client: Fix smatch warnings
Luiz Augusto von Dentz [Fri, 6 Jan 2023 00:32:55 +0000 (16:32 -0800)]
shared/gatt-client: Fix smatch warnings

This fixes the following warnings:

shared/gatt-client.c:2764:33: warning: Variable length array is used.
shared/gatt-client.c:2994:23: warning: Variable length array is used.
shared/gatt-client.c:3075:23: warning: Variable length array is used.
shared/gatt-client.c:3514:23: warning: Variable length array is used.

6 months agohog-lib: Fix not handling BT_ATT_OP_HANDLE_NFY_MULT
Luiz Augusto von Dentz [Thu, 5 Jan 2023 22:01:57 +0000 (14:01 -0800)]
hog-lib: Fix not handling BT_ATT_OP_HANDLE_NFY_MULT

This is a temporary fix for not handling BT_ATT_OP_HANDLE_NFY_MULT in
GAttr so the code will use g_attrib_attach_client to attach the
bt_gatt_client instance which is then used to register notifications
including those sent with BT_ATT_OP_HANDLE_NFY_MULT.

Fixes: https://github.com/bluez/bluez/issues/71

6 months agoattrib: Introduce g_attrib_attach_client
Luiz Augusto von Dentz [Thu, 5 Jan 2023 21:59:20 +0000 (13:59 -0800)]
attrib: Introduce g_attrib_attach_client

This introduces g_attrib_attach_client which can be used to attach a
bt_gatt_client instance to GAttr so it can be used to register
notifications.

6 months agoshared/gatt-client: Allow registering with NULL callback
Luiz Augusto von Dentz [Thu, 5 Jan 2023 21:54:50 +0000 (13:54 -0800)]
shared/gatt-client: Allow registering with NULL callback

This makes bt_gatt_client_register_notify allow registering with NULL
callback which is interpreted as the CCC write has already been
performed therefore it won't be written again.

6 months agoshared/gatt-client: Use parent debug_callback if not set on clone
Luiz Augusto von Dentz [Thu, 5 Jan 2023 21:52:15 +0000 (13:52 -0800)]
shared/gatt-client: Use parent debug_callback if not set on clone

If clone don't have a dedicated callback set use its parent so users of
bt_gatt_client_clone don't have to keep setting the same callback for
all clone instances.

6 months agomedia-api: Add Vendor and Metadata
Abhay Maheta [Thu, 29 Dec 2022 15:53:01 +0000 (21:23 +0530)]
media-api: Add Vendor and Metadata

This adds Vendor and Metadata properties to MediaEndpoint1.

6 months agoshared/bap: Fix handling for Company ID and Vendor Codec ID
Abhay Maheta [Thu, 29 Dec 2022 15:52:55 +0000 (21:22 +0530)]
shared/bap: Fix handling for Company ID and Vendor Codec ID

This adds fixes for handing for Company ID and Vendor Codec ID
while adding PAC record to database and responding to Attribute
Read Request for Sink/Source PAC Characteristics.

6 months agomonitor: Add support for decoding RSI
Luiz Augusto von Dentz [Thu, 22 Dec 2022 21:41:12 +0000 (13:41 -0800)]
monitor: Add support for decoding RSI

This adds support for decoding Resolvable Set Identifier[1] advertising
type (0x2e) according to CIS[2] spec:

        Resolvable Set Identifier: 46-BB-DB-26-D8-55
          Hash: 0x26d855
          Random: 0x46bbdb

[1] https://www.bluetooth.com/specifications/assigned-numbers/
[2] https://www.bluetooth.com/specifications/csis-1-0-1/

6 months agotest-crypto: Add /crypto/sef test
Luiz Augusto von Dentz [Wed, 21 Dec 2022 23:56:16 +0000 (15:56 -0800)]
test-crypto: Add /crypto/sef test

This adds test /crypto/sef which validas the implementation of
bt_crypto_sef using the sample data from CSIS[1] spec:

 A.2. sef SIRK Encryption Function

> unit/test-crypto -s "/crypto/sef"
  SIRK:
    cd cc 72 dd 86 8c cd ce 22 fd a1 21 09 7d 7d 45  ..r....."..!.}}E
  K:
    d9 ce e5 3c 22 c6 1e 06 6f 69 48 d4 9b 1b 6e 67  ...<"...oiH...ng
  Expected:
    46 d3 5f f2 d5 62 25 7e a0 24 35 e1 35 38 0a 17  F._..b%~.$5.58..
  Result:
    46 d3 5f f2 d5 62 25 7e a0 24 35 e1 35 38 0a 17  F._..b%~.$5.58..

[1]https://www.bluetooth.com/specifications/csis-1-0-1/

6 months agoshared/crypto: Adds bt_crypto_sef
Luiz Augusto von Dentz [Wed, 21 Dec 2022 22:15:26 +0000 (14:15 -0800)]
shared/crypto: Adds bt_crypto_sef

This adds bt_crypto_sef is is used to create a hash as stated on CSIS
spec:

  '4.5. SIRK encryption function sef'

https://www.bluetooth.com/specifications/csis-1-0-1/

6 months agotest-crypto: Add /crypto/sih test
Luiz Augusto von Dentz [Tue, 20 Dec 2022 22:55:59 +0000 (14:55 -0800)]
test-crypto: Add /crypto/sih test

This adds test /crypto/sih which validas the implementation of
bt_crypto_sih using the sample data from CSIS[1] spec:

  A.1. sih Resolvable Set Identifier hash function

> unit/test-crypto -s "/crypto/sih"
  K:
    cd cc 72 dd 86 8c cd ce 22 fd a1 21 09 7d 7d 45  ..r....."..!.}}E
  R:
    63 f5 69                                         c.i
  Expected:
    da 48 19                                         .H.
  Result:
    da 48 19                                         .H.

[1] https://www.bluetooth.com/specifications/csis-1-0-1/

6 months agoshared/crypto: Adds bt_crypto_sih
Luiz Augusto von Dentz [Tue, 20 Dec 2022 22:52:10 +0000 (14:52 -0800)]
shared/crypto: Adds bt_crypto_sih

This adds bt_crypto_sih is is used to create a hash as stated on
CSIS[1] spec:

  '4.7. Resolvable Set Identifier hash function sih'

https://www.bluetooth.com/specifications/csis-1-0-1/

6 months agomonitor/att: Add decoding support for CSIP
Sathish Narasimman [Tue, 22 Nov 2022 10:12:31 +0000 (15:42 +0530)]
monitor/att: Add decoding support for CSIP

This adds decoding support for CSIS attributes:

> ACL Data RX: Handle 3585 flags 0x02 dlen 7
      ATT: Read Request (0x0a) len 2
        Handle: 0x0017 Type: Set Identity Resolving Key (0x2b84)
< ACL Data TX: Handle 3585 flags 0x00 dlen 22
      ATT: Read Response (0x0b) len 17
        Value: 01761fae703ed681f0c50b34155b6434fb
        Handle: 0x0017 Type: Set Identity Resolving Key (0x2b84)
          SIRK: 01761fae703ed681f0c50b34155b6434fb
> ACL Data RX: Handle 3585 flags 0x02 dlen 7
      ATT: Read Request (0x0a) len 2
        Handle: 0x001b Type: Set Member Lock (0x2b86)
< ACL Data TX: Handle 3585 flags 0x00 dlen 6
      ATT: Read Response (0x0b) len 1
        Value: 01
        Handle: 0x001b Type: Set Member Lock (0x2b86)
            Locked (0x01)
> ACL Data RX: Handle 3585 flags 0x02 dlen 7
      ATT: Read Request (0x0a) len 2
        Handle: 0x001e Type: Set Member Rank (0x2b87)
< ACL Data TX: Handle 3585 flags 0x00 dlen 6
      ATT: Read Response (0x0b) len 1
        Value: 01
        Handle: 0x001e Type: Set Member Rank (0x2b87)
            Rank: 0x01

6 months agolib/uuid: Add CSIS UUIDs
Sathish Narasimman [Tue, 22 Nov 2022 10:12:27 +0000 (15:42 +0530)]
lib/uuid: Add CSIS UUIDs

This adds Coordinated Set Identification Service UUIDs which will
be used by Coordinated Set Identification Profile.

6 months agoshared/util: Update UUID database for Csip services
Sathish Narasimman [Tue, 22 Nov 2022 10:12:26 +0000 (15:42 +0530)]
shared/util: Update UUID database for Csip services

This updates UUID database with the values from assigned numbers for
co-ordinated set identification services.

6 months agoshared/gatt-client: Fix not removing pending services
Luiz Augusto von Dentz [Thu, 15 Dec 2022 23:26:20 +0000 (15:26 -0800)]
shared/gatt-client: Fix not removing pending services

If there are no characteristics to discover, or for some reason
bt_gatt_discover_descriptors is skiped, or the last attribute is
actually a included service the service should be removed from
pending list as there will be no more attributes to be discovered.

Fixes: https://github.com/bluez/bluez/issues/438

6 months agoshared/gatt-db: Add gatt_db_attribute_get_service
Luiz Augusto von Dentz [Sat, 17 Dec 2022 00:56:05 +0000 (16:56 -0800)]
shared/gatt-db: Add gatt_db_attribute_get_service

This adds gatt_db_attribute_get_service which can be used to get the
service which the given attribute belongs to.

6 months agoclient/player: Fix transport.send/receice tab completion
Luiz Augusto von Dentz [Wed, 14 Dec 2022 21:45:20 +0000 (13:45 -0800)]
client/player: Fix transport.send/receice tab completion

Commands transport.send/receive were not settings any completion
callback so this makes sure it uses transport_generator to generate the
list of transport that could be used to send.

6 months agoclient/player: Print transport progress
Luiz Augusto von Dentz [Wed, 14 Dec 2022 21:01:07 +0000 (13:01 -0800)]
client/player: Print transport progress

This uses bt_shell_echo to print out the transfer progress on the echo
area.

6 months agoclient/player: Use bt_shell_echo to print transfer progress
Luiz Augusto von Dentz [Wed, 14 Dec 2022 00:09:22 +0000 (16:09 -0800)]
client/player: Use bt_shell_echo to print transfer progress

This uses bt_shell_echo to print transfer progress.

6 months agoshared/shell: Add bt_shell_echo
Luiz Augusto von Dentz [Wed, 14 Dec 2022 00:07:56 +0000 (16:07 -0800)]
shared/shell: Add bt_shell_echo

This adds bt_shell_echo which can be used to print messages on the echo
area.

6 months agoclient/player: Make transport.send non-blocking
Luiz Augusto von Dentz [Mon, 12 Dec 2022 23:34:50 +0000 (15:34 -0800)]
client/player: Make transport.send non-blocking

This makes transport.send command non-blocking by using timerfd
callback to initiate the transfers.

6 months agoisotest: Fix not calculating time to wait
Luiz Augusto von Dentz [Fri, 9 Dec 2022 21:19:17 +0000 (13:19 -0800)]
isotest: Fix not calculating time to wait

The difference of time start and current time may have advanced just
enough to add a second leaving start nanoseconds to be bigger.

6 months agoclient/player: Fix not calculating time to wait
Luiz Augusto von Dentz [Fri, 9 Dec 2022 17:44:41 +0000 (09:44 -0800)]
client/player: Fix not calculating time to wait

The difference of time start and current time may have advanced just
enough to add a second leaving start nanoseconds to be bigger.

6 months agoshared/bap: Make bt_bap_pac_register to be per session
Luiz Augusto von Dentz [Wed, 7 Dec 2022 21:49:24 +0000 (13:49 -0800)]
shared/bap: Make bt_bap_pac_register to be per session

This makes bt_bap_pac_register to be per session rather than global so
the callback don't have to match the session by itself.

6 months agoshared/gatt-db: Allow passing NULL to gatt_db_attribute_write
Luiz Augusto von Dentz [Thu, 8 Dec 2022 01:21:02 +0000 (17:21 -0800)]
shared/gatt-db: Allow passing NULL to gatt_db_attribute_write

This makes gatt_db_attribute_write to accept NULL as a func when
storing directly on the db itself.

6 months agoshared/bap: Read PAC Sink/Source if respective location is found
Luiz Augusto von Dentz [Thu, 8 Dec 2022 01:12:03 +0000 (17:12 -0800)]
shared/bap: Read PAC Sink/Source if respective location is found

If PAC Sink/Source has been found but not record has been recovered it
means an error must have occurred so this attempt to read the records
once again.

6 months agoshared/bap: Log error message if request cannot be sent
Luiz Augusto von Dentz [Tue, 6 Dec 2022 00:46:32 +0000 (16:46 -0800)]
shared/bap: Log error message if request cannot be sent

This makes sure a error message is logged if a request cannot be sent
for some reason.

6 months agoshared/att: Fix not requeueing in the same channel
Luiz Augusto von Dentz [Mon, 5 Dec 2022 23:41:34 +0000 (15:41 -0800)]
shared/att: Fix not requeueing in the same channel

If request needs to be resend due to change in the security use the
chan->queue otherwise it may end up using a different channel.

6 months agoiso-tester: Add test when peer rejects CIS
Luiz Augusto von Dentz [Wed, 7 Dec 2022 00:44:51 +0000 (16:44 -0800)]
iso-tester: Add test when peer rejects CIS

This adds the following test for testing when remote stack rejects the
CIS:

ISO Connect - Reject                                 Passed

6 months agobthost: Add callback to accept ISO connections
Luiz Augusto von Dentz [Tue, 6 Dec 2022 21:31:58 +0000 (13:31 -0800)]
bthost: Add callback to accept ISO connections

This enables setting an accept callback which can return reject
reason if the connection shall not be accepted.