Commit graph

10,339 commits

Author SHA1 Message Date
Vinayak Kariappa Chettimada
0d6fbb4fef Bluetooth: controller: Fix BigInfo with correct payload count
Fix Broadcast ISO BigInfo structure to be filled with
correct payload counter value considering accumulated
latency and ticker lazy value.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
8d5cd41472 Bluetooth: controller: Fix missing EVENT_TICKER_RES_MARGIN_US
Fix missing use of EVENT_TICKER_RES_MARGIN_US in Periodic
Synchronization and Synchronized Receiver implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
4d29191bf8 Bluetooth: controller: Fix ISO to advertising context association order
Fix the order in which the ISO context is associated with
the Periodic Advertising and Extended Advertising context.
This is done so that the Periodic Advertising does not try
to calculate offset to BIG event before the BIG event is
scheduled by ticker.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
4149e391ae Bluetooth: controller: Use the CSA#2 function for SubEvents
Use the CSA#2 functions for SubEvent channel selection.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
46e9679c5e Bluetooth: controller: Add function to calculate BIS access address
Added a function to calculate the BIS SubEvent access
addresses.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
aa11d9cac0 Bluetooth: controller: Add the BIG terminate event generation
Add the BIG terminate event generation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
aff7d83149 Bluetooth: controller: Fix BIG complete event generation
Fix the LE BIG complete event generation to not use the
Sync Established structure to access the status value.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
b8a919be7b Bluetooth: controller: Fix BIG Sync Lost event generation
Fix the BIG Sync Lost event generation to not use the Sync
Established structure to access the reason value.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
919a184172 Bluetooth: controller: Add missing BIG Sync Estab and Lost reason
Added missing LE BIG Sync Established status and LE BIG Sync
Lost reason.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
5eb2892e11 Bluetooth: controller: Fix LE BIG Sync Terminate command response
Fix Fix LE BIG Sync Terminate command response which was not
returning the BIG handle.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
56fb23fb74 Bluetooth: controller: Update BIG Terminate Sync implementation
Minor update to BIG Terminate Sync implementation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
eb4e81b918 Bluetooth: controller: Implement the BIG sync establish and lost
Implement the HCI LE BIG Sync Established event and HCI LE
BIG Sync Lost event.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
07bb9b1858 Bluetooth: controller: Fill BIS Payload Count in BIGInfo struct
Fill BIS Payload Count in the BIGInfo struct in the Periodic
Advertising PDU.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
4c06840269 Bluetooth: controller: Fix Adv ISO start ticker user context
Fix the Broadcast ISO ticker start caller context.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
a2153baa81 Bluetooth: controller: Handle Sync ISO notifications
Handle BIG Sync notifications in the HCI layer.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
0ea0f03bc9 Bluetooth: controller: BIG Create Sync LLL implementation
Implementation of BIG Create Sync in LLL. Generation of
LE BIG Sync Established event and LE BIG Sync Lost event
notifications from the controller.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
c4cb0ce92d Bluetooth: controller: Initial BIG Create Sync implementation
Added initial implementation for BIG Create Sync.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
0cb8517e20 Bluetooth: controller: Added BIGInfo Advertising Report generation
Added experimental support to generate BIGInfo Advertising
Report.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
20af5d524e Bluetooth: controller: Add create BIG complete event
Added implementation to generate the Create BIG Complete
event after the first empty BIS PDU has been transmitted.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
fdec0f593a Bluetooth: controller: Fix populate offset in latest advertising PDU
Fix implementation to populate the aux, sync and ISO offset
in the latest PDU. If both the current and latest of the
double buffer has been filled and LLL did not pick the
latest PDU, then the offset should be filled into the latest
PDU (and not into the first/current PDU).

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
c5bede254a Bluetooth: Controller: Fix missing traversal of ADI to find BIGInfo
Fix missing traversal of ADI field in advertised Common
Extended Payload Format. This will cause invalid offset used
for other fields and BigInfo field following the ADI when
Periodic Advertising ADI feature is supported.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
acd3ccca6a Bluetooth: Controller: Fix missing traversal of CTEInfo to find BIGInfo
Fix missing traversal of CTEInfo field in advertised Common
Extended Payload Format. This will cause invalid offset used
for other fields and BigInfo field following the CTE Info
when Extended Directed Advertising is used.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
2b921f1977 Bluetooth: controller: Added BIS event with empty PDU
Added implementation to fill the BIG Offset, calculate the
BIS Access Address and CRC init, scheduling and transmission
of BIS empty PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
699a2ec730 Bluetooth: controller: Fix ticker user id used to terminate BIG
Fix incorrect ticker user id used to terminate BIG events.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
c06028fa67 Bluetooth: controller: Refactoring of BIS data members
Refactored Broadcast ISO related data members across ULL and
LLL contexts.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
71e15176e1 Bluetooth: controller: BIGInfo in ACAD with mandatory parameters
Construction of BIGInfo with mandatory parameters and
placing it in the ACAD of Periodic Advertising PDU.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
ac431f598f Bluetooth: controller: Fix pdu_big_info structure
Fix pdu_big_info structure for the incorrect definitions of
GIV and GSKD data members.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
b0d8a738c5 Bluetooth: controller: Add Broadcast ISO Sync and Sync Lost release
Add implementation to release Broadcast ISO Sync, Sync Lost
event and ISO instance allocations.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
b81d5595d3 Bluetooth: controller: Add data members related to ISO sync loss
Add data members related to implementing the Broadcast ISO
Sync Lost event generation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Vinayak Kariappa Chettimada
3d85babf65 Bluetooth: controller: Rename ll_adv_iso and ll_sync_iso
Rename ll_adv_iso and ll_sync_iso structs to ll_adv_iso_set
and ll_sync_iso_set.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-18 16:48:47 +01:00
Piotr Pryga
ea1340acd3 Bluetooth: host: Add handling of failures in per sync established evt
Handling of HCI_LE_Periodic_Advertising_Sync_Established didn't
have implemented handling of possible failures of periodic
advertising synchronization.
There are two situations definded by BT 5.3 Core spec:
- There is no AUX_SYNC_IND pdu within 6 periodic advertising events.
  If that happens, status of the command is set to (0x3E) Connection
  Failed To Be Established / Synchronization Timeout.
