summaryrefslogtreecommitdiff
path: root/src/clock.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2011-04-18 11:33:19 -0700
committerMarcel Holtmann <marcel@holtmann.org>2011-04-18 11:33:19 -0700
commita51d364ba254346c4b6722945caf4e6eb90d05df (patch)
tree416c973ac059e8720c1cbd89a50bfff349c96b39 /src/clock.c
parent91d5de63c4651b8b24672afef33bbd4d2491ec78 (diff)
downloadconnman-a51d364ba254346c4b6722945caf4e6eb90d05df.tar.gz
connman-a51d364ba254346c4b6722945caf4e6eb90d05df.tar.bz2
connman-a51d364ba254346c4b6722945caf4e6eb90d05df.zip
clock: Add D-Bus interface skeleton
Diffstat (limited to 'src/clock.c')
-rw-r--r--src/clock.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/clock.c b/src/clock.c
index 3a59f311..99aff3c4 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -23,16 +23,90 @@
#include <config.h>
#endif
+#include <gdbus.h>
+
#include "connman.h"
+static DBusMessage *get_properties(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ DBusMessage *reply;
+ DBusMessageIter array, dict;
+
+ DBG("conn %p", conn);
+
+ reply = dbus_message_new_method_return(msg);
+ if (reply == NULL)
+ return NULL;
+
+ dbus_message_iter_init_append(reply, &array);
+
+ connman_dbus_dict_open(&array, &dict);
+
+ connman_dbus_dict_close(&array, &dict);
+
+ return reply;
+}
+
+static DBusMessage *set_property(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ DBusMessageIter iter, value;
+ const char *name;
+ int type;
+
+ DBG("conn %p", conn);
+
+ if (dbus_message_iter_init(msg, &iter) == FALSE)
+ return __connman_error_invalid_arguments(msg);
+
+ dbus_message_iter_get_basic(&iter, &name);
+ dbus_message_iter_next(&iter);
+ dbus_message_iter_recurse(&iter, &value);
+
+ type = dbus_message_iter_get_arg_type(&value);
+
+ return __connman_error_invalid_property(msg);
+}
+
+static GDBusMethodTable clock_methods[] = {
+ { "GetProperties", "", "a{sv}", get_properties },
+ { "SetProperty", "sv", "", set_property },
+ { },
+};
+
+static GDBusSignalTable clock_signals[] = {
+ { "PropertyChanged", "sv" },
+ { },
+};
+
+static DBusConnection *connection = NULL;
+
int __connman_clock_init(void)
{
DBG("");
+ connection = connman_dbus_get_connection();
+ if (connection == NULL)
+ return -1;
+
+ g_dbus_register_interface(connection, CONNMAN_MANAGER_PATH,
+ CONNMAN_CLOCK_INTERFACE,
+ clock_methods, clock_signals,
+ NULL, NULL, NULL);
+
return 0;
}
void __connman_clock_cleanup(void)
{
DBG("");
+
+ if (connection == NULL)
+ return;
+
+ g_dbus_unregister_interface(connection, CONNMAN_MANAGER_PATH,
+ CONNMAN_CLOCK_INTERFACE);
+
+ dbus_connection_unref(connection);
}