main.conf: Make ReverseServiceDiscovery work with LE
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Wed, 29 May 2019 11:55:37 +0000 (14:55 +0300)
committerhimanshu <h.himanshu@samsung.com>
Tue, 11 Feb 2020 08:57:47 +0000 (14:27 +0530)
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 <h.himanshu@samsung.com>
src/device.c
src/hcid.h
src/main.c
src/main.conf

index a518d9e..6f10d41 100644 (file)
@@ -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);
index 04de724..29c3083 100755 (executable)
@@ -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;
index 08bdc8e..76f8006 100755 (executable)
@@ -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
index e66b1d9..d947260 100755 (executable)
 #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