summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhishek Vijay <abhishek.v@samsung.com>2020-09-28 18:03:21 +0530
committerAbhishek Vijay <abhishek.v@samsung.com>2020-10-09 15:56:59 +0530
commit0b9391a7bdd41b4b4323e44a10f46b83366065b0 (patch)
tree38e568f09b8043a20d16fa3af594f2c4997ae7d0
parente784c0e27004e6d04a289db46d4583857c75bcd1 (diff)
downloadbatterymonitor-0b9391a7bdd41b4b4323e44a10f46b83366065b0.tar.gz
batterymonitor-0b9391a7bdd41b4b4323e44a10f46b83366065b0.tar.bz2
batterymonitor-0b9391a7bdd41b4b4323e44a10f46b83366065b0.zip
[Non-ACR] improve app-id string handling
Change-Id: I904cdee0c31c00b938464e20ff596eb9a1055c9e Signed-off-by: Abhishek Vijay <abhishek.v@samsung.com>
-rw-r--r--include/bm_listeners.h20
-rw-r--r--src/battery_dump/bm_listeners.c166
2 files changed, 113 insertions, 73 deletions
diff --git a/include/bm_listeners.h b/include/bm_listeners.h
index 95d4e21..25ecf64 100644
--- a/include/bm_listeners.h
+++ b/include/bm_listeners.h
@@ -23,9 +23,11 @@
#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
@@ -46,7 +48,21 @@
#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);
diff --git a/src/battery_dump/bm_listeners.c b/src/battery_dump/bm_listeners.c
index 160b36b..5f4632d 100644
--- a/src/battery_dump/bm_listeners.c
+++ b/src/battery_dump/bm_listeners.c
@@ -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);