Bluetooth: Audio: VCS client return pointer to instance on discover

Add return of instance pointer in bt_vcs_discover so that a client
will get a bt_vcs pointer when doing discover, which will be
used going forward in the API.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This commit is contained in:
Emil Gydesen 2021-05-28 15:00:43 +02:00 committed by Carles Cufí
commit c7375079cc
4 changed files with 16 additions and 7 deletions

View file

@ -188,15 +188,17 @@ struct bt_vcs_cb {
* *
* This will start a GATT discovery and setup handles and subscriptions. * This will start a GATT discovery and setup handles and subscriptions.
* This shall be called once before any other actions can be * This shall be called once before any other actions can be
* executed for the peer device. * executed for the peer device, and the @ref bt_vcs_discover_cb callback
* will notify when it is possible to start remote operations.
* *
* This shall only be done as the client, * This shall only be done as the client,
* *
* @param conn The connection to discover Volume Control Service for. * @param conn The connection to discover Volume Control Service for.
* @param[out] vcs Valid remote instance object on success.
* *
* @return 0 if success, errno on failure. * @return 0 if success, errno on failure.
*/ */
int bt_vcs_discover(struct bt_conn *conn); int bt_vcs_discover(struct bt_conn *conn, struct bt_vcs **vcs);
/** /**
* @brief Set the Volume Control Service volume step size. * @brief Set the Volume Control Service volume step size.

View file

@ -707,10 +707,11 @@ static void bt_vcs_client_init(void)
} }
} }
int bt_vcs_discover(struct bt_conn *conn) int bt_vcs_discover(struct bt_conn *conn, struct bt_vcs **vcs)
{ {
static bool initialized; static bool initialized;
struct bt_vcs_client *vcs_inst; struct bt_vcs_client *vcs_inst;
int err;
/* /*
* This will initiate a discover procedure. The procedure will do the * This will initiate a discover procedure. The procedure will do the
@ -749,7 +750,11 @@ int bt_vcs_discover(struct bt_conn *conn)
vcs_inst->discover_params.start_handle = BT_ATT_FIRST_ATTTRIBUTE_HANDLE; vcs_inst->discover_params.start_handle = BT_ATT_FIRST_ATTTRIBUTE_HANDLE;
vcs_inst->discover_params.end_handle = BT_ATT_LAST_ATTTRIBUTE_HANDLE; vcs_inst->discover_params.end_handle = BT_ATT_LAST_ATTTRIBUTE_HANDLE;
return bt_gatt_discover(conn, &vcs_inst->discover_params); err = bt_gatt_discover(conn, &vcs_inst->discover_params);
if (err == 0) {
*vcs = (struct bt_vcs *)&vcs_inst;
}
return err;
} }
int bt_vcs_client_cb_register(struct bt_vcs_cb *cb) int bt_vcs_client_cb_register(struct bt_vcs_cb *cb)

View file

@ -15,6 +15,7 @@
#include "bt.h" #include "bt.h"
static struct bt_vcs *vcs;
static struct bt_vcs_included vcs_included; static struct bt_vcs_included vcs_included;
static void vcs_discover_cb(struct bt_conn *conn, int err, uint8_t vocs_count, static void vcs_discover_cb(struct bt_conn *conn, int err, uint8_t vocs_count,
@ -349,7 +350,7 @@ static int cmd_vcs_client_discover(const struct shell *sh, size_t argc,
return -ENOEXEC; return -ENOEXEC;
} }
result = bt_vcs_discover(default_conn); result = bt_vcs_discover(default_conn, &vcs);
if (result != 0) { if (result != 0) {
shell_print(sh, "Fail: %d", result); shell_print(sh, "Fail: %d", result);
} }

View file

@ -18,6 +18,7 @@
static struct bt_conn_cb conn_callbacks; static struct bt_conn_cb conn_callbacks;
extern enum bst_result_t bst_result; extern enum bst_result_t bst_result;
static struct bt_vcs *vcs;
static struct bt_vcs_included vcs_included; static struct bt_vcs_included vcs_included;
static volatile bool g_bt_init; static volatile bool g_bt_init;
static volatile bool g_is_connected; static volatile bool g_is_connected;
@ -575,7 +576,7 @@ static void test_main(void)
WAIT_FOR(g_mtu_exchanged); WAIT_FOR(g_mtu_exchanged);
err = bt_vcs_discover(g_conn); err = bt_vcs_discover(g_conn, &vcs);
if (err) { if (err) {
FAIL("Failed to discover VCS %d", err); FAIL("Failed to discover VCS %d", err);
} }