return ret_val;
}
-/* TODO: Add Normalization of values based on sP_Power_xxx & Time unit */
+/* Coefficients for power params are stored in "mA"
+ * The floor of calculated values in mAs is stored in DB (i.e 3600 times of actual required)
+ * As, 1 mAh = 3600 mAs
+ * */
int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool mode)
{
ENTER;
GHashTable *hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
long int edTime = 0, stTime = 0;
- long int sesTime = 0, conTime = 0, RX_app = 0, TX_app = 0;
- long int RX_system = 0, TX_system = 0, tx_time = 0, rx_time = 0;
- long int scTime = 0;
- double onTime = 0;
+ double sesTime = 0, conTime = 0, RX_app = 0, TX_app = 0, onTime = 0;
+ double RX_system = 0, TX_system = 0, tx_time = 0, rx_time = 0;
/* iterating over list for data accumulation */
for (bt_data_iterator = handle->bt_data_list; bt_data_iterator; bt_data_iterator = bt_data_iterator->next) {
bm_bluetooth_st *datalistnode = (bm_bluetooth_st *)(bt_data_iterator->data);
edTime = datalistnode->stopTime; stTime = datalistnode->startTime;
-// scTime += datalistnode->scanTime;
conTime += datalistnode->connectedTime;
rx_time += datalistnode->rxTime; tx_time += datalistnode->txTime;
sesTime += (edTime-stTime);
_DBG("received bt power params - idle[%lf], scan[%lf], connected[%lf], rx[%lf], tx[%lf]",
sP_power_bt_idle, sP_power_bt_scan, sP_power_bt_conn, sP_power_bt_tx, sP_power_bt_rx);
/* BT power consumption Level - 1 at the Resource Level */
- long int P_power_bt = 0, P_power_data = 0, P_power_conn = 0;
+ double P_power_bt = 0, P_power_data = 0, P_power_conn = 0;
/* Remove transmit time from connected time */
- long int rconTime = conTime - (rx_time + tx_time);
- P_power_conn = ((sP_power_bt_idle) * (sesTime - conTime)) + ((sP_power_bt_conn) * (rconTime));
- /* Amount based usage calculation */
-// P_power_data = ((sP_power_bt_tx) * TX_app) + ((sP_power_bt_rx) * RX_app);
+ double rconTime = conTime - (rx_time + tx_time);
+ /* BT Plugin sends conTime to be 0 */
+ if (rconTime < 0) {
+ _ERR("BT wrong conTime %lf", conTime);
+ rconTime = rx_time + tx_time;
+ }
+ P_power_conn = ((sP_power_bt_idle) * (sesTime - conTime)) + ((sP_power_bt_conn) * (rconTime));
/* Use rx and tx time to calculate the usage */
P_power_data = ((sP_power_bt_tx) * tx_time + (sP_power_bt_rx) * rx_time);
P_power_bt = P_power_conn + P_power_data;
- _DBG("Calculated Power for Bluetooth P_power_bt(%ld), P_power_conn (%ld), P_power_data(%ld)", P_power_bt, P_power_conn, P_power_data);
+ _DBG("Calculated Power for Bluetooth P_power_bt(%lf), P_power_conn (%lf), P_power_data(%lf)", P_power_bt, P_power_conn, P_power_data);
/* BT power consumption Level - 2 at the Application Level */
GHashTableIter iter1;
gpointer key, value;
g_hash_table_iter_init(&iter1, hash);
- long int rx_tx_time = tx_time + rx_time;
- long int left_rx_tx_time = rx_tx_time;
+ double rx_tx_time = tx_time + rx_time, left_rx_tx_time = rx_tx_time;
double apptime = 0, csc_t = 0;
//Normalize
if (onTime != 0 && onTime > rx_tx_time) {
_DBG("Normalize the scan app scan time");
- csc_t = (double)rx_tx_time/onTime;
+ csc_t = rx_tx_time/onTime;
while (g_hash_table_iter_next(&iter1, &key, &value)) {
app_time_map_st2 *temp = (app_time_map_st2 *)value;
apptime = temp->time;
}
}
} else
- left_rx_tx_time -= onTime;
+ left_rx_tx_time = left_rx_tx_time - onTime;
- long int P_power_app_bt = 0, P_power_app_data = 0, P_power_app_conn = 0;
+ double P_power_app_bt = 0, P_power_app_data = 0, P_power_app_conn = 0;
char *appid = NULL;
- long int apprx = 0, apptx = 0;
+ double apprx = 0, apptx = 0;
long int ret_time = bm_get_log_time(data_collection_period);
- long int total_app_pw = 0, base_res_pw = 0;
+ double total_app_pw = 0, base_res_pw = 0;
/* Coefficient to divide the rx and tx time wrt rx and tx bytes */
double crtx_t = 0;
if ((left_rx_tx_time > 0) && (RX_app != 0 || TX_app != 0))
- crtx_t = (double)left_rx_tx_time/(TX_app + RX_app + RX_system + TX_system);
+ crtx_t = left_rx_tx_time/(TX_app + RX_app + RX_system + TX_system);
- appid_usage_s app_usage;
+ appid_usage_s app_usage = {0};
GHashTableIter iter;
g_hash_table_iter_init(&iter, hash);
P_power_app_bt = 0, P_power_app_data = 0, P_power_app_conn = 0;
apprx = 0, apptx = 0, apptime = 0;
app_time_map_st2 *temp = (app_time_map_st2 *)value;
- appid = temp->app_id;
- apprx = temp->rx; apptx = temp->tx;
+ appid = temp->app_id; apprx = temp->rx; apptx = temp->tx;
apptime = temp->time;
-// P_power_app_data = (sP_power_bt_tx * (crx_t * apptx)) + (sP_power_bt_rx * (ctx_t * apprx));
-// if (onTime != 0)
-// P_power_app_conn = (P_power_conn * apptime)/onTime; //check for 0 denominator & same units
-// P_power_app_bt = P_power_app_data + P_power_app_conn;
- int app_transmit = apprx + apptx;
+ double app_transmit = apprx + apptx;
P_power_app_bt = sP_power_bt_rx * ((crtx_t * app_transmit) + apptime);
+
app_usage.AppId = appid;
app_usage.rId_ble = P_power_app_bt;
app_usage.log_time = ret_time;
total_app_pw += P_power_app_bt;
/* Call Insert Function */
- _DBG("Calculated Power for Appid(%s) - P_power_app_bt(%ld), P_power_app_conn(%ld), P_power_app_data(%ld)",
+ _DBG("Calculated Power for Appid(%s) - P_power_app_bt(%lf), P_power_app_conn(%lf), P_power_app_data(%lf)",
appid, P_power_app_bt, P_power_app_conn, P_power_app_data);
if (mode) {
ret_val = bm_server_appid_insert_to_db(app_usage.AppId);
}
/* commit to database the output after power calculation */
- resourceid_usage_s res_usage;
+ resourceid_usage_s res_usage = {0};
res_usage.ResourceId = BM_RID_BLE;
res_usage.log_time = ret_time;
}
bd_gl_ble_stat_s gble_st;
- gble_st.time_s = ret_time; gble_st.ble_idle_time = (sesTime - (scTime + conTime));
+ gble_st.time_s = ret_time; gble_st.ble_idle_time = (sesTime - conTime);
gble_st.ble_rx_time = rx_time; gble_st.ble_tx_time = tx_time;
gble_st.ble_pwi_val = P_power_bt;
bd_gl_bst_stat_s gbst_st;
gbst_st.time_s = ret_time; gbst_st.off_time = data_collection_period / 1000;
gbst_st.off_time = (sesTime >= gbst_st.off_time) ? 0 : (gbst_st.off_time - sesTime);
- gbst_st.low_time = 0;/*(sesTime - (scTime + conTime))*/
- gbst_st.med_time = 0;/*scTime*/ gbst_st.high_time = 0;/*conTime*/
+ /* Value related to BT signal quality not received from current plugin interface */
+ gbst_st.low_time = 0; gbst_st.med_time = 0; gbst_st.high_time = 0;
ret_val = bm_server_battery_dump_insert_to_db(&gbst_st, 6);
if (ret_val != BATTERY_MONITOR_ERROR_NONE)
_ERR("Insert of GBLE failed ");
g_hash_table_destroy(hash);
/* Dump resource usage */
- _DBG("BLE usage : %ld bytes", RX_system + TX_system + RX_app + TX_app);
+ _DBG("BLE usage : %lf bytes", RX_system + TX_system + RX_app + TX_app);
if (RX_system > 0 || TX_system > 0 || RX_app > 0 || TX_app > 0) {
history_item_s hi;
bd_print_history_item_reset(&hi);
GHashTable *hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
long int edTime = 0, stTime = 0;
- long int sesTime = 0, scTime = 0, tl_total = 0;
- long int tl0 = 0, tl1 = 0, tl2 = 0, tl3 = 0, tl4 = 0;
+ double sesTime = 0, scTime = 0, tl_total = 0;
+ double tl0 = 0, tl1 = 0, tl2 = 0, tl3 = 0, tl4 = 0;
double onTime = 0;
- long int RX = 0, TX = 0, rx_time = 0, tx_time = 0;
+ double RX = 0, TX = 0, rx_time = 0, tx_time = 0;
/* iterating over list for data accumulation */
for (wifi_data_iterator = handle->wifi_data_list; wifi_data_iterator; wifi_data_iterator = wifi_data_iterator->next) {
bm_wifi_st *datalistnode = (bm_wifi_st *)(wifi_data_iterator->data);
onTime /= 1000; rx_time /= 1000; tx_time /= 1000;
tl_total = tl0 + tl1 + tl2 + tl3 + tl4;
/* Wifi power consumption Level - 1 at the Resource Level */
- long int P_power_wifi = 0, P_power_data = 0, P_power_conn = 0;
+ double P_power_wifi = 0, P_power_data = 0, P_power_conn = 0;
P_power_conn = ((sP_power_wf_tl0 * tl0) + (sP_power_wf_tl1 * tl1) +
(sP_power_wf_tl2 * tl2) + (sP_power_wf_tl3 * tl3) +
(sP_power_wf_tl4 * tl4) + (sP_power_wf_scan * scTime) +
(sP_power_wf_idle * (sesTime - (tl_total + scTime))));
- /* Amount based usage calculation */
-// P_power_data = ((sP_power_wf_tx) * TX) + ((sP_power_wf_rx) * RX);
/* Use rx and tx time to calculate the usage */
P_power_data = ((sP_power_wf_tx * tx_time) + (sP_power_wf_rx * rx_time));
P_power_wifi = P_power_conn + P_power_data;
- _DBG("Calculated Power for Wifi P_power_wifi(%ld), P_power_conn (%ld), P_power_data(%ld)", P_power_wifi, P_power_conn, P_power_data);
+ _DBG("Calculated Power for Wifi P_power_wifi(%lf), P_power_conn (%lf), P_power_data(%lf)", P_power_wifi, P_power_conn, P_power_data);
/* Wifi power consumption Level - 2 at the Application Level */
GHashTableIter iter;
gpointer key, value;
g_hash_table_iter_init(&iter, hash);
- long int P_power_app_wifi = 0, P_power_app_data = 0, P_power_app_conn = 0;
+ double P_power_app_wifi = 0, P_power_app_data = 0, P_power_app_conn = 0;
char *appid = NULL;
- long int apprx = 0, apptx = 0;
+ double apprx = 0, apptx = 0;
double apptime = 0, crx_t = 0, ctx_t = 0;
- long int rx_t = 0, tx_t = 0;
+ double rx_t = 0, tx_t = 0;
long int ret_time = bm_get_log_time(data_collection_period);
- long int total_app_pw = 0, base_res_pw = 0;
+ double total_app_pw = 0, base_res_pw = 0;
/* Coefficient to divide the rx and tx time wrt rx and tx bytes */
if (RX != 0)
- crx_t = (double)rx_time/RX;
+ crx_t = rx_time/RX;
if (TX != 0)
- ctx_t = (double)tx_time/TX;
+ ctx_t = tx_time/TX;
- appid_usage_s app_usage;
+ appid_usage_s app_usage = {0};
while (g_hash_table_iter_next(&iter, &key, &value)) {
P_power_app_wifi = 0; P_power_app_data = 0; P_power_app_conn = 0;
app_usage.log_time = ret_time;
total_app_pw += P_power_app_wifi;
/* Call Insert Function */
- _DBG("Calculated Power for Appid(%s) - P_power_app_wifi(%ld), P_power_app_conn(%ld), P_power_app_data(%ld)",
+ _DBG("Calculated Power for Appid(%s) - P_power_app_wifi(%lf), P_power_app_conn(%lf), P_power_app_data(%lf)",
appid, P_power_app_wifi, P_power_app_conn, P_power_app_data);
if (mode) {
}
/* commit to database the output after power calculation */
- resourceid_usage_s res_usage;
+ resourceid_usage_s res_usage = {0};
res_usage.ResourceId = BM_RID_WIFI;
res_usage.log_time = ret_time;
g_hash_table_destroy(hash);
/* Dump resource usage */
- _DBG("Wi-Fi usage : %ld bytes", RX + TX);
+ _DBG("Wi-Fi usage : %lf bytes", RX + TX);
if (RX > 0 || TX > 0) {
history_item_s hi;
bd_print_history_item_reset(&hi);
/* creating hash-map with (key, value) = (app-id, data) */
GHashTable *hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
- long int uTime = 0, sTime = 0;
+ double uTime = 0, sTime = 0;
double onTime = 0;
/* iterating over list for data accumulation */
for (cpu_data_iterator = handle->cpu_data_list; cpu_data_iterator; cpu_data_iterator = cpu_data_iterator->next) {
_DBG("received cpu power params - user[%lf]\n, system[%lf]\n", sP_power_cpu_user, sP_power_cpu_system);
/* CPU power consumption Level - 1 at the Resource Level */
- long int P_power_cpu = 0, P_power_user = 0, P_power_system = 0;
+ double P_power_cpu = 0, P_power_user = 0, P_power_system = 0;
uTime /= 1000; sTime /= 1000; onTime /= 1000;
+
P_power_user = ((sP_power_cpu_user * uTime));
P_power_system = ((sP_power_cpu_system * sTime));
P_power_cpu = P_power_user + P_power_system;
- _DBG("Calculated Power for CPU P_power_cpu (%ld), P_power_user (%ld), P_power_system (%ld)", P_power_cpu, P_power_user, P_power_system);
+ _DBG("Calculated Power for CPU P_power_cpu (%lf), P_power_user (%lf), P_power_system (%lf)", P_power_cpu, P_power_user, P_power_system);
/* CPU power consumption Level - 2 at the Application Level */
GHashTableIter iter;
gpointer key, value;
g_hash_table_iter_init(&iter, hash);
- long int P_power_app_cpu = 0, P_power_app_use = 0;
+ double P_power_app_cpu = 0, P_power_app_use = 0;
double apptime = 0;
char *appid = NULL;
long int ret_time = bm_get_log_time(data_collection_period);
- long int total_app_pw = 0, base_res_pw = 0;
+ double total_app_pw = 0, base_res_pw = 0;
- appid_usage_s app_usage;
+ appid_usage_s app_usage = {0};
while (g_hash_table_iter_next(&iter, &key, &value)) {
P_power_app_cpu = 0; P_power_app_use = 0;
app_usage.log_time = ret_time;
total_app_pw += P_power_app_cpu;
/* Call Insert Function */
- _DBG("Calculated Power for Appid (%s) P_power_app_cpu (%ld), P_power_app_use (%ld)", appid, P_power_app_cpu, P_power_app_use);
+ _DBG("Calculated Power for Appid (%s) P_power_app_cpu (%lf), P_power_app_use (%lf)", appid, P_power_app_cpu, P_power_app_use);
if (mode) {
ret_val = bm_server_appid_insert_to_db(app_usage.AppId);
_ERR("Insert of CPU App failed ");
}
- resourceid_usage_s res_usage;
+ resourceid_usage_s res_usage = {0};
res_usage.ResourceId = BM_RID_CPU;
res_usage.log_time = ret_time;
/* creating hash-map with (key, value) = (app-id, data) */
GHashTable *hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
- long int edTime = 0, stTime = 0, sesTime = 0;
- long int highTime = 0, medTime = 0, lowTime = 0;
- double onTime = 0;
+ long int edTime = 0, stTime = 0;
+ double sesTime = 0, highTime = 0, medTime = 0, lowTime = 0, onTime = 0;
/* iterating over list for data accumulation */
for (dp_data_iterator = handle->display_list; dp_data_iterator; dp_data_iterator = dp_data_iterator->next) {
bm_display_st *datalistnode = (bm_display_st *)(dp_data_iterator->data);
_DBG("received display power params - high[%lf], medium[%lf], low[%lf]", sP_power_dp_high, sP_power_dp_med, sP_power_dp_low);
/* Display power consumption Level - 1 at the Resource Level */
lowTime /= 1000; medTime /= 1000; highTime /= 1000; onTime /= 1000;
- long int P_power_disp = 0, P_power_on = 0;
+ double P_power_disp = 0, P_power_on = 0;
P_power_on = ((sP_power_dp_low * lowTime) + (sP_power_dp_med * medTime) + (sP_power_dp_high * highTime));
P_power_disp = P_power_on;
- _DBG("Calculated Power for Display P_power_disp (%ld), P_power_on (%ld)", P_power_disp, P_power_on);
+ _DBG("Calculated Power for Display P_power_disp (%lf), P_power_on (%lf)", P_power_disp, P_power_on);
/* Display power consumption Level - 2 at the Application Level */
GHashTableIter iter;
gpointer key, value;
g_hash_table_iter_init(&iter, hash);
- long int P_power_app_disp = 0, P_power_app_on = 0;
+ double P_power_app_disp = 0, P_power_app_on = 0;
char *appid = NULL;
double apptime = 0;
long int ret_time = bm_get_log_time(data_collection_period);
- long int total_app_pw = 0, base_res_pw = 0;
+ double total_app_pw = 0, base_res_pw = 0;
- appid_usage_s app_usage;
+ appid_usage_s app_usage = {0};
while (g_hash_table_iter_next(&iter, &key, &value)) {
P_power_app_disp = 0; P_power_app_on = 0;
app_usage.log_time = ret_time;
total_app_pw += P_power_app_disp;
/* Call Insert Function */
- _DBG("Calculated Power for Appid (%s) P_power_app_disp(%ld), P_power_app_on (%ld)", appid, P_power_app_disp, P_power_app_on);
+ _DBG("Calculated Power for Appid (%s) P_power_app_disp(%lf), P_power_app_on (%lf)", appid, P_power_app_disp, P_power_app_on);
if (mode) {
ret_val = bm_server_appid_insert_to_db(app_usage.AppId);
if (ret_val != BATTERY_MONITOR_ERROR_NONE)
}
/* commit to database the output after power calculation */
- resourceid_usage_s res_usage;
+ resourceid_usage_s res_usage = {0};
res_usage.ResourceId = BM_RID_DISP;
res_usage.log_time = ret_time;
/* creating hash-map with (key, value) = (app-id, data) */
GHashTable *hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
- long int tl0 = 0, tl1 = 0, tl2 = 0, tl3 = 0, tl4 = 0, tl5 = 0, tl6 = 0;
+ double tl0 = 0, tl1 = 0, tl2 = 0, tl3 = 0, tl4 = 0, tl5 = 0, tl6 = 0;
long int RX = 0, TX = 0;
double tl_total = 0;
/* iterating over list for data accumulation */
tl0 /= 1000; tl1 /= 1000; tl2 /= 1000; tl3 /= 1000; tl4 /= 1000; tl5 /= 1000; tl6 /= 1000;
tl_total = tl0 + tl1 + tl2 + tl3 + tl4 + tl5 + tl6;
/* Device Network power consumption Level - 1 at the Resource Level */
- long int P_power_dntw = 0, P_power_data = 0, P_power_conn = 0;
+ double P_power_dntw = 0, P_power_data = 0, P_power_conn = 0;
P_power_conn = ((sP_power_dn_tl0 * tl0) + (sP_power_dn_tl1 * tl1) + (sP_power_dn_tl2 * tl2)
+ (sP_power_dn_tl3 * tl3) + (sP_power_dn_tl4 * tl4) + (sP_power_dn_tl5 * tl5) + (sP_power_dn_tl6 * tl6));
P_power_data = ((sP_power_dn_tx) * TX) + ((sP_power_dn_rx) * RX);
P_power_dntw = P_power_conn + P_power_data;
- _DBG("Calculated Power for Device Network P_power_ntw(%ld), P_power_conn (%ld), P_power_data(%ld)", P_power_dntw, P_power_conn, P_power_data);
+ _DBG("Calculated Power for Device Network P_power_ntw(%lf), P_power_conn (%lf), P_power_data(%lf)", P_power_dntw, P_power_conn, P_power_data);
/* Device Network power consumption Level - 2 at the Application Level */
GHashTableIter iter;
gpointer key, value;
g_hash_table_iter_init(&iter, hash);
- long int P_power_app_dntw = 0, P_power_app_data = 0, P_power_app_conn = 0;
+ double P_power_app_dntw = 0, P_power_app_data = 0, P_power_app_conn = 0;
char *appid = NULL;
- long int apprx = 0, apptx = 0;
- double apptime = 0;
+ double apprx = 0, apptx = 0, apptime = 0;
long int ret_time = bm_get_log_time(data_collection_period);
- long int total_app_pw = 0, base_res_pw = 0;
+ double total_app_pw = 0, base_res_pw = 0;
- appid_usage_s app_usage;
+ appid_usage_s app_usage = {0};
while (g_hash_table_iter_next(&iter, &key, &value)) {
P_power_app_dntw = 0; P_power_app_data = 0 ; P_power_app_conn = 0;
app_usage.log_time = ret_time;
total_app_pw += P_power_app_dntw;
/* Call Insert Function */
- _DBG("Calculated Power for Appid (%s) P_power_app_dntw(%ld), P_power_app_conn (%ld), P_power_app_data(%ld)",
+ _DBG("Calculated Power for Appid (%s) P_power_app_dntw(%lf), P_power_app_conn (%lf), P_power_app_data(%lf)",
appid, P_power_app_dntw, P_power_app_conn, P_power_app_data);
if (mode) {
ret_val = bm_server_appid_insert_to_db(app_usage.AppId);
}
/* commit to database the output after power calculation */
- resourceid_usage_s res_usage;
+ resourceid_usage_s res_usage = {0};
res_usage.ResourceId = BM_RID_DNTW;
res_usage.log_time = ret_time;
long int ret_time = bm_get_log_time(data_collection_period);
long int total_app_pw = 0, base_res_pw = 0;
- appid_usage_s app_usage;
-
+ appid_usage_s app_usage = {0};
while (g_hash_table_iter_next(&iter, &key, &value)) {
P_power_app_gps = 0; P_power_app_conn = 0;
apptime = 0;
}
/* commit to database the output after power calculation */
- resourceid_usage_s res_usage;
+ resourceid_usage_s res_usage = {0};
res_usage.ResourceId = BM_RID_GPS;
res_usage.log_time = ret_time;