Commit Graph

1133 Commits

Author SHA1 Message Date
Emil Gydesen
025032232c Bluetooth: BAP: Shell: Fix issue with stopping broadcast sink
When the broadcast sink is stopped, the sink was also
set to NULL via

default_broadcast_sink.bap_sink = NULL;

However the lifetime of the broadcast sink does not
follow the state of the streams, and it still exists
afterwards. The broadcast sink can only be terminated
(deleted) via the term_broadcast_sink command.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-12 17:57:49 +00:00
Emil Gydesen
164529145b Bluetooth: Audio: Shell: CAP change microphone gain command
Adds the change microphone gain command to the CAP commander shell.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-12 17:56:09 +00:00
Emil Gydesen
fa6a7c1b77 Bluetooth: CAP: Commander change microphone gain procedure
Adds the CAP Commander Change Microphone Gain procedure.
This procedure changes the microphone gain on one or more
CAP Acceptors.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-12 17:56:09 +00:00
Emil Gydesen
63fbeebb9a Bluetooth: BAP: Shell: Add missing err check for bt_bap_ep_get_info
Two places we did not have an error check from calling
bt_bap_ep_get_info before accessing the result. These
have simply been added (without an else), as they are
(very) unlikely to fail.

This was caught by coverity and thus fixes those
coverity issues.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-12 09:46:24 +00:00
Emil Gydesen
8f0e648e48 Bluetooth: CAP: Shell: Add proper broadcast commands
Adds additional broadcast commands and modifies the existing
ones to use the CAP API.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-12 09:45:10 +00:00
Emil Gydesen
826ac0755b bluetooth: audio: shell: Improve indentation when printing codecs
Codecs can be printed at different levels:
level 0: Generic and unicast
level 1: subgroup codec configs
level 2: BIS codec configs

This commit ensures that the indentation level
is correctly increase based on where the codec configuration
data is printed.

This also updates the documentation for the BAP shell.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-09 14:10:17 -06:00
Emil Gydesen
f7cbc9b943 Bluetooth: Audio: Shell: Add human-readable printing of codec metadata
print_codec_cfg and print_codec_cap has been modified to print the
codec metadata in a more human-readable way, so it is easier to read.

This also adds the (final) human readable support when
parsing and printing BASEs.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-09 14:10:17 -06:00
Emil Gydesen
dd5925301e Bluetooth: Audio: Shell: Add human-readable printing of codec configs
print_codec_cfg has been modified to print the codec configs in a more
human-readable way, so it is easier to read.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-09 14:10:17 -06:00
Emil Gydesen
675c8e86a4 Bluetooth: Audio: Shell: Add human-readable printing of remote caps
print_codec_cap has been modified to print the remote caps in a more
human-readable way, so it is easier to read and understand the remote
server's capabilities.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-09 14:10:17 -06:00
Emil Gydesen
c1272195f0 Bluetooth: BAP: Shell: Modify bcast sink streams to use shell_stream
Modify the broadcast_sink_streams to be an array of shell_stream
instead of bt_bap_stream, so that it can be used in a similar way
as the rest of the streams.

To help the transition, a new helper function,
bap_stream_from_shell_stream, was added.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-09 14:09:49 -06:00
Emil Gydesen
2d11fbe532 Bluetooth: BAP: BA: Add additional PAST log in past_available
Add additional logging in past_available to easily see the PAST
support of the broadcast assistant and scan delegator devices.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-09 14:09:00 -06:00
Emil Gydesen
913ca370c7 Bluetooth: BAP: Add input validation for bt_bap_ep_get_info
The function did not have a NULL check for the parameters,
and thus did not fail correctly on invalid input.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-09 16:13:24 +01:00
Chang An
3605d57ae1 LE Audio: bt_bap_broadcast_sink_cb.syncable should provide the BIGInfo
Modify bt_bap_broadcast_sink_cb.syncable to provide the BIGInfo
instead of just the encryption field.

Signed-off-by: Chang An <chang.an_1@nxp.com>
2024-03-07 11:09:12 +00:00
Emil Gydesen
a472133587 Bluetooth: BAP: Apply missing guards for Kconfig values
Some pieces of code were missing proper guards for Kconfig
values, which could cause compile issues