- Periodic advertising has wrong CTE type while periodic advertising
  list is not used to determine the advertiser to listen.
  In this case status of the command is set to (0x1A) Unsupported
  Remote Feature.

The commit provides missing functionality.
In case of error, the periodic advertising will be deleted and
application will be notified by call to terminated callback.
The callback data were extended by err member. It provides
information why periodic advertising was terminated.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-11-18 17:12:22 +02:00
Martin Tverdal
0d4f685dbd Bluetooth: Host: avoid runtime warning in bt_enable
Avoid runtime warning in bt_enable when CONFIG_BT_SETTINGS
and CONFIG_BT_DEVICE_NAME_DYNAMIC is not set.
This warning was intoroduced in
commit d76bba4b5e
("Bluetooth: host: Device name handling of invalid length")

Signed-off-by: Martin Tverdal <martin.tverdal@nordicsemi.no>
2021-11-17 12:40:20 +01:00
Andries Kruithof
f023b5f611 Bluetooth: controller: push topic branch to main
Pushes all work done in the topic-ble-llcp branch into main branch
This is a refactoring of the LL control procedures; the refactored
control procedures are hidden behind a KConfig option and
per default disabled

Goal of the refactoring:

close issue Link Layer Control Procedure overhaul #15256
make it easier to add/update control procedures
Refactoring consists in principal of writing explicit state machines
for the control procedures.
To reduce the risk of regression errors unit-tests have been added

Following control procedures are implemented:

Connection update procedure
Channel map update procedure
Encryption procedure
Feature exchange procedure
Version exchange procedure
ACL termination procedure
Connection parameters request procedure
LE Ping procedure
Data Length Update procedure
PHY update procedure
Min. nr. Of channels used procedure
Constant Tone extension request procedure

This is a joined work by the people listed in the signed-off-by
list (in alphabetical order)

Signed-off-by: Andries Kruithof Andries.Kruithof@nordicsemi.no
Signed-off-by: Erik Brockhoff erbr@oticon.com
Signed-off-by: Piotr Pryga piotr.pryga@nordicsemi.no
Signed-off-by: Szymon Janc szymon.janc@codecoup.pl
Signed-off-by: Thomas Ebert Hansen thoh@oticon.com
Signed-off-by: Tommie Skriver tosk@demant.com

