#include <config.h>
#endif
+#include <errno.h>
+
#include <dbus/dbus.h>
+#include <glib.h>
#define CONNMAN_API_SUBJECT_TO_CHANGE
#include <connman/plugin.h>
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);
+
+ 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)
DBG("device %p", device);
- connman_element_unregister_children((struct connman_element *) device);
-
data->connected = FALSE;
return supplicant_stop(device);
return supplicant_scan(device);
}
+static int wifi_join(struct connman_device *device,
+ struct connman_network *network)
+{
+ int err;
+
+ DBG("device %p", device);
+
+ err = supplicant_connect(network);
+ if (err < 0)
+ return err;
+
+ connman_network_ref(network);
+
+ connman_device_add_network(device, network);
+
+ connman_network_set_available(network, TRUE);
+
+ return 0;
+}
+
static struct connman_device_driver wifi_driver = {
.name = "wifi",
.type = CONNMAN_DEVICE_TYPE_WIFI,
.enable = wifi_enable,
.disable = wifi_disable,
.scan = wifi_scan,
+ .join = wifi_join,
};
static void wifi_register(void)
}
CONNMAN_PLUGIN_DEFINE(wifi, "WiFi interface plugin", VERSION,
- wifi_init, wifi_exit)
+ CONNMAN_PLUGIN_PRIORITY_DEFAULT, wifi_init, wifi_exit)