summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAtul Rai <a.rai@samsung.com>2018-05-18 08:30:26 +0530
committerAtul Rai <a.rai@samsung.com>2018-05-22 17:25:04 +0530
commit67cdef697ae481675b84ebbc50247763ff732b52 (patch)
treea73a3fb9a112087a09c67ac2eeb765806c02ac89
parentfd8e51badb18555cc2ff5980844af5cef087e43c (diff)
downloadbluez-67cdef697ae481675b84ebbc50247763ff732b52.tar.gz
bluez-67cdef697ae481675b84ebbc50247763ff732b52.tar.bz2
bluez-67cdef697ae481675b84ebbc50247763ff732b52.zip
[Mesh] Adapt meshctl for Tizen platform
Change-Id: I094dd7ecd8f41f9db79cead816b870de18e0330b Signed-off-by: Atul Rai <a.rai@samsung.com>
-rw-r--r--mesh/main.c114
1 files changed, 113 insertions, 1 deletions
diff --git a/mesh/main.c b/mesh/main.c
index 3e1484f6..1b78aaf1 100644
--- a/mesh/main.c
+++ b/mesh/main.c
@@ -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);