From 51d7ee7a261e94d1c299c420860bc848d09448df Mon Sep 17 00:00:00 2001 From: "taesub.kim" Date: Fri, 29 Nov 2013 16:23:24 +0900 Subject: [PATCH] Add Wi-Fi state tx/rx transfer Change-Id: I937b1653ab596d0758f2ae75296665c5d82e8975 Signed-off-by: Taesub Kim --- include/network-statistics.h | 1 + packaging/net-config.spec | 3 ++- src/network-statistics.c | 22 +++++++++++----------- src/wifi-indicator.c | 34 +++++++++++++++++++++++++++++++++- 4 files changed, 47 insertions(+), 13 deletions(-) diff --git a/include/network-statistics.h b/include/network-statistics.h index ba5883a..5149844 100644 --- a/include/network-statistics.h +++ b/include/network-statistics.h @@ -62,6 +62,7 @@ gboolean netconfig_iface_network_statistics_reset_wifi_total_rx_bytes(NetconfigN gboolean netconfig_iface_network_statistics_reset_wifi_last_tx_bytes(NetconfigNetworkStatistics *network_statistics, GError **error); gboolean netconfig_iface_network_statistics_reset_wifi_last_rx_bytes(NetconfigNetworkStatistics *network_statistics, GError **error); +gboolean netconfig_wifi_get_bytes_statistics(guint64 *tx, guint64 *rx); void netconfig_wifi_statistics_update_powered_off(void); G_END_DECLS diff --git a/packaging/net-config.spec b/packaging/net-config.spec index 73b886b..8b56095 100644 --- a/packaging/net-config.spec +++ b/packaging/net-config.spec @@ -1,6 +1,6 @@ Name: net-config Summary: TIZEN Network Configuration Module -Version: 0.1.90_21 +Version: 0.1.90_22 Release: 1 Group: System/Network License: Apache License Version 2.0 @@ -65,6 +65,7 @@ cp LICENSE.APLv2 %{buildroot}%{_datadir}/license/net-config vconftool set -t int memory/dnet/state 0 -i vconftool set -t int memory/wifi/state 0 -i +vconftool set -t int memory/wifi/transfer_state 0 -i vconftool set -t int memory/wifi/strength 0 -i vconftool set -t int memory/wifi/bgscan_mode 0 -i diff --git a/src/network-statistics.c b/src/network-statistics.c index cf9d3b2..e176d7a 100644 --- a/src/network-statistics.c +++ b/src/network-statistics.c @@ -124,7 +124,7 @@ static void netconfig_network_statistics_class_init(NetconfigNetworkStatisticsCl } -static gboolean __netconfig_wifi_get_bytes_statistics(guint64 *tx, guint64 *rx) +gboolean netconfig_wifi_get_bytes_statistics(guint64 *tx, guint64 *rx) { gboolean ret = FALSE; FILE *fp; @@ -205,7 +205,7 @@ gboolean netconfig_iface_network_statistics_get_wifi_total_tx_bytes(NetconfigNet vconf_get_int(VCONFKEY_NETWORK_WIFI_PKT_TOTAL_SNT, &val); tx_bytes = (guint64)val; - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) *total_bytes = (guint64)tx + (guint64)tx_bytes; else *total_bytes = (guint64)tx_bytes; @@ -222,7 +222,7 @@ gboolean netconfig_iface_network_statistics_get_wifi_total_rx_bytes(NetconfigNet vconf_get_int(VCONFKEY_NETWORK_WIFI_PKT_TOTAL_RCV, &val); rx_bytes = (guint64)val; - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) *total_bytes = (guint64)rx + (guint64)rx_bytes; else *total_bytes = (guint64)rx_bytes; @@ -244,7 +244,7 @@ gboolean netconfig_iface_network_statistics_get_wifi_last_tx_bytes(NetconfigNetw return TRUE; } - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) *last_bytes = (((guint64)tx - (guint64)tx_bytes) > (guint64)0) ? ((guint64)tx - (guint64)tx_bytes) : (guint64)0; else @@ -267,7 +267,7 @@ gboolean netconfig_iface_network_statistics_get_wifi_last_rx_bytes(NetconfigNetw return TRUE; } - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) *last_bytes = (((guint64)rx - (guint64)rx_bytes) > (guint64)0) ? ((guint64)rx - (guint64)rx_bytes) : (guint64)0; else @@ -304,7 +304,7 @@ gboolean netconfig_iface_network_statistics_reset_wifi_total_tx_bytes(NetconfigN { guint64 tx = 0, rx = 0; - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) vconf_set_int(VCONFKEY_NETWORK_WIFI_PKT_TOTAL_SNT, -(int)tx); else vconf_set_int(VCONFKEY_NETWORK_WIFI_PKT_TOTAL_SNT, 0); @@ -316,7 +316,7 @@ gboolean netconfig_iface_network_statistics_reset_wifi_total_rx_bytes(NetconfigN { guint64 tx = 0, rx = 0; - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) vconf_set_int(VCONFKEY_NETWORK_WIFI_PKT_TOTAL_RCV, -(int)rx); else vconf_set_int(VCONFKEY_NETWORK_WIFI_PKT_TOTAL_RCV, 0); @@ -333,7 +333,7 @@ gboolean netconfig_iface_network_statistics_reset_wifi_last_tx_bytes(NetconfigNe return TRUE; } - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) vconf_set_int(VCONFKEY_NETWORK_WIFI_PKT_LAST_SNT, (int)tx); else vconf_set_int(VCONFKEY_NETWORK_WIFI_PKT_LAST_SNT, 0); @@ -350,7 +350,7 @@ gboolean netconfig_iface_network_statistics_reset_wifi_last_rx_bytes(NetconfigNe return TRUE; } - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) vconf_set_int(VCONFKEY_NETWORK_WIFI_PKT_LAST_RCV, (int)rx); else vconf_set_int(VCONFKEY_NETWORK_WIFI_PKT_LAST_RCV, 0); @@ -365,7 +365,7 @@ void netconfig_wifi_statistics_update_powered_off(void) guint64 total_tx = 0, total_rx = 0; int val = 0; - if (__netconfig_wifi_get_bytes_statistics(&cur_tx, &cur_rx) != TRUE) + if (netconfig_wifi_get_bytes_statistics(&cur_tx, &cur_rx) != TRUE) return; vconf_get_int(VCONFKEY_NETWORK_WIFI_PKT_TOTAL_SNT, &val); @@ -397,7 +397,7 @@ static void netconfig_wifi_statistics_update_state( return; } - if (__netconfig_wifi_get_bytes_statistics(&tx, &rx) != TRUE) + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) != TRUE) return; if (state == NETCONFIG_WIFI_CONNECTED) { diff --git a/src/wifi-indicator.c b/src/wifi-indicator.c index 5d7d03a..115e08f 100644 --- a/src/wifi-indicator.c +++ b/src/wifi-indicator.c @@ -29,12 +29,16 @@ #include "log.h" #include "util.h" #include "netdbus.h" +#include "network-statistics.h" #include "netsupplicant.h" #include "wifi-indicator.h" #define VCONFKEY_WIFI_SNR_MIN -89 -#define NETCONFIG_WIFI_INDICATOR_INTERVAL 3 +#define NETCONFIG_WIFI_INDICATOR_INTERVAL 1 + +static guint64 netconfig_wifi_tx_bytes = 0; +static guint64 netconfig_wifi_rx_bytes = 0; static guint netconfig_wifi_indicator_timer = 0; @@ -219,6 +223,7 @@ static gboolean __netconfig_wifi_indicator_monitor(gpointer data) { int rssi_dbm = 0; int pm_state = VCONFKEY_PM_STATE_NORMAL; + guint64 tx = 0, rx = 0; /* In case of LCD off, we don't need to update Wi-Fi indicator */ vconf_get_int(VCONFKEY_PM_STATE, &pm_state); @@ -227,6 +232,23 @@ static gboolean __netconfig_wifi_indicator_monitor(gpointer data) rssi_dbm = netconfig_wifi_get_rssi(); + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) { + if (netconfig_wifi_tx_bytes < tx) { + if (netconfig_wifi_rx_bytes < rx) + vconf_set_int(VCONFKEY_WIFI_TRANSFER_STATE, VCONFKEY_WIFI_TRANSFER_STATE_TXRX); + else + vconf_set_int(VCONFKEY_WIFI_TRANSFER_STATE, VCONFKEY_WIFI_TRANSFER_STATE_TX); + } else { + if (netconfig_wifi_rx_bytes < rx) + vconf_set_int(VCONFKEY_WIFI_TRANSFER_STATE, VCONFKEY_WIFI_TRANSFER_STATE_RX); + else + vconf_set_int(VCONFKEY_WIFI_TRANSFER_STATE, VCONFKEY_WIFI_TRANSFER_STATE_NONE); + } + + netconfig_wifi_tx_bytes = tx; + netconfig_wifi_rx_bytes = rx; + } + __netconfig_wifi_set_rssi_level(rssi_dbm); return TRUE; @@ -234,10 +256,20 @@ static gboolean __netconfig_wifi_indicator_monitor(gpointer data) void netconfig_wifi_indicator_start(void) { + guint64 tx = 0, rx = 0; + INFO("Start Wi-Fi indicator"); vconf_set_int(VCONFKEY_WIFI_STRENGTH, VCONFKEY_WIFI_STRENGTH_MAX); + if (netconfig_wifi_get_bytes_statistics(&tx, &rx) == TRUE) { + netconfig_wifi_tx_bytes = tx; + netconfig_wifi_rx_bytes = rx; + } else { + netconfig_wifi_tx_bytes = 0; + netconfig_wifi_rx_bytes = 0; + } + netconfig_start_timer_seconds( NETCONFIG_WIFI_INDICATOR_INTERVAL, __netconfig_wifi_indicator_monitor, -- 2.34.1