From 946013e25fd3d89eeda2c2c8cdca2b8d2f01928e Mon Sep 17 00:00:00 2001 From: Emil Gydesen Date: Mon, 31 May 2021 15:07:13 +0200 Subject: [PATCH] Bluetooth: Audio: VCS register return if already registered Change how bt_vcs_register works if VCS has already been registered. Signed-off-by: Emil Gydesen --- include/bluetooth/audio/vcs.h | 1 + subsys/bluetooth/audio/vcs.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/bluetooth/audio/vcs.h b/include/bluetooth/audio/vcs.h index ce94c656356..c5ffb7fce36 100644 --- a/include/bluetooth/audio/vcs.h +++ b/include/bluetooth/audio/vcs.h @@ -81,6 +81,7 @@ struct bt_vcs_included { * * @param param Volume Control Service register parameters. * @param[out] vcs Pointer to the registered Volume Control Service. + * This will still be valid if the return value is -EALREADY. * * @return 0 if success, errno on failure. */ diff --git a/subsys/bluetooth/audio/vcs.c b/subsys/bluetooth/audio/vcs.c index e77221bf8f6..dda5c9fd1be 100644 --- a/subsys/bluetooth/audio/vcs.c +++ b/subsys/bluetooth/audio/vcs.c @@ -359,8 +359,14 @@ static int prepare_aics_inst(struct bt_vcs_register_param *param) /****************************** PUBLIC API ******************************/ int bt_vcs_register(struct bt_vcs_register_param *param, struct bt_vcs **vcs) { + static bool registered; int err; + if (registered) { + *vcs = &vcs_inst; + return -EALREADY; + } + vcs_svc = (struct bt_gatt_service)BT_GATT_SERVICE(vcs_attrs); if (CONFIG_BT_VCS_VOCS_INSTANCE_COUNT > 0) { @@ -392,6 +398,7 @@ int bt_vcs_register(struct bt_vcs_register_param *param, struct bt_vcs **vcs) vcs_inst.srv.cb = param->cb; *vcs = &vcs_inst; + registered = true; return err; }