2024-01-22 17:38:19

by Frédéric Danis

[permalink] [raw]
Subject: [PATCH BlueZ 5/5] btgatt-client: Add function to search all primary services

This is requested to pass PTS GATT/CL/GAD/BV-01-C test.
---
tools/btgatt-client.c | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/tools/btgatt-client.c b/tools/btgatt-client.c
index a7d5d76ba..d097727dc 100644
--- a/tools/btgatt-client.c
+++ b/tools/btgatt-client.c
@@ -1332,13 +1332,6 @@ static void cmd_set_retry_on_sec_error(struct client *cli, char *cmd_str)
printf("Invalid argument: %s\n", argv[0]);
}

-static void search_service_usage(void)
-{
- printf("Usage: search-service <uuid>\n"
- "e.g.:\n"
- "\tsearch-service 1800\n");
-}
-
static void search_service_cb(bool success, uint8_t att_ecode,
struct bt_gatt_result *result,
void *user_data)
@@ -1370,6 +1363,27 @@ static void search_service_cb(bool success, uint8_t att_ecode,
PRLOG("\n");
}

+static void cmd_search_all_primary_services(struct client *cli, char *cmd_str)
+{
+ if (!bt_gatt_client_is_ready(cli->gatt)) {
+ printf("GATT client not initialized\n");
+ return;
+ }
+
+ bt_gatt_discover_all_primary_services(bt_gatt_client_get_att(cli->gatt),
+ NULL,
+ search_service_cb,
+ NULL,
+ NULL);
+}
+
+static void search_service_usage(void)
+{
+ printf("Usage: search-service <uuid>\n"
+ "e.g.:\n"
+ "\tsearch-service 1800\n");
+}
+
static void cmd_search_service(struct client *cli, char *cmd_str)
{
char *argv[2];
@@ -1603,6 +1617,8 @@ static struct {
"\tSet signing key for signed write command"},
{ "set-retry-on-sec-error", cmd_set_retry_on_sec_error,
"\tSet retry on security error by elevating security"},
+ { "search-all-primary-services", cmd_search_all_primary_services,
+ "\tSearch all primary services"},
{ "search-service", cmd_search_service,
"\tSearch service"},
{ "search-characteristics", cmd_search_characteristics,
--
2.34.1