The massive amount of #if in bap.c clearly indicates that the
file should be split, as it contains many things that are specific
for various roles.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-07 10:58:32 +00:00
Andries Kruithof
fd2ccbc5ba Bluetooth: audio: BAP: set the past_avail status
While refactoring the handling of callbacks the setting of past_avail
status got deleted (and it was in the wrong place). Adding it back at
the correct place.

Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
2024-03-07 10:58:10 +00:00
Andries Kruithof
7540535284 Bluetooth: audio: BAP: allow for multiple callbacks
The existing implementation allows for only one callback per procedure.
This creates problems when for example adding CAP functionality.
The callbacks are here implemented as an SLIST

Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
2024-03-07 10:58:10 +00:00
Emil Gydesen
6976ad82ea Bluetooth: BAP: Add can_recv to bt_bap_ep_info
Similar to the can_send, the can_recv field indicates whether
or not this endpoint can receive data.

This commit also slightly refactors and optimized how the
can_send field is set.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-04 14:05:07 +01:00
Emil Gydesen
248bee9b17 Bluetooth: BAP: Broadcast Source: Remove unused variable
Remove an unused variable in bt_bap_broadcast_source_reconfig
that causes compiler warnings.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-01 16:04:19 +01:00
Emil Gydesen
8a6c1d9bfa Bluetooth: BAP: Broadcast source: Add LTV validation for LC3 data
When using the LC3 codec, all codec configuration are LTV encoded.
The broadcast source did not properly validate this, and it also
uncovered a bug in the bsim test for broadcast sources.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-01 16:04:19 +01:00
Emil Gydesen
e08301b3df Bluetooth: BAP: Fix missing cfg data in stream->codec_cfg for BIS
The codec configuration data from the BIS in the BASE was not
properly copied to the stream->codec_cfg, and thus it only
contained the subgroup codec configuration values.

This commit fixes that by first copying the subgroup codec
configuration to the stream, and then setting or overwriting
any fields (if they exist).

This requires that each stream have their own codec configuration
struct allocated, so this will slightly increase memory usage.

This also adds verification of the SDU size from the BIGInfo
in the ISO receive callback.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-01 16:04:19 +01:00
Emil Gydesen
9d90e65167 Bluetooth: BAP: Shell: Add bcode support for cmd_sync_broadcast
The cmd_sync_broadcast command now also takes an optional broadcast
code, to support syncing with encrypted broadcasts.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-28 18:02:27 +00:00
Piotr Narajowski
43d830082c bluetooth: CSIP: Add API to get service handles
This is needed for upper tester.

Signed-off-by: Piotr Narajowski <piotr.narajowski@codecoup.pl>
2024-02-27 14:55:18 +01:00
Emil Gydesen
689e3216fc Bluetooth: BAP: Add bt_bap_base_subgroup_get_bis_indexes
Add bt_bap_base_subgroup_get_bis_indexes that gets the BIS indexes
of a subgroup. This work very similar to
bt_bap_base_get_bis_indexes, except that it works for subgroups
rather than BASEs.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-27 14:46:33 +01:00
Emil Gydesen
4298b0a267 Bluetooth: BAP: Shell: BA fix add_pa_sync command
The command would attempt to parse the BASE and enter the
subgroup information in a NULL pointer.

The BASE copy was also done incorrectly, as it did not
properly take the UUID into account (which should be
moved to a helper function if we expect users to do this).

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-26 11:54:56 +00:00
Emil Gydesen
f4c8020d45 Bluetooth: BAP: Shell: Minor refactor of LC3 encoder
This commit renames a few variables and changes the
type and adds some additional checks.

It moves stream specific data to the shell stream
struct, but still keeps the global values that were used
to initialize the LC3 encoder

The purpose of this is to better allow for a future LC3 decoder
without any clashes in names or the like.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-26 11:40:50 +00:00
Agata Figiel
4302cd1e4d Bluetooth: TMAP: Move role definitions from shell/tmap.c to tmap.h
These role definition are also used in bttester, so it could be globally
available.

