diff options
-rw-r--r-- | data/etc/android.hardware.audio.output.xml | 22 | ||||
-rw-r--r-- | data/etc/handheld_core_hardware.xml | 1 | ||||
-rw-r--r-- | data/etc/tablet_core_hardware.xml | 1 | ||||
-rw-r--r-- | data/etc/wearable_core_hardware.xml | 2 | ||||
-rw-r--r-- | include/powermanager/IPowerManager.h | 11 | ||||
-rw-r--r-- | services/powermanager/IPowerManager.cpp | 24 |
6 files changed, 47 insertions, 14 deletions
diff --git a/data/etc/android.hardware.audio.output.xml b/data/etc/android.hardware.audio.output.xml new file mode 100644 index 0000000..6ea1234 --- /dev/null +++ b/data/etc/android.hardware.audio.output.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2014 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. +--> + +<!-- This is the standard feature indicating audio output support of the device, + as specified in the CDD. ONLY devices that meet the CDD's requirements may + declare this feature. --> +<permissions> + <feature name="android.hardware.audio.output" /> +</permissions> diff --git a/data/etc/handheld_core_hardware.xml b/data/etc/handheld_core_hardware.xml index f18e4b1..7d70a5d 100644 --- a/data/etc/handheld_core_hardware.xml +++ b/data/etc/handheld_core_hardware.xml @@ -23,6 +23,7 @@ devices. --> <permissions> + <feature name="andriod.hardware.audio.output" /> <feature name="android.hardware.camera" /> <feature name="android.hardware.location" /> <feature name="android.hardware.location.network" /> diff --git a/data/etc/tablet_core_hardware.xml b/data/etc/tablet_core_hardware.xml index 4db2e57..321b2af 100644 --- a/data/etc/tablet_core_hardware.xml +++ b/data/etc/tablet_core_hardware.xml @@ -23,6 +23,7 @@ devices. --> <permissions> + <feature name="android.hardware.audio.output" /> <feature name="android.hardware.location" /> <feature name="android.hardware.location.network" /> <feature name="android.hardware.sensor.compass" /> diff --git a/data/etc/wearable_core_hardware.xml b/data/etc/wearable_core_hardware.xml index 09a064a..a9314d2 100644 --- a/data/etc/wearable_core_hardware.xml +++ b/data/etc/wearable_core_hardware.xml @@ -60,4 +60,6 @@ <!-- Devices that have low-latency audio stacks suitable for apps like VoIP may include android.hardware.audio.low_latency.xml. ONLY apps that meet the requirements specified in the CDD may include this. --> + <!-- devices that have audio output capability as specified in the CDD must + also include android.hardware.audio.output.xml --> </permissions> diff --git a/include/powermanager/IPowerManager.h b/include/powermanager/IPowerManager.h index 511797a..91ecc5a 100644 --- a/include/powermanager/IPowerManager.h +++ b/include/powermanager/IPowerManager.h @@ -31,12 +31,15 @@ class IPowerManager : public IInterface public: DECLARE_META_INTERFACE(PowerManager); + // FIXME remove the bool isOneWay parameters as they are not oneway in the .aidl virtual status_t acquireWakeLock(int flags, const sp<IBinder>& lock, const String16& tag, - const String16& packageName) = 0; + const String16& packageName, bool isOneWay = false) = 0; virtual status_t acquireWakeLockWithUid(int flags, const sp<IBinder>& lock, const String16& tag, - const String16& packageName, int uid) = 0; - virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags) = 0; - virtual status_t updateWakeLockUids(const sp<IBinder>& lock, int len, const int *uids) = 0; + const String16& packageName, int uid, bool isOneWay = false) = 0; + virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags, bool isOneWay = false) = 0; + virtual status_t updateWakeLockUids(const sp<IBinder>& lock, int len, const int *uids, + bool isOneWay = false) = 0; + // oneway in the .aidl virtual status_t powerHint(int hintId, int data) = 0; }; diff --git a/services/powermanager/IPowerManager.cpp b/services/powermanager/IPowerManager.cpp index 926c050..ec864ee 100644 --- a/services/powermanager/IPowerManager.cpp +++ b/services/powermanager/IPowerManager.cpp @@ -45,7 +45,7 @@ public: } virtual status_t acquireWakeLock(int flags, const sp<IBinder>& lock, const String16& tag, - const String16& packageName) + const String16& packageName, bool isOneWay) { Parcel data, reply; data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); @@ -56,11 +56,12 @@ public: data.writeString16(packageName); data.writeInt32(0); // no WorkSource data.writeString16(NULL, 0); // no history tag - return remote()->transact(ACQUIRE_WAKE_LOCK, data, &reply, IBinder::FLAG_ONEWAY); + return remote()->transact(ACQUIRE_WAKE_LOCK, data, &reply, + isOneWay ? IBinder::FLAG_ONEWAY : 0); } virtual status_t acquireWakeLockWithUid(int flags, const sp<IBinder>& lock, const String16& tag, - const String16& packageName, int uid) + const String16& packageName, int uid, bool isOneWay) { Parcel data, reply; data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); @@ -70,26 +71,28 @@ public: data.writeString16(tag); data.writeString16(packageName); data.writeInt32(uid); // uid to blame for the work - return remote()->transact(ACQUIRE_WAKE_LOCK_UID, data, &reply, IBinder::FLAG_ONEWAY); + return remote()->transact(ACQUIRE_WAKE_LOCK_UID, data, &reply, + isOneWay ? IBinder::FLAG_ONEWAY : 0); } - virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags) + virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags, bool isOneWay) { Parcel data, reply; data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); data.writeStrongBinder(lock); data.writeInt32(flags); - return remote()->transact(RELEASE_WAKE_LOCK, data, &reply, IBinder::FLAG_ONEWAY); + return remote()->transact(RELEASE_WAKE_LOCK, data, &reply, + isOneWay ? IBinder::FLAG_ONEWAY : 0); } - virtual status_t updateWakeLockUids(const sp<IBinder>& lock, int len, const int *uids) { + virtual status_t updateWakeLockUids(const sp<IBinder>& lock, int len, const int *uids, + bool isOneWay) { Parcel data, reply; data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); data.writeStrongBinder(lock); data.writeInt32Array(len, uids); - // We don't really care too much if this succeeds (there's nothing we can do if it doesn't) - // but it should return ASAP - return remote()->transact(UPDATE_WAKE_LOCK_UIDS, data, &reply, IBinder::FLAG_ONEWAY); + return remote()->transact(UPDATE_WAKE_LOCK_UIDS, data, &reply, + isOneWay ? IBinder::FLAG_ONEWAY : 0); } virtual status_t powerHint(int hintId, int param) @@ -98,6 +101,7 @@ public: data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); data.writeInt32(hintId); data.writeInt32(param); + // This FLAG_ONEWAY is in the .aidl, so there is no way to disable it return remote()->transact(POWER_HINT, data, &reply, IBinder::FLAG_ONEWAY); } }; |