[Mesh] Adapt meshctl for Tizen platform 82/179482/2
authorAtul Rai <a.rai@samsung.com>
Fri, 18 May 2018 03:00:26 +0000 (08:30 +0530)
committerAtul Rai <a.rai@samsung.com>
Tue, 22 May 2018 11:55:04 +0000 (17:25 +0530)
Change-Id: I094dd7ecd8f41f9db79cead816b870de18e0330b
Signed-off-by: Atul Rai <a.rai@samsung.com>
mesh/main.c

index 3e1484f..1b78aaf 100644 (file)
@@ -626,6 +626,15 @@ done:
                bt_shell_set_menu(&main_menu);
 }
 
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+static void connect_setup(DBusMessageIter *iter, void *user_data)
+{
+       gboolean auto_connect = FALSE;
+
+       dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &auto_connect);
+}
+#endif
+
 static void connect_reply(DBusMessage *message, void *user_data)
 {
        GDBusProxy *proxy = user_data;
@@ -664,6 +673,60 @@ static void update_device_info(GDBusProxy *proxy)
        if (!g_dbus_proxy_get_property(proxy, "Address", &iter))
                return;
 
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+       if (parse_service_data(proxy, MESH_PROXY_SVC_UUID, NULL) &&
+                                                               discover_mesh) {
+               bool res;
+
+               g_dbus_proxy_method_call(default_ctrl->proxy, "StopLEDiscovery",
+                                               NULL, NULL, NULL, NULL);
+               discover_mesh = false;
+
+               forget_mesh_devices();
+
+               /* sleep(1): Wait for StopLEDiscovery to complete before calling ConnectLE */
+               sleep(1);
+               res = g_dbus_proxy_method_call(proxy, "ConnectLE", connect_setup,
+                                               connect_reply, proxy, NULL);
+
+               if (!res)
+                       bt_shell_printf("Failed to connect to mesh\n");
+
+               else
+                       bt_shell_printf("Trying to connect to mesh\n");
+
+       } else if (parse_service_data(proxy, MESH_PROV_SVC_UUID, &prov_data)) {
+               struct mesh_device *dev;
+
+               dev = find_device_by_uuid(adapter->mesh_devices,
+                                                       prov_data.dev_uuid);
+
+               /* Display provisioning service once per discovery session */
+               if (discovering && (!dev || !dev->hide))
+                                               print_prov_service(&prov_data);
+
+               if (dev) {
+                       dev->proxy = proxy;
+                       dev->hide = discovering;
+                       return;
+               }
+
+               dev = g_malloc0(sizeof(struct mesh_device));
+               if (!dev)
+                       return;
+
+               dev->proxy = proxy;
+               dev->hide = discovering;
+
+               memcpy(dev->dev_uuid, prov_data.dev_uuid, 16);
+
+               adapter->mesh_devices = g_list_append(adapter->mesh_devices,
+                                                       dev);
+               print_device(proxy, COLORED_NEW);
+
+               node_create_new(&prov_data);
+       }
+#else
        if (parse_service_data(proxy, MESH_PROV_SVC_UUID, &prov_data)) {
                struct mesh_device *dev;
 
@@ -715,6 +778,7 @@ static void update_device_info(GDBusProxy *proxy)
                        bt_shell_printf("Trying to connect to mesh\n");
 
        }
+#endif
 }
 
 static void adapter_added(GDBusProxy *proxy)
