LE Audio: add conn parameter for bt_vcp_vol_rend_cb

Add conn parameter to status/flags callbacks of bt_vcp_vol_rend_cb
to differentiate between remote and local changes.

Signed-off-by: Chang An <chang.an_1@nxp.com>
This commit is contained in:
Chang An 2024-08-13 16:29:05 +08:00 committed by Henrik Brix Andersen
commit e8db417a00
9 changed files with 28 additions and 20 deletions

View file

@ -150,6 +150,12 @@ Bluetooth Mesh
Bluetooth Audio Bluetooth Audio
=============== ===============
* The Volume Renderer callback functions :code:`bt_vcp_vol_rend_cb.state` and
:code:`bt_vcp_vol_rend_cb.flags` for VCP now contain an additional parameter for
the connection.
This needs to be added to all instances of VCP Volume Renderer callback functions defined.
(:github:`76992`)
Bluetooth Classic Bluetooth Classic
================= =================

View file

@ -163,12 +163,14 @@ struct bt_vcp_vol_rend_cb {
* bt_vcp_vol_rend_get_state(), or if the state is changed by either * bt_vcp_vol_rend_get_state(), or if the state is changed by either
* the Volume Renderer or a remote Volume Controller. * the Volume Renderer or a remote Volume Controller.
* *
* @param conn Pointer to the connection to a remote device if
* the change was caused by it, otherwise NULL.
* @param err Error value. 0 on success, GATT error on positive value * @param err Error value. 0 on success, GATT error on positive value
* or errno on negative value. * or errno on negative value.
* @param volume The volume of the Volume Control Service server. * @param volume The volume of the Volume Control Service server.
* @param mute The mute setting of the Volume Control Service server. * @param mute The mute setting of the Volume Control Service server.
*/ */
void (*state)(int err, uint8_t volume, uint8_t mute); void (*state)(struct bt_conn *conn, int err, uint8_t volume, uint8_t mute);
/** /**
* @brief Callback function for Volume Control Service flags. * @brief Callback function for Volume Control Service flags.
@ -177,11 +179,13 @@ struct bt_vcp_vol_rend_cb {
* Called when the value is remotely read as the client. * Called when the value is remotely read as the client.
* Called if the value is changed by either the server or client. * Called if the value is changed by either the server or client.
* *
* @param conn Pointer to the connection to a remote device if
* the change was caused by it, otherwise NULL.
* @param err Error value. 0 on success, GATT error on positive value * @param err Error value. 0 on success, GATT error on positive value
* or errno on negative value. * or errno on negative value.
* @param flags The flags of the Volume Control Service server. * @param flags The flags of the Volume Control Service server.
*/ */
void (*flags)(int err, uint8_t flags); void (*flags)(struct bt_conn *conn, int err, uint8_t flags);
}; };
/** /**

View file

@ -18,7 +18,7 @@
static struct bt_vcp_included vcp_included; static struct bt_vcp_included vcp_included;
static void vcs_state_cb(int err, uint8_t volume, uint8_t mute) static void vcs_state_cb(struct bt_conn *conn, int err, uint8_t volume, uint8_t mute)
{ {
if (err) { if (err) {
printk("VCS state get failed (%d)\n", err); printk("VCS state get failed (%d)\n", err);
@ -27,7 +27,7 @@ static void vcs_state_cb(int err, uint8_t volume, uint8_t mute)
} }
} }
static void vcs_flags_cb(int err, uint8_t flags) static void vcs_flags_cb(struct bt_conn *conn, int err, uint8_t flags)
{ {
if (err) { if (err) {
printk("VCS flags get failed (%d)\n", err); printk("VCS flags get failed (%d)\n", err);

View file

@ -19,7 +19,7 @@
static struct bt_vcp_included vcp_included; static struct bt_vcp_included vcp_included;
static void vcs_state_cb(int err, uint8_t volume, uint8_t mute) static void vcs_state_cb(struct bt_conn *conn, int err, uint8_t volume, uint8_t mute)
{ {
if (err) { if (err) {
printk("VCS state get failed (%d)\n", err); printk("VCS state get failed (%d)\n", err);
@ -28,7 +28,7 @@ static void vcs_state_cb(int err, uint8_t volume, uint8_t mute)
} }
} }
static void vcs_flags_cb(int err, uint8_t flags) static void vcs_flags_cb(struct bt_conn *conn, int err, uint8_t flags)
{ {
if (err) { if (err) {
printk("VCS flags get failed (%d)\n", err); printk("VCS flags get failed (%d)\n", err);

View file

@ -19,7 +19,7 @@
static struct bt_vcp_included vcp_included; static struct bt_vcp_included vcp_included;
static void vcs_state_cb(int err, uint8_t volume, uint8_t mute) static void vcs_state_cb(struct bt_conn *conn, int err, uint8_t volume, uint8_t mute)
{ {
if (err) { if (err) {
printk("VCS state get failed (%d)\n", err); printk("VCS state get failed (%d)\n", err);
@ -28,7 +28,7 @@ static void vcs_state_cb(int err, uint8_t volume, uint8_t mute)
} }
} }
static void vcs_flags_cb(int err, uint8_t flags) static void vcs_flags_cb(struct bt_conn *conn, int err, uint8_t flags)
{ {
if (err) { if (err) {
printk("VCS flags get failed (%d)\n", err); printk("VCS flags get failed (%d)\n", err);

View file

@ -28,7 +28,7 @@
static struct bt_vcp_included vcp_included; static struct bt_vcp_included vcp_included;
static void vcp_vol_rend_state_cb(int err, uint8_t volume, uint8_t mute) static void vcp_vol_rend_state_cb(struct bt_conn *conn, int err, uint8_t volume, uint8_t mute)
{ {
if (err) { if (err) {
shell_error(ctx_shell, "VCP state get failed (%d)", err); shell_error(ctx_shell, "VCP state get failed (%d)", err);
@ -37,7 +37,7 @@ static void vcp_vol_rend_state_cb(int err, uint8_t volume, uint8_t mute)
} }
} }
static void vcp_vol_rend_flags_cb(int err, uint8_t flags) static void vcp_vol_rend_flags_cb(struct bt_conn *conn, int err, uint8_t flags)
{ {
if (err) { if (err) {
shell_error(ctx_shell, "VCP flags get failed (%d)", err); shell_error(ctx_shell, "VCP flags get failed (%d)", err);

View file

@ -269,8 +269,7 @@ static ssize_t write_vcs_control(struct bt_conn *conn,
value_changed(&vol_rend, NOTIFY_STATE); value_changed(&vol_rend, NOTIFY_STATE);
if (vol_rend.cb && vol_rend.cb->state) { if (vol_rend.cb && vol_rend.cb->state) {
vol_rend.cb->state(0, vol_rend.state.volume, vol_rend.cb->state(conn, 0, vol_rend.state.volume, vol_rend.state.mute);
vol_rend.state.mute);
} }
} }
@ -282,7 +281,7 @@ static ssize_t write_vcs_control(struct bt_conn *conn,
} }
if (vol_rend.cb && vol_rend.cb->flags) { if (vol_rend.cb && vol_rend.cb->flags) {
vol_rend.cb->flags(0, vol_rend.flags); vol_rend.cb->flags(conn, 0, vol_rend.flags);
} }
} }
return len; return len;
@ -524,8 +523,7 @@ int bt_vcp_vol_rend_set_step(uint8_t volume_step)
int bt_vcp_vol_rend_get_state(void) int bt_vcp_vol_rend_get_state(void)
{ {
if (vol_rend.cb && vol_rend.cb->state) { if (vol_rend.cb && vol_rend.cb->state) {
vol_rend.cb->state(0, vol_rend.state.volume, vol_rend.cb->state(NULL, 0, vol_rend.state.volume, vol_rend.state.mute);
vol_rend.state.mute);
} }
return 0; return 0;
@ -534,7 +532,7 @@ int bt_vcp_vol_rend_get_state(void)
int bt_vcp_vol_rend_get_flags(void) int bt_vcp_vol_rend_get_flags(void)
{ {
if (vol_rend.cb && vol_rend.cb->flags) { if (vol_rend.cb && vol_rend.cb->flags) {
vol_rend.cb->flags(0, vol_rend.flags); vol_rend.cb->flags(NULL, 0, vol_rend.flags);
} }
return 0; return 0;

View file

@ -144,12 +144,12 @@ static uint8_t unmute(const void *cmd, uint16_t cmd_len,
return BTP_STATUS_SUCCESS; return BTP_STATUS_SUCCESS;
} }
static void vcs_state_cb(int err, uint8_t volume, uint8_t mute) static void vcs_state_cb(struct bt_conn *conn, int err, uint8_t volume, uint8_t mute)
{ {
LOG_DBG("VCP state cb err (%d)", err); LOG_DBG("VCP state cb err (%d)", err);
} }
static void vcs_flags_cb(int err, uint8_t flags) static void vcs_flags_cb(struct bt_conn *conn, int err, uint8_t flags)
{ {
LOG_DBG("VCP flags cb err (%d)", err); LOG_DBG("VCP flags cb err (%d)", err);
} }

View file

@ -54,7 +54,7 @@ static volatile bool g_aics_active = 1;
static char g_aics_desc[AICS_DESC_SIZE]; static char g_aics_desc[AICS_DESC_SIZE];
static volatile bool g_cb; static volatile bool g_cb;
static void vcs_state_cb(int err, uint8_t volume, uint8_t mute) static void vcs_state_cb(struct bt_conn *conn, int err, uint8_t volume, uint8_t mute)
{ {
if (err != 0) { if (err != 0) {
FAIL("VCP state cb err (%d)", err); FAIL("VCP state cb err (%d)", err);
@ -66,7 +66,7 @@ static void vcs_state_cb(int err, uint8_t volume, uint8_t mute)
g_cb = true; g_cb = true;
} }
static void vcs_flags_cb(int err, uint8_t flags) static void vcs_flags_cb(struct bt_conn *conn, int err, uint8_t flags)
{ {
if (err != 0) { if (err != 0) {
FAIL("VCP flags cb err (%d)", err); FAIL("VCP flags cb err (%d)", err);