From 8968f2b6c307e0df416c8b0a016dc3595d55c5d3 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 29 May 2019 14:55:37 +0300 Subject: [PATCH] main.conf: Make ReverseServiceDiscovery work with LE This makes ReverseServiceDiscovery work properly with LE connection by disabling the GATT client functionality which makes one able to setup a system to operate in peripheral role only mode. Change-Id: Ib011e22297ef2ee913b6dfaf817c54f75cc6a390 Signed-off-by: himanshu --- src/device.c | 9 +++++++-- src/hcid.h | 2 +- src/main.c | 4 ++-- src/main.conf | 8 +++++--- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/device.c b/src/device.c index a518d9e..6f10d41 100644 --- a/src/device.c +++ b/src/device.c @@ -7222,6 +7222,11 @@ static void gatt_client_init(struct btd_device *device) { gatt_client_cleanup(device); + if (!device->connect && !main_opts.reverse_discovery) { + DBG("Reverse service discovery disabled: skipping GATT client"); + return; + } + device->client = bt_gatt_client_new(device->db, device->att, device->att_mtu); if (!device->client) { @@ -8417,7 +8422,7 @@ void device_bonding_complete(struct btd_device *device, uint8_t bdaddr_type, bonding_request_free(bonding); } else if (!state->svc_resolved) { if (!device->browse && !device->discov_timer && - main_opts.reverse_sdp) { + main_opts.reverse_discovery) { /* If we are not initiators and there is no currently * active discovery or discovery timer, set discovery * timer */ @@ -8461,7 +8466,7 @@ unsigned int device_wait_for_svc_complete(struct btd_device *dev, dev->svc_callbacks = g_slist_prepend(dev->svc_callbacks, cb); - if (state->svc_resolved || !main_opts.reverse_sdp) + if (state->svc_resolved || !main_opts.reverse_discovery) cb->idle_id = g_idle_add(svc_idle_cb, cb); else if (dev->discov_timer > 0) { g_source_remove(dev->discov_timer); diff --git a/src/hcid.h b/src/hcid.h index 04de724..29c3083 100755 --- a/src/hcid.h +++ b/src/hcid.h @@ -43,7 +43,7 @@ struct main_opts { uint32_t discovto; uint8_t privacy; - gboolean reverse_sdp; + gboolean reverse_discovery; gboolean name_resolv; gboolean debug_keys; gboolean fast_conn; diff --git a/src/main.c b/src/main.c index 08bdc8e..76f8006 100755 --- a/src/main.c +++ b/src/main.c @@ -371,7 +371,7 @@ static void parse_config(GKeyFile *config) DBG("%s", err->message); g_clear_error(&err); } else - main_opts.reverse_sdp = boolean; + main_opts.reverse_discovery = boolean; boolean = g_key_file_get_boolean(config, "General", "NameResolving", &err); @@ -486,7 +486,7 @@ static void init_defaults(void) main_opts.class = 0x000000; main_opts.pairto = DEFAULT_PAIRABLE_TIMEOUT; main_opts.discovto = DEFAULT_DISCOVERABLE_TIMEOUT; - main_opts.reverse_sdp = TRUE; + main_opts.reverse_discovery = TRUE; main_opts.name_resolv = TRUE; main_opts.debug_keys = FALSE; #ifdef TIZEN_FEATURE_BLUEZ_MODIFY diff --git a/src/main.conf b/src/main.conf index e66b1d9..d947260 100755 --- a/src/main.conf +++ b/src/main.conf @@ -36,9 +36,11 @@ #DeviceID = bluetooth:1234:5678:abcd # Do reverse service discovery for previously unknown devices that connect to -# us. This option is really only needed for qualification since the BITE tester -# doesn't like us doing reverse SDP for some test cases (though there could in -# theory be other useful purposes for this too). Defaults to 'true'. +# us. For BR/EDR this option is really only needed for qualification since the +# BITE tester doesn't like us doing reverse SDP for some test cases, for LE +# this disables the GATT client functionally so it can be used in system which +# can only operate as peripheral. +# Defaults to 'true'. #ReverseServiceDiscovery = true # Enable name resolving after inquiry. Set it to 'false' if you don't need -- 2.7.4