Improve calculated values 51/236951/4
authorDewal Agarwal <d1.agarwal@samsung.com>
Tue, 23 Jun 2020 11:34:46 +0000 (17:04 +0530)
committerDewal Agarwal <d1.agarwal@samsung.com>
Fri, 26 Jun 2020 06:12:23 +0000 (11:42 +0530)
Change-Id: I9037e6ec78863e0225b5dc9eb9fc302dffb0ea6d
Signed-off-by: Dewal Agarwal <d1.agarwal@samsung.com>
src/battery_dump/bm_listeners.c
src/bm_power_engine.c

index 2e98c25..a4f8af3 100644 (file)
@@ -53,7 +53,6 @@ static int display_hsp = 0;
 static int gps_hsp = 0;
 static int lock_hsp = 0;
 static int app_hsp = 0;
-//static int charging_hsp = 0;
 static int wakeup_hsp = 0;
 static int modem_hsp = 0;
 static int modem_flag = 0;
@@ -523,8 +522,6 @@ static void fill_device_display_change(int value)
                data_obj->state_1 &= ~(ST1_SCREEN_DOZE_FLAG);
                display_on = false;
                break;
-       default:
-               break;
        }
 
        EXIT;
@@ -1540,7 +1537,6 @@ static void _bm_notify_modem_power(TapiHandle *handle, const char *noti_id, void
        return;
 }
 
-
 static void create_lock_event(char *lock_type)
 {
        int val;
@@ -1602,7 +1598,6 @@ static void __powerlock_signal_callback(GDBusConnection *conn,
        return;
 }
 
-
 static void __powerunlock_signal_callback(GDBusConnection *conn,
                const gchar *sender,
                const gchar *path,
@@ -1961,7 +1956,6 @@ static int bm_powerlock_unlock_subscribe_listener(void)
        return BATTERY_MONITOR_ERROR_NONE;
 }
 
-
 static int bm_sleep_wakeup_subscribe_listener(void)
 {
        ENTER;
index 2ab2b1c..31ec6eb 100644 (file)
@@ -397,7 +397,10 @@ static int bm_insert_appid_session_usage_to_db()
        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;
@@ -414,15 +417,12 @@ int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool mode)
        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);
@@ -480,30 +480,32 @@ int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool mode)
        _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;
@@ -513,20 +515,20 @@ int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool mode)
                        }
                }
        } 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);
@@ -534,21 +536,17 @@ int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool mode)
                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);
@@ -562,7 +560,7 @@ int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool 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_BLE;
        res_usage.log_time = ret_time;
@@ -580,7 +578,7 @@ int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool mode)
        }
 
        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;
 
@@ -591,8 +589,8 @@ int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool mode)
        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 ");
@@ -601,7 +599,7 @@ int bm_ble_calc_power_and_commit(bm_bluetooth_st *handle, bool mode)
        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);
@@ -635,10 +633,10 @@ int bm_wifi_calc_power_and_commit(bm_wifi_st *handle, bool mode)
        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);
@@ -698,39 +696,37 @@ int bm_wifi_calc_power_and_commit(bm_wifi_st *handle, bool mode)
        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;
@@ -752,7 +748,7 @@ int bm_wifi_calc_power_and_commit(bm_wifi_st *handle, bool mode)
                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) {
@@ -767,7 +763,7 @@ int bm_wifi_calc_power_and_commit(bm_wifi_st *handle, bool 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;
@@ -809,7 +805,7 @@ int bm_wifi_calc_power_and_commit(bm_wifi_st *handle, bool mode)
        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);
@@ -842,7 +838,7 @@ int bm_cpu_calc_power_and_commit(bm_cpu_st *handle, bool mode)
        /* 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) {
@@ -881,25 +877,26 @@ int bm_cpu_calc_power_and_commit(bm_cpu_st *handle, bool mode)
 
        _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;
@@ -917,7 +914,7 @@ int bm_cpu_calc_power_and_commit(bm_cpu_st *handle, bool mode)
                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);
@@ -931,7 +928,7 @@ int bm_cpu_calc_power_and_commit(bm_cpu_st *handle, bool mode)
                        _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;
@@ -977,9 +974,8 @@ int bm_display_calc_power_and_commit(bm_display_st *handle, bool mode)
        /* 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);
@@ -1023,22 +1019,22 @@ int bm_display_calc_power_and_commit(bm_display_st *handle, bool mode)
        _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;
@@ -1056,7 +1052,7 @@ int bm_display_calc_power_and_commit(bm_display_st *handle, bool mode)
                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)
@@ -1070,7 +1066,7 @@ int bm_display_calc_power_and_commit(bm_display_st *handle, bool 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_DISP;
        res_usage.log_time = ret_time;
@@ -1118,7 +1114,7 @@ int bm_device_network_calc_power_and_commit(bm_device_network_st *handle, bool m
        /* 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 */
@@ -1176,26 +1172,25 @@ int bm_device_network_calc_power_and_commit(bm_device_network_st *handle, bool m
        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;
@@ -1214,7 +1209,7 @@ int bm_device_network_calc_power_and_commit(bm_device_network_st *handle, bool m
                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);
@@ -1228,7 +1223,7 @@ int bm_device_network_calc_power_and_commit(bm_device_network_st *handle, bool m
        }
 
        /* 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;
@@ -1336,8 +1331,7 @@ int bm_gps_calc_power_and_commit(bm_gps_st *handle)
        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;
@@ -1360,7 +1354,7 @@ int bm_gps_calc_power_and_commit(bm_gps_st *handle)
        }
 
        /* 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;