Commit graph

9523 commits

Author SHA1 Message Date
Lyle Zhu
ce154b94d0 Bluetooth: Host: Add SCO connection management
Currently, SCO connections and disconnections
are agnostic to upper-layer.

Add two functions, bt_sco_connected and
bt_sco_disconnected, to notify the SCO
connect changes.

For Central side, pass "struct bt_sco_chan"
object when calling bt_conn_create_sco. it
uses to manage the SCO channel for upper-
layer.

For Peripheral side, two functions
bt_sco_server_register and
bt_sco_server_unregister are added to monitor
SCO connection request for upper-layer. The
upper-layer could accept or reject SCO connect
When the connection request received. If the
connect is accepted, the "struct bt_sco_chan"
object could be passed by "sco_server->accept".

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
2024-03-19 10:08:27 +01:00
Emil Gydesen
62ac753a61 Bluetooth: CAP: Fix issue with codec_cfg in CAP uni start
The codecs used for the bap bt_bap_stream_config was only
valid for the lifetime of the procedure, which meant
that by the end of the procedure the stream->codec_cfg
became invalid.

This is fixed by using the pointer provided to the
CAP API, and documentating the lifetime of the codec_cfg.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-19 09:47:13 +01:00
Pavel Vasilyev
1861583ce2 Bluetooth: Mesh: Warn if can't listen to unprov beacons until proved
When calling `mesh prov beacon-listen on` shell command before
provisioning the local device, the stack won't report unprovisioned
beacons. This is because the scanner has not been started yet. This
behavior confuses users. Print a warning that the device needs to be
provisioned first before it can listen to unprovisioned beacons.

Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
2024-03-18 14:50:54 +01:00
Alberto Escolar Piedras
6622f0b3aa Bluetooth: Controller: Correct PPI->Timer start delay for simulation
In the simulated bsim boards there is no jittery delay
from a (D)PPI event until a TIMER starts.
The timer starts instantaneously so we do not need to
compensate for it.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-03-18 14:50:22 +01:00
Lyle Zhu
8ec839f76c Bluetooth: Host: Change __line__ to __LINE__
The building error is reported in Ubuntu if
CONFIG_NET_BUF_LOG is true.

Change __line__ to __LINE__ to fix building
error.

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
2024-03-18 13:14:50 +01:00
Alberto Escolar Piedras
4442477d93 Bluetooth: Controller: Add coded phy radio timings for nrf52_bsim
Add Coded Phy radio timings for the nrf52_bsim

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-03-15 13:55:27 -05:00
Alberto Escolar Piedras
b7787792f1 Bluetooth: Controller: Nordic HAL: Use HAL to configure Timer's CC
Use the HAL always when setting the TIMERs CC registers,
(also for coded Phy) to ensure things work properly for simulation.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-03-15 13:55:27 -05:00
Emil Gydesen
5d054a7eb8 Bluetooth: TMAP: Shell: Improve logging of role
The role is a 16-bit value, and is best logged as %04X.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-15 10:35:26 -05:00
Morten Priess
6f374d850a Bluetooth: controller: Parameter check for ISO sync recv qualification
Add HCI input parameter validation according to spec for passing
qualification tests.

- Conditional compile of LE Set PA Receive Enable feature
- Store BIGinfo encryption state and number of streams
- Do not report BIGinfo if phy is invalid or unsupported
- Return disallowed ll_read_iso_tx_sync uses sync recever handle
- Validate BIS indices in ll_big_sync_create

Signed-off-by: Morten Priess <mtpr@oticon.com>
2024-03-15 10:34:48 -05:00
Morten Priess
feb58c2906 Bluetooth: controller: Add handling of HCI reset for sync_iso
Properly shut down ticker and initialize data at HCI reset.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2024-03-15 10:34:48 -05:00
Vinayak Kariappa Chettimada
d435acf28d Bluetooth: Controller: Fix CIS accept fails with unsupp parameters
Fix CIS accepted by Host being failed in the Controller with
reason 0x20 Unsupported LL Parameter Value, by relaxing the
check that the ACL connection is sufficiently placed such
that the time reservation using in the Controller
implementation does not overlap with the CIG event.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2024-03-15 09:40:13 +00:00
Vinayak Kariappa Chettimada
8a0cf76a76 Bluetooth: Controller: Fix Broadcast ISO context get function
Fix Broadcast ISO context get function for out-of-bound
access.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2024-03-15 09:33:23 +00:00
Morten Priess
85b503e23b Bluetooth: controller: ISO Sync Receiver vendor data path fixes
Add checks for vendor specific data path in ULL and HCI driver, to
enable use of vendor data path for BIS reception.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2024-03-14 10:26:34 +01:00
Morten Priess
14191f11fd Bluetooth: controller: Fix ISO Broadcast control subevent channel
- Calculate broadcaster channel for control subevent
- Calculate sync receiver channel for control subevent
- Fix broadcast CSTF only set in first subevent
- Remove ctrl_chan_use from LLL, as there is no longer a reason for
  storing it.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2024-03-14 10:26:09 +01:00
