[PATCH BlueZ] main.conf: Make ReverseServiceDiscovery work with LE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>

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.
---
 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 8ddfa28ff..263f60aea 100644
--- a/src/device.c
+++ b/src/device.c
@@ -4933,6 +4933,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) {
@@ -5814,7 +5819,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 */
@@ -5858,7 +5863,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 1eb3c5ac2..adea85ce2 100644
--- 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 696728320..1a6ab36a3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -367,7 +367,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);
@@ -456,7 +456,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;
 
diff --git a/src/main.conf b/src/main.conf
index b2f843c75..40687a755 100644
--- a/src/main.conf
+++ b/src/main.conf
@@ -30,9 +30,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.21.0




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux