summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--packaging/session-utils.spec17
-rw-r--r--src/battery-monitor/CMakeLists.txt20
-rw-r--r--src/battery-monitor/battery-monitor.c59
4 files changed, 98 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e9772dd..15e7388 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,3 +13,5 @@ ADD_SUBDIRECTORY(src/kernel-module-load)
ADD_SUBDIRECTORY(src/udev-monitor)
ADD_SUBDIRECTORY(src/udev-enumerate)
ADD_SUBDIRECTORY(src/sensor)
+ADD_SUBDIRECTORY(src/battery-monitor)
+
diff --git a/packaging/session-utils.spec b/packaging/session-utils.spec
index 4d6f536..fc1941c 100644
--- a/packaging/session-utils.spec
+++ b/packaging/session-utils.spec
@@ -27,6 +27,9 @@ BuildRequires: arm-rpi4-linux-kernel-devel
# sensor
BuildRequires: pkgconfig(capi-system-sensor)
+# sensor
+BuildRequires: pkgconfig(capi-system-battery-monitor)
+
%description
This package provides some utils for session control in multi-user environment.
@@ -144,6 +147,14 @@ This package provides sensor
###############################################################################
+%package -n battery-monitor
+Summary: battery-monitor
+
+%description -n battery-monitor
+This package provides battery-monitor on TW3
+
+
+###############################################################################
%prep
%setup -q
@@ -282,3 +293,9 @@ cd ..
%license LICENSE.Apache-2.0
%manifest %{name}.manifest
%{_bindir}/sensor
+
+###############################################################################
+%files -n battery-monitor
+%license LICENSE.Apache-2.0
+%manifest %{name}.manifest
+%{_bindir}/battery-monitor
diff --git a/src/battery-monitor/CMakeLists.txt b/src/battery-monitor/CMakeLists.txt
new file mode 100644
index 0000000..2a17e61
--- /dev/null
+++ b/src/battery-monitor/CMakeLists.txt
@@ -0,0 +1,20 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(battery-monitor C)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+ capi-system-battery-monitor
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE")
+
+ADD_EXECUTABLE(battery-monitor battery-monitor.c)
+TARGET_LINK_LIBRARIES(battery-monitor ${pkgs_LDFLAGS} -pie)
+
+INSTALL(TARGETS battery-monitor DESTINATION bin
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
+ GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
diff --git a/src/battery-monitor/battery-monitor.c b/src/battery-monitor/battery-monitor.c
new file mode 100644
index 0000000..5ee53fa
--- /dev/null
+++ b/src/battery-monitor/battery-monitor.c
@@ -0,0 +1,59 @@
+#include <stdio.h>
+#include <time.h>
+#include <battery_monitor.h>
+
+int err_enum[9] = {BATTERY_MONITOR_ERROR_OUT_OF_MEMORY, BATTERY_MONITOR_ERROR_INVALID_PARAMETER, BATTERY_MONITOR_ERROR_NO_DATA,
+ BATTERY_MONITOR_ERROR_PERMISSION_DENIED, BATTERY_MONITOR_ERROR_NOT_SUPPORTED, BATTERY_MONITOR_ERROR_RECORD_NOT_FOUND,
+ BATTERY_MONITOR_ERROR_DB_FAILED, BATTERY_MONITOR_ERROR_DB_NOT_OPENED, BATTERY_MONITOR_ERROR_INTERNAL};
+char *err_name[9] = {"BATTERY_MONITOR_ERROR_OUT_OF_MEMORY", "BATTERY_MONITOR_ERROR_INVALID_PARAMETER", "BATTERY_MONITOR_ERROR_NO_DATA",
+ "BATTERY_MONITOR_ERROR_PERMISSION_DENIED", "BATTERY_MONITOR_ERROR_NOT_SUPPORTED", "BATTERY_MONITOR_ERROR_RECORD_NOT_FOUND",
+ "BATTERY_MONITOR_ERROR_DB_FAILED", "BATTERY_MONITOR_ERROR_DB_NOT_OPENED", "BATTERY_MONITOR_ERROR_INTERNAL"};
+
+int resource_enum[6] = {BATTERY_MONITOR_RESOURCE_ID_BLE, BATTERY_MONITOR_RESOURCE_ID_WIFI, BATTERY_MONITOR_RESOURCE_ID_CPU,
+ BATTERY_MONITOR_RESOURCE_ID_DISPLAY, BATTERY_MONITOR_RESOURCE_ID_DEVICE_NETWORK, BATTERY_MONITOR_RESOURCE_ID_GPS_SENSOR};
+char *resource_name[6] = {"bluetooth", "WIFI", "CPU", "DISPLAY", "Device Network", "GPU Sensor"};
+char *app_id = "org.tizen.multi-assistant-service";
+
+int main()
+{
+ battery_usage_data_h data_h;
+ double result;
+ int ret;
+
+ time_t now = time(NULL) - 10;
+ time_t from = now - 60 * 60 * 24 * 7; // a week
+
+ printf("total : %lfmah\n", result);
+ printf("-------------------------------------------------------------\n");
+
+ printf("All apps power usage : \n");
+ for (int i = 0; i < 6; ++i){
+ battery_monitor_get_power_usage_by_resource(resource_enum[i], from, now, &result);
+ printf("%s : %lfmah\n", resource_name[i], result);
+ }
+
+ printf("-------------------------------------------------------------\n");
+ printf("app : %s\n", app_id);
+
+ ret = battery_monitor_get_power_usage_by_app_for_all_resources(app_id, from, now, &data_h);
+ if (ret < 0){
+ char *str;
+ for(int i = 0; i < 9; ++i){
+ if (ret == err_enum[i]){
+ str = err_name[i];
+ break;
+ }
+ }
+ printf("error : %s\n", str);
+ return ret;
+ }
+
+ for (int i = 0; i < 6; ++i){
+ battery_monitor_usage_data_get_power_usage_per_resource(data_h, resource_enum[i], &result);
+ printf("%s : %lfmah\n", resource_name[i], result);
+ }
+
+ battery_monitor_get_power_usage_by_app(app_id, from, now, &result);
+
+ return 0;
+}