This adds a shared/bass API to set the BIG encryption state field inside a Broadcast Receive State characteristic. Notifications are then sent to inform all peers about the update. --- src/shared/bass.c | 24 ++++++++++++++++++++++++ src/shared/bass.h | 1 + 2 files changed, 25 insertions(+) diff --git a/src/shared/bass.c b/src/shared/bass.c index 76287cfbc..9ee13bf4a 100644 --- a/src/shared/bass.c +++ b/src/shared/bass.c @@ -1832,3 +1832,27 @@ bool bt_bass_check_bis(struct bt_bcast_src *bcast_src, uint8_t bis) return false; } + +int bt_bass_set_enc(struct bt_bcast_src *bcast_src, uint8_t enc) +{ + struct iovec *iov; + + if (!bcast_src) + return -EINVAL; + + if (bcast_src->enc == enc) + return 0; + + bcast_src->enc = enc; + + iov = bass_parse_bcast_src(bcast_src); + if (!iov) + return -ENOMEM; + + bt_bass_notify_all(bcast_src->attr, iov); + + free(iov->iov_base); + free(iov); + + return 0; +} diff --git a/src/shared/bass.h b/src/shared/bass.h index b21256efd..d256b920d 100644 --- a/src/shared/bass.h +++ b/src/shared/bass.h @@ -133,3 +133,4 @@ int bt_bass_set_pa_sync(struct bt_bcast_src *bcast_src, uint8_t sync_state); int bt_bass_set_bis_sync(struct bt_bcast_src *bcast_src, uint8_t bis); int bt_bass_clear_bis_sync(struct bt_bcast_src *bcast_src, uint8_t bis); bool bt_bass_check_bis(struct bt_bcast_src *bcast_src, uint8_t bis); +int bt_bass_set_enc(struct bt_bcast_src *bcast_src, uint8_t enc); -- 2.43.0