Commit graph

9523 commits

Author SHA1 Message Date
Emil Gydesen
fa13e02320 Bluetooth: Audio: Use stream->conn instead of iso->acl for ISO disconnect
Use the stream->conn instead of the iso->acl, as the iso->acl
may already have been free'd by the ISO layer when the
disconnected callback is called.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-10-07 13:22:23 +02:00
Szymon Czapracki
ab45e31c7e Bluetooth: Audio: Fix ASE race condition
This patch fixes invalid ASE state transition,
ASE now waits for Receiver Start Ready before
going into Streaming state.

Signed-off-by: Szymon Czapracki <szymon.czapracki@codecoup.pl>
2022-10-07 10:10:32 +00:00
Emil Gydesen
384f3461ad Bluetooth: Audio: Fix bug where sink ep did not go to streaming state
If the CIS was connected before the sink endpoint was
in the enabling state, it never autonousmly went into
the streaming state.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-10-07 10:09:58 +00:00
Mariusz Skamra
4eb7077978 Bluetooth: audio: ascs: Move control point pointer out of bt_ascs
bt_ascs is per connection, so the control point attribute pointer
should not be part of this structure.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-06 22:42:24 +00:00
Mariusz Skamra
28ce0a96b1 Bluetooth: audio: capabilities: Remove redundant direction parameter
The direction is used to identify the list to append the registered
capabilities. There is no need to keep it in the bt_audio_capabilities,
it can be provided as a function parameter instead.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-06 22:41:27 +00:00
Emil Gydesen
8673fab276 Bluetooth: Audio: Fix bad warning when creating MPL OTS objects
The return check for adding MPL objects in OTS with
bt_ots_obj_add was incorrect, as only negative values
indicate an error, and a positive value returns the ID.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-10-06 22:40:32 +00:00
Andries Kruithof
ce1580765d Bluetooth: controller: set Ctrl Tx buffers to non-zero
Set the correct number of Ctrl Tx buffers used for the new
implementation, so that the ACK-fifo gets the correct size

Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
2022-10-06 09:01:19 +02:00
Vinayak Kariappa Chettimada
6a9e7a2960 Bluetooth: Controller: Conditionally compile legacy Ctrl Tx buffers
Conditionally compile the legacy control procedure defined
control Tx buffers that is not required in the new control
procedure implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-10-06 09:01:19 +02:00
Emil Gydesen
7b0ba0f517 Bluetooth: Audio: Fix missing path_id for unicast server
The codec->path_id supplied to the capabilities
were not being used for the endpoint codec.

Important note: This only works if there is a single
capability per codec ID per direction. This limitation
is also an existing limitation in the current
implementation of capabilities.c.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-10-05 12:45:14 +02:00
Emil Gydesen
9e256681a4 Bluetooth: Audio: Fix syncing to multiple BIS for broadcast sink shell
Fixed an issue with syncing to multiple BIS as the broadcast
sink in the shell. Also changed a check in the broadcast
sink implementation from an assert to a `if` to provide
a better way of handling bad input.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-10-05 12:42:09 +02:00
Troels Nilsson
de8c19da5e Bluetooth: controller: Handle fragmented AD without chaining PDUs
Adds support for handling fragmented advertising data over HCI when
CONFIG_BT_CTLR_ADV_AUX_PDU_LINK is not enabled

- Added support for appending advertising data to ull_adv_aux_hdr_set_clear
  and ull_adv_aux_pdu_set_clear via ULL_ADV_PDU_HDR_FIELD_AD_DATA_APPEND
- Updated ll_adv_aux_ad_data_set and ll_adv_aux_sr_data_set to
  handle fragmentation ops without CONFIG_BT_CTLR_ADV_AUX_PDU_LINK

Signed-off-by: Troels Nilsson <trnn@demant.com>
2022-10-05 09:18:15 +00:00
Jakob Krantz
8cac1f5b2c Bluetooth: Host: Add function to retreive per_adv_sync obj from index.
Gives the application a two way mapping between array index
and a per_adv_sync object instead of current only per_adv_sync
obj -> index using bt_le_per_adv_sync_get_index.

Signed-off-by: Jakob Krantz <jakob.krantz@u-blox.com>
2022-10-04 19:17:27 +00:00
Jonathan Rico
a7537f527c Bluetooth: log: show function names by default
Show function names for all BT_xx logging levels when BT_DEBUG_LOG is
enabled. This makes it easier to find the problematic lines.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
2022-10-04 14:09:04 +00:00
Jonathan Rico
afef6e2722 Bluetooth: att: precise warning messages
- Downgrade the warning emitted when we run out of channels.
- Only log a warning when failing to establish channels and the error is
  not -ENOMEM.