Signed-off-by: Agata Figiel <agata.figiel@codecoup.pl>
2024-02-26 11:39:41 +00:00
Emil Gydesen
a7ca6e5c17 Bluetooth: Audio: Shell: Add support for setting runtime config data
Using the `bap preset` command it is now possible to set all the
codec configuration data and metadata value at runtime. This will
allow to set specific values for each stream in each direction.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-26 11:39:13 +00:00
Emil Gydesen
bfe93a3164 Bluetooth: Audio: Shell: Make the default presets non-pointers
Instead of the default presets being pointers, they are changed to
allocated structs so that they can be modified.

This will allow us to modify the config and metadata in a later patch.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-26 11:39:13 +00:00
Emil Gydesen
5f7ecf4def Bluetooth: BAP: SD: Fix missing support for API calls in callbacks
In the scan delegator when adding a source, the state was not
marked as active before calling the PA sync callback, which
would prevent applications from requesting PAST in that callback.

This commit also adds and fixes a few log statements.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-26 12:31:11 +01:00
Emil Gydesen
28276ce982 Bluetooth: CSIP: Fix typo from cm_csip to cmd_csip
The CSIP commands had a typo in the prefix of the shell
functions.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-25 22:28:26 -05:00
Emil Gydesen
25416b86e9 Bluetooth: CSIP: remove print_sirk
The print_sirk function that simply logs the SIRK has been removed,
as the SIRK is now directly accessible to the application via the
get_sirk function.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-25 22:28:26 -05:00
Emil Gydesen
41a589c5fa Bluetooth: CSIP: Add support for dynamic SIRKs
Add support for dynamically change the SIRK in a CSIS.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-25 22:28:26 -05:00
Emil Gydesen
e0dbd3fd39 Bluetooth: Audio: Shell: CAP change volume mute command
Adds the change volume mute command to the CAP commander shell.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-25 22:25:26 -05:00
Emil Gydesen
b9360488f7 Bluetooth: CAP: Commander change volume mute procedure
Adds the CAP Commander Change Volume mute procedure.
This procedure changes the volume mute on one or more
CAP Acceptors.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-25 22:25:26 -05:00
Emil Gydesen
baaa149f10 Bluetooth: BAP: Fix bad bcast assistant bis sync shift
The shift is currently necessary due to a mismatch of the
specs and the API, but the shift should not be done when
the value is BT_BAP_BIS_SYNC_NO_PREF as that is a special value.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-16 19:14:27 +01:00
Emil Gydesen
acd1e891cb Bluetooth: BAP: UC: Fix call to bt_gatt_get_mtu in notify
In the unicast_client_ep_notify we would always call
bt_gatt_get_mtu, regardless of whether data == NULL.

When there is a disconnection, the notify callbacks are
called with data == NULL to indicate a unsubscription.
In the case of the unicast client, this would also trigger
calls to bt_gatt_get_mtu when there is a disconnect, which
in turn would trigger a warning that ATT is not connected.

Postponing the call to bt_gatt_get_mtu fixes this.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-16 19:13:48 +01:00
Emil Gydesen
8ad8878d61 Bluetooth: CAP: Shell: Fix argument issue for unicast_stop
The unicast_stop command takes either "all" or one or more
stream pointers as argument, but the argument handler did
not allow this.

The documentation for the command was also out of date.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-14 19:12:04 +01:00
Emil Gydesen
dee95eb768 Bluetooth: Audio: Shell: Fix context for the audio shell
The context had a bug where if GMAP was enabled, the context
was only BT_AUDIO_CONTEXT_TYPE_GAME.

The context should also (per BAP spec requirement) contain the
BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED context.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-14 19:11:55 +01:00
Ping Wang
5ccd75b49b Bluetooth: Audio: define bt_bap_bass_subgroup struct.
The Broadcast Assistant API should be fully independent of the scan
delegator. Therefore the new struct bt_bap_bass_subgroup has been
defined to avoid a dependency.

Fixes: #68338

Signed-off-by: Ping Wang <pinw@demant.com>
2024-02-14 19:04:01 +01:00
Emil Gydesen
3e634268d6 Bluetooth: ISO: Introduce bt_iso_chan_send_ts
The bt_iso_chan_send function could take an optional
timestamp by using 0 as an indicator. The issue with
this approach was that a timestamp value of 0 is valid,
and could cause potential issue with syncing streams
in a group.

