The CCP API for the Call Control Profile works on top of the
TBS API, and will eventually replace parts of the TBS API.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If logging (CONFIG_LOGGING) was disabled, then the shell
could not build. Ideally the (test) functions should not
depend on logging, but rather only CONFIG_BT_TESTING.
The shell commands were also properly guarded.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The functions did not verify the provided parameters before
sending it as a control point operation.
This also fixes a bug where BT_BAP_BIS_SYNC_NO_PREF was not
allowed when pa_sync=0.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The range of BT_BAP_BROADCAST_SNK_SUBGROUP_COUNT should be relative to
BT_BAP_BASS_MAX_SUBGROUPS. The broadcast sink depends on the scan
delegator, and thus it does not make sense for the broadcast sink
to support more subgroups than what the scan delegator supports.
Since this no longer relates to the number of streams, there
may be new runtime errors if applications attempt
to sync to more subgroups than the number of ISO channels
supported.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The BASE doesn't affect the BIS sync value, and should thus not
change it.
This fixes a bug where the broadcast sink may prematurely
set the BIS sync value to e.g. 1 before actually
syncing to the BIG.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Add the bt_ prefix when registering logging for the media_proxy module,
to be consistent with what the other modules in bluetooth/audio do
Note that the bap_usb module shall not have the bt_ prefix
Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
Fixes the following warning:
<wrn> cbprintf_package: cbprintf_package_convert:
(unsigned) char * used for %p argument. It's recommended
to cast it to void * because it may cause misbehavior in
certain configurations. String:"%s: meta %p len %zu" argument:1
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
These callbacks are trigger for changes that affect the entire
broadcast sink, such as the BIG synced and terminated events.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
These callbacks are trigger for changes that affect the entire
broadcast source, such as the BIG started and terminated events.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
These callbacks are trigger for changes that affect the entire
broadcast source, such as the BIG started and terminated events.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The ASCS unit tests had various errors after adding support for
dynamic registration.
Several tests did not properly clean up after failure, causing other
tests to fail when they shouldn't.
Moved the register tests to their own file as they should not
do the register in the "before" function.
The test_ascs_unregister_with_ases_in_config_state test was also
removed, as it had both issues and the state that it wants to test
cannot be reached with the current API - It is not possible to
put an ASE in the configured state without callbacks,
and registered callbacks prevents us from calling
bt_bap_unicast_server_unregister to trigger the case as that can
only be done if callbacks are unregistered. Since unregistering
callbacks also puts all ASEs to the idle state, it is not possible
to call bt_bap_unicast_server_unregister for a non-idle ASE.
The testcase.yaml was also missing some Kconfig options to
properly enable the client tests.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This commit changes the BSIM tests to use the same recv callback
for all tests. The purpose of this is to reduce code duplication
and make it easier to maintain the tests.
This also changes the recv_cb so that in case of any error we log
the most recently received SDU, which should provide more
information about why a test failed in case of RX error.
PBP had to be updated a bit to support the audio_stream
struct.
Also modifies a check and log in bap_stream that was less than
helpful to determine if it was the stream or the endpoint that
was NULL.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Change the select to a depends on for the Kconfig options
for HAS and HAS_CLIENT.
This is an effort to reduce the number of selects used by
LE Audio.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Change the select of BT_PER_ADV_SYNC and BT_EXT_ADV to
depends on. This is an effort to reduce the use of
select for Kconfig options.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Modify ASCS and BAP Broadcast sink to depend on the PAC options
instead of selecting them.
Since Kconfig does not support "depends on X if Y",
a select for PAC_{SRC,SNK} is used depending on
ASCS_ASE_{SRC,SNK}.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The BAP Kconfigs option now depends on
BT_ISO_BROADCASTER instead of selecting it.
This is an effort to reduce the use of select in LE Audio.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The BAP_BROADCAST_SOURCE Kconfig option now depends on
BT_ISO_BROADCASTER instead of selecting it.
This is an effort to reduce the use of select in LE Audio.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Remove the selects and use def_bool for BT_AUDIO_RX and
BT_AUDIO_TX.
This is part of an effort to reduce select in Kconfig.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Modify the Kconfig options to depend on the GATT
features rather than selecting them.
This is part of an effort to reduce the amount of
selects we use in LE Audio.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Remove the selects from BT_BAP_UNICAST_SERVER and BT_BAP_UNICAST_CLIENT
and use a def_bool for BT_BAP_UNICAST.
This is part of an effort to reduce select in Kconfig.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Add conversion macros from milliseconds to various units.
The purpose of these macros is to make it more clear/easier
for users to set and read values using milliseconds rather
than the various BT units which may be in 0.625, 1.25 or 10ms
units.
This is especially useful when comparing related values using
different units, such as advertising interval (0.625ms units)
and periodic advertising interval units (1.25ms units).
Users will have to be aware that these macros can provide slightly
different values than what is provided, if the provided values
do not match the units.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If the lock request was rejected by a set member we should
restore any previously written logs in reverse order.
However there was a off-by-one error in
csip_set_coordinator_write_lock_cb which caused us to attempt to
release member[1] instead of member[0] if member[1] was the
one that rejected the lock request.
Additionally, the lock_set_complete would be called
prematurely before we get the response from the restore
request.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The state check used != instead of == to very that it entered
the streaming state for all streams.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If a device disconnects while we are in a procedure then
get_next_active_instance would return a service instance pointer
with the `conn` set to NULL.
The issue was caused by the set_info being potentially memset
when the device that disconnected was the one that held the
set_info pointer.
The solution is to not use a pointer, but rather a copy of the
set_info, so that the active.set_info value is still valid
after a disconnect.
Since the set_info is not longer a pointer to a specific
set_info from one of the members, the logs have been updated
as well, as the pointer of the active.set_info is useless
for debugging.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Removed the LE Audio specific definition and instead
refer to the value defined by iso.h as it is ISO/Core
that defines this size, and not BAP/Audio.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Removed the generation of broadcast id inside the stack. It is now up
to the application to generate this by itself. The CAP sample has
been modified to allow either a static broadcast, or a random one.
All of this is handled in the application.
Signed-off-by: Fredrik Danebjer <frdn@demant.com>
Add a generic function to retrieve any data based on an
assigned numbers type. This function can in theory be
used for any data type, and not just LE Audio types, but
since it relies on bt_audio_data_parse it was made
specificially for LE Audio.
The function can be used in cases where
bt_audio_codec_cfg_get_val, bt_audio_codec_cfg_meta_get_val,
bt_audio_codec_cap_get_val or
bt_audio_codec_cap_meta_get_val (or their derivation)
are not easily applicable due to the type constrainst.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Added helper functions to set and get broadcast name
for codec capabilities and codec configs.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If we get an error/rejection from the CAP acceptor when
performing the Unicast Audio Start or Stop procedure then
we need to abort the procedure and let the application determine
what the next step is.
This change triggered a corner case when connecting to multiple
CAP acceptors as the CAP initiatior. This was also fixed as part
of this.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
When the CIS for a BAP stream is not connected, we cannot truly
be in the disabling state (the only state the stop operation
can be performed by the unicast client).
The reason for this is that if the CIS is disconnected, then
the ASCS server shall transition to the QoS Configured state
regardless of whether it has received a receiver stop ready
command from the unicast client.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Changed dependency of the BT_BAP_SCAN_DELEGATOR to GATT_DYNAMIC_DB
from 'select' to 'depends on' and solved all loop dependencies
caused by this change.
Fixes#79108
Signed-off-by: Babak Arisian <bbaa@demant.com>
Add create_sink_by_name command that scans for broadcast sources
with BT_DATA_BROADCAST_NAME matching the name given to the shell
command.
Fixes#70837
Signed-off-by: Babak Arisian <bbaa@demant.com>
Added a check in unicast_client_ase_discover_cb that if
no ASE was discovered, then it would stop the discovery
there instead of attempting to call
unicast_client_ase_cp_discover to discover the control point
which would not be useful to use anyhow.
This terminates the discovery earlier in case of the remote
side not supporting the audio direction we are discovering.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Move the CCID header to the include directory
to make it public.
This also compiles the ccid.c file whenver CONFIG_BT_CONN
is enabled, rather than having an additional Kconfig for it,
since the API is now public and may be used by other than
our internal services.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Rather than throwing an assert, it will now do a better
check for already-allocated CCIDs and return an error instead.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
alloc_value is more correct as it does allocate a new
value, rather than just returning/getting a value.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If the Broadcast ID is initially set to 0x000000,
which is valid, comparison logic on add of an
actual Broadcast ID of 0x000000 fails.
Likewise for SID.
Moving INVALID_BROADCAST_ID define to bap.h
Signed-off-by: Lars Knudsen <LAKD@demant.com>
Add scan cb to scan delegator so that Application
can be notified when assistant starts or stops
scanning.
Also state information of Broadcast Assistant
is removed as info is not used.
Signed-off-by: Nithin Ramesh Myliattil <niym@demant.com>
Modify the BAP unicast client callback structure to be a
linked list. The purpose of this is to have multiple listeners
of the unicast client changes and notifications.
This is needed for the CAP initiatior.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The checks did not properly take into account
that the pref_pd_min and pref_pd_max could have valid
0 values.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The QoS structure is not related to a codec, but rather a
stream, and should thus not use the "Codec" name.
The BAP and ASCS specs refer to the QoS as
"QoS configuration" several places, so it is an obvious
choice for a name.
Since the structure is defined and used by BAP, the prefix
was changed from bt_audio to bt_bap.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The unicast_stop function is changed to primarily do a
BAP disable instead of a release, with optional
support for releasing the streams once they have been disabled.
This also adds unittests for the procedure which also
allow us to remove the invalid param testing from the BSIM tests.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>