1 From 98894f533f23fe532a4449ddaafaa69d39441980 Mon Sep 17 00:00:00 2001
2 From: Arron Wang <arron.wang@intel.com>
3 Date: Mon, 24 Sep 2012 14:18:07 +0800
4 Subject: [PATCH 09/32] Tizen: Export more wifi info in ConnMan network API
6 Network client requires additional wifi specific info
8 Export the BSSID property
9 Export the MaxRate property
10 Export the detailed info for encryption mode(mixed,aes,tkip,wep,none)
12 Export the connman_network get/set method for bssid, maxrate,
13 encryption_mode property
15 Change-Id: Ic5744978282e49cb2f70165aaadc7822dc718dfb
17 gsupplicant/gsupplicant.h | 10 +++++++
18 gsupplicant/supplicant.c | 49 +++++++++++++++++++++++++++++++
19 include/network.h | 17 +++++++++++
20 plugins/wifi.c | 25 +++++++++++++++-
21 src/network.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++
22 5 files changed, 173 insertions(+), 1 deletion(-)
24 diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h
25 index e49aaa6..27826dc 100644
26 --- a/gsupplicant/gsupplicant.h
27 +++ b/gsupplicant/gsupplicant.h
28 @@ -336,6 +336,16 @@ GSupplicantInterface *g_supplicant_peer_get_group_interface(GSupplicantPeer *pee
29 bool g_supplicant_peer_is_client(GSupplicantPeer *peer);
30 bool g_supplicant_peer_has_requested_connection(GSupplicantPeer *peer);
32 +#if defined TIZEN_EXT
34 +* Description: Network client requires additional wifi specific info
36 +const unsigned char *g_supplicant_network_get_bssid(
37 + GSupplicantNetwork *network);
38 +unsigned int g_supplicant_network_get_maxrate(GSupplicantNetwork *network);
39 +const char *g_supplicant_network_get_enc_mode(GSupplicantNetwork *network);
42 struct _GSupplicantCallbacks {
43 void (*system_ready) (void);
44 void (*system_killed) (void);
45 diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
46 index 909a617..d2e4a64 100644
47 --- a/gsupplicant/supplicant.c
48 +++ b/gsupplicant/supplicant.c
49 @@ -1169,6 +1169,55 @@ bool g_supplicant_peer_has_requested_connection(GSupplicantPeer *peer)
50 return peer->connection_requested;
53 +#if defined TIZEN_EXT
55 + * Description: Network client requires additional wifi specific info
57 +const unsigned char *g_supplicant_network_get_bssid(GSupplicantNetwork *network)
59 + if (network == NULL || network->best_bss == NULL)
62 + return (const unsigned char *)network->best_bss->bssid;
65 +unsigned int g_supplicant_network_get_maxrate(GSupplicantNetwork *network)
67 + if (network == NULL || network->best_bss == NULL)
70 + return network->best_bss->maxrate;
73 +const char *g_supplicant_network_get_enc_mode(GSupplicantNetwork *network)
75 + if (network == NULL || network->best_bss == NULL)
78 + if (network->best_bss->security == G_SUPPLICANT_SECURITY_PSK ||
79 + network->best_bss->security == G_SUPPLICANT_SECURITY_IEEE8021X) {
80 + unsigned int pairwise;
82 + pairwise = network->best_bss->rsn_pairwise |
83 + network->best_bss->wpa_pairwise;
85 + if ((pairwise & G_SUPPLICANT_PAIRWISE_CCMP) &&
86 + (pairwise & G_SUPPLICANT_PAIRWISE_TKIP))
88 + else if (pairwise & G_SUPPLICANT_PAIRWISE_CCMP)
90 + else if (pairwise & G_SUPPLICANT_PAIRWISE_TKIP)
93 + } else if (network->best_bss->security == G_SUPPLICANT_SECURITY_WEP)
95 + else if (network->best_bss->security == G_SUPPLICANT_SECURITY_NONE)
102 static void merge_network(GSupplicantNetwork *network)
105 diff --git a/include/network.h b/include/network.h
106 index d772699..180f2a2 100644
107 --- a/include/network.h
108 +++ b/include/network.h
109 @@ -116,6 +116,23 @@ int connman_network_set_nameservers(struct connman_network *network,
110 const char *nameservers);
111 int connman_network_set_domain(struct connman_network *network,
113 +#if defined TIZEN_EXT
115 + * Description: Network client requires additional wifi specific info
117 +int connman_network_set_bssid(struct connman_network *network,
118 + const unsigned char *bssid);
119 +unsigned char *connman_network_get_bssid(struct connman_network *network);
121 +int connman_network_set_maxrate(struct connman_network *network,
122 + unsigned int maxrate);
123 +unsigned int connman_network_get_maxrate(struct connman_network *network);
125 +int connman_network_set_enc_mode(struct connman_network *network,
126 + const char *encryption_mode);
127 +const char *connman_network_get_enc_mode(struct connman_network *network);
130 int connman_network_set_name(struct connman_network *network,
132 int connman_network_set_strength(struct connman_network *network,
133 diff --git a/plugins/wifi.c b/plugins/wifi.c
134 index 5f2ebf1..69a0e23 100644
137 @@ -2602,7 +2602,14 @@ static void network_added(GSupplicantNetwork *supplicant_network)
139 connman_network_set_frequency(network,
140 g_supplicant_network_get_frequency(supplicant_network));
142 +#if defined TIZEN_EXT
143 + connman_network_set_bssid(network,
144 + g_supplicant_network_get_bssid(supplicant_network));
145 + connman_network_set_maxrate(network,
146 + g_supplicant_network_get_maxrate(supplicant_network));
147 + connman_network_set_enc_mode(network,
148 + g_supplicant_network_get_enc_mode(supplicant_network));
150 connman_network_set_available(network, true);
151 connman_network_set_string(network, "WiFi.Mode", mode);
153 @@ -2658,6 +2665,12 @@ static void network_changed(GSupplicantNetwork *network, const char *property)
154 const char *name, *identifier;
155 struct connman_network *connman_network;
157 +#if defined TIZEN_EXT
158 + const unsigned char *bssid;
159 + unsigned int maxrate;
160 + uint16_t frequency;
163 interface = g_supplicant_network_get_interface(network);
164 wifi = g_supplicant_interface_get_data(interface);
165 identifier = g_supplicant_network_get_identifier(network);
166 @@ -2677,6 +2690,16 @@ static void network_changed(GSupplicantNetwork *network, const char *property)
167 calculate_strength(network));
168 connman_network_update(connman_network);
171 +#if defined TIZEN_EXT
172 + bssid = g_supplicant_network_get_bssid(network);
173 + maxrate = g_supplicant_network_get_maxrate(network);
174 + frequency = g_supplicant_network_get_frequency(network);
176 + connman_network_set_bssid(connman_network, bssid);
177 + connman_network_set_maxrate(connman_network, maxrate);
178 + connman_network_set_frequency(connman_network, frequency);
182 static void apply_peer_services(GSupplicantPeer *peer,
183 diff --git a/src/network.c b/src/network.c
184 index b388995..c40a079 100644
189 #define RS_REFRESH_TIMEOUT 3
191 +#if defined TIZEN_EXT
192 +#define WIFI_ENCYPTION_MODE_LEN_MAX 6
193 +#define WIFI_BSSID_LEN_MAX 6
196 static GSList *network_list = NULL;
197 static GSList *driver_list = NULL;
199 @@ -87,6 +92,11 @@ struct connman_network {
203 +#if defined TIZEN_EXT
204 + char encryption_mode[WIFI_ENCYPTION_MODE_LEN_MAX];
205 + unsigned char bssid[WIFI_BSSID_LEN_MAX];
206 + unsigned int maxrate;
211 @@ -1737,6 +1747,69 @@ int connman_network_set_ipaddress(struct connman_network *network,
215 +#if defined TIZEN_EXT
217 + * Description: Network client requires additional wifi specific info
219 +int connman_network_set_bssid(struct connman_network *network,
220 + const unsigned char *bssid)
227 + DBG("network %p bssid %02x:%02x:%02x:%02x:%02x:%02x", network,
228 + bssid[0], bssid[1], bssid[2],
229 + bssid[3], bssid[4], bssid[5]);
231 + for (;i < WIFI_BSSID_LEN_MAX;i++)
232 + network->wifi.bssid[i] = bssid[i];
237 +unsigned char *connman_network_get_bssid(struct connman_network *network)
239 + return (unsigned char *)network->wifi.bssid;
242 +int connman_network_set_maxrate(struct connman_network *network,
243 + unsigned int maxrate)
245 + DBG("network %p maxrate %d", network, maxrate);
247 + network->wifi.maxrate = maxrate;
252 +unsigned int connman_network_get_maxrate(struct connman_network *network)
254 + return network->wifi.maxrate;
257 +int connman_network_set_enc_mode(struct connman_network *network,
258 + const char *encryption_mode)
260 + if (encryption_mode == NULL)
263 + DBG("network %p encryption mode %s", network, encryption_mode);
265 + g_strlcpy(network->wifi.encryption_mode, encryption_mode,
266 + WIFI_ENCYPTION_MODE_LEN_MAX);
271 +const char *connman_network_get_enc_mode(struct connman_network *network)
273 + return (const char *)network->wifi.encryption_mode;
278 int connman_network_set_nameservers(struct connman_network *network,
279 const char *nameservers)