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>
This commit is contained in:
Morten Priess 2021-02-19 13:26:32 +01:00 committed by Anas Nashif
commit 96a13712ad
10 changed files with 520 additions and 14 deletions

View file

@ -46,6 +46,7 @@
#include "ll_sw/ull_scan_types.h"
#include "ll_sw/ull_sync_types.h"
#include "ll_sw/ull_conn_types.h"
#include "ll_sw/ull_conn_internal.h"
#include "ll_sw/ull_conn_iso_types.h"
#include "ll.h"
@ -3207,7 +3208,7 @@ static void le_cis_established(struct pdu_data *pdu_data,
cis = node_rx->hdr.rx_ftr.param;
cig = cis->group;
lll_cis = &cis->lll;
is_central = lll_cis->conn->role == BT_CONN_ROLE_MASTER;
is_central = cig->lll.role == BT_CONN_ROLE_MASTER;
lll_cis_c = is_central ? &lll_cis->tx : &lll_cis->rx;
lll_cis_p = is_central ? &lll_cis->rx : &lll_cis->tx;
est = (void *)pdu_data;