From 26ae43a40cdd0b21f0341470b548425f1a64eb04 Mon Sep 17 00:00:00 2001 From: DoHyun Pyun Date: Mon, 30 Mar 2020 10:55:15 +0900 Subject: [PATCH] Use milisec unit instead of sec for power duration Change-Id: I7b927116fe0173d9d2affe2d90da204ee360364b Signed-off-by: DoHyun Pyun --- .../services/bt-service-battery-monitor.c | 93 ++++++++++++---------- 1 file changed, 52 insertions(+), 41 deletions(-) diff --git a/bt-service-adaptation/services/bt-service-battery-monitor.c b/bt-service-adaptation/services/bt-service-battery-monitor.c index e6a360e..ce452ed 100644 --- a/bt-service-adaptation/services/bt-service-battery-monitor.c +++ b/bt-service-adaptation/services/bt-service-battery-monitor.c @@ -24,7 +24,7 @@ #include #include #include - +#include #include @@ -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)); } } } -- 2.7.4