Add support for connecting WiFi networks
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 5 Jan 2009 02:17:37 +0000 (03:17 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 5 Jan 2009 02:17:37 +0000 (03:17 +0100)
plugins/supplicant.c
plugins/supplicant.h
plugins/wifi.c

index 159288b..959f61e 100644 (file)
@@ -23,6 +23,7 @@
 #include <config.h>
 #endif
 
+#include <errno.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -1162,15 +1163,24 @@ int supplicant_scan(struct connman_device *device)
        return 0;
 }
 
-int __supplicant_connect(struct connman_element *element,
-                               const unsigned char *ssid, int ssid_len,
-                               const char *security, const char *passphrase)
+int supplicant_connect(struct connman_network *network)
 {
        struct supplicant_task *task;
+       const char *security, *passphrase;
+       const void *ssid;
+       unsigned int ssid_len;
+       int index;
+
+       DBG("network %p", network);
+
+       security = connman_network_get_string(network, "WiFi.Security");
+       passphrase = connman_network_get_string(network, "WiFi.Passphrase");
 
-       DBG("element %p", element);
+       ssid = connman_network_get_blob(network, "WiFi.SSID", &ssid_len);
 
-       task = find_task_by_index(element->index);
+       index = connman_network_get_index(network);
+
+       task = find_task_by_index(index);
        if (task == NULL)
                return -ENODEV;
 
@@ -1186,13 +1196,16 @@ int __supplicant_connect(struct connman_element *element,
        return 0;
 }
 
-int __supplicant_disconnect(struct connman_element *element)
+int supplicant_disconnect(struct connman_network *network)
 {
        struct supplicant_task *task;
+       int index;
 
-       DBG("element %p", element);
+       DBG("network %p", network);
 
-       task = find_task_by_index(element->index);
+       index = connman_network_get_index(network);
+
+       task = find_task_by_index(index);
        if (task == NULL)
                return -ENODEV;
 
index ca65f69..fb49722 100644 (file)
@@ -20,7 +20,7 @@
  */
 
 #include <connman/device.h>
-#include <connman/element.h>
+#include <connman/network.h>
 
 struct supplicant_driver {
        const char *name;
@@ -35,7 +35,5 @@ int supplicant_start(struct connman_device *device);
 int supplicant_stop(struct connman_device *device);
 int supplicant_scan(struct connman_device *device);
 
-int __supplicant_connect(struct connman_element *element,
-                               const unsigned char *ssid, int ssid_len,
-                               const char *security, const char *passphrase);
-int __supplicant_disconnect(struct connman_element *element);
+int supplicant_connect(struct connman_network *network);
+int supplicant_disconnect(struct connman_network *network);
index f44cdd8..abf15a4 100644 (file)
 #include <config.h>
 #endif
 
+#include <errno.h>
+
 #include <dbus/dbus.h>
+#include <glib.h>
 
 #define CONNMAN_API_SUBJECT_TO_CHANGE
 #include <connman/plugin.h>
@@ -53,11 +56,29 @@ static void network_remove(struct connman_network *network)
        DBG("network %p", network);
 }
 
+static int network_connect(struct connman_network *network)
+{
+       DBG("network %p", network);
+
+       return supplicant_connect(network);
+}
+
+static int network_disconnect(struct connman_network *network)
+{
+       DBG("network %p", network);
+
+       //connman_element_unregister_children((struct connman_element *) network);
+
+       return supplicant_disconnect(network);
+}
+
 static struct connman_network_driver network_driver = {
        .name           = "wifi",
        .type           = CONNMAN_NETWORK_TYPE_WIFI,
        .probe          = network_probe,
        .remove         = network_remove,
+       .connect        = network_connect,
+       .disconnect     = network_disconnect,
 };
 
 static int wifi_probe(struct connman_device *device)
@@ -102,7 +123,7 @@ static int wifi_disable(struct connman_device *device)
 
        DBG("device %p", device);
 
-       connman_element_unregister_children((struct connman_element *) device);
+       //connman_element_unregister_children((struct connman_element *) device);
 
        data->connected = FALSE;