From 12103771afbfd7ea097ca992e7b12a53cc8ff8ba Mon Sep 17 00:00:00 2001 From: Emil Gydesen Date: Tue, 8 Jun 2021 16:45:15 +0200 Subject: [PATCH] Bluetooth: Audio: MICS register return if already registered Change how bt_mics_register works if MICS has already been registered. Signed-off-by: Emil Gydesen --- include/bluetooth/audio/mics.h | 1 + subsys/bluetooth/audio/mics.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/bluetooth/audio/mics.h b/include/bluetooth/audio/mics.h index 6122fa1b9f5..269f264bfd4 100644 --- a/include/bluetooth/audio/mics.h +++ b/include/bluetooth/audio/mics.h @@ -75,6 +75,7 @@ struct bt_mics_included { * * @param param Pointer to an initialization structure. * @param[out] mics Pointer to the registered Microphone Input 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/mics.c b/subsys/bluetooth/audio/mics.c index e02a222d6eb..d6b17d030ca 100644 --- a/subsys/bluetooth/audio/mics.c +++ b/subsys/bluetooth/audio/mics.c @@ -146,6 +146,12 @@ int bt_mics_register(struct bt_mics_register_param *param, struct bt_mics **mics) { int err; + static bool registered; + + if (registered) { + *mics = &mics_inst; + return -EALREADY; + } __ASSERT(param, "MICS register parameter cannot be NULL"); @@ -164,6 +170,7 @@ int bt_mics_register(struct bt_mics_register_param *param, mics_inst.srv.cb = param->cb; *mics = &mics_inst; + registered = true; return err; }