- Add a debug log message in that case to hint what might've happened.

This should make it less confusing to the average user not aware of the
stack internals.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
2022-10-04 14:09:04 +00:00
Jonathan Rico
477c0fcb6e Bluetooth: l2cap: reword unknown pdu warning
This is a scary-looking warning for users, and should only really matter to
stack developers. It will eventually show up in the wild for embedded
devices that don't get updated to the latest and greatest.

Reword it to make it clear we are rejecting it, and it doesn't impact the
stack in any way.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
2022-10-04 14:09:04 +00:00
Jonathan Rico
5d96b9e555 Bluetooth: smp: reword pairing failed error
This makes it more user-friendly, in case no failed cb has been
registered so this error is printed out of context.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
2022-10-04 14:09:04 +00:00
Jonathan Rico
5cc0e8cdaa Bluetooth: hci_core: reword warning
Reword the scary-looking `bt_hci_core; Malformed data` warning to show
where it is originating from.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
2022-10-04 14:09:04 +00:00
Mariusz Skamra
ae1ed41116 Bluetooth: audio: tbs_client: Fix GTBS index returned in API callbacks
This fixes GTBS index used in API. The index that is exposed to the
application is 255 in case of GTBS.
The code has been reworked to remove redundant booleans and index that
was kept inside instance.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-04 14:08:26 +00:00
Mariusz Skamra
1b310b26f3 Bluetooth: audio: tbs_client: Remove redundant checks
The CONTAINER_OF does not return NULL, thus the `inst == NULL` checks
are not needed.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-04 14:08:26 +00:00
Lingao Meng
61d6532014 Bluetooth: Mesh: Add missing adv_main for relay message
By design, adv main set can use to send relay mesh messages
but here adv main set is invoked.

Add in the ended, so, adv main set only can be used when all
relay adv sets busy.

and this way does not cause too much delay for adv main set,
due to local message will process firstly.

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2022-10-04 10:21:18 +00:00
Anders Storrø
b9f776d2fb Bluetooth: Mesh: Shell: Clear CDB on local reset
Adds feature that clears the CDB entry on local reset.

Signed-off-by: Anders Storrø <anders.storro@nordicsemi.no>
2022-10-04 10:20:38 +00:00
Anders Storrø
c7621d7ea1 Bluetooth: Mesh: Shell: Del CDB node on node reset
Adds feature that deletes the shell CDB node after perfoming a config
client reset of another node.

Signed-off-by: Anders Storrø <anders.storro@nordicsemi.no>
2022-10-04 10:20:38 +00:00
Vinayak Kariappa Chettimada
630eb033ba Bluetooth: Controller: Remove redundant assertion check
Remove redundant assertion check, and minor indentation fix
to correct the alignment of function call.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-10-04 10:36:32 +02:00
Vinayak Kariappa Chettimada
d96aa6dd70 Bluetooth: Controller: Minor indentation fix
Minor indentation fix to keep within 80 columns when it is
possible.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-10-04 10:36:32 +02:00
Anders Storrø
bea54c5691 Bluetooth: Mesh: Shell: Make prov features dynamic
Alters several provisioning related features to allow commands to be
functional with application defined Provisioning properties &
capabilities.

Signed-off-by: Anders Storrø <anders.storro@nordicsemi.no>
2022-10-04 10:33:30 +02:00
Emil Gydesen
15ed8569ed Bluetooth: Audio: Update ASE EP state checks
Update the existing ASE EP state checks to be more correct
and aligned with the ASCS specification.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-10-04 10:33:13 +02:00
Vinayak Kariappa Chettimada
578cc10043 Bluetooth: Controller: Ticker window extension for broadcaster only
Enable ticker ticks slow window extensions implementation
when broadcaster role is enabled. This feature moves the
primary channel advertising event within the specified
window when overlapping with other roles.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-10-03 16:28:09 +02:00
Nirosharn Amarasinghe
8b0d695be5 Bluetooth: controller: Implemented PDU release timeout
Implemented:
-- Combining segments from multiple SDUs in a single PDU for TX
-- Release of PDU based on remaining capacity below threshold
-- Release of any PDUs in production on receiving a timeout for the
   upcoming event
-- Release of PDUs in production if source if destroyed
-- Synchronization flag to exclude multiple contexts in ISO-AL
-- New Kconfig BT_CTLR_ISO_TX_SEG_PLAYLOAD_MIN to allow definition of
   minimum TX segment size

