From: Tomasz Bursztyka Date: Fri, 20 Apr 2012 12:18:35 +0000 (+0300) Subject: gsupplicant: Add WPS specific capabilities handling for network X-Git-Tag: 0.81~9 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Fconnman.git;a=commitdiff_plain;h=86c198cbb20d75d774c694ebd735133a962be601 gsupplicant: Add WPS specific capabilities handling for network --- diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h index d5f5a29..7e79050 100644 --- a/gsupplicant/gsupplicant.h +++ b/gsupplicant/gsupplicant.h @@ -226,6 +226,9 @@ const char *g_supplicant_network_get_security(GSupplicantNetwork *network); dbus_int16_t g_supplicant_network_get_signal(GSupplicantNetwork *network); dbus_uint16_t g_supplicant_network_get_frequency(GSupplicantNetwork *network); dbus_bool_t g_supplicant_network_get_wps(GSupplicantNetwork *network); +dbus_bool_t g_supplicant_network_is_wps_active(GSupplicantNetwork *network); +dbus_bool_t g_supplicant_network_is_wps_pbc(GSupplicantNetwork *network); +dbus_bool_t g_supplicant_network_is_wps_advertizing(GSupplicantNetwork *network); struct _GSupplicantCallbacks { void (*system_ready) (void); diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index b44ea69..25a88af 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -204,6 +204,7 @@ struct _GSupplicantNetwork { GSupplicantMode mode; GSupplicantSecurity security; dbus_bool_t wps; + unsigned int wps_capabilities; GHashTable *bss_table; GHashTable *config_table; }; @@ -860,6 +861,39 @@ dbus_bool_t g_supplicant_network_get_wps(GSupplicantNetwork *network) return network->wps; } +dbus_bool_t g_supplicant_network_is_wps_active(GSupplicantNetwork *network) +{ + if (network == NULL) + return FALSE; + + if (network->wps_capabilities & G_SUPPLICANT_WPS_CONFIGURED) + return TRUE; + + return FALSE; +} + +dbus_bool_t g_supplicant_network_is_wps_pbc(GSupplicantNetwork *network) +{ + if (network == NULL) + return FALSE; + + if (network->wps_capabilities & G_SUPPLICANT_WPS_PBC) + return TRUE; + + return FALSE; +} + +dbus_bool_t g_supplicant_network_is_wps_advertizing(GSupplicantNetwork *network) +{ + if (network == NULL) + return FALSE; + + if (network->wps_capabilities & G_SUPPLICANT_WPS_REGISTRAR) + return TRUE; + + return FALSE; +} + static void merge_network(GSupplicantNetwork *network) { GString *str; @@ -1098,9 +1132,12 @@ static void add_bss_to_network(struct g_supplicant_bss *bss) network->best_bss = bss; network->wps = FALSE; - if ((bss->keymgmt & G_SUPPLICANT_KEYMGMT_WPS) != 0) + if ((bss->keymgmt & G_SUPPLICANT_KEYMGMT_WPS) != 0) { network->wps = TRUE; + network->wps_capabilities |= bss->wps_capabilities; + } + network->bss_table = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, remove_bss);