Commit graph

9787 commits

Author SHA1 Message Date
Vinayak Kariappa Chettimada
433fad53bf Bluetooth: controller: Remove duplicate radio_isr_set call
Remove the redundant radio_isr_set function call.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-30 10:54:51 +02:00
Vinayak Kariappa Chettimada
0df70608a7 Bluetooth: controller: Fix SyncInfo with correct event counter
Fix Periodic Advertising SyncInfo structure to be filled
with correct event counter value considering accumulated
latency and ticker lazy value.

Fixes #32860.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-30 10:54:23 +02:00
Vinayak Kariappa Chettimada
f708f861bc Bluetooth: controller: Ticker next slot get to return lazy value
Updated ticker implementation to return lazy value for a
ticker when enumerating active tickers with time
reservations.

This is required to find offsets and to use the lazy value
to correctly calculate event and payload counter values that
needs to be filled into SyncInfo and BigInfo structures.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-30 10:54:23 +02:00
Martí Bolívar
c3d3b3dbc8 Bluetooth: remove CONFIG_BT_CTLR_TO_HOST_UART_DEV_NAME
This is now unused.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
2021-03-29 16:33:51 +02:00
Morten Priess
96a13712ad Bluetooth: controller: Initial CIS peripheral establishment
LL_CIS_IND starts a ticker for the created CIG, using the event_counter
and offset provided. Ticker generates callbacks to
lll_peripheral_iso_prepare. Event done with ISO (extra) type is demuxed
and done handled for CIG including ticker update with drift
compensation.

TODO: Handle multiple CISes as well as pause/resume and scheduling
latency.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-03-27 08:57:03 -04:00
Morten Priess
a95ca4f3b7 Bluetooth: host: Reject CIS request if hci_le_accept_cis fails
Act on returned error code from hci_le_accept_cis, and reject CIS
request if failed.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-03-27 08:57:03 -04:00
Morten Priess
e0b8881622 Bluetooth: controller: Temporary LLCP CIS_REQ/CIS_IND handling
Implemented LL_CIS_REQ/RSP and LL_CIS_IND handling to allow a central
to establish a CIS connection. Implementation is temporary, for
test/development purpose and should be re-implemented in the new LLCP
framework when ready.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-03-27 08:57:03 -04:00
Emil Gydesen
8750b7c6f7 Bluetooth: audio: Changed VOCS to use ENOTSUP instead of EOPNOTSUPP
Changed to use ENOTSUP to be more consistent with the rest of the
bluetooth subsystem.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-26 15:32:43 -04:00
Jun Huang
03eb3778e0 Bluetooth: Host: Add a configuration for writable name
In the file gatt.c, GAP service contains the Device Name
characteristic. If writable, authentication and authorization may
be defined by a higher layer specification.It means that GATT
clients can write to device name GAP characteristic without
bonding. So we add a configuration for writable name without
bonding.

Signed-off-by: Jun Huang <huangjun6@xiaomi.com>
Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-26 15:31:29 -04:00
Krzysztof Kopyściński
4c8605b003 bluetooth/smp: reject pairing in SC Only mode if insufficient keysize
This is required for GAP/SEC/SEM/BI-09-C and GAP/SEC/SEM/BI-10-C to pass
signed-off-by: Krzysztof Kopyściński <krzysztof.kopyscinski@codecoup.pl>
2021-03-26 15:30:25 -04:00
Emil Gydesen
83599467ce Bluetooth: host: Add feature check for periodic adv functions
Adds a check for the BT_LE_FEAT_BIT_PER_ADV bit for each
function related to periodic advertising, including sync and
PAST transfer.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-26 15:28:09 -04:00
Emil Gydesen
f3e9c3eff1 Bluetooth: shell: Adds Periodic adv sync transfer shell command
Adds a command for tranferring a periodic adv sync to a PAST
receiver.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-26 07:10:15 -04:00
Flavio Ceolin
9fd4ea91b7 coccinelle: Remove extra semicolon
coccicheck --mode=patch --cocci=semicolon.cocci

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-03-25 11:35:30 -05:00
Joakim Andersson
eafc6c067f Bluetooth: host: Fix BT_LOG_SNIFFER_INFO option without BT_SMP enabled
Fix undefined reference to bt_key_foreach when BT_LOG_SNIFFER_INFO has
been enabled but BT_SMP is not enabled.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-25 07:23:52 -04:00
Pavel Vasilyev
8bcc85b38c Bluetooth: Mesh: Check response address in Configuration Client
The Configuration Client doesn't check the address in a received
response. This means that a response from any device will be accepted.

