This patch reduced the SignalPoll monitor from 30 second to 10 second frequency.
This patch also extracts already available parameter strength/RSSI in SignalPoll
and update connected service's RSSI/Strength accordingly.
Change-Id: Ie9bbb21bf50ad0b8c72e3ca2fc9f7f6500c77f23
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
void *user_data);
#if defined TIZEN_EXT
void *user_data);
#if defined TIZEN_EXT
-typedef void (*GSupplicantMaxSpeedCallback) (int result,
- int maxspeed, void *user_data);
+typedef void (*GSupplicantMaxSpeedCallback) (int result, int maxspeed,
+ uint8_t strength, void *user_data);
#endif
void g_supplicant_interface_cancel(GSupplicantInterface *interface);
#endif
void g_supplicant_interface_cancel(GSupplicantInterface *interface);
struct interface_signalpoll_data *data = user_data;
int err = 0;
dbus_int32_t maxspeed = 0;
struct interface_signalpoll_data *data = user_data;
int err = 0;
dbus_int32_t maxspeed = 0;
+ unsigned char strength = 0;
DBusMessageIter sub_iter, dict;
if (error) {
DBusMessageIter sub_iter, dict;
if (error) {
SUPPLICANT_DBG("linkspeed = %d", maxspeed);
break;
}
SUPPLICANT_DBG("linkspeed = %d", maxspeed);
break;
}
+ case DBUS_TYPE_BYTE:
+ if (g_strcmp0(key, "rssi") == 0) {
+ dbus_message_iter_get_basic(&value, &strength);
+ SUPPLICANT_DBG("Strength = %d", strength);
+ break;
+ }
}
dbus_message_iter_next(&dict);
}
out:
if(data->callback)
}
dbus_message_iter_next(&dict);
}
out:
if(data->callback)
- data->callback(err, maxspeed, data->user_data);
+ data->callback(err, maxspeed, strength, data->user_data);
g_free(data->path);
dbus_free(data);
g_free(data->path);
dbus_free(data);
connman_network_set_connection_mode(network, conn_mode);
}
connman_network_set_connection_mode(network, conn_mode);
}
-static void signalpoll_callback(int result, int maxspeed, void *user_data)
+static void signalpoll_callback(int result, int maxspeed, uint8_t strength,
+ void *user_data)
{
struct connman_network *network = user_data;
{
struct connman_network *network = user_data;
- DBG("maxspeed = %d", maxspeed);
+ strength += 120;
+ if (strength > 100)
+ strength = 100;
+
+ DBG("maxspeed = %d, strength = %d", maxspeed, strength);
+ connman_network_set_strength(network, strength);
connman_network_set_maxspeed(network, maxspeed);
set_connection_mode(network, maxspeed);
}
connman_network_set_maxspeed(network, maxspeed);
set_connection_mode(network, maxspeed);
}
if (ret < 0)
DBG("Fail to get max speed !!");
else
if (ret < 0)
DBG("Fail to get max speed !!");
else
- wifi->automaxspeed_timeout = g_timeout_add_seconds(30, autosignalpoll_timeout, wifi);
+ wifi->automaxspeed_timeout = g_timeout_add_seconds(10, autosignalpoll_timeout, wifi);
}
g_hash_table_remove_all(failed_bssids);
}
g_hash_table_remove_all(failed_bssids);
case G_SUPPLICANT_STATE_DISCONNECTED:
#if defined TIZEN_EXT
case G_SUPPLICANT_STATE_DISCONNECTED:
#if defined TIZEN_EXT
+ connman_network_set_strength(network, 0);
connman_network_set_maxspeed(network, 0);
if (wifi->automaxspeed_timeout != 0) {
connman_network_set_maxspeed(network, 0);
if (wifi->automaxspeed_timeout != 0) {
struct connman_service *__connman_service_create_from_provider(struct connman_provider *provider);
bool __connman_service_index_is_default(int index);
struct connman_service *__connman_service_get_default(void);
struct connman_service *__connman_service_create_from_provider(struct connman_provider *provider);
bool __connman_service_index_is_default(int index);
struct connman_service *__connman_service_get_default(void);
+#if defined TIZEN_EXT
+void __connman_service_notify_strength_changed(struct connman_network *network);
+#endif
void __connman_service_update_from_network(struct connman_network *network);
void __connman_service_remove_from_network(struct connman_network *network);
void __connman_service_read_ip4config(struct connman_service *service);
void __connman_service_update_from_network(struct connman_network *network);
void __connman_service_remove_from_network(struct connman_network *network);
void __connman_service_read_ip4config(struct connman_service *service);
uint8_t strength)
{
network->strength = strength;
uint8_t strength)
{
network->strength = strength;
+#if defined TIZEN_EXT
+ __connman_service_notify_strength_changed(network);
+#endif
+#if defined TIZEN_EXT
+void __connman_service_notify_strength_changed(struct connman_network *network)
+{
+ struct connman_service *service;
+ uint8_t strength = 0;
+
+ service = connman_service_lookup_from_network(network);
+ if (!service)
+ return;
+
+ if (!service->network)
+ return;
+
+ strength = connman_network_get_strength(service->network);
+ if (strength == service->strength)
+ return;
+
+ service->strength = strength;
+ DBG("Strength %d", strength);
+ strength_changed(service);
+ service_list_sort();
+}
+#endif
+
void __connman_service_update_from_network(struct connman_network *network)
{
bool need_sort = false;
void __connman_service_update_from_network(struct connman_network *network)
{
bool need_sort = false;