summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--data/etc/android.hardware.audio.output.xml22
-rw-r--r--data/etc/handheld_core_hardware.xml1
-rw-r--r--data/etc/tablet_core_hardware.xml1
-rw-r--r--data/etc/wearable_core_hardware.xml2
-rw-r--r--include/powermanager/IPowerManager.h11
-rw-r--r--services/powermanager/IPowerManager.cpp24
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);
}
};