Add dumpsys callback 71/220971/3
authorKichan Kwon <k_c.kwon@samsung.com>
Thu, 26 Dec 2019 03:47:37 +0000 (12:47 +0900)
committerKichan Kwon <k_c.kwon@samsung.com>
Mon, 20 Jan 2020 10:10:33 +0000 (19:10 +0900)
Change-Id: I2250a41b2e5658846ce31355ead449f038b22347
Signed-off-by: Kichan Kwon <k_c.kwon@samsung.com>
CMakeLists.txt
packaging/batterymonitor.spec
src/battery_dump/bd_history_item.c

index 813ca80..e82bae7 100644 (file)
@@ -18,6 +18,7 @@ pkg_check_modules(pkgs REQUIRED
        json-c
        capi-appfw-job-scheduler
        capi-system-device
+       dumpsys-system
 )
 
 ADD_CUSTOM_COMMAND(
index b01fab6..af8f0b7 100644 (file)
@@ -25,6 +25,7 @@ BuildRequires:  pkgconfig(libtzplatform-config)
 BuildRequires:  pkgconfig(json-c)
 BuildRequires:  pkgconfig(capi-appfw-job-scheduler)
 BuildRequires:  pkgconfig(capi-system-device)
+BuildRequires:  pkgconfig(dumpsys-system)
 
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
index 587fc3c..7e68503 100644 (file)
  *
  */
 
+#include <dumpsys-system.h>
+#include <string.h>
 #include <stdlib.h>
 #include <time.h>
 #include <glib/gprintf.h>
 #include <stdio.h>
+#include <unistd.h>
 //#include <vconf.h>
 #include "bd_history_item.h"
 #include "bm_util.h"
@@ -1180,10 +1183,55 @@ static int bd_make_string_maps()
 }
 */
 
+static int *dumpsys_handler;
+
+int bd_callback(const int fd, const int argc, char **argv)
+{
+       int ret;
+       int opt;
+       bool checkin = false;
+
+       while ((opt = getopt(argc, argv, "c")) != -1) {
+               switch (opt) {
+               case 'c':
+                       checkin = true;
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       // TODO : use checkin
+       _INFO("Checkin state : %d", checkin);
+
+       if (!dump_sys || !dump_sys->str || dump_sys->len == 0) {
+               _INFO("Nothing to dump");
+               return 0;
+       }
+
+       ret = write(fd, dump_sys->str, dump_sys->len);
+       if (ret == -1)
+               _ERR("write failed (%d)", ret);
+       else if (ret < dump_sys->len)
+               _WARN("Write less(%d) than string size(%d)", ret, dump_sys->len);
+
+       g_string_free(dump_sys, TRUE);
+
+       return ret;
+}
+
 int bd_initialize_battery_dump()
 {
        ENTER;
 
+       int ret = BATTERY_MONITOR_ERROR_NONE;
+
+       ret = dumpsys_system_register_dump_cb(bd_callback, "batterystats", (void **)&dumpsys_handler);
+       if (ret != TIZEN_ERROR_NONE) {
+               _ERR("dumpsys_system_register_dump_cb failed (%x)", ret);
+               return BATTERY_MONITOR_ERROR_NOT_INITIALIZED;
+       }
+
        h_count = 0; h_flag = true;
        app_map = NULL; dump_sys = NULL;
        _INFO("Battery Dump Init Successful");
@@ -1200,6 +1248,14 @@ int bd_deinitialize_battery_dump()
 {
        ENTER;
 
+       int ret;
+
+       ret = dumpsys_system_unregister_dump_cb(dumpsys_handler);
+       if (ret != TIZEN_ERROR_NONE) {
+               _WARN("dumpsys_system_unregister_dump_cb failed (%x)", ret);
+               return BATTERY_MONITOR_ERROR_NOT_INITIALIZED;
+       }
+
        _INFO("Battery Dump De-Init Successful");
 
        EXIT;