Commit graph

22,555 commits

Author SHA1 Message Date
Marek Pieta
cc21ff5a8c Bluetooth: GATT: Fix undefined symbols
Change fixes build issues for configurations without Bluetooth.

Signed-off-by: Marek Pieta <Marek.Pieta@nordicsemi.no>
2021-04-14 18:19:42 +02:00
Asger Munk Nielsen
b9b1c7e19b Bluetooth: controller: ISO adaptation layer, Rx unframed
First design towards ISO adaptation layer, this PR introduces
data-structures and framework for Rx unframed PDUs (BT RX ingress).
Two callbacks are defined for the SDU production (BT RX egress), one for
SDU allocation as well as a callback for emitting a reassembled SDU.

Signed-off-by: Asger Munk Nielsen <asmk@oticon.com>
2021-04-14 18:17:09 +02:00
Justin Morton
35f598ba93 net: http: add numeric http status code to response struct
Add numeric http status code to the response struct to allow for
easier processing by the caller.   Textual status already exists.

Signed-off-by: Justin Morton <justin.morton@nordicsemi.no>
2021-04-14 18:46:47 +03:00
Eduardo Montoya
4289e46ae7 net: openthread: switch radio off when stopping diags
This commit puts the radio in sleep mode when the diagnostics are
stopped.

This fixes an assert on MAC code when `ot diag stop` command is
issued while `ot diag send` is still ongoing.

Signed-off-by: Eduardo Montoya <eduardo.montoya@nordicsemi.no>
2021-04-14 17:38:27 +03:00
Peter Bigot
188cb2cb7c net: Conversion of k_work API
Replace all existing deprecated API with the recommended alternative.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2021-04-14 07:07:40 -04:00
Luiz Augusto von Dentz
6017506bcc Bluetooth: ATT: Add documentation for chan_send
chan_send does restore buffer state in case of an error which is
different than how bt_l2cap_send_cb works as it does always unref in
case of an error.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-04-13 16:21:25 -04:00
Luiz Augusto von Dentz
9d2d1a208a Bluetooth: ATT: Fix crash if bt_l2cap_send_cb fails
This fixes a regression introduced by
10841b9a14 as it did remove a call to
net_buf_ref which was used not only to keep a reference for resending
but also to prevent bt_l2cap_send_cb to unref the buffer in case it
fails.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2021-04-13 16:21:25 -04:00
Vinayak Kariappa Chettimada
94cd9dd207 Bluetooth: controller: Remove unused code in auxiliary advertising
Remove unused early prototyping code experimenting with
piggyback of auxiliary PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-04-13 13:02:35 -04:00
Morten Priess
07278fc98f Bluetooth: controller: Guard against race in conn. establishment
In the time between a NODE_RX_TYPE_CONNECTION node is sent from LLL and
demuxed in ULL, an ADV role disable may be executed.
This makes the LLL data referenced in the node NULL/invald, and
ull_conn_setup would operate on invalid data.

This commit introduces a check in ADV disable to disallow the operation
(including conn invalidation), if a connection has been initiated.

To prevent pipeline-queued prepares from advertising after disable has
been initiated, set 'cancelled' flag for immediate signalling to LLL.

Signed-off-by: Morten Priess <mtpr@oticon.com>
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-04-13 13:02:35 -04:00
Paul Sokolovsky
471afe5ddc net: sockets: Make NET_SOCKETS_POSIX_NAMES be on by default
Zephyr socket subsystem has come a long way since initial experimental
alternative to internal Zephyr networking API. Its configuration also
mirrors the usual conservative approach, where a user needs to
explicitly enable options to get "more" features. And as an
experimental API, socket subsystem was initially developed as
namespaced API, where all functions/structures are prefixed with
"zsock_", and to get standard names, CONFIG_NET_SOCKETS_POSIX_NAMES
needs to be set (or alternatively, CONFIG_POSIX_API needs to be, which
enabled full POSIX subsys overall).

However, a few years later, sockets are the standard networking API,
and in majority of cases its used under the standard POSIX names.
Necessity to explicitly set an option to achieve this effects, and
confusion which results from it - are just unneeded chores for users.

So, switch CONFIG_NET_SOCKETS_POSIX_NAMES to be on by default (unless
CONFIG_POSIX_API is already defined). It still can be explicitly
disabled if needed (but usecases for that would be peculiar and rare).

