Enhance the Plugin data handle free operation 72/225372/4
authorDewal Agarwal <d1.agarwal@samsung.com>
Wed, 19 Feb 2020 08:53:10 +0000 (14:23 +0530)
committerDewal Agarwal <d1.agarwal@samsung.com>
Wed, 19 Feb 2020 10:30:09 +0000 (16:00 +0530)
- Correct the data handle free functions.
- Correct the order of module deinit.

Change-Id: I71d1456789520bb13f7b83e6c4a059dec4c0a433
Signed-off-by: Dewal Agarwal <d1.agarwal@samsung.com>
include/bm_common.h
include/bm_util.h
src/bm_callback_handler.c
src/bm_power_engine.c
src/bm_server.c
src/bm_util.c

index 20ea93f..06a28ad 100644 (file)
@@ -209,14 +209,14 @@ typedef enum {
        if (ptr != NULL) { \
                free(ptr); \
                ptr = NULL; \
-       } \
+       }
 
 /* setting free memory using glib-API */
 #define BM_GFREE(ptr) \
        if (ptr != NULL) { \
                g_free(ptr); \
                ptr = NULL; \
-       } \
+       }
 
 #ifdef __cplusplus
 }
index e930c3a..cc971c3 100644 (file)
@@ -65,23 +65,23 @@ void bm_set_free_atm_st2_list(GSList *atm_list);
 
 void bm_set_free_atm_st1_list(GSList *atm_list);
 
-void bm_set_free_ble_data_handle(bm_bluetooth_st *handle);
+void bm_set_free_ble_data_handle(bm_bluetooth_st **bt_handle);
 
-void bm_set_free_wifi_data_handle(bm_wifi_st *handle);
+void bm_set_free_wifi_data_handle(bm_wifi_st **wifi_handle);
 
-void bm_set_free_cpu_data_handle(bm_cpu_st *handle);
+void bm_set_free_cpu_data_handle(bm_cpu_st **cpu_handle);
 
-void bm_set_free_display_data_handle(bm_display_st *handle);
+void bm_set_free_display_data_handle(bm_display_st **display_handle);
 
-void bm_set_free_device_network_data_handle(bm_device_network_st *handle);
+void bm_set_free_device_network_data_handle(bm_device_network_st **dn_handle);
 
 #ifdef DISABLE_FEATURE_DATA_FROM_GPS_HRM_PLUGIN
-void bm_set_free_gps_sensor_data_handle(bm_gps_st *handle);
+void bm_set_free_gps_sensor_data_handle(bm_gps_st **gps_handle);
 
-void bm_set_free_hrm_sensor_data_handle(bm_hrm_sensor_st *handle);
+void bm_set_free_hrm_sensor_data_handle(bm_hrm_sensor_st **hrm_handle);
 #endif /* DISABLE_FEATURE_DATA_FROM_GPS_HRM_PLUGIN */
 
-void bm_set_free_data_handles(bm_feature_data_h data_h);
+void bm_set_free_data_handles(bm_feature_data_h* data_h);
 
 void bm_set_free_gslist_appid_map(GSList *list);
 #ifdef __cplusplus
index b58928c..61679a8 100644 (file)
@@ -45,7 +45,7 @@ void bm_receive_ble_feature_data(bm_plugin_error_e result, bm_data_h *handle)
        /* set flag for skipping next period request */
        bm_engine_set_req_flag_handle(BM_PLUGIN_ID_BLE, false);
 
-       bm_set_free_ble_data_handle(bt_data_h);
+       bm_set_free_ble_data_handle(&bt_data_h);
 
        EXIT;
        return;
@@ -76,7 +76,7 @@ void bm_receive_wifi_feature_data(bm_plugin_error_e result, bm_data_h *handle)
        /* set flag for skipping next period request */
        bm_engine_set_req_flag_handle(BM_PLUGIN_ID_WIFI, false);
 
