Update Wi-Fi rx/tx time for Battery-Monitor Service 53/230353/4 accepted/tizen/5.5/unified/20200413.002432 submit/tizen_5.5/20200410.102835
authorJaehyun Kim <jeik01.kim@samsung.com>
Thu, 9 Apr 2020 12:52:25 +0000 (21:52 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Fri, 10 Apr 2020 10:37:37 +0000 (19:37 +0900)
Change-Id: I2ca5e4222f35f3e037e5119314981cc6cf8a89b0
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
include/plugin.h
include/util.h
plugin/battery/battery.c
src/utils/util.c
src/wifi-indicator.c

index 8c9213608d26ce00aa38c24c6debfa1f75ed05d3..d044cc1c92852f6bf7a3032f01c43073b20c6a0b 100755 (executable)
@@ -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);
index 631b3b75ecc4dbf889716ca69c3dd0038ea56cc4..fcfe2fae922b68141b11edbc8a597f68422323b3 100755 (executable)
@@ -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);
 
index 016c948e61e475a26e64109b68b3341931387e40..b5e06b23837ea0346992f935bbe9d725c36db053 100755 (executable)
@@ -17,6 +17,7 @@
  *
  */
 
+#include<sys/time.h>
 #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
 };
index 8d41a76270f96d39117c05c6cd8e7e88ac36390e..ade257a9c670ee2f27e4b8fa26009c8c0285018e 100755 (executable)
@@ -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)
index a47c60894bbfdec6b3b66e77b35ac80c49bbb27e..829462ec4e45d0785cd05e4264eed729cf74182b 100755 (executable)
@@ -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)