Add support functions for setting basic, dictionary and array properties.
---
Makefile.am | 1 +
client/dbus_helpers.c | 104 +++++++++++++++++++++++++++++++++++++++++--------
client/dbus_helpers.h | 17 ++++++++
3 files changed, 106 insertions(+), 16 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 72bee00..b974a0e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -229,6 +229,7 @@ noinst_PROGRAMS += client/connmanctl
MANUAL_PAGES += doc/connmanctl.1
client_connmanctl_SOURCES = $(gdbus_sources) src/connman.h \
+ src/dbus.c src/log.c \
client/dbus_helpers.h client/dbus_helpers.c \
client/dbus.h client/dbus.c \
client/data_manager.h client/data_manager.c \
diff --git a/client/dbus_helpers.c b/client/dbus_helpers.c
index 9158d85..f20637f 100644
--- a/client/dbus_helpers.c
+++ b/client/dbus_helpers.c
@@ -23,6 +23,7 @@
#include <errno.h>
#include <glib.h>
+#include "../include/dbus.h"
#include "input.h"
#include "dbus_helpers.h"
@@ -156,27 +157,14 @@ end:
dbus_message_unref(reply);
}
-int __connmanctl_dbus_method_call(DBusConnection *connection, const char *path,
- const char *interface, const char *method,
- connmanctl_dbus_method_return_fn cb, void * user_data,
- int arg1, ...)
+static int send_method_call(DBusConnection *connection,
+ DBusMessage *message, connmanctl_dbus_method_return_fn cb,
+ void *user_data)
{
int res = -ENXIO;
- DBusMessage *message;
- va_list args;
DBusPendingCall *call;
struct dbus_callback *callback;
- message = dbus_message_new_method_call("net.connman", path,
- interface, method);
-
- if (message == NULL)
- return -ENOMEM;
-
- va_start(args, arg1);
- dbus_message_append_args_valist(message, arg1, args);
- va_end(args);
-
if (dbus_connection_send_with_reply(connection, message, &call,
TIMEOUT) == FALSE)
goto end;
@@ -197,3 +185,87 @@ end:
dbus_message_unref(message);
return res;
}
+
+int __connmanctl_dbus_method_call(DBusConnection *connection, const char *path,
+ const char *interface, const char *method,
+ connmanctl_dbus_method_return_fn cb, void *user_data,
+ int arg1, ...)
+{
+ DBusMessage *message;
+ va_list args;
+
+ message = dbus_message_new_method_call("net.connman", path,
+ interface, method);
+
+ if (message == NULL)
+ return -ENOMEM;
+
+ va_start(args, arg1);
+ dbus_message_append_args_valist(message, arg1, args);
+ va_end(args);
+
+ return send_method_call(connection, message, cb, user_data);
+}
+
+int __connmanctl_dbus_set_property(DBusConnection *connection, const char
*path,
+ const char *interface, connmanctl_dbus_method_return_fn cb,
+ void * user_data, const char *property, int type, void *value)
+{
+ DBusMessage *message;
+ DBusMessageIter iter;
+
+ message = dbus_message_new_method_call("net.connman", path,
+ interface, "SetProperty");
+
+ if (message == NULL)
+ return -ENOMEM;
+
+ dbus_message_iter_init_append(message, &iter);
+ connman_dbus_property_append_basic(&iter, property, type, value);
+
+ return send_method_call(connection, message, cb, user_data);
+}
+
+int __connmanctl_dbus_set_property_dict(DBusConnection *connection,
+ const char *path, const char *interface,
+ connmanctl_dbus_method_return_fn cb, void *user_data,
+ const char *property, int type,
+ connman_dbus_append_cb_t append_fn, void *append_user_data)
+{
+ DBusMessage *message;
+ DBusMessageIter iter;
+
+ message = dbus_message_new_method_call("net.connman", path,
+ interface, "SetProperty");
+
+ if (message == NULL)
+ return -ENOMEM;
+
+ dbus_message_iter_init_append(message, &iter);
+ connman_dbus_property_append_dict(&iter, property, append_fn,
+ append_user_data);
+
+ return send_method_call(connection, message, cb, user_data);
+}
+
+int __connmanctl_dbus_set_property_array(DBusConnection *connection,
+ const char *path, const char *interface,
+ connmanctl_dbus_method_return_fn cb, void *user_data,
+ const char *property, int type,
+ connman_dbus_append_cb_t append_fn, void *append_user_data)
+{
+ DBusMessage *message;
+ DBusMessageIter iter;
+
+ message = dbus_message_new_method_call("net.connman", path,
+ interface, "SetProperty");
+
+ if (message == NULL)
+ return -ENOMEM;
+
+ dbus_message_iter_init_append(message, &iter);
+ connman_dbus_property_append_array(&iter, property, type,
+ append_fn, append_user_data);
+
+ return send_method_call(connection, message, cb, user_data);
+}
diff --git a/client/dbus_helpers.h b/client/dbus_helpers.h
index dc575f9..54138a9 100644
--- a/client/dbus_helpers.h
+++ b/client/dbus_helpers.h
@@ -23,6 +23,7 @@
#define __CONNMANCTL_DBUS_HELPERS_H
#include <dbus/dbus.h>
+#include "../include/dbus.h"
#ifdef __cplusplus
extern "C" {
@@ -38,6 +39,22 @@ int __connmanctl_dbus_method_call(DBusConnection
*connection, const char *path,
connmanctl_dbus_method_return_fn cb, void * user_data,
int arg1, ...);
+int __connmanctl_dbus_set_property(DBusConnection *connection, const char
*path,
+ const char *interface, connmanctl_dbus_method_return_fn cb,
+ void * user_data, const char *property, int type, void *value);
+
+int __connmanctl_dbus_set_property_dict(DBusConnection *connection,
+ const char *path, const char *interface,
+ connmanctl_dbus_method_return_fn cb, void * user_data,
+ const char *property, int type,
+ connman_dbus_append_cb_t append_fn, void *append_user_data);
+
+int __connmanctl_dbus_set_property_array(DBusConnection *connection,
+ const char *path, const char *interface,
+ connmanctl_dbus_method_return_fn cb, void *user_data,
+ const char *property, int type,
+ connman_dbus_append_cb_t append_fn, void *append_user_data);
+
#ifdef __cplusplus
}
#endif
--
1.7.10.4
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman