From: Marcel Holtmann Date: Wed, 15 Oct 2008 19:42:40 +0000 (+0200) Subject: Add set_enabled and rescan funtions X-Git-Tag: 0.1~140 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9508e2afee0328fcf3a11775555bb0ffe1b1d3e4;p=platform%2Fupstream%2Fconnman.git Add set_enabled and rescan funtions --- diff --git a/include/element.h b/include/element.h index 4669332..9054c83 100644 --- a/include/element.h +++ b/include/element.h @@ -128,6 +128,9 @@ extern void connman_element_unregister(struct connman_element *element); extern void connman_element_unregister_children(struct connman_element *element); extern void connman_element_update(struct connman_element *element); +extern int connman_element_set_enabled(struct connman_element *element, + gboolean enabled); + static inline void *connman_element_get_data(struct connman_element *element) { return element->driver_data; diff --git a/src/connman.h b/src/connman.h index 8b1e6fd..57f97bf 100644 --- a/src/connman.h +++ b/src/connman.h @@ -62,6 +62,9 @@ void __connman_plugin_cleanup(void); int __connman_security_check_privileges(DBusMessage *message); #include + +void __connman_driver_rescan(struct connman_driver *driver); + #include int __connman_element_init(DBusConnection *conn, const char *device); @@ -76,6 +79,11 @@ const char *__connman_element_subtype2string(enum connman_element_subtype type); int __connman_element_load(struct connman_element *element); int __connman_element_store(struct connman_element *element); +#include + +int __connman_device_init(void); +void __connman_device_cleanup(void); + #include int __connman_rtnl_init(void); diff --git a/src/element.c b/src/element.c index 78a550e..dd78c69 100644 --- a/src/element.c +++ b/src/element.c @@ -518,6 +518,22 @@ static gboolean probe_driver(GNode *node, gpointer data) return FALSE; } +void __connman_driver_rescan(struct connman_driver *driver) +{ + DBG("driver %p name %s", driver, driver->name); + + if (!driver->probe) + return; + + g_static_rw_lock_writer_lock(&element_lock); + + if (element_root != NULL) + g_node_traverse(element_root, G_PRE_ORDER, + G_TRAVERSE_ALL, -1, probe_driver, driver); + + g_static_rw_lock_writer_unlock(&element_lock); +} + /** * connman_driver_register: * @driver: driver definition @@ -1053,6 +1069,19 @@ void connman_element_update(struct connman_element *element) g_static_rw_lock_reader_unlock(&element_lock); } +int connman_element_set_enabled(struct connman_element *element, + gboolean enabled) +{ + if (element->enabled == enabled) + return 0; + + element->enabled = enabled; + + connman_element_update(element); + + return 0; +} + static void register_element(gpointer data, gpointer user_data) { struct connman_element *element = data;