@@ -760,8 +824,13 @@ static void disconnect(GDBusReturnFunction cb, void *user_data)
        if (!proxy)
                return;
 
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+       if (g_dbus_proxy_method_call(proxy, "DisconnectLE", NULL, cb, user_data,
+                                                       NULL) == FALSE) {
+#else
        if (g_dbus_proxy_method_call(proxy, "Disconnect", NULL, cb, user_data,
                                                        NULL) == FALSE) {
+#endif
                bt_shell_printf("Failed to disconnect\n");
                return;
        }
@@ -1239,7 +1308,11 @@ static void property_changed(GDBusProxy *proxy, const char *name,
                } else
                        str = g_strdup("");
 
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+               if (strcmp(name, "LEDiscovering") == 0) {
+#else
                if (strcmp(name, "Discovering") == 0) {
+#endif
                        int temp;
 
                        dbus_message_iter_get_basic(iter, &temp);
@@ -1265,8 +1338,10 @@ static void property_changed(GDBusProxy *proxy, const char *name,
 static void message_handler(DBusConnection *connection,
                                        DBusMessage *message, void *user_data)
 {
+#ifndef TIZEN_FEATURE_BLUEZ_MODIFY /* Suppress unnecessary logs */
        bt_shell_printf("[SIGNAL] %s.%s\n", dbus_message_get_interface(message),
                                        dbus_message_get_member(message));
+#endif
 }
 
 static struct adapter *find_ctrl_by_address(GList *source, const char *address)
@@ -1544,9 +1619,17 @@ static void cmd_scan_unprovisioned(int argc, char *argv[])
        if (enable == TRUE) {
                discover_mesh = false;
                set_scan_filter_uuids(filters);
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+               method = "StartLEDiscovery";
+#else
                method = "StartDiscovery";
+#endif
        } else {
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+               method = "StopLEDiscovery";
+#else
                method = "StopDiscovery";
+#endif
        }
 
        if (g_dbus_proxy_method_call(default_ctrl->proxy, method,
@@ -1653,8 +1736,13 @@ static void cmd_connect(int argc, char *argv[])
        }
 
        if (discovering)
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+               g_dbus_proxy_method_call(default_ctrl->proxy, "StopLEDiscovery",
+                                               NULL, NULL, NULL, NULL);
+#else
                g_dbus_proxy_method_call(default_ctrl->proxy, "StopDiscovery",
                                                NULL, NULL, NULL, NULL);
+#endif
 
        set_scan_filter_uuids(filters);
        discover_mesh = true;
@@ -1671,15 +1759,23 @@ static void cmd_connect(int argc, char *argv[])
        }
 
        if (g_dbus_proxy_method_call(default_ctrl->proxy,
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+                       "StartLEDiscovery", NULL, start_discovery_reply,
+#else
                        "StartDiscovery", NULL, start_discovery_reply,
+#endif
                                GUINT_TO_POINTER(TRUE), NULL) == FALSE) {
                bt_shell_printf("Failed to start mesh proxy discovery\n");
                return bt_shell_noninteractive_quit(EXIT_FAILURE);
        }
 
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+       g_dbus_proxy_method_call(default_ctrl->proxy, "StartLEDiscovery",
+                                               NULL, NULL, NULL, NULL);
+#else
        g_dbus_proxy_method_call(default_ctrl->proxy, "StartDiscovery",
                                                NULL, NULL, NULL, NULL);
-
+#endif
 }
 
 static void prov_disconn_reply(DBusMessage *message, void *user_data)
@@ -1707,7 +1803,11 @@ static void prov_disconn_reply(DBusMessage *message, void *user_data)
        connection.unicast = node_get_primary(node);
 
        if (g_dbus_proxy_method_call(default_ctrl->proxy,
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+                       "StartLEDiscovery", NULL, start_discovery_reply,
+#else
                        "StartDiscovery", NULL, start_discovery_reply,
+#endif
                                GUINT_TO_POINTER(TRUE), NULL) == FALSE) {
                bt_shell_printf("Failed to start mesh proxy discovery\n");
                return bt_shell_noninteractive_quit(EXIT_FAILURE);
@@ -1813,14 +1913,26 @@ static void cmd_start_prov(int argc, char *argv[])
 
        proxy = dev->proxy;
        if (discovering)
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+               g_dbus_proxy_method_call(default_ctrl->proxy, "StopLEDiscovery",
+                                               NULL, NULL, NULL, NULL);
+#else
                g_dbus_proxy_method_call(default_ctrl->proxy, "StopDiscovery",
                                                NULL, NULL, NULL, NULL);
+#endif
        forget_mesh_devices();
 
        connection.type = CONN_TYPE_PROVISION;
 
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+       /* sleep(1): Wait for StopLEDiscovery to complete before calling ConnectLE */
+       sleep(1);
+       if (g_dbus_proxy_method_call(proxy, "ConnectLE", connect_setup,
+                                       connect_reply, proxy, NULL) == FALSE) {
+#else
        if (g_dbus_proxy_method_call(proxy, "Connect", NULL, connect_reply,
                                                        proxy, NULL) == FALSE) {
+#endif
                bt_shell_printf("Failed to connect ");
                print_device(proxy, NULL);
                return bt_shell_noninteractive_quit(EXIT_FAILURE);