From da4e1004a998416991536172b51f74b89d0b2b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Tue, 8 Sep 2015 18:11:22 +0200 Subject: dbus needs a tuple of variants --- src/lib/agent-helper.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/lib/agent-helper.c b/src/lib/agent-helper.c index 053ee31..a4d1a04 100644 --- a/src/lib/agent-helper.c +++ b/src/lib/agent-helper.c @@ -241,6 +241,7 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar Device *device_obj = device_new(g_variant_get_string(g_variant_get_child_value(parameters, 0), NULL)); const gchar *pin = _find_device_pin(device_get_dbus_object_path(device_obj)); guint32 ret = 0; + gboolean invoke = FALSE; if (_interactive) g_print("Device: %s (%s)\n", device_get_alias(device_obj, &error), device_get_address(device_obj, &error)); @@ -259,8 +260,7 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar if (_interactive) g_print("Passkey found\n"); sscanf(pin, "%u", &ret); - g_dbus_method_invocation_return_value(invocation, g_variant_new_uint32(ret)); - return; + invoke = TRUE; } else if (_interactive) { @@ -268,11 +268,19 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar errno = 0; if (scanf("%u", &ret) == EOF && errno) g_warning("%s\n", strerror(errno)); - g_dbus_method_invocation_return_value(invocation, g_variant_new_uint32(ret)); - return; + invoke = TRUE; } - g_dbus_method_invocation_return_dbus_error(invocation, "org.bluez.Error.Rejected", "No passkey inputted"); + if (invoke) + { + GVariant* vars[1]; + vars[0] = g_variant_new_uint32(ret); + g_dbus_method_invocation_return_value(invocation, g_variant_new_tuple(vars, 1)); + } + else + { + g_dbus_method_invocation_return_dbus_error(invocation, "org.bluez.Error.Rejected", "No passkey inputted"); + } } else if (g_strcmp0(method_name, "RequestPinCode") == 0) { @@ -280,6 +288,7 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar Device *device_obj = device_new(g_variant_get_string(g_variant_get_child_value(parameters, 0), NULL)); const gchar *pin = _find_device_pin(device_get_dbus_object_path(device_obj)); const gchar ret[16]; + gboolean invoke = FALSE; if (_interactive) g_print("Device: %s (%s)\n", device_get_alias(device_obj, &error), device_get_address(device_obj, &error)); @@ -298,8 +307,7 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar if (_interactive) g_print("Passkey found\n"); sscanf(pin, "%s", &ret); - g_dbus_method_invocation_return_value(invocation, g_variant_new_string(ret)); - return; + invoke = TRUE; } else if (_interactive) { @@ -307,13 +315,19 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar errno = 0; if (scanf("%s", &ret) == EOF && errno) g_warning("%s\n", strerror(errno)); + invoke = TRUE; + } + + if (invoke) + { GVariant* vars[1]; vars[0] = g_variant_new_string(ret); g_dbus_method_invocation_return_value(invocation, g_variant_new_tuple(vars, 1)); - return; } - - g_dbus_method_invocation_return_dbus_error(invocation, "org.bluez.Error.Rejected", "No passkey inputted"); + else + { + g_dbus_method_invocation_return_dbus_error(invocation, "org.bluez.Error.Rejected", "No passkey inputted"); + } } } -- cgit v1.2.1