diff --git a/src/iwd/iwd_device.c b/src/iwd/iwd_device.c index 3adbb9a..1c05c52 100644 --- a/src/iwd/iwd_device.c +++ b/src/iwd/iwd_device.c @@ -3,6 +3,7 @@ #include "iwd_props.h" #include "iwd_manager.h" #include "iwd_network.h" +#include #include #include @@ -198,3 +199,22 @@ iwd_device_disconnect(Iwd_Device *d) if (!d || !d->station_proxy) return; eldbus_proxy_call(d->station_proxy, "Disconnect", NULL, NULL, -1, ""); } + +static void +_on_connect_hidden_reply(void *data, const Eldbus_Message *msg, Eldbus_Pending *p EINA_UNUSED) +{ + const char *en, *em; + char *ssid = data; + if (eldbus_message_error_get(msg, &en, &em)) + fprintf(stderr, "e_iwd: ConnectHiddenNetwork('%s') failed: %s: %s\n", + ssid ? ssid : "?", en, em); + free(ssid); +} + +void +iwd_device_connect_hidden(Iwd_Device *d, const char *ssid) +{ + if (!d || !d->station_proxy || !ssid || !*ssid) return; + eldbus_proxy_call(d->station_proxy, "ConnectHiddenNetwork", + _on_connect_hidden_reply, strdup(ssid), -1, "s", ssid); +} diff --git a/src/iwd/iwd_device.h b/src/iwd/iwd_device.h index ae2016a..27606c6 100644 --- a/src/iwd/iwd_device.h +++ b/src/iwd/iwd_device.h @@ -45,7 +45,8 @@ void iwd_device_apply_station_props(Iwd_Device *d, Eldbus_Message_Iter *props); void iwd_device_attach_station (Iwd_Device *d); void iwd_device_detach_station (Iwd_Device *d); -void iwd_device_scan (Iwd_Device *d); -void iwd_device_disconnect(Iwd_Device *d); +void iwd_device_scan (Iwd_Device *d); +void iwd_device_disconnect (Iwd_Device *d); +void iwd_device_connect_hidden (Iwd_Device *d, const char *ssid); #endif