summaryrefslogtreecommitdiff
path: root/src/network.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-01-07 02:17:35 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-01-07 02:17:35 +0100
commit6f24662363c391c653d4a90518b0ff664f3ae5c4 (patch)
treee18e09c863908916eeb30d70a1e4e4a158e80f67 /src/network.c
parentad004e33439795c2809aea26463bd440c17e3bf0 (diff)
downloadconnman-6f24662363c391c653d4a90518b0ff664f3ae5c4.tar.gz
connman-6f24662363c391c653d4a90518b0ff664f3ae5c4.tar.bz2
connman-6f24662363c391c653d4a90518b0ff664f3ae5c4.zip
Add support for setting network availability
Diffstat (limited to 'src/network.c')
-rw-r--r--src/network.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/network.c b/src/network.c
index 3e20245a..a4f777ec 100644
--- a/src/network.c
+++ b/src/network.c
@@ -33,6 +33,7 @@ struct connman_network {
struct connman_element element;
enum connman_network_type type;
enum connman_network_protocol protocol;
+ connman_bool_t available;
connman_bool_t connected;
connman_bool_t remember;
connman_uint8_t strength;
@@ -109,6 +110,9 @@ static DBusMessage *get_properties(DBusConnection *conn,
connman_dbus_dict_append_variant(&dict, "Name",
DBUS_TYPE_STRING, &network->name);
+ connman_dbus_dict_append_variant(&dict, "Available",
+ DBUS_TYPE_BOOLEAN, &network->available);
+
connman_dbus_dict_append_variant(&dict, "Connected",
DBUS_TYPE_BOOLEAN, &network->connected);
@@ -523,6 +527,52 @@ void connman_network_set_protocol(struct connman_network *network,
}
/**
+ * connman_network_set_available:
+ * @network: network structure
+ * @available: availability state
+ *
+ * Change availability state of network (in range)
+ */
+int connman_network_set_available(struct connman_network *network,
+ connman_bool_t available)
+{
+ DBusMessage *signal;
+ DBusMessageIter entry, value;
+ const char *key = "Available";
+
+ DBG("network %p available %d", network, available);
+
+ if (network->available == available)
+ return -EALREADY;
+
+ network->available = available;
+
+ if (network->registered == FALSE)
+ return 0;
+
+ if (network->connected == FALSE && network->remember == FALSE)
+ return 0;
+
+ signal = dbus_message_new_signal(network->element.path,
+ CONNMAN_NETWORK_INTERFACE, "PropertyChanged");
+ if (signal == NULL)
+ return 0;
+
+ dbus_message_iter_init_append(signal, &entry);
+
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
+
+ dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT,
+ DBUS_TYPE_BOOLEAN_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_BOOLEAN, &available);
+ dbus_message_iter_close_container(&entry, &value);
+
+ g_dbus_send_message(connection, signal);
+
+ return 0;
+}
+
+/**
* connman_network_set_connected:
* @network: network structure
* @connected: connected state