diff --git a/drivers/nble/conn_internal.h b/drivers/nble/conn_internal.h index 48a44f33dbd..152ecf3329a 100644 --- a/drivers/nble/conn_internal.h +++ b/drivers/nble/conn_internal.h @@ -31,4 +31,6 @@ struct bt_conn { BT_CONN_CONNECTED, BT_CONN_DISCONNECT, } state; + + void *gatt_discover; }; diff --git a/drivers/nble/gatt.c b/drivers/nble/gatt.c index e5ab55531c5..c1c784bac3b 100644 --- a/drivers/nble/gatt.c +++ b/drivers/nble/gatt.c @@ -390,6 +390,10 @@ int bt_gatt_discover(struct bt_conn *conn, return -EINVAL; } + if (conn->gatt_discover) { + return -EBUSY; + } + switch (params->type) { case BT_GATT_DISCOVER_PRIMARY: case BT_GATT_DISCOVER_INCLUDE: @@ -403,6 +407,8 @@ int bt_gatt_discover(struct bt_conn *conn, discover_params.handle_range.start_handle = params->start_handle; discover_params.handle_range.end_handle = params->end_handle; + conn->gatt_discover = params; + nble_gattc_discover_req(&discover_params, NULL); break; default: