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

Reply via email to