Addresses #34165

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
2021-04-13 13:00:53 -04:00
Henry Wang
7d88c3b79d tests: Add missing timestamp_serialize() for Armv8-R aarch64
This commit fixes the build error: "error implementation of
timestamp_serialize() not provided for your CPU target" for
fvp_baser_aemv8r tests.

Signed-off-by: Henry Wang <Henry.Wang@arm.com>
2021-04-13 07:47:44 -04:00
Morten Priess
cc46dee7d0 Bluetooth: controller: LLL refactoring of openisa for API changes
Update openisa LLL to match common LLL changes and make CI pass.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-04-13 12:15:12 +02:00
Morten Priess
772a77718e Bluetooth: controller: Framework for new feature BT_CTLR_JIT_SCHEDULING
This option enables BT_TICKER_SLOT_AGNOSTIC which eliminates
priorities and collision resolving in the ticker.

Event scheduling states are stored in the lll_hdr, and event priority
is passed from LLL implementation, and runtime priority calculated.

LLL implementation decides whether to program radio, start preemption
timer, and/or queue prepare in the prepare pipeline.

Event arbitration is made possible via the common LLL, but not yet
implemented in Nordic LLL.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-04-13 12:15:12 +02:00
Morten Priess
9aaa120abd Bluetooth: controller: Clean up LLL priority
Priority in the legacy stack has been unused and "work in progress" for
some time. With this commit, the priority passing/handling is cleaned
up, preparing for the new JIT scheduling priority handling.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-04-13 12:15:12 +02:00
Morten Priess
7dd5820920 Bluetooth: controller: Move common LLL from vendor file
Split lll_prepare and lll_resume from Nordic LLL to common file for
reuse by all vendors. The split also supports new JIT Scheduling by
defining a common place to calculate event prepare priority.

The module may also house other common parts of the LLL currently
re-implemented identically by vendors.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-04-13 12:15:12 +02:00
Morten Priess
385f232ae2 Bluetooth: controller: Propagate ticker force to ULL
The ticker 'force' flag is propagated via the ticker elapsed callback,
in order to provide necessary information for collision resolving in the
link layer.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-04-13 12:15:12 +02:00
Morten Priess
9f82034245 Bluetooth: controller: Introducing slot agnostic ticker
Added config BT_TICKER_SLOT_AGNOSTIC which configures the ticker in
a "slot agnostic" mode, in which no collision resolving or slot
reservation is possible or used. In this mode, the ticker acts as a
simple timer.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-04-13 12:15:12 +02:00
Morten Priess
4277af8f55 Bluetooth: controller: Rename BT_TICKER_COMPATIBILITY_MODE
Renamed to BT_TICKER_LOW_LAT in ticker, and changed selected
conditionally compiled code to use IS_DEFINED macro.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-04-13 12:15:12 +02:00
Robert Lubos
1a69317eea shell: telnet: Make sure the delayed work becomes idle after canceling
Replace k_work_cancel_delayable() with k_work_cancel_delayable_sync()
to make sure that the submitted work becomes idle before accessing
sensitive data.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2021-04-12 11:47:24 -04:00
Robert Lubos
501c7d17b0 shell: telnet: Update to the new k_work API
Update the shell telnet backend to use the new k_work_delayable API.

Fixes #34100

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2021-04-12 11:47:24 -04:00
Emil Gydesen
2016509756 Bluetooth: Audio: Audio Input Control Service and client
This commit implements the secondary service
Audio Input Control Service (AICS) server and client.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-12 11:47:00 -04:00
Eduardo Montoya
1d668d4b7c net: openthread: add microseconds timer API
Add OpenThread API to handle microseconds timer, to be used initially
by CSL receiver.

Signed-off-by: Eduardo Montoya <eduardo.montoya@nordicsemi.no>
2021-04-12 17:01:14 +03:00
Flavio Ceolin
d0dac69fa9 logging: Fix 10.4 violations
Both operands of an operator in which the usual arithmetic
conversions are performed shall have the same essential
type category.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-04-10 09:59:37 -04:00
Vinayak Kariappa Chettimada
661991405b Bluetooth: controller: Move LLL done handling from ULL to LLL
Move the LLL done event handling from ULL to LLL, this
reduces CPU utilization and reduces overhead between radio
events.

