Bluetooth: BAP: SD: Added missing bad code when using mod_src
When the encrypt state was changed via
bt_bap_scan_delegator_mod_src then we didn't set the bad
broadcast code correctly.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
diff --git a/subsys/bluetooth/audio/bap_scan_delegator.c b/subsys/bluetooth/audio/bap_scan_delegator.c
index 191edda..c13da60 100644
--- a/subsys/bluetooth/audio/bap_scan_delegator.c
+++ b/subsys/bluetooth/audio/bap_scan_delegator.c
@@ -1469,6 +1469,12 @@
if (state->encrypt_state != param->encrypt_state) {
state->encrypt_state = param->encrypt_state;
+
+ if (state->encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE) {
+ (void)memcpy(state->bad_code, internal_state->broadcast_code,
+ sizeof(internal_state->state.bad_code));
+ }
+
state_changed = true;
}
diff --git a/tests/bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c b/tests/bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c
index f46fd50..0a4e4b2 100644
--- a/tests/bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c
+++ b/tests/bsim/bluetooth/audio/src/bap_broadcast_assistant_test.c
@@ -142,7 +142,11 @@
SET_FLAG(flag_broadcast_code_requested);
} else if (state->encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE) {
SET_FLAG(flag_incorrect_broadcast_code);
- return;
+ if (memcmp(state->bad_code, INCORRECT_BROADCAST_CODE,
+ BT_AUDIO_BROADCAST_CODE_SIZE) != 0) {
+ FAIL("Bad code is not what we sent");
+ return;
+ }
}
for (uint8_t i = 0; i < state->num_subgroups; i++) {