From: Marcel Holtmann Date: Tue, 19 May 2009 05:51:51 +0000 (-0700) Subject: Add frequency property to network objects X-Git-Tag: maemo-0.19~54 X-Git-Url: https://vcs.maemo.org/git/?p=connman;a=commitdiff_plain;h=5e0a8c46c7bc2639e58b9271a8ab5409c12c1540 Add frequency property to network objects --- diff --git a/include/network.h b/include/network.h index dd2c385..49a2072 100644 --- a/include/network.h +++ b/include/network.h @@ -90,6 +90,10 @@ extern int connman_network_set_uint8(struct connman_network *network, const char *key, connman_uint8_t value); extern connman_uint8_t connman_network_get_uint8(struct connman_network *network, const char *key); +extern int connman_network_set_uint16(struct connman_network *network, + const char *key, connman_uint16_t value); +extern connman_uint16_t connman_network_get_uint16(struct connman_network *network, + const char *key); extern int connman_network_set_blob(struct connman_network *network, const char *key, const void *data, unsigned int size); extern const void *connman_network_get_blob(struct connman_network *network, diff --git a/plugins/supplicant.c b/plugins/supplicant.c index 581ebc4..7e6a212 100644 --- a/plugins/supplicant.c +++ b/plugins/supplicant.c @@ -158,6 +158,7 @@ struct supplicant_result { gboolean has_wpa; gboolean has_rsn; gboolean has_wps; + dbus_int32_t frequency; dbus_int32_t quality; dbus_int32_t noise; dbus_int32_t level; @@ -995,6 +996,7 @@ static void properties_reply(DBusPendingCall *call, void *user_data) DBusMessage *reply; DBusMessageIter array, dict; unsigned char strength; + unsigned short frequency; const char *mode, *security; char *group; @@ -1058,6 +1060,8 @@ static void properties_reply(DBusPendingCall *call, void *user_data) extract_wpsie(&value, &result); else if (g_str_equal(key, "capabilities") == TRUE) extract_capabilites(&value, &result); + else if (g_str_equal(key, "frequency") == TRUE) + dbus_message_iter_get_basic(&value, &result.frequency); else if (g_str_equal(key, "quality") == TRUE) dbus_message_iter_get_basic(&value, &result.quality); else if (g_str_equal(key, "noise") == TRUE) @@ -1076,7 +1080,8 @@ static void properties_reply(DBusPendingCall *call, void *user_data) if (result.path[0] == '\0') goto done; - strength = result.quality; + strength = result.quality; + frequency = result.frequency; if (result.has_rsn == TRUE) security = "rsn"; @@ -1130,6 +1135,7 @@ static void properties_reply(DBusPendingCall *call, void *user_data) connman_network_set_available(network, TRUE); connman_network_set_uint8(network, "Strength", strength); + connman_network_set_uint16(network, "Frequency", frequency); connman_network_set_string(network, "WiFi.Security", security); diff --git a/src/network.c b/src/network.c index dd935ba..861e815 100644 --- a/src/network.c +++ b/src/network.c @@ -38,6 +38,7 @@ struct connman_network { connman_bool_t available; connman_bool_t connected; connman_uint8_t strength; + connman_uint16_t frequency; char *identifier; char *address; char *name; @@ -126,6 +127,10 @@ static DBusMessage *get_properties(DBusConnection *conn, connman_dbus_dict_append_variant(&dict, "Strength", DBUS_TYPE_BYTE, &network->strength); + if (network->frequency > 0) + connman_dbus_dict_append_variant(&dict, "Frequency", + DBUS_TYPE_UINT16, &network->frequency); + if (network->wifi.ssid != NULL && network->wifi.ssid_len > 0) connman_dbus_dict_append_array(&dict, "WiFi.SSID", DBUS_TYPE_BYTE, &network->wifi.ssid, @@ -926,6 +931,43 @@ connman_uint8_t connman_network_get_uint8(struct connman_network *network, } /** + * connman_network_set_uint16: + * @network: network structure + * @key: unique identifier + * @value: integer value + * + * Set integer value for specific key + */ +int connman_network_set_uint16(struct connman_network *network, + const char *key, connman_uint16_t value) +{ + DBG("network %p key %s value %d", network, key, value); + + if (g_str_equal(key, "Frequency") == TRUE) + network->frequency = value; + + return -EINVAL; +} + +/** + * connman_network_get_uint16: + * @network: network structure + * @key: unique identifier + * + * Get integer value for specific key + */ +connman_uint16_t connman_network_get_uint16(struct connman_network *network, + const char *key) +{ + DBG("network %p key %s", network, key); + + if (g_str_equal(key, "Frequency") == TRUE) + return network->frequency; + + return 0; +} + +/** * connman_network_set_blob: * @network: network structure * @key: unique identifier