extern int connman_network_set_connected(struct connman_network *network,
connman_bool_t connected);
+extern connman_bool_t connman_network_get_remember(struct connman_network *network);
+
+extern int connman_network_connect(struct connman_network *network);
extern int connman_network_set_string(struct connman_network *network,
const char *key, const char *value);
static void connect_known_network(struct connman_device *device)
{
+ GHashTableIter iter;
+ gpointer key, value;
+ unsigned int count = 0;
+
DBG("device %p", device);
+
+ g_hash_table_iter_init(&iter, device->networks);
+
+ while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
+ struct connman_network *network = value;
+ int err;
+
+ count++;
+
+ if (connman_network_get_remember(network) == FALSE)
+ continue;
+
+ err = connman_network_connect(network);
+ if (err == 0 || err == -EINPROGRESS)
+ return;
+ }
+
+ if (count > 0)
+ return;
+
+ if (device->driver && device->driver->scan)
+ device->driver->scan(device);
}
/**
}
/**
+ * connman_network_get_remember:
+ * @network: network structure
+ *
+ * Get network remember setting
+ */
+connman_bool_t connman_network_get_remember(struct connman_network *network)
+{
+ return network->remember;
+}
+
+/**
+ * connman_network_connect:
+ * @network: network structure
+ *
+ * Connect network
+ */
+int connman_network_connect(struct connman_network *network)
+{
+ if (network->connected == TRUE)
+ return -EALREADY;
+
+ if (network->driver && network->driver->connect)
+ return network->driver->connect(network);
+
+ network->connected = TRUE;
+
+ return 0;
+}
+
+/**
* connman_network_set_string:
* @network: network structure
* @key: unique identifier