strncpy(addr, address, len);
addr[len] = '\0';
- addr[len-1] = 'X';
- addr[len-2] = 'X';
+ addr[len-7] = 'X';
+ addr[len-8] = 'X';
+ addr[len-10] = 'X';
+ addr[len-11] = 'X';
+ addr[len-13] = 'X';
+ addr[len-14] = 'X';
+ addr[len-16] = 'X';
+ addr[len-17] = 'X';
return;
}
return BLUETOOTH_ERROR_NONE;
}
+static char *__bt_extract_device_path(GVariantIter *iter, char *address)
+{
+ char *object_path = NULL;
+ char device_address[BT_ADDRESS_STRING_SIZE] = { 0 };
+
+ /* Parse the signature: oa{sa{sv}}} */
+ while (g_variant_iter_loop(iter, "{&oa{sa{sv}}}", &object_path,
+ NULL)) {
+ if (!object_path) {
+ BT_ERR("Unable to get object path");
+ return NULL;
+ }
+ _bt_convert_device_path_to_address(object_path, device_address);
+ if (g_strcmp0(address, device_address) == 0)
+ return g_strdup(object_path);
+
+ }
+
+ BT_ERR("Unable to get object path");
+ return NULL;
+}
+
char *_bt_get_device_object_path(char *address)
{
char *object_path = NULL;
+ GDBusConnection *conn;
+ GDBusProxy *manager_proxy;
GVariant *result = NULL;
- GDBusProxy *proxy;
- GError *error = NULL;
+ GVariantIter *iter = NULL;
- proxy = _bt_get_adapter_proxy();
- retv_if(proxy == NULL, NULL);
+ conn = _bt_gdbus_get_system_gconn();
+ retv_if(conn == NULL, NULL);
- result = g_dbus_proxy_call_sync(proxy, "FindDevice",
- g_variant_new("(s)", address),
+ manager_proxy = _bt_get_manager_proxy();
+ retv_if(manager_proxy == NULL, NULL);
+
+ result = g_dbus_proxy_call_sync(manager_proxy, "GetManagedObjects",
+ NULL,
G_DBUS_CALL_FLAGS_NONE,
- -1, NULL, &error);
- if (result == NULL) {
- if (error) {
- BT_ERR("FindDevice Fail: %s", error->message);
- g_clear_error(&error);
- }
+ -1,
+ NULL,
+ NULL);
+ if (!result) {
+ BT_ERR("Can't get managed objects");
return NULL;
}
- g_variant_get(result, "(o)", &object_path);
-
+ /* signature of GetManagedObjects: a{oa{sa{sv}}} */
+ g_variant_get(result, "(a{oa{sa{sv}}})", &iter);
+ object_path = __bt_extract_device_path(iter, address);
+ g_variant_iter_free(iter);
g_variant_unref(result);
return object_path;
}
{"FE53FF98-B259-4337-B56A-0EC9F82C6BAD", "Control Point"},
{"C2051EE0-804D-4D50-A12C-15E243852100", "Notifications Source"},
{"1ab7c24d-185a-45b9-90d4-f7ab1a71949a", "Samsung Health Service"},
+ {"ADE3D529-C784-4F63-A987-EB69F70EE816", "IoT OIC Service"},
{NULL, NULL}
};
return (char *)bt_uuid_name[i].specification_name;
}
+ BT_INFO("Unknown uuid : %s", uuid);
return "Unknown";
}
}
}
+const char *_bt_convert_profile_state_to_string(bt_profile_state_t state)
+{
+ switch (state) {
+ case BT_PROFILE_STATE_UNAVAILABLE:
+ return "UNAVAILABLE";
+ case BT_PROFILE_STATE_DISCONNECTED:
+ return "DISCONNECTED";
+ case BT_PROFILE_STATE_CONNECTING:
+ return "CONNECTING";
+ case BT_PROFILE_STATE_CONNECTED:
+ return "CONNECTED";
+ case BT_PROFILE_STATE_DISCONNECTING:
+ return "DISCONNECTING";
+ }
+
+ return NULL;
+}
+
const char *_bt_convert_service_function_to_string(int function)
{
int i;