Fill WiFi channel property with correct values
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 19 May 2009 06:19:38 +0000 (23:19 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 19 May 2009 06:19:38 +0000 (23:19 -0700)
plugins/supplicant.c
src/network.c

index 1eb6b87..2355333 100644 (file)
@@ -996,7 +996,10 @@ static unsigned char calculate_strength(struct supplicant_result *result)
 
 static unsigned short calculate_channel(struct supplicant_result *result)
 {
-       return 0;
+       if (result->frequency < 0)
+               return 0;
+
+       return (result->frequency - 2407) / 5;
 }
 
 static void get_properties(struct supplicant_task *task);
index 861e815..11b550b 100644 (file)
@@ -56,6 +56,7 @@ struct connman_network {
                void *ssid;
                int ssid_len;
                char *mode;
+               unsigned short channel;
                char *security;
                char *passphrase;
        } wifi;
@@ -140,6 +141,10 @@ static DBusMessage *get_properties(DBusConnection *conn,
                connman_dbus_dict_append_variant(&dict, "WiFi.Mode",
                                DBUS_TYPE_STRING, &network->wifi.mode);
 
+       if (network->wifi.channel > 0)
+               connman_dbus_dict_append_variant(&dict, "WiFi.Channel",
+                               DBUS_TYPE_UINT16, &network->wifi.channel);
+
        if (network->wifi.security != NULL)
                connman_dbus_dict_append_variant(&dict, "WiFi.Security",
                                DBUS_TYPE_STRING, &network->wifi.security);
@@ -945,6 +950,8 @@ int connman_network_set_uint16(struct connman_network *network,
 
        if (g_str_equal(key, "Frequency") == TRUE)
                network->frequency = value;
+       else if (g_str_equal(key, "WiFi.Channel") == TRUE)
+               network->wifi.channel = value;
 
        return -EINVAL;
 }
@@ -963,6 +970,8 @@ connman_uint16_t connman_network_get_uint16(struct connman_network *network,
 
        if (g_str_equal(key, "Frequency") == TRUE)
                return network->frequency;
+       else if (g_str_equal(key, "WiFi.Channel") == TRUE)
+               return network->wifi.channel;
 
        return 0;
 }