-       bm_set_free_wifi_data_handle(wifi_data_h);
+       bm_set_free_wifi_data_handle(&wifi_data_h);
 
        EXIT;
        return;
@@ -107,7 +107,7 @@ void bm_receive_cpu_feature_data(bm_plugin_error_e result, bm_data_h *handle)
        /* set flag for skipping next period request */
        bm_engine_set_req_flag_handle(BM_PLUGIN_ID_CPU, false);
 
-       bm_set_free_cpu_data_handle(cpu_data_h);
+       bm_set_free_cpu_data_handle(&cpu_data_h);
 
        EXIT;
        return;
@@ -138,7 +138,7 @@ void bm_receive_display_feature_data(bm_plugin_error_e result, bm_data_h *handle
        /* set flag for skipping next period request */
        bm_engine_set_req_flag_handle(BM_PLUGIN_ID_DISPLAY, false);
 
-       bm_set_free_display_data_handle(display_data_h);
+       bm_set_free_display_data_handle(&display_data_h);
 
        EXIT;
        return;
@@ -169,7 +169,7 @@ void bm_receive_device_network_feature_data(bm_plugin_error_e result, bm_data_h
        /* set flag for skipping next period request */
        bm_engine_set_req_flag_handle(BM_PLUGIN_ID_DEVICE_NETWORK, false);
 
-       bm_set_free_device_network_data_handle(device_network_data_h);
+       bm_set_free_device_network_data_handle(&device_network_data_h);
 
        EXIT;
        return;
@@ -201,7 +201,7 @@ void bm_receive_gps_sensor_feature_data(bm_plugin_error_e result, bm_data_h *han
        /* set flag for skipping next period request */
        bm_engine_set_req_flag_handle(BM_PLUGIN_ID_GPS_SENSOR, false);
 
-       bm_set_free_gps_sensor_data_handle(gps_data_h);
+       bm_set_free_gps_sensor_data_handle(&gps_data_h);
 
        EXIT;
        return;
@@ -232,7 +232,7 @@ void bm_receive_hrm_sensor_feature_data(bm_plugin_error_e result, bm_data_h *han
        /* set flag for skipping next period request */
        bm_engine_set_req_flag_handle(BM_PLUGIN_ID_HRM_SENSOR, false);
 
-       bm_set_free_hrm_sensor_data_handle(hrm_sensor_data_h);
+       bm_set_free_hrm_sensor_data_handle(&hrm_sensor_data_h);
 
        EXIT;
        return;
index 1adb21c..5c1e07a 100644 (file)
@@ -35,6 +35,7 @@ bm_feature_data_h bm_data_handle = NULL;
 GHashTable *gl_hash = NULL;
 static struct bm_req_feature_data_handle_flag_s *bm_req_flag_h = NULL;
 int battery_capacity = 500;
+int gtimeo_id[2];
 
 int bm_engine_get_usage_by_app_id_for_resource_id(const gchar *app_id, gint resource_id, gint duration, int *b_usage)
 {
@@ -1534,7 +1535,7 @@ int bm_get_data_from_handles(void)
        int ret_val = BATTERY_MONITOR_ERROR_NONE;
        bool mode = false;
 
-       gl_hash = g_hash_table_new_full(g_str_hash, g_str_equal, bm_data_free, g_free);
+       gl_hash = g_hash_table_new_full(g_str_hash, g_str_equal, bm_data_free, bm_atm_st1_free);
        if (!gl_hash)
                _ERR("Global Hash creation failed");
 
@@ -1666,8 +1667,12 @@ int bm_get_data_from_handles(void)
        BM_CHECK_VAL((ret_val == BATTERY_MONITOR_ERROR_NONE), "battery session logging failure");
 
        /* set free all the data handles */
-       //bm_set_free_data_handles(bm_data_handle);
+       if (bm_data_handle != NULL) {
+               _DBG("Call Handle Free");
+               bm_set_free_data_handles(&bm_data_handle);
+       }
 
+       /* set free global hash values */
        if (gl_hash) {
                g_hash_table_destroy(gl_hash);
                gl_hash = NULL;
@@ -1693,15 +1698,6 @@ int bm_start_getting_feature_data(void)
                        _ERR("memory allocation failed - data handle");
                        return BATTERY_MONITOR_ERROR_OUT_OF_MEMORY;
                }
-
-               bm_req_flag_h = (struct bm_req_feature_data_handle_flag_s *)
-                                       calloc(1, sizeof(struct bm_req_feature_data_handle_flag_s));
-               if (!bm_req_flag_h) {
-                       _ERR("memory allocation failed - requet flag handle");
-                       return BATTERY_MONITOR_ERROR_OUT_OF_MEMORY;
-               }
-
-               bm_set_req_flag_handles(true);
        }
 
        /* request data from each plugin & store its handle */
@@ -1861,9 +1857,19 @@ int initialize_power_engine(void)
 
        int ret_val = BATTERY_MONITOR_ERROR_NONE;
 
-       g_timeout_add(BATTERY_MONITOR_GET_DATA_JOB_PERIOD, bm_request_feature_data, NULL);
+       bm_req_flag_h = (struct bm_req_feature_data_handle_flag_s *)
+                       calloc(1, sizeof(struct bm_req_feature_data_handle_flag_s));
+       if (!bm_req_flag_h) {
+               _ERR("memory allocation failed - requet flag handle");
+               return BATTERY_MONITOR_ERROR_OUT_OF_MEMORY;
+       }
 
-       g_timeout_add(BATTERY_MONITOR_DELETE_DB_JOB_PERIOD, bm_delete_data_from_db, NULL);
+       bm_set_req_flag_handles(true);
+
+       gtimeo_id[0] = 0; gtimeo_id[1] = 0;
+       gtimeo_id[0] = g_timeout_add(BATTERY_MONITOR_GET_DATA_JOB_PERIOD, bm_request_feature_data, NULL);
+       gtimeo_id[1] = g_timeout_add(BATTERY_MONITOR_DELETE_DB_JOB_PERIOD, bm_delete_data_from_db, NULL);
+       _DBG("timeout with id %d and %d added", gtimeo_id[0], gtimeo_id[1]);
 
        ret_val = bm_clean_db_table_for_job_id();
        if (ret_val != BATTERY_MONITOR_ERROR_NONE)
@@ -1881,10 +1887,16 @@ void deinitialize_power_engine(void)
 {
        ENTER;
 
+       /* remove timeouts*/
+       for (int i = 0; i < 2; i++) {
+               if (gtimeo_id[i] != 0)
+                       g_source_remove(gtimeo_id[i]);
+       }
+
        /* set all data-handle free */
        if (bm_data_handle != NULL) {
                _DBG("setting handle free - deinitializing");
-               bm_set_free_data_handles(bm_data_handle);
+               bm_set_free_data_handles(&bm_data_handle);
        }
 
        /* set flag handle free*/
index 74d171e..d192e69 100644 (file)
@@ -431,25 +431,22 @@ static void bm_server_deinitialize()
 {
        ENTER;
 
-       /* database de-initialization */
-       deinitialize_database();
-
-       /* cynara de-initialization */
-       deinitialize_cynara();
+       /* History-Listener deinitialization */
+       bd_deinitialize_listeners();
 
-       /* plugin-manager de-initialization */
-       deinitialize_plugin_manager();
+       /* battery-dump deinitialization */
+       bd_deinitialize_battery_dump();
 
        /* power-engine deinitialization */
        deinitialize_power_engine();
 
-       /* battery-dump deinitialization */
-       bd_deinitialize_battery_dump();
+       /* plugin-manager de-initialization */
+       deinitialize_plugin_manager();
 
-       /* History-Listener deinitialization */
+       /* database de-initialization */
+       deinitialize_database();
 
        _INFO("de-initialization success");
-       bd_deinitialize_listeners();
 
        EXIT;
        return;
index d83397d..c8340b3 100644 (file)
@@ -315,7 +315,7 @@ void bm_data_free(gpointer data)
 
        _DBG("delete - app_id(%s)", (char *)data);
 
-       BM_GFREE(data);
+       BM_FREE(data);
 
        EXIT;
        return;
@@ -330,9 +330,7 @@ void bm_atm_st1_free(gpointer data)
                return;
        }
 
-       app_time_map_st1 *node = (app_time_map_st1 *)data;
-
-       BM_FREE(node);
+       BM_FREE(data);
 
        EXIT;
        return;
@@ -347,9 +345,7 @@ void bm_atm_st2_free(gpointer data)
                return;
        }
 
-       app_time_map_st2 *node = (app_time_map_st2 *)data;
-
-       BM_FREE(node);
+       BM_FREE(data);
 
        EXIT;
        return;
@@ -452,16 +448,17 @@ void bm_set_free_atm_st1_list(GSList *atm_list)
        return;
 }
 
-
-void bm_set_free_ble_data_handle(bm_bluetooth_st *handle)
+void bm_set_free_ble_data_handle(bm_bluetooth_st **bt_handle)
 {
        ENTER;
 
-       if (!handle) {
+       if (!(*bt_handle)) {
                _ERR("data-handle not available");
                return;
        }
 
+       bm_bluetooth_st *handle = *bt_handle;
+
        GSList *atm_list = NULL, *data_list_iterator = NULL;
 
        _DBG("inside data_handle");
@@ -498,15 +495,17 @@ void bm_set_free_ble_data_handle(bm_bluetooth_st *handle)
        return;
 }
 
-void bm_set_free_wifi_data_handle(bm_wifi_st *handle)
+void bm_set_free_wifi_data_handle(bm_wifi_st **wifi_handle)
 {
        ENTER;
 
-       if (!handle) {
+       if (!(*wifi_handle)) {
                _ERR("data-handle not available");
                return;
        }
 
+       bm_wifi_st *handle = *wifi_handle;
+
        GSList *atm_list = NULL, *data_list_iterator = NULL;
 
        _DBG("inside data_handle");
@@ -544,15 +543,17 @@ void bm_set_free_wifi_data_handle(bm_wifi_st *handle)
 
 }
 
-void bm_set_free_cpu_data_handle(bm_cpu_st *handle)
+void bm_set_free_cpu_data_handle(bm_cpu_st **cpu_handle)
 {
        ENTER;
 
-       if (!handle) {
+       if (!(*cpu_handle)) {
                _ERR("data-handle not available");
                return;
        }
 
+       bm_cpu_st *handle = *cpu_handle;
+
        GSList *atm_list = NULL, *data_list_iterator = NULL;
 
        _DBG("inside data_handle");
@@ -589,16 +590,19 @@ void bm_set_free_cpu_data_handle(bm_cpu_st *handle)
        return;
 }
 
-void bm_set_free_display_data_handle(bm_display_st *handle)
+void bm_set_free_display_data_handle(bm_display_st **display_handle)
 {
        ENTER;
 
-       if (!handle) {
+       if (!(*display_handle)) {
                _ERR("data-handle not available");
                return;
        }
 
-       GSList *atm_list = NULL, *data_list_iterator = NULL;
+       bm_display_st *handle = *display_handle;
+
+       GSList *atm_list = NULL;
+       GSList *data_list_iterator = NULL;
 
        _DBG("inside data_handle");
 
@@ -634,15 +638,17 @@ void bm_set_free_display_data_handle(bm_display_st *handle)
        return;
 }
 
-void bm_set_free_device_network_data_handle(bm_device_network_st *handle)
+void bm_set_free_device_network_data_handle(bm_device_network_st **dn_handle)
 {
        ENTER;
 
-       if (!handle) {
+       if (!(*dn_handle)) {
                _ERR("data-handle not available");
                return;
        }
 
+       bm_device_network_st *handle = *dn_handle;
+
        GSList *atm_list = NULL, *data_list_iterator = NULL;
 
        _DBG("inside data_handle");
@@ -680,15 +686,17 @@ void bm_set_free_device_network_data_handle(bm_device_network_st *handle)
 }
 
 #ifdef DISABLE_FEATURE_DATA_FROM_GPS_HRM_PLUGIN
-void bm_set_free_gps_sensor_data_handle(bm_gps_st *handle)
+void bm_set_free_gps_sensor_data_handle(bm_gps_st **gps_handle)
 {
        ENTER;
 
-       if (!handle) {
+       if (!(*gps_handle)) {
                _ERR("data-handle not available");
                return;
        }
 
+       bm_gps_st *handle = *gps_handle;
+
        GSList *atm_list = NULL, *data_list_iterator = NULL;
 
        _DBG("inside data_handle");
@@ -725,15 +733,17 @@ void bm_set_free_gps_sensor_data_handle(bm_gps_st *handle)
        return;
 }
 
-void bm_set_free_hrm_sensor_data_handle(bm_hrm_sensor_st *handle)
+void bm_set_free_hrm_sensor_data_handle(bm_hrm_sensor_st **hrm_handle)
 {
        ENTER;
 
-       if (!handle) {
+       if (!(*hrm_handle)) {
                _ERR("data-handle not available");
                return;
        }
 
+       bm_hrm_sensor_st *handle = *hrm_handle;
+
        GSList *atm_list = NULL, *data_list_iterator = NULL;
 
        _DBG("inside data_handle");
@@ -771,26 +781,21 @@ void bm_set_free_hrm_sensor_data_handle(bm_hrm_sensor_st *handle)
 }
 #endif /* DISABLE_FEATURE_DATA_FROM_GPS_HRM_PLUGIN */
 
-void bm_set_free_data_handles(bm_feature_data_h data_h)
+void bm_set_free_data_handles(bm_feature_data_h* data_hdl)
 {
        ENTER;
 
-       if (!data_h) {
-               _ERR("data handles not available");
-               return;
-       }
-
-       bm_set_free_ble_data_handle(data_h->bm_ble_handle);
-       bm_set_free_wifi_data_handle(data_h->bm_wifi_handle);
-       bm_set_free_cpu_data_handle(data_h->bm_cpu_handle);
-       bm_set_free_display_data_handle(data_h->bm_display_handle);
-       bm_set_free_device_network_data_handle(data_h->bm_dn_handle);
+       bm_set_free_ble_data_handle(&((*data_hdl)->bm_ble_handle));
+       bm_set_free_wifi_data_handle(&((*data_hdl)->bm_wifi_handle));
+       bm_set_free_cpu_data_handle(&((*data_hdl)->bm_cpu_handle));
+       bm_set_free_display_data_handle(&((*data_hdl)->bm_display_handle));
+       bm_set_free_device_network_data_handle(&((*data_hdl)->bm_dn_handle));
 #ifdef DISABLE_FEATURE_DATA_FROM_GPS_HRM_PLUGIN
-       bm_set_free_gps_sensor_data_handle(data_h->bm_gps_handle);
-       bm_set_free_hrm_sensor_data_handle(data_h->bm_hrm_handle);
+       bm_set_free_gps_sensor_data_handle(&((*data_hdl)->bm_gps_handle));
+       bm_set_free_hrm_sensor_data_handle(&((*data_hdl)->bm_hrm_handle));
 #endif /* DISABLE_FEATURE_DATA_FROM_GPS_HRM_PLUGIN */
 
-       BM_FREE(data_h);
+       BM_FREE(*data_hdl);
 
        EXIT;
        return;