Vinayak Kariappa Chettimada
7845c0e3d6 Bluetooth: Controller: Ticker low latency with lazy skip
Update the legacy low latency variant of the ticker
implementation to skip to next periodic interval when
ticks to expire is behind the current tick. This makes
the low latency variant of the implementation consistent
with the default ticker implementation.

Also, cleanup conditional compiles in the implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2024-03-14 10:25:41 +01:00
Jonathan Rico
584f653de2 Bluetooth: conn: Don't deadlock on BT_RECV_WORKQ_SYS
My recent change overlooked this configuration, which is not tested in CI
currently.

If someone had enabled it, they would've just gotten an unfixable assert.

The correct test would be checking if the current thread is the system wq,
but I think the compiler can't know that and can't remove the "dead" code.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
2024-03-14 10:21:23 +02:00
Théo Battrel
4a55bc00f0 Bluetooth: Shell: Add support for EAD
Add new commands to manage the Encrypted Advertising Data feature.

Overview of those new commands:

- `bt encrypted-ad set-keys`: set key materials (session key and
  initialisation vector) used for encrypted and decryption of EAD;
- `bt encrypted-ad add-ad`: store a given advertising data structure;
- `bt encrypted-ad add-ead`: encrypt the given advertising data
  structres and store the generated AD structure;
- `bt encrypted-ad commit-ad`: set the AD of the selected advertiser
  with the stored AD;
- `bt encrypted-ad clear-ad`: remove all stored AD;
- `bt encrypted-ad decrypt-scan`: decrypt data using the previously set
  key materials when receiving AD with type `0x31`.

The documentation of the Bluetooth Shell has been updated to include
those new commands.

Signed-off-by: Théo Battrel <theo.battrel@nordicsemi.no>
2024-03-13 18:51:03 +02:00
Vinayak Kariappa Chettimada
bd5e906f68 Bluetooth: Controller: Fix assertion establishing periodic sync
When the AUX_ADV_IND and AUX_SYNC_IND are close to each
other, the duration between them is not sufficient to
schedule a new instance of ticker to establish
synchronization. This processing time introduces latencies
detected by the prepare callback.

When the sync offset is low, schedule the start of the
reception to next periodic interval.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2024-03-13 12:33:08 +01:00
Vinayak Kariappa Chettimada
11bae5cfa9 Bluetooth: Controller: Fix missing radio timer comp and range delay
Fix missing PPI to timer start compensation and missing
inclusion of range delay in the calculation of packet
header receive timeout value.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2024-03-13 12:32:54 +01:00
Vinayak Kariappa Chettimada
92ad509902 Bluetooth: Controller: Fix ext adv param checking intervals
Fix Extended Advertising Parameter check to exclude legacy
high duty cycle directed advertising from validating the
intervals as advertising interval parameter values are not
applicable for high duty cycle directed advertising.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2024-03-13 12:32:40 +01:00
Emil Gydesen
093ffdf117 Bluetooth: Host: Add NULL check for callback_list
If no callbacks have been registered then callback_list
is NULL, in which case we can skip searching.

This also fixes a NULL-pointer acces in the while loop
as previous_callback would be NULL when it gets
dereferenced as previous_callback->_next.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-03-13 11:16:06 +00:00
Morten Priess
a30795e1f6 Bluetooth: controller: Fixes for BIGinfo endianness issues
The BIGinfo PDU bitsets were not accessed in a portable maner for
endianness independence, and need to be handled as bit-manipulations.

Add utility functions to access PDU bitset variables independent of
endianness. Use macros to abstract the offsets and widths.

Conversion of BIG_Handle to LE in HCI layer incorrectly use
sys_cpu_to_le16, which fail because target type is 8-bit.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2024-03-13 11:13:17 +00:00
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
Lyle Zhu
3e8d1182d4 Bluetooth: HFP: Add data sent callback
Set struct bt_rfcomm_dlc_ops::sent.

