From: Jaehyun Kim Date: Thu, 9 Apr 2020 12:52:25 +0000 (+0900) Subject: Update Wi-Fi rx/tx time for Battery-Monitor Service X-Git-Tag: submit/tizen_5.5/20200410.102835^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b5c55a912858b70101270bef5a181e8928807429;p=platform%2Fcore%2Fconnectivity%2Fnet-config.git Update Wi-Fi rx/tx time for Battery-Monitor Service Change-Id: I2ca5e4222f35f3e037e5119314981cc6cf8a89b0 Signed-off-by: Jaehyun Kim --- diff --git a/include/plugin.h b/include/plugin.h index 8c92136..d044cc1 100755 --- a/include/plugin.h +++ b/include/plugin.h @@ -95,6 +95,8 @@ struct netconfig_stc_plugin_t { #define BATTERY_WIFI_TIME_LEVEL_2 "time_level_2" #define BATTERY_WIFI_TIME_LEVEL_3 "time_level_3" #define BATTERY_WIFI_TIME_LEVEL_4 "time_level_4" +#define BATTERY_WIFI_RX_TIME "rx_time" +#define BATTERY_WIFI_TX_TIME "tx_time" #define BATTERY_WIFI_START_TIME "start_time" #define BATTERY_WIFI_END_TIME "end_time" #define BATTERY_WIFI_SCAN_TIME "scan_time" @@ -126,6 +128,8 @@ typedef struct { uint time_level_2; uint time_level_3; uint time_level_4; + uint rx_time; + uint tx_time; time_t start_time; time_t end_time; uint scan_time; @@ -144,6 +148,7 @@ struct netconfig_battery_plugin_t { void (*end_wifi_data) (int, stc_get_stats_cb); void (*update_wifi_scan) (int); void (*update_wifi_rssi) (int); + void (*update_rxtx_time) (int, int); void (*get_battery_dn_list) (void *, stc_get_stats_cb); void (*get_battery_wifi_list) (void *, stc_get_stats_cb); diff --git a/include/util.h b/include/util.h index 631b3b7..fcfe2fa 100755 --- a/include/util.h +++ b/include/util.h @@ -120,6 +120,7 @@ void netconfig_battery_start_wifi(void); void netconfig_battery_end_wifi(void); void netconfig_battery_update_wifi_scan(int state); void netconfig_battery_update_wifi_rssi(int rssi); +void netconfig_battery_update_rxtx_time(int rx, int tx); void netconfig_battery_get_dn_list(void *data); void netconfig_battery_get_wifi_list(void *data); diff --git a/plugin/battery/battery.c b/plugin/battery/battery.c index 016c948..b5e06b2 100755 --- a/plugin/battery/battery.c +++ b/plugin/battery/battery.c @@ -17,6 +17,7 @@ * */ +#include #include "plugin.h" #include "util.h" @@ -39,7 +40,8 @@ #define BATTERY_MODE_GET 1 typedef struct { - time_t time; + struct timeval start_time; + uint rest_time; } battery_scan_data_s; typedef struct { @@ -47,7 +49,7 @@ typedef struct { int rssi; } battery_rssi_data_s; -static battery_scan_data_s g_wifi_scan_data = { 0, }; +static battery_scan_data_s g_wifi_scan_data; static battery_rssi_data_s g_dn_rssi_data = { 0, }; static battery_rssi_data_s g_wifi_rssi_data = { 0, }; @@ -113,10 +115,10 @@ static void __battery_print_wifi_list(void) for (list = g_wifi_list; list != NULL; list = list->next) { battery_wifi_data_s *wifi_data = (battery_wifi_data_s *)list->data; - DBG("[Battery Wi-Fi] start[%ld] end[%ld] scan[%d] rssi[%d/%d/%d/%d/%d]", + DBG("[Battery Wi-Fi] start[%ld] end[%ld] scan[%d] rssi[%d/%d/%d/%d/%d] rx[%d] tx[%d]", wifi_data->start_time, wifi_data->end_time, wifi_data->scan_time, wifi_data->time_level_0, wifi_data->time_level_1, wifi_data->time_level_2, - wifi_data->time_level_3, wifi_data->time_level_4); + wifi_data->time_level_3, wifi_data->time_level_4, wifi_data->rx_time, wifi_data->tx_time); } } @@ -194,6 +196,10 @@ static void __battery_get_wifi_list(void *data, battery_wifi_data_s *wifi_data) g_variant_new_uint32(wifi_data->time_level_3)); g_variant_builder_add(&sub_builder, "{sv}", BATTERY_WIFI_TIME_LEVEL_4, g_variant_new_uint32(wifi_data->time_level_4)); + g_variant_builder_add(&sub_builder, "{sv}", BATTERY_WIFI_RX_TIME, + g_variant_new_uint32(wifi_data->rx_time)); + g_variant_builder_add(&sub_builder, "{sv}", BATTERY_WIFI_TX_TIME, + g_variant_new_uint32(wifi_data->tx_time)); g_variant_builder_add(&sub_builder, "{sv}", BATTERY_WIFI_START_TIME, g_variant_new_uint32(wifi_data->start_time)); g_variant_builder_add(&sub_builder, "{sv}", BATTERY_WIFI_END_TIME, @@ -201,10 +207,10 @@ static void __battery_get_wifi_list(void *data, battery_wifi_data_s *wifi_data) g_variant_builder_add(&sub_builder, "{sv}", BATTERY_WIFI_SCAN_TIME, g_variant_new_uint32(wifi_data->scan_time)); - DBG("[Battery Wi-Fi] start[%ld] end[%ld] scan[%d] rssi[%d/%d/%d/%d/%d]", + DBG("[Battery Wi-Fi] start[%ld] end[%ld] scan[%d] rssi[%d/%d/%d/%d/%d] rx[%d] tx[%d]", wifi_data->start_time, wifi_data->end_time, wifi_data->scan_time, wifi_data->time_level_0, wifi_data->time_level_1, wifi_data->time_level_2, - wifi_data->time_level_3, wifi_data->time_level_4); + wifi_data->time_level_3, wifi_data->time_level_4, wifi_data->rx_time, wifi_data->tx_time); if (wifi_data->atm_list != NULL) { @@ -249,6 +255,7 @@ void battery_update_dn_rssi(int rssi) if (g_dn_rssi_data.time != 0) { uint diff_time = curr_time - g_dn_rssi_data.time; diff_time = (diff_time > 0) ? diff_time : 1; + diff_time *= 1000; /* Convert to milliseconds */ switch (g_dn_rssi_data.rssi) { case 0: g_dn_data->time_level_0 += diff_time; @@ -340,24 +347,30 @@ void battery_end_dn_data(int mode, stc_get_stats_cb get_stats_cb) void battery_update_wifi_scan(int state) { - time_t curr_time = time(NULL); + uint diff_time = 0; + struct timeval curr_time; + gettimeofday(&curr_time, NULL); if (g_wifi_data == NULL) return; switch (state) { case 0: /* scan done */ - DBG("[Battery Wi-Fi] scan(%ld) [done]", curr_time); - if (g_wifi_scan_data.time != 0) { - uint diff_time = curr_time - g_wifi_scan_data.time; - diff_time = (diff_time > 0) ? diff_time : 1; - g_wifi_data->scan_time += diff_time; - DBG("[Battery Wi-Fi] scan time [%d/%d]", diff_time, g_wifi_data->scan_time); + DBG("[Battery Wi-Fi] scan(%ld/%ld) [done]", curr_time.tv_sec, curr_time.tv_usec); + if (g_wifi_scan_data.start_time.tv_sec != 0) { + diff_time = (curr_time.tv_sec - g_wifi_scan_data.start_time.tv_sec) * 1000; + diff_time += (curr_time.tv_usec - g_wifi_scan_data.start_time.tv_usec) / 1000; + diff_time += g_wifi_scan_data.rest_time; + + g_wifi_data->scan_time += diff_time / 1000; + g_wifi_scan_data.rest_time = diff_time % 1000; + DBG("[Battery Wi-Fi] scan time [%d/%d]", diff_time / 1000, g_wifi_data->scan_time); } break; case 1: /* scan started */ - g_wifi_scan_data.time = curr_time; - DBG("[Battery Wi-Fi] scan(%ld) [started]", curr_time); + g_wifi_scan_data.start_time.tv_sec = curr_time.tv_sec; + g_wifi_scan_data.start_time.tv_usec = curr_time.tv_usec; + DBG("[Battery Wi-Fi] scan(%ld/%ld) [started]", curr_time.tv_sec, curr_time.tv_usec); break; default: break; @@ -376,6 +389,7 @@ void battery_update_wifi_rssi(int rssi) if (g_wifi_rssi_data.time != 0) { uint diff_time = curr_time - g_wifi_rssi_data.time; diff_time = (diff_time > 0) ? diff_time : 1; + diff_time *= 1000; /* Convert to milliseconds */ switch (g_wifi_rssi_data.rssi) { case 0: g_wifi_data->time_level_0 += diff_time; @@ -408,6 +422,15 @@ void battery_update_wifi_rssi(int rssi) } } +void battery_update_rxtx_time(int rx, int tx) +{ + if (g_wifi_data == NULL) + return; + + g_wifi_data->rx_time += rx; + g_wifi_data->tx_time += tx; +} + void battery_start_wifi_data(void) { battery_wifi_data_s *wifi_data = NULL; @@ -431,6 +454,10 @@ void battery_start_wifi_data(void) if (g_wifi_rssi_data.time) g_wifi_rssi_data.time = curr_time; + g_wifi_scan_data.start_time.tv_sec = 0; + g_wifi_scan_data.start_time.tv_usec = 0; + g_wifi_scan_data.rest_time = 0; + DBG("[Battery Wi-Fi] start(%ld)", g_wifi_data->start_time); } @@ -448,8 +475,6 @@ void battery_end_wifi_data(int mode, stc_get_stats_cb get_stats_cb) g_wifi_rssi_data.rssi = 0; } - g_wifi_scan_data.time = 0; - g_wifi_data->end_time = curr_time; get_stats_cb(g_wifi_data->start_time, g_wifi_data->end_time, &(g_wifi_data->atm_list)); @@ -517,6 +542,7 @@ struct netconfig_battery_plugin_t netconfig_battery_plugin = { battery_end_wifi_data, battery_update_wifi_scan, battery_update_wifi_rssi, + battery_update_rxtx_time, battery_get_dn_list, battery_get_wifi_list }; diff --git a/src/utils/util.c b/src/utils/util.c index 8d41a76..ade257a 100755 --- a/src/utils/util.c +++ b/src/utils/util.c @@ -1237,6 +1237,17 @@ void netconfig_battery_update_wifi_rssi(int rssi) return battery_plugin->update_wifi_rssi(rssi); } +void netconfig_battery_update_rxtx_time(int rx, int tx) +{ + if (!netconfig_plugin_battery_enabled) + return; + + if (!battery_plugin) + return; + + return battery_plugin->update_rxtx_time(rx, tx); +} + void netconfig_battery_get_dn_list(void *data) { if (!netconfig_plugin_battery_enabled) diff --git a/src/wifi-indicator.c b/src/wifi-indicator.c index a47c608..829462e 100755 --- a/src/wifi-indicator.c +++ b/src/wifi-indicator.c @@ -36,6 +36,7 @@ #include "network-statistics.h" #include "netsupplicant.h" #include "wifi-indicator.h" +#include "wifi-background-scan.h" #define VCONFKEY_WIFI_SNR_MIN -89 @@ -310,6 +311,12 @@ static void __netconfig_wifi_update_indicator(void) last_transfer_state = transfer_state; } + /* Update Wi-Fi rx/tx time(msec) for Battery-Monitor Service */ + if (netconfig_wifi_get_scanning() != TRUE && (rx_diff > 0 || tx_diff > 0)) + netconfig_battery_update_rxtx_time( + (rx_diff > 0) ? 1000 : 0, + (tx_diff > 0) ? 1000 : 0); + /* NETCONFIG_WIFI_DATA_ACTIVITY_BOOSTER */ if (tx_diff >= NETCONFIG_WIFI_DATA_ACTIVITY_BOOSTER_LEVEL1 || rx_diff >= NETCONFIG_WIFI_DATA_ACTIVITY_BOOSTER_LEVEL1)