Signed-off-by: Nirosharn Amarasinghe <niag@demant.com>
2022-10-03 13:22:13 +02:00
Nirosharn Amarasinghe
789628a4e3 Bluetooth: Controller: Implemented buffering of SDU fragments in ISO-AL
Implements:
-- SDU fragments can be buffered in the ISO-AL so that the correct size
   of the SDU can be computed such that it can be released for inclusion
   in the first fragment's header
-- Changed SDU emit interface to allow the same structure to be used to
   buffer as well as release fragments
-- New configuration BT_CTLR_ISO_RX_SDU_BUFFERS to specify the number of
   SDU buffers for each sink
   (Buffering disabled when BT_CTLR_ISO_RX_SDU_BUFFERS=0)

Signed-off-by: Nirosharn Amarasinghe <niag@demant.com>
2022-10-03 13:22:13 +02:00
Nirosharn Amarasinghe
6c855b43be Bluetooth: Controller: implemented HCI_LE_Read_ISO_TX_Sync in ISO-AL
Implemented:
-- Storing information required to service HCI_LE_Read_ISO_TX_Sync
   request
-- Implemented interface to retrieve information
-- Cleared ISO-AL source and sink state on deallocation
-- Renamed cig_ref_point to grp_ref_point as it serves a common purpose
   in both CIS and BIS

Signed-off-by: Nirosharn Amarasinghe <niag@demant.com>
2022-10-03 13:22:13 +02:00
Nirosharn Amarasinghe
68b7b36adf Bluetooth: controller: Included guard for lost data in framed PDUs
Improvement for IAL/CIS/FRA/PER/BI-01-C & IAL/CIS/FRA/PER/BI-02-C
-- Test appears to fail as the transmitted PDU is packed with less data
   than is indicated in the segment headers.
-- Guards were included to verify that sufficient data exists in the PDU
   before extracting the segment.

General
-- Updated timestamps in error SDUs to better approximate the expected
   timestamps if time information is missing.

Signed-off-by: Nirosharn Amarasinghe <niag@demant.com>
2022-10-03 13:22:13 +02:00
Erik Brockhoff
bd3bc98847 Bluetooth: controller: correct parameters in conn update complete event
In case a connection update complete event reports an error, the
parameters reported should be the ones active on the connection and not
the ones requested

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-10-03 10:20:04 +02:00
Lingao Meng
83d129bc15 Bluetooth: Mesh: Add prefix bt_mesh_ for global variable
Some variables shadow global, which is difficult to handle when
porting to other platforms with shadow warnings turned on.

https://github.com/zephyrproject-rtos/zephyr/pull/50581

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2022-10-03 10:19:57 +02:00
Mariusz Skamra
9dae352007 Bluetooth: audio: ascs: Increase the number of supported ASEs
This increases the number of supported audio stream endpoints.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-03 10:19:39 +02:00
Mariusz Skamra
1432d05c29 Bluetooth: audio: pacs: Remove redundant code
Avoid unnecessary memcmp of UUID's.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-03 10:17:30 +02:00
Mariusz Skamra
9ecbee2587 Bluetooth: audio: capabilities: Remove callbacks
This removes the callbacks from capabilities. The callbacks are used for
unicast server role only, while the capabilities are used for the
broadcast sink role as well. Thus the callbacks can be removed as there
is another bt_audio_unicast_server_cb API that is specific for unicast
server role.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-03 10:17:21 +02:00
Mariusz Skamra
43f270ad11 Bluetooth: audio: tbs_client: Fix primary service discovery function
Fixes the discovery function that handles GTBS only discovery. The
discovery stops when there is no space left for another instance. The
function has been split to improve the code readability and avoid
unnecessary UUID comparison.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-03 10:15:03 +02:00
Mariusz Skamra
124d66e885 Bluetooth: audio: tbs_client: Make GTBS client only build option
Refactor Kconfig to add a way to enable GTBS only client.

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-03 10:15:03 +02:00
Anders Storrø
901767a47a Bluetooth: Mesh: Shell: Add cfg opt for health srv
Adds Kconfig option for the Mesh Shell Health server.

The shell implementation of Health Server test commands is
dependent on the user adding and initializing the shell Health
Server instance in their application to make the commands functional.
To prevent any confussion about how these commands work, a Kconfig
option has been added to allow conditional compilation of these
commands. In this way the user must actively enable this feature, making
the conditional requirements more clear.

Signed-off-by: Anders Storrø <anders.storro@nordicsemi.no>
2022-10-03 10:12:25 +02:00
Mariusz Skamra
7cc5be0dcf bluetooth: audio: pacs: Remove duplicated code
Remove code duplicates

Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
2022-10-03 10:10:46 +02:00
Szymon Janc
6673cb1f60 Bluetooth: Controller: Fix DLE HCI params parsing
LE Write Suggested Default Data Length and LE Set Data Length commands
are suggestions from host and should be validated only as per HCI
specification regarding internal setting of LLCP.

