enum connman_service_state state;
connman_uint8_t strength;
connman_bool_t favorite;
+ connman_bool_t hidden;
GTimeVal modified;
unsigned int order;
char *name;
return "wep";
case CONNMAN_SERVICE_SECURITY_WPA:
return "wpa";
- case CONNMAN_SERVICE_SECURITY_WPA2:
- return "wpa2";
+ case CONNMAN_SERVICE_SECURITY_RSN:
+ return "rsn";
}
return NULL;
g_dbus_send_message(connection, signal);
}
+static void strength_changed(struct connman_service *service)
+{
+ DBusMessage *signal;
+ DBusMessageIter entry, value;
+ const char *key = "Strength";
+
+ if (service->path == NULL)
+ return;
+
+ if (service->strength == 0)
+ return;
+
+ signal = dbus_message_new_signal(service->path,
+ CONNMAN_SERVICE_INTERFACE, "PropertyChanged");
+ if (signal == NULL)
+ return;
+
+ 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_STRING_AS_STRING, &value);
+ dbus_message_iter_append_basic(&value, DBUS_TYPE_BYTE,
+ &service->strength);
+ dbus_message_iter_close_container(&entry, &value);
+
+ g_dbus_send_message(connection, signal);
+}
+
static DBusMessage *get_properties(DBusConnection *conn,
DBusMessage *msg, void *user_data)
{
if (service->network != NULL) {
int err;
+ if (service->hidden == TRUE)
+ return __connman_error_invalid_service(msg);
+
connman_network_set_string(service->network,
"WiFi.Passphrase", service->passphrase);
- err = connman_network_connect(service->network);
+ err = __connman_network_connect(service->network);
if (err < 0 && err != -EINPROGRESS)
return __connman_error_failed(msg, -err);
service->state = CONNMAN_SERVICE_STATE_UNKNOWN;
service->favorite = FALSE;
+ service->hidden = FALSE;
service->order = 0;
}
return CONNMAN_SERVICE_SECURITY_WEP;
else if (g_str_equal(security, "wpa") == TRUE)
return CONNMAN_SERVICE_SECURITY_WPA;
- else if (g_str_equal(security, "wpa2") == TRUE)
- return CONNMAN_SERVICE_SECURITY_WPA2;
+ else if (g_str_equal(security, "rsn") == TRUE)
+ return CONNMAN_SERVICE_SECURITY_RSN;
else
return CONNMAN_SERVICE_SECURITY_UNKNOWN;
}
if (str != NULL) {
g_free(service->name);
service->name = g_strdup(str);
+ service->hidden = FALSE;
+ } else {
+ g_free(service->name);
+ service->name = NULL;
+ service->hidden = TRUE;
}
service->strength = connman_network_get_uint8(network, "Strength");
if (service->strength > strength && service->network != NULL) {
connman_network_unref(service->network);
service->network = NULL;
+
+ strength_changed(service);
}
if (service->network == NULL) {