Get the data sending result through
sent callback.

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
2024-03-12 09:45:27 +00:00
Lyle Zhu
cb3d1c9ee9 Bluetooth: RFCOMM: Add data sent cb for RFCOMM
Currently, the upper layer cannot know
whether the data is successfully sent
through DLC.

Add a field "sent" for RFCOMM DLC ops.
Notify upper-layer of the sending
result through the field "sent".

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
2024-03-12 09:45:27 +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
Nithin Ramesh Myliattil
6ce38c1aa7 bluetooth: id: fix adv sets with same id use different RPA
The fix is to check if any of the adv set's rpa expired
callback returns false, then all adv sets continues with
the old RPA.

Note: Fix is applicable only to adv sets which shares the
same id.

Signed-off-by: Nithin Ramesh Myliattil <niym@demant.com>
2024-03-11 14:24:41 +01:00
Aleksandr Khromykh
aa87ed5d8a Bluetooth: Mesh: make models metadata const
Commit adds const qualifier to models metadata.
Specification claims: Composition Metadata Page 0
shall not change during a term of a node on the network.

Signed-off-by: Aleksandr Khromykh <aleksandr.khromykh@nordicsemi.no>
2024-03-11 09:26:12 +01: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
Alberto Escolar Piedras
7ad69d968a Bluetooth: Controller: nrf5_dppi.h: Use nrfx HAL to set subscriptions
A few paths used only when there is Coded Phy support were
still setting the subscribe registers directly.
Let's use the nRFx HAL for this so it works properly also
in simulation.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-03-08 09:35:21 +01:00
Alberto Escolar Piedras
005623df92 Bluetooth: Controller: nrf5_ppi.h: Use nrfx HAL to set PPI always
Quite a few paths used only when there is Coded Phy
support were still setting the PPI directly.
Let's use the nRFx HAL for this so it works properly also
in simulation.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-03-08 09:35:21 +01:00
Ivan Iushkov
9fa4cd8226 Bluetooth: add missing initilization of sync_info member
During manual testing with UBSAN enabled, it was found that
bt_le_per_adv_sync_cb synced() callback in application
sometimes gets unexpected different values in
`sync_info.recv_enabled` field.

The UBSAN output contained the following warnings message:
runtime error:
load of value 65, which is not a valid value for type '_Bool'

It tunrned out that struct bt_le_per_adv_sync_synced_info sync_info
inside bt_hci_le_past_received_common() contains uninitialized
recv_enabled member.
Set it to true by default to avoid possible issues.

Signed-off-by: Ivan Iushkov <ivan.iushkov@nordicsemi.no>
2024-03-07 14:33:19 +00: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
Troels Nilsson
9ce9d57732 Bluetooth: Controller: Fix per adv interval value check
Invalid values should result in BT_HCI_ERR_INVALID_PARAM

The interval check should only fail with
BT_HCI_ERR_UNSUPP_FEATURE_PARAM_VAL if the requested range
cannot be fulfilled by the controller (ie. there is no overlap
with the supported range)

Fixes EBQ tests HCI/DDI/BI-53-C through HCI/DDI/BI-61-C and
HCI/CCO/BI-64-C

Signed-off-by: Troels Nilsson <trnn@demant.com>
2024-03-07 10:58:40 +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
Rubin Gerritsen
a5a13201e4 Bluetooth: Controller: Remove experimental from LE Set Host Feature
Out-of-tree controllers do not necessarily mark the LE Set Host Feature
command as experimantal.

Add an additional entry to solve this like done for other ISO entries.

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
2024-03-07 10:57:31 +00:00
Giancarlo Stasi
95851583b8 Bluetooth: Controller: Vendor Specific: support for Scan Request Reports
Add support for vendor specific Set Scan Request Reports command and
Scan Request Received Event, available for legacy advertising.

Signed-off-by: Giancarlo Stasi <giancarlo.stasi.co@gmail.com>
2024-03-07 10:57:09 +00:00
Lyle Zhu
40cf23daff Bluetooth: Rename BT_BREDR to BT_CLASSIC
Rename BT_BREDR to BT_CLASSIC
Rename CONFIG_BT_BREDR to CONFIG_BT_CLASSIC

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
2024-03-07 11:26:45 +02:00
Lyle Zhu
83bfa4c91b Bluetooth: Host: Move BR headers to subfolder classic
Move BR/EDR header files from "include/zephyr/
bluetooth" to subfolder "include/zephyr/bluetooth/
classic".

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
2024-03-07 11:26:45 +02:00