diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-10-07 15:08:48 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-10-07 15:08:48 +0200 |
commit | 866c74f98fae4227d26c651bb6adff43f5275498 (patch) | |
tree | 694c3c2bafa60d2b6b197388063b79a1fa4532a1 | |
parent | 6ca9fc9115f323d7358b146096994c7f2ba344b5 (diff) | |
download | connman-866c74f98fae4227d26c651bb6adff43f5275498.tar.gz connman-866c74f98fae4227d26c651bb6adff43f5275498.tar.bz2 connman-866c74f98fae4227d26c651bb6adff43f5275498.zip |
Update status of Enabled property
-rw-r--r-- | src/element.c | 27 |
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); |