This change ensures that the correct response will be accepted.

Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
2021-03-25 07:09:47 -04:00
Joakim Andersson
a9b4cae019 Bluetooth: audio: Fix compilation issue with BT_AUDIO
Fix bluetooth audio compilation issue when BT_AUDIO is enabled but
no Bluetooth host services has been enabled.
This leads to an empty library file.
Instead of creating a new library for audio add the sources to the
parent library, similar to how bluetooth services are added.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-23 20:58:35 -05:00
Emil Gydesen
e1b840c4ab Bluetooth: Audio: VOCS add explicit ignore of notify return
Add casting to (void) to explicitely ignore the return value
of the notifi function calls.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-23 17:50:06 -04:00
Emil Gydesen
30edb5e52e Bluetooth: Audio: VOCS add missing check for offset in writes
VOCS does not support the write long procedure, and thus
should not accept any offset in write requests.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-23 17:50:06 -04:00
Emil Gydesen
04232fe1ef Bluetooth: Audio: Append bt_ for everything defined in vocs_internal
Was requested in the review for
ed2162c700 but was merged before it
could be fixed.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-23 17:50:06 -04:00
Luiz Augusto von Dentz
2a42ebc743 Bluetooth: ISO: Add function to access bt_conn_iso
This adds bt_conn_iso function to safely access the struct bt_conn_iso
within a bt_conn.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
9d0fb5ec47 Bluetooth: ISO: Remove channel direction
Channel direction was actually a source of confusion since the spec does
actually define the data path direction from controller point of view
meaning input actually means transmit and output receive, also direction
can be configured with different QoS settings.

To make these APIs less confusing and allow QoS to be configured
independently they are now split into RX (receiving) and TX
(transmission) settings including its data path.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
0eb4bfee3f Bluetooth: ISO: Fix not unbind if ACL has been disconnected
If ACL has been disconnected any ISO handle shall be considered invalid
as well.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
b5a46db6c6 Bluetooth: ISO: Use CHECKIF instead of __ASSERT_NO_MSG
CHECKIF is preferred as it handles full runtime error handling in
addition to just asserts.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
af0fc963d8 Bluetooth: ISO: Fix cleanup connection
This fixes bt_iso_cleanup when there are still channels bound to the
ACL connection.

On top of it introduce bt_iso_chan_unbind which can be used to unbind
channels and thus release the reference to the ACL connection if that
has not been disconnected in which case the channels are unbind
automatically.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
7ffbd55ecf Bluetooth: ISO: Fix revert direction when setting SDU
s_sdu refers to rx/input and m_sdu refers to tx/output.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
151e93b78d Bluetooth: ISO: Fix not calling channel disconnected
When the channel has just been bound but is not connected yet there is
no need to send any command over the air but the disconnected callback
shall still be called in order to notify the channel owner that it has
reached disconnected state.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
84811d5726 Bluetooth: conn: Fix invalid state transition
When initiating a disconnection conn_disconnect would be called to send
HCI_Disconnect but the controller may be quick enough to send Disconnect
Complete event before setting BT_CONN_DISCONNECT which will then cause
the invalid transition from BT_CONN_DISCONNECTED to BT_CONN_DISCONNECT
and the connection won't be freed properly.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Luiz Augusto von Dentz
a0d6f30895 Bluetooth: conn: Fix unbalance reference when an ISO has been connected
This fixes a regression introduced by 4350021f09 which prevents
references to be properly release when there is an ISO connection.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-23 17:49:08 -04:00
Emil Gydesen
ed2162c700 Bluetooth: Audio: Volume Offset Control Service and Client
This commit implements the secondary service
Volume Offset Control Service (VOCS) server and client.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-22 13:05:56 -04:00
Vinayak Kariappa Chettimada
7f727ac322 Bluetooth: controller: Fix regression in ctrl tx queue handling
Fix control Tx buffer leak into data Tx pool that happens
after a cross-over control procedure response was paused due
to currently active encryption setup procedure, and a new
control Tx PDU in addition to the paused one is enqueued
thereafter.

