@@ -296,15 +296,19 @@ static void iso_recv(struct bt_iso_chan *chan, const struct bt_iso_recv_info *in
296
296
seq_num = sys_get_le32 (buf -> data );
297
297
if (info -> flags & BT_ISO_FLAGS_VALID ) {
298
298
if (seq_num != expected_seq_num [index ]) {
299
- FAIL ("ISO data miss match, expected %u actual %u\n" ,
300
- expected_seq_num [index ], seq_num );
299
+ if (expected_seq_num [index ]) {
300
+ FAIL ("ISO data miss match, expected %u actual %u\n" ,
301
+ expected_seq_num [index ], seq_num );
302
+ }
301
303
expected_seq_num [index ] = seq_num ;
302
304
}
303
305
304
306
expected_seq_num [index ] += 1U ;
305
307
306
- #if defined(CONFIG_TEST_FT_SKIP_SUBEVENTS )
308
+ #if defined(CONFIG_TEST_FT_PER_SKIP_SUBEVENTS )
307
309
expected_seq_num [index ] += ((CONFIG_TEST_FT_PER_SKIP_EVENTS_COUNT - 1U ) * 2U );
310
+ #elif defined(CONFIG_TEST_FT_CEN_SKIP_SUBEVENTS )
311
+ expected_seq_num [index ] += ((CONFIG_TEST_FT_CEN_SKIP_EVENTS_COUNT - 1U ) * 2U );
308
312
#endif
309
313
} else if (expected_seq_num [index ] &&
310
314
expected_seq_num [index ] < SEQ_NUM_MAX ) {
@@ -342,6 +346,7 @@ static struct bt_iso_chan_ops iso_ops = {
342
346
static void test_cis_central (void )
343
347
{
344
348
struct bt_iso_chan_io_qos iso_tx [CONFIG_BT_ISO_MAX_CHAN ];
349
+ struct bt_iso_chan_io_qos iso_rx [CONFIG_BT_ISO_MAX_CHAN ];
345
350
struct bt_iso_chan_qos iso_qos [CONFIG_BT_ISO_MAX_CHAN ];
346
351
struct bt_iso_chan * channels [CONFIG_BT_ISO_MAX_CHAN ];
347
352
struct bt_conn * conn_list [CONFIG_BT_MAX_CONN ];
@@ -372,8 +377,27 @@ static void test_cis_central(void)
372
377
}
373
378
iso_tx [i ].path = NULL ;
374
379
375
- iso_qos [i ].tx = & iso_tx [i ];
376
- iso_qos [i ].rx = NULL ;
380
+ if (!IS_ENABLED (CONFIG_TEST_FT_SKIP_SUBEVENTS ) ||
381
+ IS_ENABLED (CONFIG_TEST_FT_PER_SKIP_SUBEVENTS )) {
382
+ iso_qos [i ].tx = & iso_tx [i ];
383
+ } else {
384
+ iso_qos [i ].tx = NULL ;
385
+ }
386
+
387
+ iso_rx [i ].sdu = CONFIG_BT_ISO_RX_MTU ;
388
+ iso_rx [i ].phy = BT_GAP_LE_PHY_2M ;
389
+ if (IS_ENABLED (CONFIG_TEST_FT_SKIP_SUBEVENTS )) {
390
+ iso_rx [i ].rtn = 2U ;
391
+ } else {
392
+ iso_rx [i ].rtn = 0U ;
393
+ }
394
+ iso_rx [i ].path = NULL ;
395
+
396
+ if (IS_ENABLED (CONFIG_TEST_FT_CEN_SKIP_SUBEVENTS )) {
397
+ iso_qos [i ].rx = & iso_rx [i ];
398
+ } else {
399
+ iso_qos [i ].rx = NULL ;
400
+ }
377
401
378
402
iso_chan [i ].ops = & iso_ops ;
379
403
iso_chan [i ].qos = & iso_qos [i ];
@@ -406,6 +430,12 @@ static void test_cis_central(void)
406
430
407
431
conn_count = 0U ;
408
432
433
+ #if defined(CONFIG_TEST_FT_CEN_SKIP_SUBEVENTS )
434
+ for (uint8_t chan = 0U ; chan < CONFIG_BT_ISO_MAX_CHAN ; chan ++ ) {
435
+ expected_seq_num [chan ] = (CONFIG_TEST_FT_CEN_SKIP_EVENTS_COUNT - 1U ) * 2U ;
436
+ }
437
+ #endif
438
+
409
439
#if !defined(CONFIG_TEST_MULTIPLE_PERIPERAL_CIS )
410
440
for (int i = 0 ; i < CONFIG_BT_MAX_CONN ; i ++ ) {
411
441
#else
@@ -493,6 +523,7 @@ static void test_cis_central(void)
493
523
printk ("connected to peer %d ISO channel.\n" , chan );
494
524
}
495
525
526
+ #if !defined(CONFIG_TEST_FT_SKIP_SUBEVENTS ) || defined(CONFIG_TEST_FT_PER_SKIP_SUBEVENTS )
496
527
for (uint16_t seq_num = 0U ; seq_num < SEQ_NUM_MAX ; seq_num ++ ) {
497
528
498
529
for (uint8_t chan = 0U ; chan < CONFIG_BT_ISO_MAX_CHAN ; chan ++ ) {
@@ -535,6 +566,9 @@ static void test_cis_central(void)
535
566
}
536
567
537
568
k_sleep (K_MSEC (1000 ));
569
+ #else
570
+ k_sleep (K_SECONDS (11 ));
571
+ #endif
538
572
539
573
for (uint8_t chan = 0U ; chan < CONFIG_BT_ISO_MAX_CHAN ; chan ++ ) {
540
574
printk ("ISO disconnect channel %u..." , chan );
@@ -573,6 +607,16 @@ static void test_cis_central(void)
573
607
}
574
608
#endif
575
609
610
+ #if defined(CONFIG_TEST_FT_CEN_SKIP_SUBEVENTS )
611
+ for (uint8_t chan = 0U ; chan < CONFIG_BT_ISO_MAX_CHAN ; chan ++ ) {
612
+ if (expected_seq_num [chan ] < SEQ_NUM_MAX ) {
613
+ FAIL ("ISO Data reception incomplete %u (%u).\n" ,
614
+ expected_seq_num [chan ], SEQ_NUM_MAX );
615
+ return ;
616
+ }
617
+ }
618
+ #endif
619
+
576
620
PASS ("Central ISO tests Passed\n" );
577
621
}
578
622
@@ -613,6 +657,7 @@ static struct bt_iso_server iso_server = {
613
657
614
658
static void test_cis_peripheral (void )
615
659
{
660
+ struct bt_iso_chan_io_qos iso_tx_p [CONFIG_BT_ISO_MAX_CHAN ];
616
661
int err ;
617
662
618
663
printk ("Bluetooth initializing..." );
@@ -624,7 +669,18 @@ static void test_cis_peripheral(void)
624
669
printk ("success.\n" );
625
670
626
671
for (int i = 0 ; i < CONFIG_BT_ISO_MAX_CHAN ; i ++ ) {
627
- iso_rx_p [i ].sdu = CONFIG_BT_ISO_TX_MTU ;
672
+ iso_tx_p [i ].sdu = CONFIG_BT_ISO_TX_MTU ;
673
+ iso_tx_p [i ].phy = BT_GAP_LE_PHY_2M ;
674
+ if (IS_ENABLED (CONFIG_TEST_FT_SKIP_SUBEVENTS )) {
675
+ iso_tx_p [i ].rtn = 2U ;
676
+ } else {
677
+ iso_tx_p [i ].rtn = 0U ;
678
+ }
679
+ iso_tx_p [i ].path = NULL ;
680
+
681
+ iso_qos_p [i ].tx = & iso_tx_p [i ];
682
+
683
+ iso_rx_p [i ].sdu = CONFIG_BT_ISO_RX_MTU ;
628
684
629
685
iso_qos_p [i ].rx = & iso_rx_p [i ];
630
686
@@ -698,7 +754,51 @@ static void test_cis_peripheral(void)
698
754
699
755
#if defined(CONFIG_TEST_MULTIPLE_PERIPERAL_CIS )
700
756
}
757
+ #endif
758
+
759
+ #if defined(CONFIG_TEST_FT_CEN_SKIP_SUBEVENTS )
760
+ for (uint16_t seq_num = 0U ; seq_num < SEQ_NUM_MAX ; seq_num ++ ) {
761
+ for (uint8_t chan = 0U ; chan < CONFIG_BT_ISO_MAX_CHAN ; chan ++ ) {
762
+ uint8_t iso_data [CONFIG_BT_ISO_TX_MTU ] = { 0 , };
763
+ struct net_buf * buf ;
764
+ int ret ;
701
765
766
+ buf = net_buf_alloc (& tx_pool ,
767
+ K_MSEC (BUF_ALLOC_TIMEOUT ));
768
+ if (!buf ) {
769
+ FAIL ("Data buffer allocate timeout on channel"
770
+ " %u\n" , chan );
771
+ return ;
772
+ }
773
+ net_buf_reserve (buf , BT_ISO_CHAN_SEND_RESERVE );
774
+ sys_put_le32 (seq_num , iso_data );
775
+ net_buf_add_mem (buf , iso_data , sizeof (iso_data ));
776
+
777
+ ret = k_sem_take (& sem_iso_data ,
778
+ K_MSEC (BUF_ALLOC_TIMEOUT ));
779
+ if (ret ) {
780
+ FAIL ("k_sem_take for ISO data sent failed.\n" );
781
+ return ;
782
+ }
783
+
784
+ printk ("ISO send: seq_num %u, chan %u\n" , seq_num , chan );
785
+ ret = bt_iso_chan_send (& iso_chan_p [chan ], buf ,
786
+ seq_num , BT_ISO_TIMESTAMP_NONE );
787
+ if (ret < 0 ) {
788
+ FAIL ("Unable to send data on channel %u"
789
+ " : %d\n" , chan , ret );
790
+ net_buf_unref (buf );
791
+ return ;
792
+ }
793
+ }
794
+
795
+ if ((seq_num % 100 ) == 0 ) {
796
+ printk ("Sending value %u\n" , seq_num );
797
+ }
798
+ }
799
+ #endif
800
+
801
+ #if defined(CONFIG_TEST_MULTIPLE_PERIPERAL_CIS )
702
802
for (uint8_t chan = 0U ; chan < CONFIG_BT_ISO_MAX_CHAN ; chan ++ ) {
703
803
#endif
704
804
@@ -722,6 +822,7 @@ static void test_cis_peripheral(void)
722
822
}
723
823
printk ("disconnected from peer device.\n" );
724
824
825
+ #if !defined(CONFIG_TEST_FT_SKIP_SUBEVENTS ) || defined(CONFIG_TEST_FT_PER_SKIP_SUBEVENTS )
725
826
#if defined(CONFIG_TEST_MULTIPLE_PERIPERAL_CIS )
726
827
for (uint8_t chan = 0U ; chan < CONFIG_BT_ISO_MAX_CHAN ; chan ++ ) {
727
828
#else
@@ -734,6 +835,7 @@ static void test_cis_peripheral(void)
734
835
}
735
836
#if defined(CONFIG_TEST_MULTIPLE_PERIPERAL_CIS )
736
837
}
838
+ #endif
737
839
#endif
738
840
739
841
PASS ("Peripheral ISO tests Passed\n" );
0 commit comments