bluetooth: CSIP: Add API to get service handles

This is needed for upper tester.

Signed-off-by: Piotr Narajowski <piotr.narajowski@codecoup.pl>
This commit is contained in:
Piotr Narajowski 2024-02-06 12:04:16 +01:00 committed by Alberto Escolar
commit 43d830082c
2 changed files with 34 additions and 30 deletions

View file

@ -21,5 +21,30 @@ struct bt_csip_set_sirk {
uint8_t value[BT_CSIP_SET_SIRK_SIZE];
} __packed;
struct bt_csip_set_coordinator_svc_inst *bt_csip_set_coordinator_lookup_instance_by_index(
const struct bt_conn *conn, uint8_t idx);
struct bt_csip_set_coordinator_svc_inst {
uint8_t set_lock;
uint16_t start_handle;
uint16_t end_handle;
uint16_t set_sirk_handle;
uint16_t set_size_handle;
uint16_t set_lock_handle;
uint16_t rank_handle;
uint8_t idx;
struct bt_gatt_subscribe_params sirk_sub_params;
struct bt_gatt_discover_params sirk_sub_disc_params;
struct bt_gatt_subscribe_params size_sub_params;
struct bt_gatt_discover_params size_sub_disc_params;
struct bt_gatt_subscribe_params lock_sub_params;
struct bt_gatt_discover_params lock_sub_disc_params;
struct bt_conn *conn;
struct bt_csip_set_coordinator_set_info *set_info;
};
struct bt_csip_set_coordinator_csis_inst *bt_csip_set_coordinator_csis_inst_by_handle(
struct bt_conn *conn, uint16_t start_handle);

View file

@ -49,28 +49,6 @@ static struct bt_gatt_discover_params discover_params;
static struct bt_csip_set_coordinator_svc_inst *cur_inst;
static bool busy;
struct bt_csip_set_coordinator_svc_inst {
uint8_t set_lock;
uint16_t start_handle;
uint16_t end_handle;
uint16_t set_sirk_handle;
uint16_t set_size_handle;
uint16_t set_lock_handle;
uint16_t rank_handle;
uint8_t idx;
struct bt_gatt_subscribe_params sirk_sub_params;
struct bt_gatt_discover_params sirk_sub_disc_params;
struct bt_gatt_subscribe_params size_sub_params;
struct bt_gatt_discover_params size_sub_disc_params;
struct bt_gatt_subscribe_params lock_sub_params;
struct bt_gatt_discover_params lock_sub_disc_params;
struct bt_conn *conn;
struct bt_csip_set_coordinator_set_info *set_info;
};
static struct active_members {
struct bt_csip_set_coordinator_set_member *members[CONFIG_BT_MAX_CONN];
const struct bt_csip_set_coordinator_set_info *info;
@ -133,8 +111,8 @@ static struct bt_csip_set_coordinator_svc_inst *lookup_instance_by_handle(struct
return NULL;
}
static struct bt_csip_set_coordinator_svc_inst *lookup_instance_by_index(const struct bt_conn *conn,
uint8_t idx)
struct bt_csip_set_coordinator_svc_inst *bt_csip_set_coordinator_lookup_instance_by_index
(const struct bt_conn *conn, uint8_t idx)
{
uint8_t conn_index;
struct bt_csip_set_coordinator_inst *client;
@ -164,7 +142,7 @@ static struct bt_csip_set_coordinator_svc_inst *lookup_instance_by_set_info(
memcmp(&member_set_info->set_sirk,
&set_info->set_sirk,
sizeof(set_info->set_sirk)) == 0) {
return lookup_instance_by_index(inst->conn, i);
return bt_csip_set_coordinator_lookup_instance_by_index(inst->conn, i);
}
}
@ -597,11 +575,11 @@ static int csip_set_coordinator_read_set_size(struct bt_conn *conn,
if (inst_idx >= CONFIG_BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES) {
return -EINVAL;
} else if (cur_inst != NULL) {
if (cur_inst != lookup_instance_by_index(conn, inst_idx)) {
if (cur_inst != bt_csip_set_coordinator_lookup_instance_by_index(conn, inst_idx)) {
return -EBUSY;
}
} else {
cur_inst = lookup_instance_by_index(conn, inst_idx);
cur_inst = bt_csip_set_coordinator_lookup_instance_by_index(conn, inst_idx);
if (cur_inst == NULL) {
LOG_DBG("Inst not found");
return -EINVAL;
@ -629,11 +607,11 @@ static int csip_set_coordinator_read_rank(struct bt_conn *conn,
if (inst_idx >= CONFIG_BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES) {
return -EINVAL;
} else if (cur_inst != NULL) {
if (cur_inst != lookup_instance_by_index(conn, inst_idx)) {
if (cur_inst != bt_csip_set_coordinator_lookup_instance_by_index(conn, inst_idx)) {
return -EBUSY;
}
} else {
cur_inst = lookup_instance_by_index(conn, inst_idx);
cur_inst = bt_csip_set_coordinator_lookup_instance_by_index(conn, inst_idx);
if (cur_inst == NULL) {
LOG_DBG("Inst not found");
return -EINVAL;
@ -1042,7 +1020,8 @@ static void discover_insts_resume(struct bt_conn *conn, uint16_t sirk_handle,
cur_inst = NULL;
if (next_idx < client->inst_count) {
cur_inst = lookup_instance_by_index(conn, next_idx);
cur_inst = bt_csip_set_coordinator_lookup_instance_by_index(conn,
next_idx);
/* Read next */
cb_err = read_set_sirk(cur_inst);