LLCP is allowed to use other values if needed.

Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
2022-10-03 10:08:34 +02:00
Andries Kruithof
5530ea0bd0 Bluetooth: controller: ensure memory access is aligned
The memory used for Tx buffers and procedure context must
be aligned on a word boundary, otherwise it is possible
to get unaligned memory access

Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
2022-09-30 11:12:19 +02:00
Aleksander Wasaznik
c90b4a4e52 Bluetooth: Shell: Fix GATT exchange mtu assertion fail
This change fixes a bug where the second use of shell command `gatt
exchange-mtu` would trigger an assertion failure in the stack. The BT
API `bt_gatt_exchange_mtu` asserts `params->func != NULL`.

Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
2022-09-29 17:34:33 +02:00
Vinayak Kariappa Chettimada
48c21fab93 Bluetooth: Controller: Fix radio_tmr_start_us to be soft realtime
Fix radio_tmr_start_us to be soft realtime, if the requested
start in microseconds is in the past, setup the next
earliest expiry. This is to prevent radio not being started
and not let the LLL hanging. When setup to receive auxiliary
PDU in LLL scheduling, is_aux_sched is set and if radio does
not start and the window is requested to be pre-empted, then
it is blocked from being preempted due to the is_aux_sched
flag remaining to be set. This stalls the scanning
infinitely until explicit scan disable.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-09-29 16:42:36 +02:00
Vinayak Kariappa Chettimada
8b586ee5a4 Bluetooth: Controller: Fix missing is_aux_sched flag being reset
Fix missing is_aux_sched flag being reset before resuming to
scan for new advertising PDU in the same scan window after
having received an earlier primary channel PDU and auxiliary
channel PDU using LLL scheduling.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-09-29 16:42:36 +02:00
Vinayak Kariappa Chettimada
0eec434472 Bluetooth: Controller: Fix receiving spurious PDU in active scanning
Fix receiving spurious overlapping ADV_IND and SCAN_IND PDU
when LLL state expects to receive SCAN_RSP PDU. Explicitly
check that these PDUs are not processed when in active
scanning and waiting for SCAN_RSP PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-09-29 16:42:36 +02:00
Vinayak Kariappa Chettimada
1de70b575a Bluetooth: Controller: Fix node rx leak on extended scanning stop
If scan is being disabled, rx could already be enqueued
before coming to ull_scan_aux_rx_flush. Check if node rx is
not the last in the list of received PDUs then add it to the
list, else do not add it to the list to avoid duplicate
report generation, release and probable infinite loop
processing of the list. It is possible that node rx has not
be already added in case of last PDU in the chain, under
this case when scan is being stopped add it to the list
before auxiliary context is flushed.

Add the node rx to aux context list of node rx if not
already added when coming to ull_scan_aux_rx_flush. This is
handling a race condition wherein the last PDU in chain is
received and at the same time scan is being disabled.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-09-29 16:42:36 +02:00
Vinayak Kariappa Chettimada
ba6cbc57e1 Bluetooth: Controller: Fix scan aux leak on periodic sync terminate
Fix scan aux context leak on Periodic Sync Terminate. On
Periodic Sync Terminate the `is_stop` flag is set to prevent
the ULL from assigning an aux context to the sync context,
but the acquired aux context was neither assigned to sync
context nor was being released back to the aux context pool.
Fixed by releasing the aux context if not assigned to the
sync context when `is_stop` flag is set.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-09-29 16:42:36 +02:00
Jonathan Rico
5f8e657a22 Bluetooth: att: limit EATT MTU to max buffer size
If a device sends an MTU that is bigger than our maximum tx buffer size,
that could cause assertion failures down the line.

This PR limits it to the maximum we support (CONFIG_BT_L2CAP_TX_MTU).

The issue has been observed with a gatt discovery procedure, but is likely
present in other places in att.c.

To reproduce it, we need two zephyr shell devices, with one having a larger
MTU than the other:
- connect
- do data length update to the bigger MTU
- set security to 2, EATT channels get connected
- launch a gatt discovery from the device with the larger MTU
- observe kernel panic on the other device when it attempts to add too much
memory to a net buf.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
2022-09-29 10:16:57 +00:00
Joakim Andersson
cc74b3b977 Bluetooth: host: Log SC LTK in pairing procedure without bonding
Log the LE Secure Connection (SC) LTK in a pairing procedure without
bonding when CONFIG_BT_LOG_SNIFFER_INFO is enabled.

Fixes: #50691

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2022-09-29 10:15:08 +00:00