From 6601d98940b0d97b99afe71bcc2a8db90bd6a593 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 30 Dec 2008 23:33:55 +0100 Subject: [PATCH] Add support for changing connection state --- include/network.h | 6 +++++ src/network.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/include/network.h b/include/network.h index 78f921e..3fd266e 100644 --- a/include/network.h +++ b/include/network.h @@ -55,6 +55,12 @@ extern const char *connman_network_get_identifier(struct connman_network *networ extern void connman_network_set_path(struct connman_network *network, const char *path); extern const char *connman_network_get_path(struct connman_network *network); +extern void connman_network_set_index(struct connman_network *network, + int index); +extern int connman_network_get_index(struct connman_network *network); + +extern int connman_network_set_connected(struct connman_network *network, + connman_bool_t connected); extern struct connman_device *connman_network_get_device(struct connman_network *network); diff --git a/src/network.c b/src/network.c index 3c4d6b8..fe5f399 100644 --- a/src/network.c +++ b/src/network.c @@ -30,6 +30,7 @@ struct connman_network { struct connman_element element; enum connman_network_type type; + gboolean connected; char *identifier; char *path; @@ -63,6 +64,9 @@ static DBusMessage *get_properties(DBusConnection *conn, connman_dbus_dict_append_variant(&dict, "Name", DBUS_TYPE_STRING, &network->identifier); + connman_dbus_dict_append_variant(&dict, "Connected", + DBUS_TYPE_BOOLEAN, &network->connected); + dbus_message_iter_close_container(&array, &dict); return reply; @@ -324,6 +328,65 @@ const char *connman_network_get_path(struct connman_network *network) return network->path; } +/** + * connman_network_set_index: + * @network: network structure + * @index: index number + * + * Set index number of network + */ +void connman_network_set_index(struct connman_network *network, int index) +{ + network->element.index = index; +} + +/** + * connman_network_get_index: + * @device: network structure + * + * Get index number of network + */ +int connman_network_get_index(struct connman_network *network) +{ + return network->element.index; +} + +/** + * connman_network_set_connected: + * @netowrk: network structure + * @connected: connected state + * + * Change connected state of network + */ +int connman_network_set_connected(struct connman_network *network, + connman_bool_t connected) +{ + DBG("network %p connected %d", network, connected); + + if (network->connected == connected) + return -EALREADY; + + network->connected = connected; + + if (connected == TRUE) { + struct connman_element *element; + + element = connman_element_create(NULL); + if (element != NULL) { + element->type = CONNMAN_ELEMENT_TYPE_DEVICE; + element->subtype = CONNMAN_ELEMENT_SUBTYPE_NETWORK; + element->index = network->element.index; + + if (connman_element_register(element, + &network->element) < 0) + connman_element_unref(element); + } + } else + connman_element_unregister_children(&network->element); + + return 0; +} + void __connman_network_set_device(struct connman_network *network, struct connman_device *device) { -- 1.7.9.5