Merge "Change Dump formats" into tizen
authorAbhishek Vijay <abhishek.v@samsung.com>
Thu, 29 Oct 2020 07:59:35 +0000 (07:59 +0000)
committerGerrit Code Review <gerrit@review>
Thu, 29 Oct 2020 07:59:35 +0000 (07:59 +0000)
include/bm_listeners.h
src/battery_dump/bm_listeners.c

index 95d4e21..25ecf64 100644 (file)
 #include <device/callback.h>
 #include <device/battery.h>
 #include <device/display.h>
+#include <pthread.h>
+
+#include "bm_dbg.h"
 #include "bm_plugin_interface.h"
 #include "bd_private.h"
-#include <pthread.h>
 
 #define BATTERY_INFO_DELAY 1
 #define MAX_BUFF 1
 #define LISTEN_APP_STATUS 14
 #define LISTEN_MODEM_POWER_STATE 15
 
-
+/* validating input param & return error */
+#define BD_CHECK_FOR_VALIDITY(eval, expr, ret_val)\
+               if (!(eval)) {\
+                       _ERR("invalid object");\
+                       expr;\
+                       return ret_val;\
+               } else {}
+
+/* validating expression & return */
+#define BD_CHECK_VALIDITY_RETURN(eval, expr)\
+               if (!(eval)) {\
+                       _ERR("invalid object");\
+                       expr;\
+                       return;\
+               } else {}
 
 int bd_initialize_listeners(void);
 
index 160b36b..5f4632d 100644 (file)
@@ -55,6 +55,36 @@ static int buff_count = 0;
 GHashTable *app_list = NULL;
 static GHashTable *pid_map = NULL;
 
