Skip to content

Commit a4f8744

Browse files
Thalleykartben
authored andcommitted
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 1dd63f4 commit a4f8744

File tree

3 files changed

+58
-2
lines changed

3 files changed

+58
-2
lines changed

include/zephyr/bluetooth/audio/ccp.h

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ int bt_ccp_call_control_client_discover(struct bt_conn *conn,
173173
*
174174
* @param cb The callback struct
175175
*
176-
* @retval 0 Succsss
176+
* @retval 0 Success
177177
* @retval -EINVAL @p cb is NULL
178178
* @retval -EEXISTS @p cb is already registered
179179
*/
@@ -184,11 +184,24 @@ int bt_ccp_call_control_client_register_cb(struct bt_ccp_call_control_client_cb
184184
*
185185
* @param cb The callback struct
186186
*
187-
* @retval 0 Succsss
187+
* @retval 0 Success
188188
* @retval -EINVAL @p cb is NULL
189189
* @retval -EALREADY @p cb is not registered
190190
*/
191191
int bt_ccp_call_control_client_unregister_cb(struct bt_ccp_call_control_client_cb *cb);
192+
193+
/**
194+
* @brief Get the bearers of a client instance
195+
*
196+
* @param[in] client The client to get the bearers of.
197+
* @param[out] bearers The bearers struct that will be populated with the bearers of @p client.
198+
199+
* @retval 0 Success
200+
* @retval -EINVAL @p client or @p bearers is NULL
201+
*/
202+
int bt_ccp_call_control_client_get_bearers(struct bt_ccp_call_control_client *client,
203+
struct bt_ccp_call_control_client_bearers *bearers);
204+
192205
/** @} */ /* End of group bt_ccp_call_control_client */
193206
#ifdef __cplusplus
194207
}

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)