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>
Before a LL_FEATURE_REQ is sent, verify that the Data Length Update
procedure is still supported as it could have been unmasked as the result
of a previously completed Feature Exchange procedure.
Add unit test to verify the case of enqueuing both a
Feature Exchange procedure and Data Length Update procedure, where the
Feature Exchange procedure would result in the unmasking of the Data
Length Update procedure.
Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
Resume the TX Data Q when a LL_UNKNOWN_RSP is recieved instead of a
LL_PHY_RSP.
Update PHY Update unit test with more coverage of the TX Data Q pause
state.
Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
This will warn if any of the mesh module will try to send anything while
the stack is suspended. Not clear what to do here as both advertisers
(legacy and ext) behaves differently. The legacy advertiser has a
thread which is stopped after the `bt_mesh_adv_disable` call and any
sent advs after suspending the stack will stay in the pool until the
advertiser is resumed. The extended advertiser will schedule its work,
but then fail because `ext_adv->instance` value is NULL, but will call
`bt_mesh_send_cb.start` with error `-ENODEV`. What to do with these 2
behaviors is unclear at the moment. Ideally none of the mesh stack
modules should call `bt_mesh_adv_send` after the stack was suspended, so
if this warning appears, the faulty module wasn't stopped properly and
this should be fixed. If not to add the adv to the pool, then it kind
of gets lost as the implementation probably expects one
of `bt_mesh_send_cb` callbacks which will never be called. Leaving the
warning until clear customer request comes.
Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
During local testing with UBSAN enabled, warning was reported:
bluetooth/host/l2cap.c:980:25: runtime error: member access
within null pointer of type 'struct k_work_q'
It turned out that le_chan->rtx_work.queue can be NULL.
Since null-pointer dereference is a UB, additional check
was added to ensure we don't access
`le_chan->rtx_work.queue->thread` when
`le_chan->rtx_work.queue == NULL`
The same changes applied to l2cap_br.c
Signed-off-by: Ivan Iushkov <ivan.iushkov@nordicsemi.no>
During local testing with UBSAN enabled, warning was reported:
bluetooth/host/iso.c:237:2: runtime error: null pointer passed
as argument 2, which is declared to never be null
It turned out that when datapath doesn't contain
codec information, cc_len is 0 and cc is NULL
In order to avoid UB,
now we call memcpy only when cp->codec_config_len > 0
Signed-off-by: Ivan Iushkov <ivan.iushkov@nordicsemi.no>
during local testling, UBSAN reported the following warnings:
- bluetooth/host/adv.c:2067:19: runtime error: shift exponent
255 is too large for 32-bit type 'long unsigned int'
- bluetooth/host/scan.c:828:18: runtime error: shift exponent
255 is too large for 32-bit type 'long unsigned int'
It turned out that we can't use BIT() macro directly on
bt_hci_evt_le_per_advertising_report::cte_type field.
According to Core Spec, `cte_type = 0xFF` corresponds
to `No contstant tone extension`.
Added separate function to convert CTE bit field from
HCI format to bt_df_cte_type
Signed-off-by: Ivan Iushkov <ivan.iushkov@nordicsemi.no>
If `CONFIG_BT_MESH_GATT_SERVER` is disabled or the advertising set
doesn't support proxy adv, the solicitation PDU will not be sent.
However, solicitation PDU transmission doesn't depend on the proxy
feature of the device it sends. Therefore, solicatation PDU should be
sent regradless of `CONFIG_BT_MESH_GATT_SERVER` option and advertiser
tag.
Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
Removed the "operation" infix from the bt_gatt_authorization_cb
callback structure in the Bluetooth GATT header.
Signed-off-by: Kamil Piszczek <Kamil.Piszczek@nordicsemi.no>
Trigger erasing solicitation settings before calling
`bt_mesh_settings_store_pending` and `bt_mesh_prov.reset` callback.
The `bt_mesh_settings_store_pending` flushes every settings that is
pending to be erased. The `bt_mesh_prov.reset` callback must be called
as the last step because a user is free to do anything from this
callback including rebooting or reprovisioning the device.
Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
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>
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>
Modifies two log statements so that it is clear whether it
is failing to validate broadcast or unicast PDU sizes.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
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>
Advertising data has to be truncated at a PDU boundary
Similar to earlier fix for extended advertising reports
Found in several EBQ tests, including LL/DDI/SCN/BV-25-C,
LL/DDI/SCN/BV-21-C and LL/DDI/SCN/BV-46-C
Signed-off-by: Troels Nilsson <trnn@demant.com>
The SCO cannot be created if the eSCO is unsupported.
It is caused by the packet type cannot be set
correctly.
Set valid bitmap for SCO and eSCO packet type in
command "Accept Synchronous Connection Request".
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
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>
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>
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>
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>
Some places VCP accessed AICS and VOCS when it was not supported.
Also modify existing guards to be consistent with new guards.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The VCP and MICP instances should use their respective
AICS and VOCS Kconfig options, rather than the overall
Kconfig options.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Modify the parameters for bt_cap_initiator_unicast_audio_stop
so that they are more similar to
bt_cap_initiator_unicast_audio_start.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Modify the parameters for bt_cap_initiator_unicast_audio_update
so that they are more similar to
bt_cap_initiator_unicast_audio_start.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This commit updates nordic lll controller to use
IRQ_DIRECT_CONNECT where applicable instead of
using IRQ_CONNECT with ISR_FLAG_DIRECT.
Signed-off-by: Radosław Koppel <radoslaw.koppel@nordicsemi.no>
The LE Audio implementations do not really support bonding yet,
and removing subs on disconnect is the most effective (and correct)
way of ensuring that we do not subscribe more than once when we
re-discover after reconnection.
The broadcast assistant and the media control client does not
support multiple connections as of this commit, so they needed
special treatment. In the case that we do discovery on multiple
ACL connections, it is important that the existing subscriptions
are removed correctly by calling bt_gatt_unsubscribe.
In order to implement this change properly on some of the clients,
thet had no proper connection references or support
for clearing the data on disconnects, they had to be updated
as well.
The csip_notify.sh test has been disabled, as that expected a
notification in the client, but since this commit removes that
(until bonding is properly supported in the clients), then the
test will fail.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Several places the LE Audio clients called bt_gatt_subscribe without
checking the return value, which could cause some issues in the worst
case, and in the best case, cause some unexpected behavior.
Some implementations had a bit more updating to handle the new
behavior.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The user data size of hfp tx pool is zero.
There is not enough space to put tx_mate.
Use CONFIG_BT_CONN_TX_USER_DATA_SIZE to
set data size of hfp tx pool.
Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
Fix Periodic Advertising Synchronization leading to
Peripheral ACL connection supervision timeout, due to
direction finding related radio hardware registers being
updated in the implementation that is not built for
direction finding feature support.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Enfore a range for BT_CTLR_ADV_AUX_SYNC_OFFSET such that
it does not take negative integer values.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix MFIFO_DEFINE to reduce FLASH usage by moving the pool
outside the struct that is static initialized.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix missing call to ull_chan_reset(), this fixes
uninitialized channel map being used after LL reset.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This change makes the optional procedures in the Media Control Client
optional and configurable through Kconfig.
Signed-off-by: Ping Wang <pinw@demant.com>
The description for BT_BAP_SCAN_DELEGATOR_BUF_TIMEOUT is a bit misleading.
Rewriting this to be more accurate
Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
[Description]
tests: shell: Restart bt will register the same connection callback twice.
Callback next node point to itself, when link established callback function
loop infinitely.
[Fix]
Unregister the previous callback to avoid register repeatedly.
[Test]
After bt init/disable times, create connection successfully.
Signed-off-by: huajiang zheng <huajiang.zheng@nxp.com>
- Which allow listeners to attempt to use the freed connection object to
perform actions as e.g: start connectable advertisements.
- Refactored bt_conn_unref() so it does not access conn struct after
decrementing its reference count.
Signed-off-by: Luis Ubieda <luisf@croxel.com>
In the scan delegator when modifying the source we only want to
send a sync request to the upper layers if we are not yet synced,
and not also on a state change
Note that without this change the babblesim test for long writes
will fail
Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
Scan del bugfix
Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
Add support for sending long notifications, coming
from a long read, back to the application
Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
Make sure that buffers are large enough and add
semaphores so that we can do long reads
Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
The get_val functions will now return -ENODATA in case that
a value isn't found, instead of 0.
This makes them more similar to the meta_get_val functions.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>