linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH BlueZ] main.conf: Make ReverseServiceDiscovery work with LE
@ 2019-05-29 12:14 Luiz Augusto von Dentz
  2019-06-03 10:12 ` Luiz Augusto von Dentz
  0 siblings, 1 reply; 2+ messages in thread
From: Luiz Augusto von Dentz @ 2019-05-29 12:14 UTC (permalink / raw)
  To: linux-bluetooth

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

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


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH BlueZ] main.conf: Make ReverseServiceDiscovery work with LE
  2019-05-29 12:14 [PATCH BlueZ] main.conf: Make ReverseServiceDiscovery work with LE Luiz Augusto von Dentz
@ 2019-06-03 10:12 ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 2+ messages in thread
From: Luiz Augusto von Dentz @ 2019-06-03 10:12 UTC (permalink / raw)
  To: linux-bluetooth

Hi,

On Wed, May 29, 2019 at 3:14 PM Luiz Augusto von Dentz
<luiz.dentz@gmail.com> wrote:
>
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>
> 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

Applied.

-- 
Luiz Augusto von Dentz

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-06-03 10:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-29 12:14 [PATCH BlueZ] main.conf: Make ReverseServiceDiscovery work with LE Luiz Augusto von Dentz
2019-06-03 10:12 ` Luiz Augusto von Dentz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).