16
16
#include <zephyr/bluetooth/gap.h>
17
17
#include <zephyr/bluetooth/gatt.h>
18
18
#include <zephyr/bluetooth/hci.h>
19
+ #include <zephyr/bluetooth/iso.h>
19
20
#include <zephyr/bluetooth/uuid.h>
20
21
#include <zephyr/net/buf.h>
21
22
#include <zephyr/sys/printk.h>
@@ -47,6 +48,8 @@ CREATE_FLAG(flag_recv_state_read);
47
48
CREATE_FLAG (flag_recv_state_updated );
48
49
CREATE_FLAG (flag_recv_state_updated_with_bis_sync );
49
50
CREATE_FLAG (flag_recv_state_removed );
51
+ CREATE_FLAG (flag_broadcast_code_requested );
52
+ CREATE_FLAG (flag_incorrect_broadcast_code );
50
53
51
54
/* Broadcaster variables */
52
55
static bt_addr_le_t g_broadcaster_addr ;
@@ -98,7 +101,7 @@ static void bap_broadcast_assistant_scan_cb(const struct bt_le_scan_recv_info *i
98
101
99
102
static bool metadata_entry (struct bt_data * data , void * user_data )
100
103
{
101
- char metadata [CONFIG_BT_AUDIO_CODEC_CFG_MAX_METADATA_SIZE ];
104
+ char metadata [CONFIG_BT_AUDIO_CODEC_CFG_MAX_METADATA_SIZE ] = { 0 } ;
102
105
103
106
(void )bin2hex (data -> data , data -> data_len , metadata , sizeof (metadata ));
104
107
@@ -130,14 +133,15 @@ static void bap_broadcast_assistant_recv_state_cb(
130
133
bt_addr_le_to_str (& state -> addr , le_addr , sizeof (le_addr ));
131
134
(void )bin2hex (state -> bad_code , BT_AUDIO_BROADCAST_CODE_SIZE , bad_code ,
132
135
sizeof (bad_code ));
133
- printk ("BASS recv state: src_id %u, addr %s, sid %u, sync_state %u, "
134
- "encrypt_state %u%s%s\n" , state -> src_id , le_addr , state -> adv_sid ,
135
- state -> pa_sync_state , state -> encrypt_state ,
136
- state -> encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE ? ", bad code" : "" ,
136
+ printk ("BASS recv state: src_id %u, addr %s, sid %u, sync_state %u, encrypt_state %u%s%s\n" ,
137
+ state -> src_id , le_addr , state -> adv_sid , state -> pa_sync_state , state -> encrypt_state ,
138
+ state -> encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE ? ", bad code: " : "" ,
137
139
bad_code );
138
140
139
- if (state -> encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE ) {
140
- FAIL ("Encryption state is BT_BAP_BIG_ENC_STATE_BAD_CODE" );
141
+ if (state -> encrypt_state == BT_BAP_BIG_ENC_STATE_BCODE_REQ ) {
142
+ SET_FLAG (flag_broadcast_code_requested );
143
+ } else if (state -> encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE ) {
144
+ SET_FLAG (flag_incorrect_broadcast_code );
141
145
return ;
142
146
}
143
147
@@ -499,15 +503,10 @@ static void test_bass_mod_source_long_meta(void)
499
503
printk ("Server PA synced\n" );
500
504
}
501
505
502
- static void test_bass_broadcast_code (void )
506
+ static void test_bass_broadcast_code (const uint8_t broadcast_code [ BT_AUDIO_BROADCAST_CODE_SIZE ] )
503
507
{
504
- uint8_t broadcast_code [BT_AUDIO_BROADCAST_CODE_SIZE ];
505
508
int err ;
506
509
507
- for (int i = 0 ; i < ARRAY_SIZE (broadcast_code ); i ++ ) {
508
- broadcast_code [i ] = i ;
509
- }
510
-
511
510
printk ("Adding broadcast code\n" );
512
511
UNSET_FLAG (flag_write_complete );
513
512
err = bt_bap_broadcast_assistant_set_broadcast_code (default_conn , g_src_id , broadcast_code );
@@ -588,7 +587,7 @@ static void test_main_client_sync(void)
588
587
test_bass_add_source ();
589
588
test_bass_mod_source ();
590
589
test_bass_mod_source_long_meta ();
591
- test_bass_broadcast_code ();
590
+ test_bass_broadcast_code (BROADCAST_CODE );
592
591
593
592
printk ("Waiting for receive state with BIS sync\n" );
594
593
WAIT_FOR_FLAG (flag_recv_state_updated_with_bis_sync );
@@ -598,6 +597,30 @@ static void test_main_client_sync(void)
598
597
PASS ("BAP Broadcast Assistant Client Sync Passed\n" );
599
598
}
600
599
600
+ static void test_main_client_sync_incorrect_code (void )
601
+ {
602
+ int err ;
603
+
604
+ err = common_init ();
605
+ if (err != 0 ) {
606
+ FAIL ("Bluetooth enable failed (err %d)\n" , err );
607
+ return ;
608
+ }
609
+
610
+ test_bass_scan_start ();
611
+ test_bass_scan_stop ();
612
+ test_bass_create_pa_sync ();
613
+ test_bass_add_source ();
614
+ test_bass_mod_source ();
615
+ WAIT_FOR_FLAG (flag_broadcast_code_requested );
616
+ test_bass_broadcast_code (INCORRECT_BROADCAST_CODE );
617
+ WAIT_FOR_FLAG (flag_incorrect_broadcast_code );
618
+
619
+ test_bass_remove_source ();
620
+
621
+ PASS ("BAP Broadcast Assistant Client Sync Passed\n" );
622
+ }
623
+
601
624
static void test_main_server_sync_client_rem (void )
602
625
{
603
626
int err ;
@@ -610,7 +633,7 @@ static void test_main_server_sync_client_rem(void)
610
633
611
634
WAIT_FOR_FLAG (flag_recv_state_updated );
612
635
613
- test_bass_broadcast_code ();
636
+ test_bass_broadcast_code (BROADCAST_CODE );
614
637
615
638
printk ("Waiting for receive state with BIS sync\n" );
616
639
WAIT_FOR_FLAG (flag_recv_state_updated_with_bis_sync );
@@ -632,7 +655,7 @@ static void test_main_server_sync_server_rem(void)
632
655
633
656
WAIT_FOR_FLAG (flag_recv_state_updated );
634
657
635
- test_bass_broadcast_code ();
658
+ test_bass_broadcast_code (BROADCAST_CODE );
636
659
637
660
printk ("Waiting for receive state with BIS sync\n" );
638
661
WAIT_FOR_FLAG (flag_recv_state_updated_with_bis_sync );
@@ -649,6 +672,12 @@ static const struct bst_test_instance test_bass[] = {
649
672
.test_tick_f = test_tick ,
650
673
.test_main_f = test_main_client_sync ,
651
674
},
675
+ {
676
+ .test_id = "bap_broadcast_assistant_client_sync_incorrect_code" ,
677
+ .test_pre_init_f = test_init ,
678
+ .test_tick_f = test_tick ,
679
+ .test_main_f = test_main_client_sync_incorrect_code ,
680
+ },
652
681
{
653
682
.test_id = "bap_broadcast_assistant_server_sync_client_rem" ,
654
683
.test_pre_init_f = test_init ,
@@ -661,7 +690,7 @@ static const struct bst_test_instance test_bass[] = {
661
690
.test_tick_f = test_tick ,
662
691
.test_main_f = test_main_server_sync_server_rem ,
663
692
},
664
- BSTEST_END_MARKER
693
+ BSTEST_END_MARKER ,
665
694
};
666
695
667
696
struct bst_test_list * test_bap_broadcast_assistant_install (struct bst_test_list * tests )
0 commit comments