diff options
author | Colin Cross <ccross@android.com> | 2012-03-28 13:55:43 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2012-03-28 13:58:23 -0700 |
commit | b731ae01b15682a3326dc4145f614f919b2789b5 (patch) | |
tree | b459e615f0ef7d8c95aa283b2a2d0bd3b4d914f7 | |
parent | 9e0b1f880bd790b6e4643387668c74729b891a10 (diff) | |
download | frameworks_native-b731ae01b15682a3326dc4145f614f919b2789b5.zip frameworks_native-b731ae01b15682a3326dc4145f614f919b2789b5.tar.gz frameworks_native-b731ae01b15682a3326dc4145f614f919b2789b5.tar.bz2 |
Move services/powermanager from frameworks/base to frameworks/native
Move services/powermanager into frameworks/native so audioflinger can
use it. Note that this is not the same as a PowerManagerService,
which is part of systemserver and handles turning the screen on and
off, etc. This is just a binder interface to allow taking wakelocks.
Change-Id: I6b6a8b41cdbad17e826fda45aab5f059f22fc64e
-rw-r--r-- | include/powermanager/IPowerManager.h | 41 | ||||
-rw-r--r-- | include/powermanager/PowerManager.h | 29 | ||||
-rw-r--r-- | services/powermanager/Android.mk | 15 | ||||
-rw-r--r-- | services/powermanager/IPowerManager.cpp | 71 |
4 files changed, 156 insertions, 0 deletions
diff --git a/include/powermanager/IPowerManager.h b/include/powermanager/IPowerManager.h new file mode 100644 index 0000000..1723f04 --- /dev/null +++ b/include/powermanager/IPowerManager.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_IPOWERMANAGER_H +#define ANDROID_IPOWERMANAGER_H + +#include <utils/Errors.h> +#include <binder/IInterface.h> + +namespace android { + +// ---------------------------------------------------------------------------- + +// must be kept in sync with interface defined in IPowerManager.aidl +class IPowerManager : public IInterface +{ +public: + DECLARE_META_INTERFACE(PowerManager); + + virtual status_t acquireWakeLock(int flags, const sp<IBinder>& lock, const String16& tag) = 0; + virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags) = 0; +}; + +// ---------------------------------------------------------------------------- + +}; // namespace android + +#endif // ANDROID_IPOWERMANAGER_H diff --git a/include/powermanager/PowerManager.h b/include/powermanager/PowerManager.h new file mode 100644 index 0000000..4590174 --- /dev/null +++ b/include/powermanager/PowerManager.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_POWERMANAGER_H +#define ANDROID_POWERMANAGER_H + +namespace android { + +// must be kept in sync with definitions in PowerManager.java +enum { + POWERMANAGER_PARTIAL_WAKE_LOCK = 1, // equals PowerManager.PARTIAL_WAKE_LOCK constant +}; + +}; // namespace android + +#endif // ANDROID_POWERMANAGER_H diff --git a/services/powermanager/Android.mk b/services/powermanager/Android.mk new file mode 100644 index 0000000..d98b2da --- /dev/null +++ b/services/powermanager/Android.mk @@ -0,0 +1,15 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES:= \ + IPowerManager.cpp + +LOCAL_SHARED_LIBRARIES := \ + libutils \ + libbinder + +LOCAL_MODULE:= libpowermanager + +LOCAL_MODULE_TAGS := optional + +include $(BUILD_SHARED_LIBRARY) diff --git a/services/powermanager/IPowerManager.cpp b/services/powermanager/IPowerManager.cpp new file mode 100644 index 0000000..a0f19d4 --- /dev/null +++ b/services/powermanager/IPowerManager.cpp @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG "IPowerManager" +//#define LOG_NDEBUG 0 +#include <utils/Log.h> + +#include <stdint.h> +#include <sys/types.h> + +#include <binder/Parcel.h> + +#include <powermanager/IPowerManager.h> + +namespace android { + +// must be kept in sync with IPowerManager.aidl +enum { + ACQUIRE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION, + RELEASE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION + 4, +}; + +class BpPowerManager : public BpInterface<IPowerManager> +{ +public: + BpPowerManager(const sp<IBinder>& impl) + : BpInterface<IPowerManager>(impl) + { + } + + virtual status_t acquireWakeLock(int flags, const sp<IBinder>& lock, const String16& tag) + { + Parcel data, reply; + data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); + + data.writeInt32(flags); + data.writeStrongBinder(lock); + data.writeString16(tag); + // no WorkSource passed + data.writeInt32(0); + return remote()->transact(ACQUIRE_WAKE_LOCK, data, &reply); + } + + virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags) + { + Parcel data, reply; + data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); + data.writeStrongBinder(lock); + data.writeInt32(flags); + return remote()->transact(RELEASE_WAKE_LOCK, data, &reply); + } +}; + +IMPLEMENT_META_INTERFACE(PowerManager, "android.os.IPowerManager"); + +// ---------------------------------------------------------------------------- + +}; // namespace android |