Skip to content

Commit 466b85f

Browse files
committed
Bluetooth: CCP: Client: Add get_bearers
Add bt_ccp_client_get_bearers that will return the bearers of a client so that the application can always retrieve them if they do not store them from the discovery callback. Signed-off-by: Emil Gydesen <[email protected]>
1 parent 15cc6b7 commit 466b85f

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

include/zephyr/bluetooth/audio/ccp.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,17 @@ int bt_ccp_call_control_client_register_cb(struct bt_ccp_call_control_client_cb
216216
* @retval -EALREADY @p cb is not registered
217217
*/
218218
int bt_ccp_call_control_client_unregister_cb(struct bt_ccp_call_control_client_cb *cb);
219+
220+
/**
221+
* @brief Get the bearers of a client instance
222+
*
223+
* @param[in] client The client to get the bearers of.
224+
* @param[out] bearers The bearers struct that will be populated with the bearers of @p inst.
225+
* @retval -EINVAL @p inst or @p bearers is NULL
226+
*/
227+
int bt_ccp_call_control_client_get_bearers(struct bt_ccp_call_control_client *client,
228+
struct bt_ccp_call_control_client_bearers *bearers);
229+
219230
/** @} */ /* End of group bt_ccp_call_control_client */
220231
#ifdef __cplusplus
221232
}

subsys/bluetooth/audio/ccp_call_control_client.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,22 @@ int bt_ccp_call_control_client_unregister_cb(struct bt_ccp_call_control_client_c
232232

233233
return 0;
234234
}
235+
236+
int bt_ccp_call_control_client_get_bearers(struct bt_ccp_call_control_client *client,
237+
struct bt_ccp_call_control_client_bearers *bearers)
238+
{
239+
CHECKIF(client == NULL) {
240+
LOG_DBG("client is NULL");
241+
return -EINVAL;
242+
}
243+
244+
CHECKIF(bearers == NULL) {
245+
LOG_DBG("bearers is NULL");
246+
return -EINVAL;
247+
}
248+
249+
memset(bearers, 0, sizeof(*bearers));
250+
populate_bearers(client, bearers);
251+
252+
return 0;
253+
}

tests/bluetooth/audio/ccp_call_control_client/src/main.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,3 +210,27 @@ static ZTEST_F(ccp_call_control_client_test_suite,
210210
err = bt_ccp_call_control_client_discover(&fixture->conn, NULL);
211211
zassert_equal(-EINVAL, err, "Unexpected return value %d", err);
212212
}
213+
214+
static ZTEST_F(ccp_call_control_client_test_suite, test_ccp_call_control_client_get_bearers)
215+
{
216+
struct bt_ccp_call_control_client_bearers bearers;
217+
int err;
218+
219+
err = bt_ccp_call_control_client_register_cb(&mock_ccp_call_control_client_cb);
220+
zassert_equal(0, err, "Unexpected return value %d", err);
221+
222+
err = bt_ccp_call_control_client_discover(&fixture->conn, &fixture->client);
223+
zassert_equal(0, err, "Unexpected return value %d", err);
224+
225+
err = bt_ccp_call_control_client_get_bearers(fixture->client, &bearers);
226+
zassert_equal(0, err, "Unexpected return value %d", err);
227+
228+
#if defined(CONFIG_BT_TBS_CLIENT_GTBS)
229+
zassert_not_null(bearers.gtbs_bearer);
230+
#endif /* CONFIG_BT_TBS_CLIENT_GTBS */
231+
232+
#if defined(CONFIG_BT_TBS_CLIENT_TBS)
233+
zassert_equal(CONFIG_BT_TBS_CLIENT_MAX_TBS_INSTANCES, bearers.tbs_count);
234+
zassert_not_null(bearers.tbs_bearers);
235+
#endif /* CONFIG_BT_TBS_CLIENT_TBS */
236+
}

0 commit comments

Comments
 (0)