Fixes #21993.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-04-09 11:55:29 -04:00
Vinayak Kariappa Chettimada
5be2149c48 Bluetooth: controller: Defer event early abort
Defer the event early abort so that lll_done does not get
recursively invoked when called inside prepare callback.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-04-09 11:55:29 -04:00
Vinayak Kariappa Chettimada
27c26eb1e7 Bluetooth: controller: Fix LLL done and pipeline enqueue race
There is a race between the pipeline enqueue by the ULL
context when processing the LLL done event, and the
pipeline queue by the ticker timeout for a new radio
event. This caused an already enqueued event prepare to be
placed after the newly arrived request to enqueue a prepare
by ticker timeout.

Fix this race by placing the new prepare in the pipeline
instead of starting the event, when ULL is still processing
the LLL done event.

As ticker timeout and ULL processing of LLL done event are
in the same ULL_HIGH context, the pipeline handling is safe
with the order of prepares maintained correctly.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-04-09 11:55:29 -04:00
Michał Narajowski
f62a40beb6 Bluetooth: Fix callback handling in ECC Public Key generation
Commit d6c34c4644 changed the behavior
slightly but didn't update the documentation. The callback will now be
reset to NULL once the key is generated. Calling bt_pub_key_gen()
multiple times before the key is finished would result in creation of an
infinite loop. This could happen when an application calls mesh_init()
and mesh_reset() in quick succession. Clarify the behavior of the API in
the documentation.

Also passing a NULL argument would result in an undefined behavior, so
add a check to match the behavior described in documentation.

Signed-off-by: Michał Narajowski <michal.narajowski@codecoup.pl>
2021-04-09 13:27:24 +02:00
Emil Gydesen
42da370df5 Bluetooth: Use ATT FIRST/LAST attribute handle defines where applicable
Change to use the BT_ATT_FIRST_ATTTRIBUTE_HANDLE and
BT_ATT_LAST_ATTTRIBUTE_HANDLE instead of the literal values where
applicable.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-08 16:35:57 +02:00
Emil Gydesen
83396d91e2 Bluetooth: ISO: Fix segmentation fault for disconnecting BIS
The bt_iso_chan_disconnected assumes a CIS, but was
also used for BIS, so whenever it was called it attempted
to get a non-existing ACL connection.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-08 16:35:27 +02:00
Pavel Vasilyev
a94c7e3a23 Bluetooth: Mesh: Introduce acknowledged message API
The implementation of blocking calls is common for all the client
models.

This change reduces the code duplication by introducing new API that
helps to manage acknowledged messages.

Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
2021-04-08 13:44:24 +02:00
Jukka Rissanen
b59f0e5057 log: Align the log_strdup_buf properly
The k_mem_slab_init() calls create_free_list() which checks
the slab block alignment. Noticed with Intel ehl_crb board,
which is 64-bit architecture, that the k_mem_slab_init() fails
because the log_strdup_buf items were not aligned properly.
This commit adds the alignment requirement to log_strdup_buf so
that the elements are alignment properly.

Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2021-04-08 09:57:42 +02:00
Emil Gydesen
477dab13b3 Bluetooth: ISO: Update check for invalid num_bis for BIS events
Updates the check to only log the error if the issue was with
the num_bis and not the status.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 23:23:34 +02:00
Emil Gydesen
c479aa8211 Bluetooth: ISO: Add missinng disconnect reason to big_disconnect
A few calls to big_disconnect was missing the disconnect reason
due to a bad rebase.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 23:23:34 +02:00
Emil Gydesen
55771d36a7 Bluetooth: shell: Add index check for per_adv_sync commands
Adds a check for valid index before accessing the per_adv_syncs
array.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 14:17:34 +02:00
Emil Gydesen
49bf124bf6 Bluetooth: shell: Fix null check in cmd_per_adv_sync_delete
The check for NULL was on the pointer to the pointer,
rather than the pointer. The pointer of the pointer would
always be non-null, but the pointer might not be.

Moved from using a pointer of a pointer to just a
pointer to make it easier to read and understand.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 14:17:34 +02:00
Emil Gydesen
026da2df03 Bluetooth: host: Add ISO disconnect reason
Adds a disconnect reason in the ISO disconnect callback.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 14:16:54 +02:00
Emil Gydesen
62ba4f325c Bluetooth: host: Fixed bt_le_per_adv_sync interval unit decription
Changed from 1.25MS to 1.25 ms to be consistent with other
unit decriptions.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 14:16:46 +02:00
Emil Gydesen
5a1afaa47a Bluetooth: host: Add functions for periodic adv sync objects
Adds two functions:
1) Lookup periodic adv sync object by address
2) Get information about a periodic adv sync object.

