bluetooth: audio: Update bad code in BASS to be v1.0.1 compliant

Bad Broadcast Code in BASS/Scan Delegator if BIG_Encryption
field value = 0x03 (Bad_Code), Bad_Code shall be set to the
value 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF according to BASS v1.0.1

Signed-off-by: Gudipudi Ramana Kumar <gudipudiramanakumar@gmail.com>
This commit is contained in:
Gudipudi Ramana Kumar 2025-04-13 19:44:50 +05:30 committed by Benjamin Cabé
commit aafcd4f851
3 changed files with 6 additions and 5 deletions

View file

@ -1372,8 +1372,7 @@ int bt_bap_scan_delegator_set_bis_sync_state(
internal_state->index, src_id);
if (internal_state->state.encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE) {
(void)memcpy(internal_state->state.bad_code,
internal_state->broadcast_code,
(void)memset(internal_state->state.bad_code, 0xFF,
sizeof(internal_state->state.bad_code));
}
@ -1570,8 +1569,7 @@ int bt_bap_scan_delegator_mod_src(const struct bt_bap_scan_delegator_mod_src_par
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));
(void)memset(state->bad_code, 0xFF, sizeof(internal_state->state.bad_code));
}
state_changed = true;

View file

@ -142,7 +142,7 @@ static void bap_broadcast_assistant_recv_state_cb(
SET_FLAG(flag_broadcast_code_requested);
} else if (state->encrypt_state == BT_BAP_BIG_ENC_STATE_BAD_CODE) {
SET_FLAG(flag_incorrect_broadcast_code);
if (memcmp(state->bad_code, INCORRECT_BROADCAST_CODE, BT_ISO_BROADCAST_CODE_SIZE) !=
if (memcmp(state->bad_code, BAD_BROADCAST_CODE, BT_ISO_BROADCAST_CODE_SIZE) !=
0) {
FAIL("Bad code is not what we sent\n");
return;

View file

@ -48,6 +48,9 @@
#define INCORRECT_BROADCAST_CODE \
((uint8_t[]){0xDE, 0xAD, 0xBE, 0xEF, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, \
0xdd, 0xee, 0xff})
#define BAD_BROADCAST_CODE \
((uint8_t[]){0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0xFF, 0xFF, 0xFF})
#define BAP_RETRY_WAIT K_MSEC(100)