@@ -76,7 +76,9 @@ struct ll_adv_set *common_create_adv_set(uint8_t hci_handle)
76
76
*/
77
77
lll_sync = & g_sync_set .lll ;
78
78
adv_set -> lll .sync = & g_sync_set .lll ;
79
+ lll_hdr_init (& adv_set -> lll , adv_set );
79
80
g_sync_set .lll .adv = & adv_set -> lll ;
81
+ lll_hdr_init (lll_sync , & g_sync_set );
80
82
81
83
err = lll_adv_init ();
82
84
zassert_equal (err , 0 , "Unexpected error while initialization advertising set, err: %d" ,
@@ -137,6 +139,7 @@ void common_create_per_adv_chain(struct ll_adv_set *adv_set, uint8_t pdu_count)
137
139
char pdu_buff [PDU_PAULOAD_BUFF_SIZE ];
138
140
void * extra_data_prev , * extra_data ;
139
141
struct lll_adv_sync * lll_sync ;
142
+ bool adi_in_sync_ind ;
140
143
uint8_t err , pdu_idx ;
141
144
142
145
lll_sync = adv_set -> lll .sync ;
@@ -153,11 +156,16 @@ void common_create_per_adv_chain(struct ll_adv_set *adv_set, uint8_t pdu_count)
153
156
154
157
/* Create AUX_SYNC_IND PDU as a head of chain */
155
158
err = ull_adv_sync_pdu_set_clear (lll_sync , pdu_prev , pdu ,
156
- (pdu_count > 1 ? ULL_ADV_PDU_HDR_FIELD_AUX_PTR : 0 ), 0 ,
157
- NULL );
159
+ (pdu_count > 1 ? ULL_ADV_PDU_HDR_FIELD_AUX_PTR :
160
+ ULL_ADV_PDU_HDR_FIELD_NONE ),
161
+ ULL_ADV_PDU_HDR_FIELD_NONE , NULL );
158
162
zassert_equal (err , 0 , "Unexpected error during initialization of extended PDU, err: %d" ,
159
163
err );
160
164
165
+ if (IS_ENABLED (CONFIG_BT_CTLR_ADV_PERIODIC_ADI_SUPPORT )) {
166
+ adi_in_sync_ind = ull_adv_sync_pdu_had_adi (pdu );
167
+ }
168
+
161
169
/* Add some AD for testing */
162
170
snprintf (pdu_buff , ARRAY_SIZE (pdu_buff ), "test%" PRIu8 " test%" PRIu8 " test%" PRIu8 "" , 0 ,
163
171
0 , 0 );
@@ -171,9 +179,20 @@ void common_create_per_adv_chain(struct ll_adv_set *adv_set, uint8_t pdu_count)
171
179
zassert_not_null (pdu_new , "Cannot allocate new PDU." );
172
180
/* Initialize new empty PDU. Last AUX_CHAIN_IND may not include AuxPtr. */
173
181
if (idx < pdu_count - 1 ) {
174
- ull_adv_sync_pdu_init (pdu_new , ULL_ADV_PDU_HDR_FIELD_AUX_PTR );
182
+ if (IS_ENABLED (CONFIG_BT_CTLR_ADV_PERIODIC_ADI_SUPPORT ) &&
183
+ adi_in_sync_ind ) {
184
+ ull_adv_sync_pdu_init (pdu_new , ULL_ADV_PDU_HDR_FIELD_AUX_PTR |
185
+ ULL_ADV_PDU_HDR_FIELD_ADI );
186
+ } else {
187
+ ull_adv_sync_pdu_init (pdu_new , ULL_ADV_PDU_HDR_FIELD_AUX_PTR );
188
+ }
175
189
} else {
176
- ull_adv_sync_pdu_init (pdu_new , 0 );
190
+ if (IS_ENABLED (CONFIG_BT_CTLR_ADV_PERIODIC_ADI_SUPPORT ) &&
191
+ adi_in_sync_ind ) {
192
+ ull_adv_sync_pdu_init (pdu_new , ULL_ADV_PDU_HDR_FIELD_ADI );
193
+ } else {
194
+ ull_adv_sync_pdu_init (pdu_new , ULL_ADV_PDU_HDR_FIELD_NONE );
195
+ }
177
196
}
178
197
/* Add some AD for testing */
179
198
common_pdu_adv_data_set (pdu_new , pdu_buff , strlen (pdu_buff ));
@@ -246,14 +265,6 @@ void common_validate_per_adv_pdu(struct pdu_adv *pdu, enum test_pdu_ext_adv_type
246
265
"Unexpected AdvA field in extended advertising header" );
247
266
zassert_false (ext_hdr -> tgt_addr ,
248
267
"Unexpected TargetA field in extended advertising header" );
249
- if (type == TEST_PDU_EXT_ADV_SYNC_IND ) {
250
- zassert_false (
251
- ext_hdr -> adi ,
252
- "Unexpected ADI field in extended advertising header" );
253
- }
254
- zassert_false (ext_hdr -> sync_info ,
255
- "Unexpected SyncInfo field in extended advertising header" );
256
-
257
268
if (exp_ext_hdr_flags & ULL_ADV_PDU_HDR_FIELD_CTE_INFO ) {
258
269
zassert_true (
259
270
ext_hdr -> cte_info ,
@@ -264,8 +275,7 @@ void common_validate_per_adv_pdu(struct pdu_adv *pdu, enum test_pdu_ext_adv_type
264
275
ext_hdr -> cte_info ,
265
276
"Unexpected CteInfo field in extended advertising header" );
266
277
}
267
- if (type == TEST_PDU_EXT_ADV_SYNC_IND &&
268
- (exp_ext_hdr_flags & ULL_ADV_PDU_HDR_FIELD_ADI )) {
278
+ if (exp_ext_hdr_flags & ULL_ADV_PDU_HDR_FIELD_ADI ) {
269
279
zassert_true (
270
280
ext_hdr -> adi ,
271
281
"Missing expected ADI field in extended advertising header" );
@@ -285,6 +295,8 @@ void common_validate_per_adv_pdu(struct pdu_adv *pdu, enum test_pdu_ext_adv_type
285
295
ext_hdr -> aux_ptr ,
286
296
"Unexpected AuxPtr field in extended advertising header" );
287
297
}
298
+ zassert_false (ext_hdr -> sync_info ,
299
+ "Unexpected SyncInfo field in extended advertising header" );
288
300
if (exp_ext_hdr_flags & ULL_ADV_PDU_HDR_FIELD_TX_POWER ) {
289
301
zassert_true (
290
302
ext_hdr -> tx_pwr ,
@@ -361,6 +373,11 @@ void common_validate_per_adv_chain(struct ll_adv_set *adv, uint8_t pdu_count)
361
373
} else {
362
374
ext_hdr_flags = ULL_ADV_PDU_HDR_FIELD_AD_DATA ;
363
375
}
376
+
377
+ if (IS_ENABLED (CONFIG_BT_CTLR_ADV_PERIODIC_ADI_SUPPORT )) {
378
+ ext_hdr_flags |= ULL_ADV_PDU_HDR_FIELD_ADI ;
379
+ }
380
+
364
381
common_validate_per_adv_pdu (pdu , TEST_PDU_EXT_ADV_SYNC_IND , ext_hdr_flags );
365
382
pdu = lll_adv_pdu_linked_next_get (pdu );
366
383
if (pdu_count > 1 ) {
@@ -378,6 +395,11 @@ void common_validate_per_adv_chain(struct ll_adv_set *adv, uint8_t pdu_count)
378
395
} else {
379
396
ext_hdr_flags = ULL_ADV_PDU_HDR_FIELD_AD_DATA ;
380
397
}
398
+
399
+ if (IS_ENABLED (CONFIG_BT_CTLR_ADV_PERIODIC_ADI_SUPPORT )) {
400
+ ext_hdr_flags |= ULL_ADV_PDU_HDR_FIELD_ADI ;
401
+ }
402
+
381
403
common_validate_per_adv_pdu (pdu , TEST_PDU_EXT_ADV_CHAIN_IND , ext_hdr_flags );
382
404
pdu = lll_adv_pdu_linked_next_get (pdu );
383
405
if (idx != (pdu_count - 1 )) {
@@ -417,6 +439,11 @@ void common_validate_chain_with_cte(struct ll_adv_set *adv, uint8_t cte_count,
417
439
if (ad_data_pdu_count > 0 ) {
418
440
ext_hdr_flags |= ULL_ADV_PDU_HDR_FIELD_AD_DATA ;
419
441
}
442
+
443
+ if (IS_ENABLED (CONFIG_BT_CTLR_ADV_PERIODIC_ADI_SUPPORT )) {
444
+ ext_hdr_flags |= ULL_ADV_PDU_HDR_FIELD_ADI ;
445
+ }
446
+
420
447
common_validate_per_adv_pdu (pdu , TEST_PDU_EXT_ADV_SYNC_IND , ext_hdr_flags );
421
448
422
449
pdu_count = MAX (cte_count , ad_data_pdu_count );
@@ -440,6 +467,11 @@ void common_validate_chain_with_cte(struct ll_adv_set *adv, uint8_t cte_count,
440
467
if (idx < ad_data_pdu_count ) {
441
468
ext_hdr_flags |= ULL_ADV_PDU_HDR_FIELD_AD_DATA ;
442
469
}
470
+
471
+ if (IS_ENABLED (CONFIG_BT_CTLR_ADV_PERIODIC_ADI_SUPPORT )) {
472
+ ext_hdr_flags |= ULL_ADV_PDU_HDR_FIELD_ADI ;
473
+ }
474
+
443
475
common_validate_per_adv_pdu (pdu , TEST_PDU_EXT_ADV_CHAIN_IND , ext_hdr_flags );
444
476
445
477
pdu = lll_adv_pdu_linked_next_get (pdu );
0 commit comments