To fully support transmitting with and without timestamp,
bt_iso_chan_send_ts has been introduced, which is the only
function of the two (bt_iso_chan_send being the other) that
supports timestamps.

A new function, rather than adding a boolean to the existing,
was chosen as it simplifies the individual functions as well
as making it more explicit what the function does.

Since the bt_iso_chan_send function is used by LE audio, both
the BAP and CAP send functions have similarly been updated.
Likewise, all tests and samples have been updated to use the
updated function(s), and BT_ISO_TIMESTAMP_NONE has been
removed.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-12 13:13:10 +01:00
Emil Gydesen
de296a2d7f Bluetooth: BAP: Fix BASE_SUBGROUP_MAX_COUNT value
The calculation for BASE_SUBGROUP_MAX_COUNT was off by one.
The macro did not consider the non-subgroup parameters of
the BASE that take up space. This effectively modifies
BASE_SUBGROUP_MAX_COUNT to be 24 instead of 25.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-10 16:34:27 +01:00
Emil Gydesen
7cfc8b3340 Bluetooth: BAP: Reset _prev_seq_num on ISO connection
Once an ISO channel has connected, the sequence number
always starts at 0. This reset was missing in the implementation,
and the _prev_seq_num from a previous connection may have
been kept.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-09 14:39:40 +01:00
Emil Gydesen
df3fcc9b1f Bluetooth: CAP and HAP: Shell: Replace - with _ in commands
The dash (-) makes clang-format unhappy, and most other commands
use underscore (_) instead.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-07 15:26:29 +00:00
Emil Gydesen
590d3e1114 Bluetooth: BAP: Broadcast source enabling state transition fix
Since we may go from enabling to qos-configured state if the
call to bt_iso_big_create fails, that is a valid transition.
If bt_iso_big_create currently fails, then the source ends in a
state where it cannot be recovered.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-06 09:51:16 +01:00
Emil Gydesen
f4b83415d6 Bluetooth: CAP: Fix uninitialized values in broadcast start
When CONFIG_BT_ISO_TEST_PARAMS is enabled then the
bt_bap_broadcast_source_param in
bt_cap_initiator_broadcast_audio_create had uninitialized values.

A general and future proof solution for this is to simply initialize
the entire struct to 0.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-06 09:50:53 +01:00
Emil Gydesen
27abc1d944 Bluetooth: BAP: Broadcast assistant shell treat PA sync as bool
Modify the broadcast assistant commands that take the PA sync argument
so that it is treated as a bool. This allows users to use
"true", "on", "1" or "0x01" for true values and "false", "off", "0"
for false values.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-05 12:40:23 -06:00
Emil Gydesen
017f59cb66 Bluetooth: BAP: Broadcast sink: Fix bis_sync in update_recv_state_base
In the update_recv_state_base function, we should update the
BASE with any new metadata that we have received (as that may
change while streaming). However, this function did not properly
keep the existing bis_sync values for the
subgroups, causing the bis_sync for all subgroups to be 0.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-05 17:46:31 +01:00
Emil Gydesen
43bc3200fa Bluetooth: BAP: Stop broadcast sink from removing receive state
The receive state may be added by the broadcast sink if not added
by the application, but even in that case when the broadcast sink
is deleted, we should not remove the receive state, as the receive
state may still container information about the PA sync that has a
lifetime not coupled with the broadcast sink.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-05 17:46:11 +01:00
Emil Gydesen
7643526086 Bluetooth: BAP: Do not send PA term request on local remove
If the receive state is locally removed, then we should not
request permission from the application, as that is implicit
when removing the source locally.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-05 17:45:45 +01:00
Emil Gydesen
cbc81b2a0f Bluetooth: Audio: Remove LC3 from the assigned numbers defines
The defines from the Bluetooth Audio assigned numbers are not
specific for LC3. This commit removes the LC3 infix and
the reference to LC3 in the documentation for them.

It also cleans up some of the documentation and
names of the enums.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-02-05 09:14:44 -06:00