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;
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;
bt_shell_printf("Trying to connect to mesh\n");
}
+#endif
}
static void adapter_added(GDBusProxy *proxy)
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;
}
} 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);
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)
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,
}
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;
}
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)
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);
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);