summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-10-07 15:08:48 +0200
committerMarcel Holtmann <marcel@holtmann.org>2008-10-07 15:08:48 +0200
commit866c74f98fae4227d26c651bb6adff43f5275498 (patch)
tree694c3c2bafa60d2b6b197388063b79a1fa4532a1
parent6ca9fc9115f323d7358b146096994c7f2ba344b5 (diff)
downloadconnman-866c74f98fae4227d26c651bb6adff43f5275498.tar.gz
connman-866c74f98fae4227d26c651bb6adff43f5275498.tar.bz2
connman-866c74f98fae4227d26c651bb6adff43f5275498.zip
Update status of Enabled property
-rw-r--r--src/element.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/element.c b/src/element.c
index 2934eddc..ff467d54 100644
--- a/src/element.c
+++ b/src/element.c
@@ -359,6 +359,9 @@ static DBusMessage *do_update(DBusConnection *conn,
if (element->driver == NULL)
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+ if (element->enabled == FALSE)
+ return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+
if (element->driver->update) {
DBG("Calling update callback");
element->driver->update(element);
@@ -377,9 +380,19 @@ static DBusMessage *do_enable(DBusConnection *conn,
if (element->driver == NULL)
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+ if (element->enabled == TRUE)
+ return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+
if (element->driver->enable) {
DBG("Calling enable callback");
- element->driver->enable(element);
+ if (element->driver->enable(element) == 0) {
+ element->enabled = TRUE;
+
+ g_dbus_emit_signal(connection, CONNMAN_MANAGER_PATH,
+ CONNMAN_MANAGER_INTERFACE, "ElementUpdated",
+ DBUS_TYPE_OBJECT_PATH, &element->path,
+ DBUS_TYPE_INVALID);
+ }
}
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
@@ -395,9 +408,19 @@ static DBusMessage *do_disable(DBusConnection *conn,
if (element->driver == NULL)
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+ if (element->enabled == FALSE)
+ return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+
if (element->driver->disable) {
DBG("Calling disable callback");
- element->driver->disable(element);
+ if (element->driver->disable(element) == 0) {
+ element->enabled = FALSE;
+
+ g_dbus_emit_signal(connection, CONNMAN_MANAGER_PATH,
+ CONNMAN_MANAGER_INTERFACE, "ElementUpdated",
+ DBUS_TYPE_OBJECT_PATH, &element->path,
+ DBUS_TYPE_INVALID);
+ }
}
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);