Signed-off-by: Andries Kruithof <Andries.Kruithof@nordicsemi.no>
2021-11-16 21:24:37 -05:00
Vinayak Kariappa Chettimada
e07af1fa08 Bluetooth: Controller: Fix Periodic Sync Failed to be Established
Fix Periodic Advertising Synchronize implementation to
generate Synchronization Failed to be Established event
when 6 AUX_SYNC_IND PDUs are not received when establishing
synchronization.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-16 12:12:56 +01:00
Vinayak Kariappa Chettimada
f9ac97336d Bluetooth: Controller: Rename ticker operation callbacks
Rename ticker operation callback suitably to reflect their
purpose.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-16 12:12:56 +01:00
Vinayak Kariappa Chettimada
c025e07557 Bluetooth: Controller: Fix DTM HCI command returned error codes
Fix DTM HCI command returned error codes.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-16 10:42:38 +01:00
Vinayak Kariappa Chettimada
ee40950282 Bluetooth: Controller: Fix missing DTM Tx/Rx reset on HCI Reset Command
Fix missing implementation to reset DTM Tx/Rx reset on HCI
Reset Command.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-11-16 10:42:38 +01:00
Emil Gydesen
c8f08c9e94 Bluetooth: ISO: Update loop variables types in iso.c
Some of the loop variables used `int` where it
makes more sense to use `size_t` or `uint8_t`.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-11-15 14:39:59 -05:00
Emil Gydesen
db29cea01c Bluetooth: ISO: Add CIG state machine
Add a state to the bt_iso_cig struct. This makes
checks for the CIG state easier, and follows the
state machine in the core spec.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-11-15 14:39:59 -05:00
Emil Gydesen
65620363e3 Bluetooth: ISO: Add CIG reconfigure function
Add function to reconfigure and even add additional
CIS to a CIG.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-11-15 14:39:59 -05:00
Emil Gydesen
be1912b66a Bluetooth: ISO: Move validation of CIG parameters to function
Move the validation of specific CIG parameters to its
own function. This is mainly to be able to reuse it for
validationg CIG refconfiguration parameters.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-11-15 14:39:59 -05:00
Emil Gydesen
19c032ed78 Bluetooth: ISO: Rename bt_iso_cig_create_param
Renames the struct from bt_iso_cig_create_param to
bt_iso_cig_param as the same struct can, without
modification, be used to update the CIG as well
(function to support that will come in a later commit).

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-11-15 14:39:59 -05:00
Emil Gydesen
3f345132e0 Bluetooth: ISO: Move cis/bis param checks to earlier
Move the verification of the individual cis/bis checks to
an earlier point, because we actually start allocating
resources for the groups.

This removes a double check for NULL, while also
allows us to terminate earlier if there were any
issues.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-11-15 14:39:59 -05:00
Emil Gydesen
2b58a94ab2 Bluetooth: ISO: Rename cis/bis in cig/big to cis/bis channels
Rename the field in the struct to x_channels to make
it more clear what the field represents.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-11-15 14:39:59 -05:00
Emil Gydesen
ba0a053f94 Bluetooth: ISO: Change CIG/BIG to use slist instead of array
A CIG may be updated later to include more CIS, and thus a slist
makes more sense.

The BIG doesn't need the change, but it makes more sense to
have similar handling for both.

This change also removes the requirement that the arrays
used to create the CIG/BIG need to static.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2021-11-15 14:39:59 -05:00
Adhipta Putra
2d9a4d13c0 Bluetooth: Controller: Updated code indent to use tabs
Replacing spaces code indent

Signed-off-by: Adhipta Putra <adhipta.putra@nordicsemi.no>
2021-11-15 14:39:43 -05:00
Adhipta Putra
f3654fc4f9 Bluetooth: Controller: Added PDU_CRC_POLYNOMIAL
Replacing RADIO_CRC_POLYNOMIAL

Signed-off-by: Adhipta Putra <adhipta.putra@nordicsemi.no>
2021-11-15 14:39:43 -05:00
Adhipta Putra
8a9711b48f Bluetooth: Controller: Use sys_get_le24 to fetch 24-bit data
Use sys_get_le24 to pass crc init value input

Signed-off-by: Adhipta Putra <adhipta.putra@nordicsemi.no>
2021-11-15 14:39:43 -05:00
Christopher Friedt
6735f11bac Bluetooth: Audio: otc: update print format specifier for atomics
Atomics changed from `int` to `long` and print format specifiers
must be updated as well.

Signed-off-by: Christopher Friedt <chrisfriedt@gmail.com>
2021-11-15 09:59:01 -05:00
Christopher Friedt
3e86c627f7 kernel: atomics: update print specifiers for atomic_t
The print specifier for `atomic_t` should be updated
to `%ld`, `%lu`, or `%lx` to account for the type
change of `atomic_t` to `long`.

Signed-off-by: Christopher Friedt <chrisfriedt@gmail.com>
2021-11-15 09:59:01 -05:00