These can be useful for the application verify if there is already an
existing sync to an periodic advertiser.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-04-07 14:16:46 +02:00
Martin Jäger
962e361e54 canbus: isotp: prevent race-condition during debugging
During debugging I got "Got unexpected PDU" errors because a new CF was
received before the state was set to ISOTP_TX_WAIT_FC in the send state
machine. Setting the state before printing the debug information fixes
the issue.

Signed-off-by: Martin Jäger <martin@libre.solar>
2021-04-06 16:44:34 -04:00
Martin Jäger
0c8cb0586a canbus: isotp: add fixed addressing feature
Fixed addressing as specified in ISO 15765-2 encodes the source and
target address of a device or function inside the CAN ID according to
SAE J1939.

In order to allow to receive incoming requests from different nodes,
the CAN filter mask has to be set such that the source address is
ignored in the receive context. In addition to that, flow control
frames have to be sent back to the actual source of the request, which
requires adjustments to the TX CAN ID.

This commit implements above features and thus allows ISO-TP to be
used in a network based on SAE J1939 or NMEA-2000.

Signed-off-by: Martin Jäger <martin@libre.solar>
2021-04-06 16:44:34 -04:00
Martin Jäger
f5496147b5 canbus: isotp: allow frames with padding
ISO 15765-2 specifies that the CAN frame length for single frames and
the last consecutive frame may or may not be optimized to the actual
length of the PDU payload. The ISO-TP implementation should only
consider the information from the N_PCI section.

The previous implementation did not allow padding. With this commit,
padding is allowed by default and can even be required to be more
compliant to AUTOSAR standards.

Signed-off-by: Martin Jäger <martin@libre.solar>
2021-04-06 16:44:34 -04:00
Martin Jäger
ade6cc4a71 canbus: isotp: fix asserts to check rx and tx addr
Previous implementation contained a typo so that only the rx address
was checked.

Signed-off-by: Martin Jäger <martin@libre.solar>
2021-04-06 16:44:34 -04:00
Daniel Leung
1559712b22 timing: add kconfig CONFIG_TIMING_FUNCTIONS_NEED_AT_BOOT
This adds a new kconfig CONFIG_TIMING_FUNCTIONS_NEED_AT_BOOT so
that the timing subsystem can be initialized at boot, instead of
being #ifdef under thread runtime statistics. This will allow
other part of kernel and other subsystems to utilize the timing
functions.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-04-06 16:43:55 -04:00
Joakim Andersson
9f7061a83d Bluetooth: host: Add discovery of standard descriptor values
Add discovery of standard descriptor values. This provides a shorthand
instead of doing a read by UUID, allowing the application discovery
procedure to re-use the discover parameters for simple descriptors.

Fixes: #21489

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2021-04-06 10:50:18 -04:00
Flavio Ceolin
8153666a27 logging: Fix 14.4 guideline violation
The controlling expression of an if statement has to be an
essentially boolean type.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-04-06 10:25:24 -04:00
Trond Einar Snekvik
b84fee5190 Bluetooth: Mesh: Composition data page 0 traversal
Adds a parsing mechanism for Composition data page 0 in the Config
Client API, and uses it in the shell module to parse the incoming
composition data.

Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
2021-04-06 16:19:13 +03:00
Trond Einar Snekvik
9259b199bb Bluetooth: Mesh: Rename bt_mesh_cfg_comp_data_get's status param to rsp
The first byte of the composition data status message is the returned
page index, not the status of the request. This is now reflected in the
API.

Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
2021-04-06 16:19:13 +03:00
Vinayak Kariappa Chettimada
470e9fdd5c Bluetooth: controller: Fix minor typo in Periodic Sync PHY
Fix minor typo in Periodic Advertising Sync implementation
when PA/LNA is enabled.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-04-06 13:52:14 +02:00
Vinayak Kariappa Chettimada
6ae93e62f0 Bluetooth: controller: Trivial peripheral ISO code cleanup
Trivial peripheral ISO code cleanup.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-04-06 13:51:56 +02:00
Morten Priess
07d4ba5917 Bluetooth: controller: Fix ISO CI tests
Make bluetooth.init tests for nRF platform pass again by adding ULL/LLL
stub functions, and fixing minor compile issues.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2021-04-06 13:51:56 +02:00