@@ -92,23 +92,12 @@ int lll_central_iso_reset(void)
92
92
93
93
void lll_central_iso_prepare (void * param )
94
94
{
95
- struct lll_conn_iso_group * cig_lll ;
96
- struct lll_prepare_param * p ;
97
- uint16_t elapsed ;
98
95
int err ;
99
96
100
97
/* Initiate HF clock start up */
101
98
err = lll_hfclock_on ();
102
99
LL_ASSERT (err >= 0 );
103
100
104
- /* Instants elapsed */
105
- p = param ;
106
- elapsed = p -> lazy + 1U ;
107
-
108
- /* Save the (latency + 1) for use in event and/or supervision timeout */
109
- cig_lll = p -> param ;
110
- cig_lll -> latency_prepare += elapsed ;
111
-
112
101
/* Invoke common pipeline handling of prepare */
113
102
err = lll_prepare (lll_is_abort_cb , abort_cb , prepare_cb , 0U , param );
114
103
LL_ASSERT (!err || err == - EINPROGRESS );
@@ -135,7 +124,6 @@ static int prepare_cb(struct lll_prepare_param *p)
135
124
struct ull_hdr * ull ;
136
125
uint32_t remainder ;
137
126
uint32_t start_us ;
138
- uint16_t lazy ;
139
127
uint32_t ret ;
140
128
uint8_t phy ;
141
129
int err = 0 ;
@@ -173,9 +161,9 @@ static int prepare_cb(struct lll_prepare_param *p)
173
161
& data_chan_prn_s ,
174
162
& data_chan_remap_idx );
175
163
176
- /* Store the current event latency */
177
- cig_lll -> latency_event = cig_lll -> latency_prepare ;
178
- lazy = cig_lll -> latency_prepare - 1U ;
164
+ /* Calculate the current event latency */
165
+ cig_lll -> lazy_prepare = p -> lazy ;
166
+ cig_lll -> latency_event = cig_lll -> latency_prepare + cig_lll -> lazy_prepare ;
179
167
180
168
/* Reset accumulated latencies */
181
169
cig_lll -> latency_prepare = 0U ;
@@ -395,13 +383,13 @@ static int prepare_cb(struct lll_prepare_param *p)
395
383
396
384
static void abort_cb (struct lll_prepare_param * prepare_param , void * param )
397
385
{
386
+ struct lll_conn_iso_group * cig_lll ;
398
387
int err ;
399
388
400
389
/* NOTE: This is not a prepare being cancelled */
401
390
if (!prepare_param ) {
402
391
struct lll_conn_iso_stream * next_cis_lll ;
403
392
struct lll_conn_iso_stream * cis_lll ;
404
- struct lll_conn_iso_group * cig_lll ;
405
393
406
394
cis_lll = ull_conn_iso_lll_stream_get (cis_handle_curr );
407
395
cig_lll = param ;
@@ -431,6 +419,13 @@ static void abort_cb(struct lll_prepare_param *prepare_param, void *param)
431
419
err = lll_hfclock_off ();
432
420
LL_ASSERT (err >= 0 );
433
421
422
+ /* Get reference to CIG LLL context */
423
+ cig_lll = prepare_param -> param ;
424
+
425
+ /* Accumulate the latency as event is aborted while being in pipeline */
426
+ cig_lll -> lazy_prepare = prepare_param -> lazy ;
427
+ cig_lll -> latency_prepare += (cig_lll -> lazy_prepare + 1U );
428
+
434
429
lll_done (param );
435
430
}
436
431
0 commit comments