diff --git a/profiles/audio/bass.c b/profiles/audio/bass.c
index f5fe606..ec5b88f 100644
--- a/profiles/audio/bass.c
+++ b/profiles/audio/bass.c
struct bt_bcast_src *src;
struct bt_bap *bap;
unsigned int state_id;
+ unsigned int bcode_id;
uint8_t *bcode;
unsigned int timeout;
struct queue *bcode_reqs;
struct bass_bcode_req {
struct bass_setup *setup;
- bt_bass_bcode_func_t cb;
+ bt_bap_bcode_reply_t cb;
void *user_data;
};
}
static void setup_set_bcode(uint8_t *bcode, struct bass_setup *setup,
- bt_bass_bcode_func_t cb, void *user_data)
+ bt_bap_bcode_reply_t cb, void *user_data)
{
struct bt_bap_qos *qos = bt_bap_stream_get_qos(setup->stream);
return setup->stream == stream;
}
-void bass_req_bcode(struct bt_bap_stream *stream,
- bt_bass_bcode_func_t cb,
- void *user_data)
+static void bass_req_bcode(struct bt_bap_stream *stream,
+ bt_bap_bcode_reply_t reply, void *reply_data,
+ void *user_data)
{
struct bt_bap *bap = bt_bap_stream_get_session(stream);
struct bass_delegator *dg;
dg = queue_find(delegators, delegator_match_bap, bap);
if (!dg) {
- cb(user_data, -EINVAL);
+ reply(reply_data, -EINVAL);
return;
}
setup = queue_find(dg->setups, match_setup_stream, stream);
if (!setup) {
- cb(user_data, -EINVAL);
+ reply(reply_data, -EINVAL);
return;
}
if (dg->bcode) {
/* Broadcast Code has already been received before. */
- setup_set_bcode(dg->bcode, setup, cb, user_data);
+ setup_set_bcode(dg->bcode, setup, reply, reply_data);
return;
}
return;
req->setup = setup;
- req->cb = cb;
- req->user_data = user_data;
+ req->cb = reply;
+ req->user_data = reply_data;
queue_push_tail(dg->bcode_reqs, req);
dg->state_id = bt_bap_state_register(dg->bap, bap_state_changed,
NULL, dg, NULL);
+ /* Register callback to handle Broadcast Code requests from
+ * upper layers.
+ */
+ dg->bcode_id = bt_bap_bcode_cb_register(dg->bap, bass_req_bcode,
+ NULL, NULL);
+
dg->io_id = g_io_add_watch(io, G_IO_OUT, big_info_cb, dg);
}
/* Unregister BAP stream state changed callback. */
bt_bap_state_unregister(dg->bap, dg->state_id);
+ bt_bap_bcode_cb_unregister(dg->bap, dg->bcode_id);
+
if (dg->timeout)
g_source_remove(dg->timeout);
diff --git a/profiles/audio/bass.h b/profiles/audio/bass.h
index 42a2c04..32c7e4d 100644
--- a/profiles/audio/bass.h
+++ b/profiles/audio/bass.h
*
*/
-typedef void (*bt_bass_bcode_func_t)(void *user_data, int err);
-
-void bass_req_bcode(struct bt_bap_stream *stream,
- bt_bass_bcode_func_t cb,
- void *user_data);
diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index f3ac1a2..bc7ee6e 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
*
* Copyright (C) 2006-2007 Nokia Corporation
* Copyright (C) 2004-2009 Marcel Holtmann <marcel@holtmann.org>
- * Copyright 2023-2024 NXP
+ * Copyright 2023-2025 NXP
*
*
*/
* for the encrypted stream, request the code from
* Broadcast Assistants, if any are available.
*/
- bass_req_bcode(bap->stream, bcast_qos_set,
+ bt_bap_req_bcode(bap->stream, bcast_qos_set,
GUINT_TO_POINTER(id));
return;
}