+static void bd_set_free_data_object(void)
+{
+       BD_CHECK_VALIDITY_RETURN((data_obj != NULL), {});
+
+       history_item_s* obj = data_obj;
+
+       /* event tag string */
+       if (obj->event_tag != NULL) {
+               if (obj->event_tag->string_info != NULL)
+                       g_string_free(obj->event_tag->string_info, TRUE);
+               free(obj->event_tag);
+               obj->event_tag = NULL;
+       }
+       /* wakelock tag string */
+       if (obj->wakelock_tag != NULL) {
+               if (obj->wakelock_tag->string_info != NULL)
+                       g_string_free(obj->wakelock_tag->string_info, TRUE);
+               free(obj->wakelock_tag);
+               obj->wakelock_tag = NULL;
+       }
+       /* wakereason tag string */
+       if (obj->wakereason_tag != NULL) {
+               if (obj->wakereason_tag->string_info != NULL)
+                       g_string_free(obj->wakereason_tag->string_info, TRUE);
+               free(obj->wakereason_tag);
+               obj->wakereason_tag = NULL;
+       }
+       return;
+}
+
 static void bd_get_app_id_from_table(gint pid, char **app_id)
 {
        if (pid_map == NULL) {
@@ -126,13 +156,12 @@ static int bd_listener_set_appId_info(char *app_id)
 
        data_obj->event_tag->uid = 1000;
 
-       data_obj->event_tag->string_info = g_string_sized_new(7);
-       if (!data_obj->event_tag->string_info) {
-               _ERR("memory allocation  failed ");
-               return 1;
-       }
+       data_obj->event_tag->string_info = g_string_new(app_id);
 
-       g_string_append_printf(data_obj->event_tag->string_info, "%s", app_id);
+       BD_CHECK_FOR_VALIDITY((data_obj->event_tag->string_info != NULL), {},
+                                               BATTERY_MONITOR_ERROR_OUT_OF_MEMORY);
+
+       _DBG("set string_info - [%s]", data_obj->event_tag->string_info->str);
 
        EXIT;
        return 0;
@@ -641,19 +670,20 @@ static void bd_listener_set_sleep_wakeup_change_data(int val)
                data_obj->event_code = ET_NONE;
                data_obj->event_tag = NULL;
                data_obj->wakereason_tag = NULL;
+
                data_obj->wakereason_tag = (history_tag_s *)calloc(1, sizeof(history_tag_s));
                if (data_obj->wakereason_tag) {
                        wakeup_hsp = ++listener_hsp;
                        _DBG("Wakereason Tag creation succeeded \n");
                        data_obj->wakereason_tag->sp_idx = wakeup_hsp;
                        data_obj->wakereason_tag->uid = 1000;
-                       data_obj->wakereason_tag->string_info = g_string_sized_new(10);
-                       if (data_obj->wakereason_tag->string_info == NULL) {
-                               _ERR("data_obj->wakereason_tag->string_info creation failed");
-                               BM_FREE(data_obj->wakereason_tag);
-                               return;
-                       }
-                       g_string_append_printf(data_obj->wakereason_tag->string_info, "%s", "Tizen");
+
+                       data_obj->wakereason_tag->string_info = g_string_new("Tizen");
+                       BD_CHECK_VALIDITY_RETURN((data_obj->wakereason_tag->string_info != NULL),
+                                                                       BM_FREE(data_obj->wakereason_tag));
+
+                       _DBG("wakelock reason tag, string_info - [%s]",
+                                                       data_obj->wakereason_tag->string_info->str);
                } else {
                        _ERR(" data_obj->wakereason_tag object creation fails ");
                        return;
@@ -663,18 +693,19 @@ static void bd_listener_set_sleep_wakeup_change_data(int val)
                data_obj->event_code = ET_NONE;
                data_obj->event_tag = NULL;
                data_obj->wakereason_tag = NULL;
+
                data_obj->wakereason_tag = (history_tag_s *)calloc(1, sizeof(history_tag_s));
                if (data_obj->wakereason_tag) {
                        _DBG("Wakereason Tag creation succeeded \n");
                        data_obj->wakereason_tag->sp_idx = wakeup_hsp;
                        data_obj->wakereason_tag->uid = 1000;
-                       data_obj->wakereason_tag->string_info = g_string_sized_new(10);
-                       if (data_obj->wakereason_tag->string_info == NULL) {
-                               _ERR("data_obj->wakereason_tag->string_info creation failed");
-                               BM_FREE(data_obj->wakereason_tag);
-                               return;
-                       }
-                       g_string_append_printf(data_obj->wakereason_tag->string_info, "%s", "Tizen");
+
+                       data_obj->wakereason_tag->string_info = g_string_new("Tizen");
+                       BD_CHECK_VALIDITY_RETURN((data_obj->wakereason_tag->string_info != NULL),
+                                                                       BM_FREE(data_obj->wakereason_tag));
+
+                       _DBG("wakelock reason tag, string_info - [%s]",
+                                                       data_obj->wakereason_tag->string_info->str);
                } else {
                        _ERR(" data_obj->wakereason_tag object creation fails ");
                        return;
@@ -731,49 +762,58 @@ static void bd_listener_set_location_change_data(int gps)
        return;
 }
 
-static int bd_listener_set_power_lock_unlock_change_data(int lock)
+static int bd_listener_set_power_lock_unlock_change_data(int lock, char *app_id)
 {
        ENTER;
 
-       _INFO("lock change = %d", lock);
+       BD_CHECK_FOR_VALIDITY((app_id != NULL), {}, BATTERY_MONITOR_ERROR_INVALID_PARAMETER);
+       BD_CHECK_FOR_VALIDITY((data_obj != NULL), BM_FREE(app_id), BATTERY_MONITOR_ERROR_NULL_POINTER);
+
+       _INFO("lock change - %d, app - %s", lock, app_id);
 
        static int prev_wakeup = 0;
+       static int lock_hsp = 0;
 
-       if (prev_wakeup == lock)
+       if (prev_wakeup == lock) {
+               _DBG("prev & current wakeups are same");
+               BM_FREE(app_id);
                return 1;
-       else
+       } else {
                prev_wakeup = lock;
+       }
 
+       if (lock) {
+               data_obj->event_code = ET_NONE;
+               data_obj->event_tag = NULL;
+               data_obj->wakelock_tag = NULL;
 
-       static int lock_hsp = 0;
+               data_obj->wakelock_tag = (history_tag_s *)calloc(1, sizeof(history_tag_s));
+               if (data_obj->wakelock_tag) {
 
-       if (data_obj) {
-               if (lock) {
-                       data_obj->event_code = ET_NONE;
-                       data_obj->wakelock_tag = NULL;
-                       data_obj->event_tag = NULL;
-                       data_obj->wakelock_tag = (history_tag_s *)calloc(1, sizeof(history_tag_s));
-                       if (data_obj->wakelock_tag) {
-                               lock_hsp = ++listener_hsp;
-                               _DBG("wakelock Tag creation succeeded \n");
-                               data_obj->wakelock_tag->sp_idx = lock_hsp;
-                               data_obj->wakelock_tag->uid = 1000;
-                               data_obj->wakelock_tag->string_info = g_string_sized_new(10);
-                               BM_CHECK_MEM_ALLOC(data_obj->wakelock_tag->string_info, {BM_FREE(data_obj->wakelock_tag); });
-                               g_string_append_printf(data_obj->wakelock_tag->string_info, "%s", "Tizen");
-                               //WRITE THE WL TAG
-                       } else {
-                               _ERR(" data_obj->wakelock_tag object creation fails ");
-                               return 1;
-                       }
-                       data_obj->state_1 |= ST1_WAKE_LOCK_FLAG;
+                       lock_hsp = ++listener_hsp;
+                       data_obj->wakelock_tag->sp_idx = lock_hsp;
+                       data_obj->wakelock_tag->uid = 1000;
+
+                       data_obj->wakelock_tag->string_info = g_string_new(app_id);
+                       BD_CHECK_FOR_VALIDITY((data_obj->wakelock_tag->string_info != NULL), {},
+                                                               BATTERY_MONITOR_ERROR_OUT_OF_MEMORY);
+
+                       _DBG("wakelock tag created, string_info - [%s]",
+                                               data_obj->wakelock_tag->string_info->str);
+
+                       BM_FREE(app_id);
                } else {
-                       data_obj->event_code = ET_NONE;
-                       data_obj->wakelock_tag = NULL;
-                       data_obj->event_tag = NULL;
-                       //WAKE LOCK TAG INFORMATION NOT REQ. AT UNSET.
-                       data_obj->state_1 &= ~(ST1_WAKE_LOCK_FLAG);
+                       _ERR(" object creation failure ");
+                       BM_FREE(app_id);
+                       return 1;
                }
+               data_obj->state_1 |= ST1_WAKE_LOCK_FLAG;
+       } else {
+               data_obj->event_code = ET_NONE;
+               data_obj->wakelock_tag = NULL;
+               data_obj->event_tag = NULL;
+               //WAKE LOCK TAG INFORMATION NOT REQ. AT UNSET.
+               data_obj->state_1 &= ~(ST1_WAKE_LOCK_FLAG);
        }
 
        EXIT;
@@ -1009,7 +1049,7 @@ static void bd_listener_create_event_data(int type, int val, char *app)
                bd_listener_set_signal_strength_change_data(val);
                break;
        case LISTEN_POWERLOCKUNLOCK_STATE:
-               if (bd_listener_set_power_lock_unlock_change_data(val) == BATTERY_MONITOR_ERROR_NONE)
+               if (bd_listener_set_power_lock_unlock_change_data(val, app) == BATTERY_MONITOR_ERROR_NONE)
                        break;
                else
                        return;
@@ -1057,13 +1097,9 @@ static void bd_listener_create_event_data(int type, int val, char *app)
 
        if (data_obj->event_tag && type != LISTEN_APP_STATUS) {
                data_obj->event_tag->uid = 1000;
-               data_obj->event_tag->string_info = g_string_sized_new(7);
-               if (!data_obj->event_tag->string_info) {
-                       _ERR("memory allocation  failed ");
-                       return;
-               }
 
-               g_string_append_printf(data_obj->event_tag->string_info, "%s", "Tizen");
+               data_obj->event_tag->string_info = g_string_new("Tizen");
+               BD_CHECK_VALIDITY_RETURN((data_obj->event_tag->string_info != NULL), {});
        }
 
        if (data_obj->event_tag) {
@@ -1082,6 +1118,7 @@ static void bd_listener_create_event_data(int type, int val, char *app)
 
        if (bd_store_history_item(data_obj) != BATTERY_MONITOR_ERROR_NONE) {
                _ERR("Failed to store history items ");
+               bd_set_free_data_object();
                return;
        }
 
@@ -2419,20 +2456,7 @@ int bd_deinitialize_listeners()
                pid_map = NULL;
        }
 
-       if (data_obj != NULL && data_obj->event_tag != NULL) {
-               BM_FREE(data_obj->event_tag->string_info);
-               BM_FREE(data_obj->event_tag);
-       }
-
-       if (data_obj != NULL && data_obj->wakelock_tag != NULL) {
-               BM_FREE(data_obj->wakelock_tag->string_info);
-               BM_FREE(data_obj->wakelock_tag);
-       }
-
-       if (data_obj != NULL && data_obj->wakereason_tag != NULL) {
-               BM_FREE(data_obj->wakereason_tag->string_info);
-               BM_FREE(data_obj->wakereason_tag);
-       }
+       bd_set_free_data_object();
 
        BM_FREE(data_obj);