From: Manish Toshan Rathod/Tizen Platform /SRI-Bangalore/Staff Engineer/Samsung Electronics Date: Wed, 16 Sep 2020 09:08:04 +0000 (+0530) Subject: Adding CPU power lock/release X-Git-Tag: submit/tizen/20200917.055747^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=debad38c6e6979cb25d035a4c6830d999d93a802;p=sdk%2Ftarget%2Fsdbd.git Adding CPU power lock/release Change-Id: If860a5b8298309af75b7fabd83cfed0fc8597f17 Signed-off-by: Manish Toshan Rathod/Tizen Platform /SRI-Bangalore/Staff Engineer/Samsung Electronics --- diff --git a/CMakeLists.txt b/CMakeLists.txt index bac4df9..915d312 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,6 +105,7 @@ include(FindPkgConfig) pkg_check_modules(pkgs REQUIRED libtzplatform-config capi-system-info + capi-system-device vconf glib-2.0 gio-2.0 diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index a9ad652..953e052 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -31,6 +31,8 @@ BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(capi-system-device) + Requires: dbus Provides: %{name}-profile_common = %{version}-%{release} Provides: %{name}-profile_mobile = %{version}-%{release} diff --git a/src/transport.c b/src/transport.c index 078df70..dce1888 100644 --- a/src/transport.c +++ b/src/transport.c @@ -32,6 +32,11 @@ #include "plugin_encrypt.h" #endif +#include +#define CPU_LOCK_STATE_LOCKED 0 +#define CPU_LOCK_STATE_UNLOCKED 1 +int can_lock_once=CPU_LOCK_STATE_UNLOCKED; + static void transport_unref(atransport *t); static atransport transport_list = { @@ -594,6 +599,17 @@ static void register_transport(atransport *transport) m.transport = transport; m.action = 1; D("transport: %s registered\n", transport->serial); + if(can_lock_once==CPU_LOCK_STATE_UNLOCKED) + { + D("transport: doing CPU Power Lock\n"); + device_power_request_lock (POWER_LOCK_CPU, 0); + can_lock_once=CPU_LOCK_STATE_LOCKED; + } + else + { + D("transport: Cannot do CPU Power Lock as lock already in place\n"); + } + if(transport_write_action(transport_registration_send, &m)) { fatal_errno("cannot write transport registration socket\n"); } @@ -605,6 +621,17 @@ static void remove_transport(atransport *transport) m.transport = transport; m.action = 0; D("transport: %s removed\n", transport->serial); + if(can_lock_once==CPU_LOCK_STATE_LOCKED) + { + D("transport: doing CPU Power UnLock\n"); + device_power_release_lock (POWER_LOCK_CPU); + can_lock_once=CPU_LOCK_STATE_UNLOCKED; + } + else + { + D("transport: Cannot do CPU Power UnLock as lock is not in place\n"); + } + if(transport_write_action(transport_registration_send, &m)) { fatal_errno("cannot write transport registration socket\n"); }