diff --git a/client/gatt.c b/client/gatt.c
index 1ca1159..93aec92 100644
--- a/client/gatt.c
+++ b/client/gatt.c
write_io.io = pipe_io_new(fd, NULL);
}
+static void acquire_setup(DBusMessageIter *iter, void *user_data)
+{
+ DBusMessageIter dict;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
+ DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
+ DBUS_TYPE_STRING_AS_STRING
+ DBUS_TYPE_VARIANT_AS_STRING
+ DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
+ &dict);
+
+ dbus_message_iter_close_container(iter, &dict);
+}
+
void gatt_acquire_write(GDBusProxy *proxy, const char *arg)
{
const char *iface;
return;
}
- if (g_dbus_proxy_method_call(proxy, "AcquireWrite", NULL,
+ if (g_dbus_proxy_method_call(proxy, "AcquireWrite", acquire_setup,
acquire_write_reply, NULL, NULL) == FALSE) {
rl_printf("Failed to AcquireWrite\n");
return;
return;
}
- if (g_dbus_proxy_method_call(proxy, "AcquireNotify", NULL,
+ if (g_dbus_proxy_method_call(proxy, "AcquireNotify", acquire_setup,
acquire_notify_reply, NULL, NULL) == FALSE) {
rl_printf("Failed to AcquireNotify\n");
return;
diff --git a/mesh/gatt.c b/mesh/gatt.c
index f9615b3..001eb17 100644
--- a/mesh/gatt.c
+++ b/mesh/gatt.c
pipe_write(write_io, data);
}
+static void acquire_setup(DBusMessageIter *iter, void *user_data)
+{
+ DBusMessageIter dict;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
+ DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
+ DBUS_TYPE_STRING_AS_STRING
+ DBUS_TYPE_VARIANT_AS_STRING
+ DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
+ &dict);
+
+ dbus_message_iter_close_container(iter, &dict);
+}
+
bool mesh_gatt_write(GDBusProxy *proxy, uint8_t *buf, uint16_t len,
GDBusReturnFunction cb, void *user_data)
{
return pipe_write(write_io, data);
if (g_dbus_proxy_get_property(proxy, "WriteAcquired", &iter)) {
- if (g_dbus_proxy_method_call(proxy, "AcquireWrite", NULL,
- acquire_write_reply, data, NULL) == FALSE) {
+ if (g_dbus_proxy_method_call(proxy, "AcquireWrite",
+ acquire_setup, acquire_write_reply,
+ data, NULL) == FALSE) {
rl_printf("Failed to AcquireWrite\n");
write_data_free(data);
return false;
struct notify_data *data;
DBusMessageIter iter;
const char *method;
+ GDBusSetupFunction setup = NULL;
data = g_new0(struct notify_data, 1);
data->proxy = proxy;
if (g_dbus_proxy_get_property(proxy, "NotifyAcquired", &iter)) {
method = "AcquireNotify";
cb = acquire_notify_reply;
+ setup = acquire_setup;
} else {
method = "StartNotify";
cb = notify_reply;
}
}
- if (g_dbus_proxy_method_call(proxy, method, NULL, cb,
+ if (g_dbus_proxy_method_call(proxy, method, setup, cb,
data, NULL) == FALSE) {
rl_printf("Failed to %s\n", method);
return false;
diff --git a/src/gatt-client.c b/src/gatt-client.c
index d523b88..32b3a87 100644
--- a/src/gatt-client.c
+++ b/src/gatt-client.c
{ "options", "a{sv}" }),
NULL,
characteristic_write_value) },
- { GDBUS_EXPERIMENTAL_ASYNC_METHOD("AcquireWrite", NULL,
+ { GDBUS_EXPERIMENTAL_ASYNC_METHOD("AcquireWrite",
+ GDBUS_ARGS({ "options", "a{sv}" }),
GDBUS_ARGS({ "fd", "h" },
{ "mtu", "q" }),
characteristic_acquire_write) },
- { GDBUS_EXPERIMENTAL_ASYNC_METHOD("AcquireNotify", NULL,
+ { GDBUS_EXPERIMENTAL_ASYNC_METHOD("AcquireNotify",
+ GDBUS_ARGS({ "options", "a{sv}" }),
GDBUS_ARGS({ "fd", "h" },
{ "mtu", "q" }),
characteristic_acquire_notify) },