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>
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>
- 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
The header file l2cap_interface.h has been included by
tests/bsim/bluetooth/host/* cases.
To avoid potential issue, include full path of header
l2cap_br_interface.h in file l2cap_interface.h.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
`att_req_send_process` is not thread safe.
In the case where the current context is pre-emptible (e.g. when a user
sends something over GATT from the main thread):
The iterator in `att_req_send_process` can get interrupted mid-processing,
breaking the logic and resulting in an assert/crash/data corruption.
Additionally, the connection state check in this fn is also not
thread-safe, the RX thread could pre-empt us and disconnect right before
we attempt to send on an ATT bearer that is on it.
This is a hotfix until we have a generalized solution for the host API
surface. It seems a lot of our logic assumes cooperative priority.
Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
DFD Server, DFU Server, and DFU Client models are extended models
that extend other underlaying models. If BT_MESH_MODEL_EXTENSIONS
is not enabled, extension hierarchy is not initialized and this
results in issues in subscriptions and errors in representation
of hierarchy in CDP1. Since extensions are spec defined, force
selection of this option here to prevent users forgetting about it.
Signed-off-by: Omkar Kulkarni <omkar.kulkarni@nordicsemi.no>
Fixes issue where it is possible to store the same appkey
multiple times in CDB implementation.
Signed-off-by: Anders Storrø <anders.storro@nordicsemi.no>
This was part of the mega hwmv2 commit. Looks like hpet drivers heavily
relies on soc.h. Reverting this for now while we look for a proper fix
and remove reliance on soc.h for drivers.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
The dlc->session is invalid in the callback
hfp_hf_disconnected. The behavior of obtaining
an ACL connection handle through an invalid
pointer is unknown.
Add a field "struct bt_conn *acl" to "struct
bt_hfp_hf". Save acl connect handle to "struct
bt_hfp_hf::acl" in function bt_hfp_hf_accept.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
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>
For dev key encrypiton, BT_MESH_KEY_DEV_REMOTE should be used instead of
BT_MESH_KEY_DEV regardless of whether the destination is a local element
or remote.
BT_MESH_MSG_CTX_INIT_DEV macro selects correct key.
Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>