Use milisec unit instead of sec for power duration 10/229110/1
authorDoHyun Pyun <dh79.pyun@samsung.com>
Mon, 30 Mar 2020 01:55:15 +0000 (10:55 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Mon, 30 Mar 2020 01:55:15 +0000 (10:55 +0900)
Change-Id: I7b927116fe0173d9d2affe2d90da204ee360364b
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
bt-service-adaptation/services/bt-service-battery-monitor.c

index e6a360e..ce452ed 100644 (file)
@@ -24,7 +24,7 @@
 #include <string.h>
 #include <dlog.h>
 #include <time.h>
-
+#include <sys/time.h>
 
 #include <oal-event.h>
 
@@ -33,9 +33,9 @@
 #include "bt-service-event.h"
 #include "bt-service-core-adapter.h"
 
-static time_t scan_start = 0;
-static time_t connect_start = 0;
-static time_t app_scan_base = 0;
+static struct timeval scan_start;
+static struct timeval connect_start;
+static struct timeval app_scan_base;
 static int scan_cnt = 0;
 static int connect_cnt = 0;
 static gboolean is_session_started = FALSE;
@@ -51,6 +51,11 @@ _bt_battery_data_t *current_session_data = NULL;
 
 static void __bt_bm_add_prev_time(uint32_t scan_time);
 
+uint32_t static __bt_dm_time_diff_msec(struct timeval prev, struct timeval cur)
+{
+    return (uint32_t)((cur.tv_sec - prev.tv_sec) * 1000.0f + (cur.tv_usec - prev.tv_usec) / 1000.0f);
+}
+
 static void __bt_display_session_data()
 {
        BT_DBG("Displaying session data...");
@@ -63,11 +68,11 @@ static void __bt_display_session_data()
 /*After reading data, the function resets it*/
 int _bt_bm_read_data(_bt_battery_data_t *data)
 {
+       struct timeval cur_time;
        uint32_t tx_time = 0;
        uint32_t rx_time = 0;
        uint32_t idle_time = 0;
        uint32_t energy_used = 0;
-       time_t base_time = 0;
        uint16_t scan_time_per_app = 0;
        int scan_app_cnt = 0;
 
@@ -84,6 +89,8 @@ int _bt_bm_read_data(_bt_battery_data_t *data)
                return BLUETOOTH_ERROR_NOT_SUPPORT;
        }
 
+       gettimeofday(&cur_time, 0);
+
        data->tx_time = tx_time;
        data->rx_time = rx_time;
        data->idle_time = idle_time;
@@ -95,25 +102,27 @@ int _bt_bm_read_data(_bt_battery_data_t *data)
 
        data->session_scan_time = current_session_data->session_scan_time;
        if (scan_cnt) {
-               data->session_scan_time += (uint16_t) (time(NULL) - scan_start);
-               scan_start = time(NULL);
-               base_time = app_scan_base;
-               app_scan_base = scan_start;
+               data->session_scan_time += (uint16_t)__bt_dm_time_diff_msec(scan_start, cur_time);
+               gettimeofday(&scan_start, 0);
        }
+       current_session_data->session_scan_time = 0;
 
        data->session_connected_time = current_session_data->session_connected_time;
        if (connect_cnt) {
-               data->session_connected_time += (uint16_t) (time(NULL) - connect_start);
-               connect_start = time(NULL);
+               data->session_connected_time += (uint16_t)__bt_dm_time_diff_msec(connect_start, cur_time);
+               gettimeofday(&connect_start, 0);
        }
+       current_session_data->session_connected_time = 0;
 
        scan_app_cnt = g_slist_length(scan_app_list);
 
        if (scan_app_cnt > 0) {
-               scan_time_per_app = (uint32_t)(app_scan_base - base_time) / scan_app_cnt;
+               scan_time_per_app = (uint32_t)__bt_dm_time_diff_msec(app_scan_base, cur_time) / scan_app_cnt;
                __bt_bm_add_prev_time(scan_time_per_app);
        }
 
+       gettimeofday(&app_scan_base, 0);
+
        data->atm_list = current_session_data->atm_list;
        if (data->atm_list == NULL) {
                BT_DBG("No data transaction in this session");
@@ -253,15 +262,10 @@ void _bt_bm_add_scan_app(bt_bm_scan_type_e type, uid_t uid, pid_t pid)
        bt_bm_scan_info_t *scan_info = NULL;
        GSList *app_list = NULL;
        int app_cnt = 0;
-       time_t base_time = 0;
-       uint16_t scan_time_per_app = 0;
+       uint32_t scan_time_per_app = 0;
 
        BT_DBG("Scan type: %d", type);
 
-       /* Update the base time */
-       base_time = app_scan_base;
-       app_scan_base = time(NULL);
-
        if (scan_app_list) {
                app_cnt = g_slist_length(scan_app_list);
                app_list = __is_scan_app_present(scan_app_list, SCAN_BOTH, uid, pid);
@@ -290,13 +294,16 @@ void _bt_bm_add_scan_app(bt_bm_scan_type_e type, uid_t uid, pid_t pid)
                scan_info->pid = pid;
                scan_info->type = type;
 
-               if (app_cnt > 0 && base_time != 0) {
-                       /* Update the base time */
-                       base_time = app_scan_base;
-                       app_scan_base = time(NULL);
+               if (app_cnt > 0) {
+                       struct timeval cur_time;
 
-                       scan_time_per_app = (uint32_t)(app_scan_base - base_time) / app_cnt;
+                       gettimeofday(&cur_time, 0);
+
+                       scan_time_per_app = (uint32_t)(__bt_dm_time_diff_msec(app_scan_base, cur_time)) / app_cnt;
                        __bt_bm_add_prev_time(scan_time_per_app);
+
+                       /* Update the base time */
+                       gettimeofday(&app_scan_base, 0);
                }
 
                scan_app_list = g_slist_append(scan_app_list, scan_info);
@@ -309,8 +316,7 @@ void _bt_bm_remove_scan_app(bt_bm_scan_type_e type, uid_t uid, pid_t pid)
        bt_bm_scan_info_t *scan_info = NULL;
        GSList *app_list = NULL;
        int app_cnt = 0;
-       time_t base_time = 0;
-       uint16_t scan_time_per_app = 0;
+       uint32_t scan_time_per_app = 0;
 
        BT_DBG("Scan type: %d", type);
 
@@ -329,6 +335,8 @@ void _bt_bm_remove_scan_app(bt_bm_scan_type_e type, uid_t uid, pid_t pid)
        app_list = __is_scan_app_present(scan_app_list, type, uid, pid);
 
        if (app_list) {
+               struct timeval cur_time;
+
                scan_info = (bt_bm_scan_info_t *)(app_list->data);
 
                if (scan_info->type == SCAN_BOTH) {
@@ -336,14 +344,13 @@ void _bt_bm_remove_scan_app(bt_bm_scan_type_e type, uid_t uid, pid_t pid)
                        return;
                }
 
-               /* Update the base time */
-               base_time = app_scan_base;
-               app_scan_base = time(NULL);
+               gettimeofday(&cur_time, 0);
 
-               if (base_time != 0) {
-                       scan_time_per_app = (uint32_t)(app_scan_base - base_time) / app_cnt;
-                       __bt_bm_add_prev_time(scan_time_per_app);
-               }
+               scan_time_per_app = (uint32_t)(__bt_dm_time_diff_msec(app_scan_base, cur_time)) / app_cnt;
+               __bt_bm_add_prev_time(scan_time_per_app);
+
+               /* Update the base time */
+               gettimeofday(&app_scan_base, 0);
 
                scan_app_list = g_slist_remove(scan_app_list, scan_info);
 
@@ -356,8 +363,8 @@ void _bt_start_scan_time()
        if (current_session_data != NULL) {
                if (scan_cnt == 0) {
                        BT_DBG("Starting scan time");
-                       scan_start = time(NULL);
-                       app_scan_base = scan_start;
+                       gettimeofday(&scan_start, 0);
+                       gettimeofday(&app_scan_base, 0);
                }
                scan_cnt++;
        } else {
@@ -372,10 +379,12 @@ void _bt_stop_scan_time()
        else {
                scan_cnt--;
                if(scan_cnt == 0) {
-                       time_t temp = time(NULL);
-                       current_session_data->session_scan_time += (uint16_t) (temp - scan_start);
-                       scan_start = 0;
-                       app_scan_base = scan_start;
+                       struct timeval cur_time;
+
+                       gettimeofday(&cur_time, 0);
+                       current_session_data->session_scan_time += (uint16_t)(__bt_dm_time_diff_msec(scan_start, cur_time));
+                       gettimeofday(&scan_start, 0);
+                       gettimeofday(&app_scan_base, 0);
                }
        }
 }
@@ -385,7 +394,7 @@ void _bt_start_connect_time()
        if (current_session_data != NULL) {
                if (connect_cnt == 0) {
                        BT_DBG("Starting connect time");
-                       connect_start = time(NULL);
+                       gettimeofday(&connect_start, 0);
                }
                connect_cnt++;
        }
@@ -402,8 +411,10 @@ void _bt_stop_connect_time()
        else {
                connect_cnt--;
                if(connect_cnt == 0) {
-                       time_t temp = time(NULL);
-                       current_session_data->session_connected_time += (uint16_t) (temp - connect_start);
+                       struct timeval cur_time;
+
+                       gettimeofday(&cur_time, 0);
+                       current_session_data->session_connected_time += (uint16_t)(__bt_dm_time_diff_msec(connect_start, cur_time));
                }
        }
 }