Implement support for device removal in GAP helper
diff --git a/test/gaptest.c b/test/gaptest.c
index 4f56b70..b93b994 100644
--- a/test/gaptest.c
+++ b/test/gaptest.c
@@ -123,6 +123,41 @@
return result;
}
+static int remove_device(DBusConnection *conn, const char *adapter,
+ const char *device)
+{
+ DBusMessage *message, *reply;
+ DBusError error;
+
+ message = dbus_message_new_method_call(BLUEZ_SERVICE, adapter,
+ ADAPTER_INTF, "RemoveDevice");
+ if (!message)
+ return -ENOMEM;
+
+ dbus_message_append_args(message, DBUS_TYPE_OBJECT_PATH, &device,
+ DBUS_TYPE_INVALID);
+
+ dbus_error_init(&error);
+
+ reply = dbus_connection_send_with_reply_and_block(conn,
+ message, -1, &error);
+
+ dbus_message_unref(message);
+
+ if (!reply) {
+ if (dbus_error_is_set(&error) == TRUE) {
+ fprintf(stderr, "%s\n", error.message);
+ dbus_error_free(&error);
+ } else
+ fprintf(stderr, "Failed to set property\n");
+ return -EIO;
+ }
+
+ dbus_message_unref(reply);
+
+ return 0;
+}
+
static int set_property(DBusConnection *conn, const char *adapter,
const char *key, int type, void *val)
{
@@ -268,6 +303,8 @@
fprintf(stderr, "Can't find device\n");
exit(1);
}
+
+ free(device);
}
if (remove) {
@@ -276,6 +313,10 @@
fprintf(stderr, "Can't find device\n");
exit(1);
}
+
+ remove_device(conn, adapter, device);
+
+ free(device);
}
free(adapter);