summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-11-23 13:44:22 +0100
committerMarcel Holtmann <marcel@holtmann.org>2008-11-23 13:44:22 +0100
commit7ad970d62c732ed2e9738c595c7b5ebff15b211f (patch)
tree788a5595360f70f517aaa49f293b566fb7a253fc
parentb570627cf85d3231a1bdff90c6d7f07c015194d5 (diff)
downloadconnman-7ad970d62c732ed2e9738c595c7b5ebff15b211f.tar.gz
connman-7ad970d62c732ed2e9738c595c7b5ebff15b211f.tar.bz2
connman-7ad970d62c732ed2e9738c595c7b5ebff15b211f.zip
Add Device interface to device elements
-rw-r--r--src/element.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/element.c b/src/element.c
index 3e2e0c3e..2ed2361e 100644
--- a/src/element.c
+++ b/src/element.c
@@ -416,6 +416,18 @@ static GDBusSignalTable element_signals[] = {
{ },
};
+static GDBusMethodTable device_methods[] = {
+ { "GetProperties", "", "a{sv}", get_properties },
+ { "SetProperty", "sv", "", set_property },
+ { "ClearProperty", "s", "", clear_property },
+ { },
+};
+
+static GDBusSignalTable device_signals[] = {
+ { "PropertyChanged", "sv" },
+ { },
+};
+
struct append_filter {
enum connman_element_type type;
DBusMessageIter *iter;
@@ -1260,7 +1272,16 @@ static void register_element(gpointer data, gpointer user_data)
CONNMAN_ELEMENT_INTERFACE,
element_methods, element_signals,
NULL, element, NULL) == FALSE)
- connman_error("Failed to register %s", element->path);
+ connman_error("Failed to register %s element", element->path);
+
+ if (element->type == CONNMAN_ELEMENT_TYPE_DEVICE) {
+ if (g_dbus_register_interface(connection, element->path,
+ CONNMAN_DEVICE_INTERFACE,
+ device_methods, device_signals,
+ NULL, element, NULL) == FALSE)
+ connman_error("Failed to register %s device",
+ element->path);
+ }
g_dbus_emit_signal(connection, CONNMAN_MANAGER_PATH,
CONNMAN_MANAGER_INTERFACE, "ElementAdded",
@@ -1321,6 +1342,10 @@ static gboolean remove_element(GNode *node, gpointer user_data)
DBUS_TYPE_OBJECT_PATH, &element->path,
DBUS_TYPE_INVALID);
+ if (element->type == CONNMAN_ELEMENT_TYPE_DEVICE)
+ g_dbus_unregister_interface(connection, element->path,
+ CONNMAN_DEVICE_INTERFACE);
+
g_dbus_unregister_interface(connection, element->path,
CONNMAN_ELEMENT_INTERFACE);