When the control tx PDUs is resumed but not yet enqueued
towards the radio, if there is a new control Tx PDU enqueued
then the paused control Tx PDU is not set as the head of the
control PDUs in the Tx queue. This caused the paused control
Tx PDU to be associated with data Tx pool, hence causing the
incorrect release into data Tx pool.

Relates to the commit bff76b4cce ("Bluetooth: controller:
split: Fix control tx queue handling") and to the
commit 6991d09977 ("Bluetooth: controller: Fix control tx
queue handling").

Fixes #32898.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-18 11:52:23 -04:00
Vinayak Kariappa Chettimada
bc782cf11b Bluetooth: controller: Remove redundant connection initiated check
Remove the redundant connection initiated check as the event
is closed on connection initiated and it is sufficient to
check in the prepare_cb function to abort any events in the
pipeline after the connection has been initiated.

Relates to commit 5ce5dc055e ("Bluetooth: controller:
Avoid race between ULL and LLL when initiating conn") and
commit 18f5fb99c1 ("Bluetooth: controller: Remove use of
lll_stop").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-18 13:52:42 +01:00
Vinayak Kariappa Chettimada
62e5db70ef Bluetooth: controller: Fix channel identifier for Periodic Adv/Sync
Fix the channel identifier value used in Periodic
Advertising and Synchronization.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-18 13:11:47 +01:00
Vinayak Kariappa Chettimada
545332db98 Bluetooth: controller: Use channel identifier function
Use the channel identifier calculation function in the
central and peripheral implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-18 13:11:47 +01:00
Vinayak Kariappa Chettimada
c5e75509ac Bluetooth: controller: Add function to calculate channel identifier
Added function to calculate channel identifier value
required for Channel Selection Algorithm #2.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-03-18 13:11:47 +01:00
Rubin Gerritsen
2affd52339 bluetooth: host: EAGAIN when initiating a connection when scanning
Also improve the documentation.

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
2021-03-17 15:33:43 -04:00
Carles Cufi
66c298dbb7 bluetooth: controller: Set missing bits in supported list
A bunch of commands were missing from the bitmap in the Read Local
Supported Commands response. Add them accordingly.

Fixes #33324.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2021-03-17 15:33:19 -04:00
Wolfgang Puffitsch
010c5c2f20 Bluetooth: controller: Ignore connections from same peer
Ignore connection indications from peers that are already
connected. This is to bring the behavior of the controller in
accordance with [5.2, Vol 6, Part B, 4.5 Connection state]:
"If an advertiser receives a connection request from an initiator it
is already connected to, it shall ignore that request."

Signed-off-by: Wolfgang Puffitsch <wopu@demant.com>
2021-03-17 15:32:47 -04:00
Wolfgang Puffitsch
1161c1dca9 Bluetooth: controller: Rename peer's address in advertising set struct
Rename the peer's address in the advertising set struct from `id_addr`
to `peer_addr` to clarify what the address refers to.

Signed-off-by: Wolfgang Puffitsch <wopu@demant.com>
2021-03-17 15:32:47 -04:00
Joakim Andersson
2013ce41e6 Bluetooth: host: Fix undefined references to adv in central only builds
Fix regression is central only builds when CONFIG_BT_PRIVACY and/or
CONFIG_BT_EXT_ADV is enabled, or the functions bt_id_reset or
bt_id_delete is called from application.

This resulted in build error for undefined functions
bt_le_ext_adv_foreach and bt_le_adv_lookup_legacy since the definition
for these functions are now only compiled in when CONFIG_BT_BROADCASTER
has been enabled.

Regression from:
53cea4719d

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-17 18:58:49 +02:00
Joakim Andersson
101b96a0b9 Bluetooth: HCI: Fix option CONFIG_BT_HCI_ACL_DATA_SIZE default to 0
Fix CONFIG_BT_HCI_ACL_DATA_SIZE default value set to 0 when data length
feature in the controller is not enabled. In this case the default value
will be set to 0 which is outside of the range specified for the option.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-03-17 17:09:19 +02:00
Wolfgang Puffitsch
3773d6d3d0 Bluetooth: controller: Remove unused assignments to ticker_id_prev
Remove assignments to ticker_id_prev that were overwritten before
being used.

Signed-off-by: Wolfgang Puffitsch <wopu@demant.com>
2021-03-17 16:03:12 +01:00
Wolfgang Puffitsch
07130ec24c Bluetooth: controller: Move access to volatile out of assertion
Move access to volatile variable out of assertion to avoid warnings
about side effect in assertion.

Signed-off-by: Wolfgang Puffitsch <wopu@demant.com>
2021-03-17 16:02:09 +01:00
Wolfgang Puffitsch
ede34fb0e2 Bluetooth: host: Add missing include in id.c
Add hci_driver.h to include files in id.c to ensure that prototype for
bt_read_static_addr is visible. This fixes builds that define
CONFIG_BT_CTLR but not CONFIG_BT_HCI_VS_EXT.

Signed-off-by: Wolfgang Puffitsch <wopu@demant.com>
2021-03-17 08:43:26 -05:00
Emil Gydesen
a3b6bc212f Bluetooth: services: Refacter OTS dir list to avoid circular dependency
Refactors the OTS directory listing object implementation to avoid
circular dependency.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-17 11:30:07 +01:00
Emil Gydesen
0cc408a9ac Bluetooth: Services: Ensure correct ID before getting object index
Moved the call to obj_id_to_index such that we can check for valid
ID before getting the index.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-17 11:30:07 +01:00
Emil Gydesen
806344c8e0 Bluetooth: Services: Adds bt_gatt_ots_obj_manager_obj_contains
Adds a ots_obj_manager function that returns true if the object is
in the object manager, or false otherwise.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-17 11:30:07 +01:00
Emil Gydesen
e90ec2df44 Bluetooth: services: Adds directory listing object to OTS
The directory listing object is an internal object which
content is the aggregation of all the metadata of all objects
(including the directory listing object itself). The client
can read this value to get a list of all objects with names,
lengths, and other metadata.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-03-17 11:30:07 +01:00
Luiz Augusto von Dentz
06e18c6df5 Bluetooth: L2CAP: Fix not including all DCIDs
The order of Destination CIDs shall correspond the order of Source CIDs
including its amount so errors that don't result in all connection being
refused shall not break the order of CIDs.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00
Luiz Augusto von Dentz
168389cccd Bluetooth: L2CAP: Fix invalid BT_L2CAP_ECRED_CONN_RSP
For errors that means all connections have been refused there is no need
to add dcids since none will be valid.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00
Luiz Augusto von Dentz
39a3dee29d Bluetooth: L2CAP: Fix not checking for L2CAP_ECRED_CHAN_MAX
When receiving L2CAP_CREDIT_BASED_CONNECTION_REQ the remote may request
more channels than allowed so this checks if amount of channel surpasses
the maximum channels (5) and return an error.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-03-17 11:29:27 +01:00