summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-06-23 02:35:46 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-06-23 02:35:46 +0000
commit21814a49d70761a4bd0cb46bfe4f3f73e5c4557d (patch)
tree587d909e49ef45644058b8ddb4b3e32b07d3a944
parent90a7329a54a104089169c75f189c252113156d55 (diff)
parent71fd7608ce17ec9c55fbaaf89e52bdb563ea4e2c (diff)
downloadinterfaces-android-mainline-12.0.0_r92.tar.gz
Change-Id: I69545a1ebf67a0f62c15a218cbf1662065c451cc
-rw-r--r--Android.bp4
-rw-r--r--OWNERS9
-rw-r--r--automotive/OWNERS6
-rw-r--r--automotive/display/1.0/Android.bp7
-rw-r--r--automotive/display/1.0/vts/functional/Android.bp4
-rw-r--r--automotive/display/1.0/vts/functional/VtsHalAutomotiveDisplayV1_0TargetTest.cpp5
-rw-r--r--automotive/display/OWNERS3
-rw-r--r--automotive/powerpolicy/OWNERS2
-rw-r--r--automotive/powerpolicy/aidl/Android.bp53
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/.hash1
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl40
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl38
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl38
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl41
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/PowerComponent.aidl53
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl39
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl37
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl37
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl40
-rw-r--r--automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/PowerComponent.aidl52
-rw-r--r--automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl41
-rw-r--r--automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl32
-rw-r--r--automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl33
-rw-r--r--automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl68
-rw-r--r--automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/PowerComponent.aidl106
-rw-r--r--automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/internal/ICarPowerPolicySystemNotification.aidl71
-rw-r--r--automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/internal/PolicyState.aidl32
-rw-r--r--automotive/powerpolicy/aidl/vts/Android.bp41
-rw-r--r--automotive/powerpolicy/aidl/vts/VtsAidlPowerPolicyTargetTest.cpp164
-rw-r--r--automotive/telemetry/OWNERS3
-rw-r--r--automotive/telemetry/aidl/Android.bp46
-rw-r--r--automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/.hash1
-rw-r--r--automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/android/frameworks/automotive/telemetry/CarData.aidl39
-rw-r--r--automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/android/frameworks/automotive/telemetry/ICarTelemetry.aidl38
-rw-r--r--automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/current/android/frameworks/automotive/telemetry/CarData.aidl39
-rw-r--r--automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/current/android/frameworks/automotive/telemetry/ICarTelemetry.aidl38
-rw-r--r--automotive/telemetry/aidl/android/frameworks/automotive/telemetry/CarData.aidl37
-rw-r--r--automotive/telemetry/aidl/android/frameworks/automotive/telemetry/ICarTelemetry.aidl37
-rw-r--r--bufferhub/1.0/Android.bp8
-rw-r--r--bufferhub/1.0/README.md5
-rw-r--r--bufferhub/1.0/vts/functional/Android.bp5
-rw-r--r--cameraservice/common/2.0/Android.bp7
-rw-r--r--cameraservice/device/2.0/Android.bp7
-rw-r--r--cameraservice/device/2.1/Android.bp19
-rw-r--r--cameraservice/device/2.1/ICameraDeviceUser.hal36
-rw-r--r--cameraservice/service/2.0/Android.bp7
-rw-r--r--cameraservice/service/2.1/Android.bp7
-rw-r--r--cameraservice/service/2.2/Android.bp22
-rw-r--r--cameraservice/service/2.2/ICameraService.hal22
-rw-r--r--cameraservice/vts/functional/Android.bp11
-rw-r--r--cameraservice/vts/functional/AndroidTest.xml32
-rw-r--r--cameraservice/vts/functional/VtsHalCameraServiceV2_0TargetTest.cpp29
-rw-r--r--current.txt6
-rw-r--r--displayservice/1.0/Android.bp7
-rw-r--r--displayservice/1.0/vts/functional/Android.bp5
-rw-r--r--displayservice/1.0/vts/functional/VtsFwkDisplayServiceV1_0TargetTest.cpp1
-rw-r--r--schedulerservice/1.0/Android.bp7
-rw-r--r--sensorservice/1.0/Android.bp7
-rw-r--r--sensorservice/1.0/vts/OWNERS3
-rw-r--r--sensorservice/1.0/vts/functional/Android.bp4
-rw-r--r--sensorservice/1.0/vts/functional/VtsHalSensorManagerV1_0TargetTest.cpp1
-rw-r--r--sensorservice/libsensorndkbridge/ALooper.h2
-rw-r--r--sensorservice/libsensorndkbridge/Android.bp4
-rw-r--r--sensorservice/libsensorndkbridge/OWNERS3
-rw-r--r--stats/1.0/Android.bp7
-rw-r--r--stats/1.0/test_client/Android.bp5
-rw-r--r--stats/1.0/test_client/README16
-rw-r--r--stats/1.0/test_client/StatsClient.cpp16
-rw-r--r--stats/1.0/vts/functional/Android.bp4
-rw-r--r--stats/1.0/vts/functional/VtsHalStatsV1_0TargetTest.cpp17
-rw-r--r--stats/aidl/Android.bp38
-rw-r--r--stats/aidl/aidl_api/android.frameworks.stats/1/.hash1
-rw-r--r--stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/IStats.aidl38
-rw-r--r--stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/VendorAtom.aidl40
-rw-r--r--stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/VendorAtomValue.aidl41
-rw-r--r--stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/IStats.aidl38
-rw-r--r--stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/VendorAtom.aidl40
-rw-r--r--stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/VendorAtomValue.aidl41
-rw-r--r--stats/aidl/android/frameworks/stats/IStats.aidl35
-rw-r--r--stats/aidl/android/frameworks/stats/VendorAtom.aidl54
-rw-r--r--stats/aidl/android/frameworks/stats/VendorAtomValue.aidl27
-rw-r--r--stats/aidl/test_client/AidlStatsClient.cpp106
-rw-r--r--stats/aidl/test_client/Android.bp40
-rw-r--r--stats/aidl/test_client/README8
-rw-r--r--stats/aidl/vts/functional/Android.bp41
-rw-r--r--stats/aidl/vts/functional/VtsHalStatsTargetTest.cpp131
-rw-r--r--vr/composer/1.0/Android.bp7
-rw-r--r--vr/composer/2.0/.hidl_for_system_ext (renamed from bufferhub/1.0/.hidl_for_test)0
-rw-r--r--vr/composer/2.0/Android.bp8
89 files changed, 2337 insertions, 104 deletions
diff --git a/Android.bp b/Android.bp
index f00cf8e..8ab10a5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_package_root {
name: "android.frameworks",
}
diff --git a/OWNERS b/OWNERS
index 70e48e5..2488b0f 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,8 +1 @@
-per-file *.hal,*.aidl,OWNERS = set noparent
-per-file *.hal,*.aidl,OWNERS = elsk@google.com,malchev@google.com,smoreland@google.com
-
-elsk@google.com
-maco@google.com
-malchev@google.com
-smoreland@google.com
-yim@google.com # VTS
+include platform/hardware/interfaces:/OWNERS
diff --git a/automotive/OWNERS b/automotive/OWNERS
index e5a11e8..e34575b 100644
--- a/automotive/OWNERS
+++ b/automotive/OWNERS
@@ -1,3 +1,3 @@
-haoxiangl@google.com
-swan@google.com
-changyeon@google.com
+gurunagarajan@google.com
+keunyoung@google.com
+sgurun@google.com
diff --git a/automotive/display/1.0/Android.bp b/automotive/display/1.0/Android.bp
index 28e1f22..4074b77 100644
--- a/automotive/display/1.0/Android.bp
+++ b/automotive/display/1.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.automotive.display@1.0",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"types.hal",
"IAutomotiveDisplayProxyService.hal",
diff --git a/automotive/display/1.0/vts/functional/Android.bp b/automotive/display/1.0/vts/functional/Android.bp
index ce87e37..7e14e58 100644
--- a/automotive/display/1.0/vts/functional/Android.bp
+++ b/automotive/display/1.0/vts/functional/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_test {
name: "VtsHalAutomotiveDisplayV1_0TargetTest",
srcs: [
diff --git a/automotive/display/1.0/vts/functional/VtsHalAutomotiveDisplayV1_0TargetTest.cpp b/automotive/display/1.0/vts/functional/VtsHalAutomotiveDisplayV1_0TargetTest.cpp
index 8ca20a0..d18d60c 100644
--- a/automotive/display/1.0/vts/functional/VtsHalAutomotiveDisplayV1_0TargetTest.cpp
+++ b/automotive/display/1.0/vts/functional/VtsHalAutomotiveDisplayV1_0TargetTest.cpp
@@ -19,7 +19,7 @@
#include <android/frameworks/automotive/display/1.0/IAutomotiveDisplayProxyService.h>
#include <android/hardware/graphics/bufferqueue/2.0/IGraphicBufferProducer.h>
-#include <ui/DisplayConfig.h>
+#include <ui/DisplayMode.h>
#include <ui/DisplayState.h>
#include <utils/Log.h>
@@ -59,7 +59,7 @@ TEST_P(AutomotiveDisplayHidlTest, getIGBP) {
for (const auto& id : displayIdList) {
// Get a display info
mDisplayProxy->getDisplayInfo(id, [](const auto& cfg, const auto& /*state*/) {
- android::DisplayConfig* pConfig = (android::DisplayConfig*)cfg.data();
+ android::ui::DisplayMode* pConfig = (android::ui::DisplayMode*)cfg.data();
ASSERT_GT(pConfig->resolution.getWidth(), 0);
ASSERT_GT(pConfig->resolution.getHeight(), 0);
});
@@ -101,6 +101,7 @@ TEST_P(AutomotiveDisplayHidlTest, hideWindow) {
}
}
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AutomotiveDisplayHidlTest);
INSTANTIATE_TEST_SUITE_P(
PerInstance,
AutomotiveDisplayHidlTest,
diff --git a/automotive/display/OWNERS b/automotive/display/OWNERS
new file mode 100644
index 0000000..e5a11e8
--- /dev/null
+++ b/automotive/display/OWNERS
@@ -0,0 +1,3 @@
+haoxiangl@google.com
+swan@google.com
+changyeon@google.com
diff --git a/automotive/powerpolicy/OWNERS b/automotive/powerpolicy/OWNERS
new file mode 100644
index 0000000..a2f1610
--- /dev/null
+++ b/automotive/powerpolicy/OWNERS
@@ -0,0 +1,2 @@
+keunyoung@google.com
+ericjeong@google.com
diff --git a/automotive/powerpolicy/aidl/Android.bp b/automotive/powerpolicy/aidl/Android.bp
new file mode 100644
index 0000000..197aac4
--- /dev/null
+++ b/automotive/powerpolicy/aidl/Android.bp
@@ -0,0 +1,53 @@
+// Copyright (C) 2020 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.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+aidl_interface {
+ name: "android.frameworks.automotive.powerpolicy",
+ vendor_available: true,
+ srcs: [
+ "android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl",
+ "android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl",
+ "android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl",
+ "android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl",
+ "android/frameworks/automotive/powerpolicy/PowerComponent.aidl",
+ ],
+ stability: "vintf",
+ backend: {
+ java: {
+ platform_apis: true,
+ enabled: true,
+ },
+ },
+ versions: ["1"],
+}
+
+aidl_interface {
+ name: "android.frameworks.automotive.powerpolicy.internal",
+ unstable: true,
+ vendor_available: false,
+ srcs: [
+ "android/frameworks/automotive/powerpolicy/internal/ICarPowerPolicySystemNotification.aidl",
+ "android/frameworks/automotive/powerpolicy/internal/PolicyState.aidl",
+ ],
+ backend: {
+ java: {
+ platform_apis: true,
+ enabled: true,
+ },
+ },
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/.hash b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/.hash
new file mode 100644
index 0000000..a523e9d
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/.hash
@@ -0,0 +1 @@
+a7e74b911f6461cdc000ba2e227bb01c5a51a564
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl
new file mode 100644
index 0000000..abd28f0
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@VintfStability
+parcelable CarPowerPolicy {
+ @utf8InCpp String policyId;
+ android.frameworks.automotive.powerpolicy.PowerComponent[] enabledComponents;
+ android.frameworks.automotive.powerpolicy.PowerComponent[] disabledComponents;
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl
new file mode 100644
index 0000000..8200566
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@VintfStability
+parcelable CarPowerPolicyFilter {
+ android.frameworks.automotive.powerpolicy.PowerComponent[] components;
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl
new file mode 100644
index 0000000..c5574a1
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@VintfStability
+interface ICarPowerPolicyChangeCallback {
+ oneway void onPolicyChanged(in android.frameworks.automotive.powerpolicy.CarPowerPolicy policy);
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl
new file mode 100644
index 0000000..6372fa3
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@VintfStability
+interface ICarPowerPolicyServer {
+ android.frameworks.automotive.powerpolicy.CarPowerPolicy getCurrentPowerPolicy();
+ boolean getPowerComponentState(in android.frameworks.automotive.powerpolicy.PowerComponent componentId);
+ void registerPowerPolicyChangeCallback(in android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback callback, in android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter filter);
+ void unregisterPowerPolicyChangeCallback(in android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback callback);
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/PowerComponent.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/PowerComponent.aidl
new file mode 100644
index 0000000..255c1b1
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/1/android/frameworks/automotive/powerpolicy/PowerComponent.aidl
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@Backing(type="int") @VintfStability
+enum PowerComponent {
+ AUDIO = 1,
+ MEDIA = 2,
+ DISPLAY = 3,
+ BLUETOOTH = 4,
+ WIFI = 5,
+ CELLULAR = 6,
+ ETHERNET = 7,
+ PROJECTION = 8,
+ NFC = 9,
+ INPUT = 10,
+ VOICE_INTERACTION = 11,
+ VISUAL_INTERACTION = 12,
+ TRUSTED_DEVICE_DETECTION = 13,
+ LOCATION = 14,
+ MICROPHONE = 15,
+ CPU = 16,
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl
new file mode 100644
index 0000000..3750dbb
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@VintfStability
+parcelable CarPowerPolicy {
+ @utf8InCpp String policyId;
+ android.frameworks.automotive.powerpolicy.PowerComponent[] enabledComponents;
+ android.frameworks.automotive.powerpolicy.PowerComponent[] disabledComponents;
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl
new file mode 100644
index 0000000..45792a6
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@VintfStability
+parcelable CarPowerPolicyFilter {
+ android.frameworks.automotive.powerpolicy.PowerComponent[] components;
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl
new file mode 100644
index 0000000..aa6777e
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@VintfStability
+interface ICarPowerPolicyChangeCallback {
+ oneway void onPolicyChanged(in android.frameworks.automotive.powerpolicy.CarPowerPolicy policy);
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl
new file mode 100644
index 0000000..e75bfd0
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@VintfStability
+interface ICarPowerPolicyServer {
+ android.frameworks.automotive.powerpolicy.CarPowerPolicy getCurrentPowerPolicy();
+ boolean getPowerComponentState(in android.frameworks.automotive.powerpolicy.PowerComponent componentId);
+ void registerPowerPolicyChangeCallback(in android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback callback, in android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter filter);
+ void unregisterPowerPolicyChangeCallback(in android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback callback);
+}
diff --git a/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/PowerComponent.aidl b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/PowerComponent.aidl
new file mode 100644
index 0000000..2b289f6
--- /dev/null
+++ b/automotive/powerpolicy/aidl/aidl_api/android.frameworks.automotive.powerpolicy/current/android/frameworks/automotive/powerpolicy/PowerComponent.aidl
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2020 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.powerpolicy;
+@Backing(type="int") @VintfStability
+enum PowerComponent {
+ AUDIO = 1,
+ MEDIA = 2,
+ DISPLAY = 3,
+ BLUETOOTH = 4,
+ WIFI = 5,
+ CELLULAR = 6,
+ ETHERNET = 7,
+ PROJECTION = 8,
+ NFC = 9,
+ INPUT = 10,
+ VOICE_INTERACTION = 11,
+ VISUAL_INTERACTION = 12,
+ TRUSTED_DEVICE_DETECTION = 13,
+ LOCATION = 14,
+ MICROPHONE = 15,
+ CPU = 16,
+}
diff --git a/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl
new file mode 100644
index 0000000..80267e6
--- /dev/null
+++ b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/CarPowerPolicy.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.automotive.powerpolicy;
+
+import android.frameworks.automotive.powerpolicy.PowerComponent;
+
+/**
+ * Description of car power policy.
+ * Components which are not specified in the CarPowerPolicy will remain unchanged.
+ */
+@VintfStability
+parcelable CarPowerPolicy {
+ /**
+ * Unique ID representing power policy.
+ */
+ @utf8InCpp String policyId;
+
+ /**
+ * List of power components to be enabled.
+ */
+ PowerComponent[] enabledComponents;
+
+ /**
+ * List of power components to be disabled.
+ */
+ PowerComponent[] disabledComponents;
+}
diff --git a/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl
new file mode 100644
index 0000000..86289cd
--- /dev/null
+++ b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.automotive.powerpolicy;
+
+import android.frameworks.automotive.powerpolicy.PowerComponent;
+
+/**
+ * A set of power components which ICarPowerPolicyChangeCallbacks are interested in.
+ * By specifying this filter, the callbacks are notified only by power policy changes which contain
+ * the power components of interest.
+ */
+@VintfStability
+parcelable CarPowerPolicyFilter {
+ /**
+ * List of power components of interest.
+ */
+ PowerComponent[] components;
+}
diff --git a/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl
new file mode 100644
index 0000000..df0455b
--- /dev/null
+++ b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.automotive.powerpolicy;
+
+import android.frameworks.automotive.powerpolicy.CarPowerPolicy;
+
+/**
+ * ICarPowerPolicyChangeCallback is notified when a power policy changes.
+ */
+
+@VintfStability
+oneway interface ICarPowerPolicyChangeCallback {
+ /**
+ * Called when a power policy is fully changed.
+ *
+ * @param policy The current policy.
+ */
+ void onPolicyChanged(in CarPowerPolicy policy);
+}
diff --git a/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl
new file mode 100644
index 0000000..27b18f7
--- /dev/null
+++ b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.aidl
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.automotive.powerpolicy;
+
+import android.frameworks.automotive.powerpolicy.CarPowerPolicy;
+import android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter;
+import android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback;
+import android.frameworks.automotive.powerpolicy.PowerComponent;
+
+/**
+ * ICarPowerPolicyServer is an interface implemented by the power policy daemon.
+ * VHAL changes the power policy and the power policy daemon notifies the change to registered
+ * subscribers. When subscribing to policy changes, a filter can be specified so that the registered
+ * callbacks can listen only to a specific power component's change.
+ */
+
+@VintfStability
+interface ICarPowerPolicyServer {
+ /**
+ * Gets the current power policy.
+ * @throws IllegalStateException if the current policy is not set.
+ */
+ CarPowerPolicy getCurrentPowerPolicy();
+
+ /**
+ * Gets whether the power component is turned on or off.
+ *
+ * @param componentId Power component ID defined in PowerComponent.aidl to check power state.
+ * @return True if the component's power state is on.
+ * @throws IllegalArgumentException if the componentId is invalid.
+ */
+ boolean getPowerComponentState(in PowerComponent componentId);
+
+ /**
+ * Subscribes to power policy change.
+ * Notification is sent to the registered callback when the power policy changes and the power
+ * state of the components which the callback is interested in changes.
+ *
+ * @param callback Callback that is invoked when the power policy changes.
+ * @param filter The list of components which the callback is interested in.
+ * @throws IllegalArgumentException if the callback is already registered.
+ * @throws IllegalStateException if the callback is dead.
+ */
+ void registerPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback,
+ in CarPowerPolicyFilter filter);
+
+ /**
+ * Unsubscribes from power policy change.
+ *
+ * @param callback Callback that doesn't want to receive power policy change.
+ * @throws IllegalArgumentException if the callback is not registered.
+ */
+ void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);
+}
diff --git a/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/PowerComponent.aidl b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/PowerComponent.aidl
new file mode 100644
index 0000000..d92cdaf
--- /dev/null
+++ b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/PowerComponent.aidl
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.automotive.powerpolicy;
+
+/**
+ * List of power component ID.
+ */
+@VintfStability
+@Backing(type="int")
+enum PowerComponent {
+ /**
+ * This is used to turn on/off audio through power policy.
+ */
+ AUDIO = 1,
+
+ /**
+ * This is used to turn on/off media playing/recording through power policy.
+ */
+ MEDIA = 2,
+
+ /**
+ * This is used to turn on/off display through power policy.
+ */
+ DISPLAY = 3,
+
+ /**
+ * This is used to turn on/off bluetooth through power policy.
+ */
+ BLUETOOTH = 4,
+
+ /**
+ * This is used to turn on/off WiFi network through power policy.
+ */
+ WIFI = 5,
+
+ /**
+ * This is used to turn on/off cellular network through power policy.
+ */
+ CELLULAR = 6,
+
+ /**
+ * This is used to turn on/off ethernet through power policy.
+ */
+ ETHERNET = 7,
+
+ /**
+ * This is used to turn on/off projection from other devices through power policy.
+ */
+ PROJECTION = 8,
+
+ /**
+ * This is used to turn on/off NFC through power policy.
+ */
+ NFC = 9,
+
+ /**
+ * This is used to turn on/off all inputs from users through power policy.
+ */
+ INPUT = 10,
+
+ /**
+ * This is used to turn on/off voice interaction through power policy.
+ */
+ VOICE_INTERACTION = 11,
+
+ /**
+ * This is used to turn on/off visual interaction through power policy.
+ */
+ VISUAL_INTERACTION = 12,
+
+ /**
+ * This is used to turn on/off trusted device detection through power policy.
+ */
+ TRUSTED_DEVICE_DETECTION = 13,
+
+ /**
+ * This is used to turn on/off location through power policy.
+ */
+ LOCATION = 14,
+
+ /**
+ * This is used to turn on/off microphone through power policy.
+ */
+ MICROPHONE = 15,
+
+ /**
+ * This is used to turn on/off CPU through power policy.
+ * It will turn into off state when system goes into sleep state. It will be restored to on
+ * state when system gets out of sleep state.
+ */
+ CPU = 16,
+}
diff --git a/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/internal/ICarPowerPolicySystemNotification.aidl b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/internal/ICarPowerPolicySystemNotification.aidl
new file mode 100644
index 0000000..08078f0
--- /dev/null
+++ b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/internal/ICarPowerPolicySystemNotification.aidl
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.automotive.powerpolicy.internal;
+
+import android.frameworks.automotive.powerpolicy.internal.PolicyState;
+
+/**
+ * ICarPowerPolicyServer is an interface implemented by the power policy daemon.
+ * VHAL changes the power policy and the power policy daemon notifies the change to registered
+ * subscribers. When subscribing to policy changes, a filter can be specified so that the registered
+ * callbacks can listen only to a specific power component's change.
+ */
+
+interface ICarPowerPolicySystemNotification {
+ /**
+ * CarService uses this method to tell that CarService is ready for taking over power policy
+ * management.
+ * Once this method is called, car power policy daemon stops serving for the requests from vehicle
+ * HAL. CarService starts serving power policy management based on the current power policy ID and
+ * power policy group ID returned from the call.
+ *
+ * System private API for CarService.
+ *
+ * @return The current power policy ID and power policy group ID.
+ * @throws SecurityException if the caller doesn't have sufficient permissions.
+ */
+ PolicyState notifyCarServiceReady();
+
+ /**
+ * CarService uses this method to tell that the current power policy is changed.
+ * Then, car power policy daemon propagates the change to registered callbacks.
+ *
+ * System private API for CarService.
+ *
+ * @param policyId The current policy ID.
+ * @throws IllegalStateException if it fails to notify power policy change.
+ * @throws SecurityException if the caller doesn't have sufficient permissions.
+ */
+ void notifyPowerPolicyChange(in @utf8InCpp String policyId);
+
+ /**
+ * CarService uses this method to tell that there is a newly defined power policy.
+ * When a new power policy is defined on the fly through "define-power-policy" in
+ * {@code CarShellCommand}, CarService makes sure that car power policy daemon maintains the same
+ * power policies.
+ *
+ * System private API for CarService.
+ *
+ * @param policyId The new policy ID.
+ * @param enabledComponents List of components to be enabled.
+ * @param disabledComponents List of components to be disabled.
+ * @throws IllegalStateException if it fails to notify power policy definition.
+ * @throws SecurityException if the caller doesn't have sufficient permissions.
+ */
+ void notifyPowerPolicyDefinition(in @utf8InCpp String policyId,
+ in @utf8InCpp String[] enabledComponents, in @utf8InCpp String[] disabledComponents);
+}
diff --git a/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/internal/PolicyState.aidl b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/internal/PolicyState.aidl
new file mode 100644
index 0000000..e993592
--- /dev/null
+++ b/automotive/powerpolicy/aidl/android/frameworks/automotive/powerpolicy/internal/PolicyState.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.automotive.powerpolicy.internal;
+
+/**
+ * Structure to store the current policy state.
+ */
+parcelable PolicyState {
+ /**
+ * The current power policy ID.
+ */
+ @utf8InCpp String policyId;
+
+ /**
+ * The current power policy group ID.
+ */
+ @utf8InCpp String policyGroupId;
+}
diff --git a/automotive/powerpolicy/aidl/vts/Android.bp b/automotive/powerpolicy/aidl/vts/Android.bp
new file mode 100644
index 0000000..06b165d
--- /dev/null
+++ b/automotive/powerpolicy/aidl/vts/Android.bp
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2021 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.
+//
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+ name: "VtsAidlPowerPolicyTargetTest",
+ defaults: [
+ "VtsHalTargetTestDefaults",
+ "use_libaidlvintf_gtest_helper_static",
+ ],
+ srcs: [
+ "VtsAidlPowerPolicyTargetTest.cpp",
+ ],
+ shared_libs: [
+ "libbinder",
+ ],
+ static_libs: [
+ "android.frameworks.automotive.powerpolicy-V1-cpp",
+ "libgmock",
+ ],
+ test_suites: [
+ "general-tests",
+ "vts",
+ ],
+} \ No newline at end of file
diff --git a/automotive/powerpolicy/aidl/vts/VtsAidlPowerPolicyTargetTest.cpp b/automotive/powerpolicy/aidl/vts/VtsAidlPowerPolicyTargetTest.cpp
new file mode 100644
index 0000000..7a04efd
--- /dev/null
+++ b/automotive/powerpolicy/aidl/vts/VtsAidlPowerPolicyTargetTest.cpp
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+#include <aidl/Gtest.h>
+#include <aidl/Vintf.h>
+#include <android/frameworks/automotive/powerpolicy/CarPowerPolicy.h>
+#include <android/frameworks/automotive/powerpolicy/CarPowerPolicyFilter.h>
+#include <android/frameworks/automotive/powerpolicy/ICarPowerPolicyChangeCallback.h>
+#include <android/frameworks/automotive/powerpolicy/ICarPowerPolicyServer.h>
+#include <android/frameworks/automotive/powerpolicy/PowerComponent.h>
+#include <binder/IBinder.h>
+#include <binder/IServiceManager.h>
+#include <binder/ProcessState.h>
+#include <gmock/gmock.h>
+#include <utils/StrongPointer.h>
+
+namespace {
+
+using ::android::BBinder;
+using ::android::IBinder;
+using ::android::OK;
+using ::android::ProcessState;
+using ::android::sp;
+using ::android::status_t;
+using ::android::String16;
+using ::android::wp;
+using ::android::binder::Status;
+using ::android::frameworks::automotive::powerpolicy::CarPowerPolicy;
+using ::android::frameworks::automotive::powerpolicy::CarPowerPolicyFilter;
+using ::android::frameworks::automotive::powerpolicy::ICarPowerPolicyChangeCallbackDefault;
+using ::android::frameworks::automotive::powerpolicy::ICarPowerPolicyServer;
+using ::android::frameworks::automotive::powerpolicy::PowerComponent;
+using ::testing::_;
+using ::testing::Return;
+
+class MockBinder : public BBinder {
+ public:
+ MOCK_METHOD(status_t, linkToDeath,
+ (const sp<DeathRecipient>& recipient, void* cookie, uint32_t flags), (override));
+ MOCK_METHOD(status_t, unlinkToDeath,
+ (const wp<DeathRecipient>& recipient, void* cookie, uint32_t flags,
+ wp<DeathRecipient>* outRecipient),
+ (override));
+};
+
+class MockPowerPolicyChangeCallback : public ICarPowerPolicyChangeCallbackDefault {
+ public:
+ MockPowerPolicyChangeCallback() { mBinder = new MockBinder(); }
+
+ MOCK_METHOD(IBinder*, onAsBinder, (), (override));
+
+ void expectNormalBinder() {
+ EXPECT_CALL(*mBinder, linkToDeath(_, nullptr, 0)).WillRepeatedly(Return(OK));
+ EXPECT_CALL(*mBinder, unlinkToDeath(_, nullptr, 0, nullptr)).WillRepeatedly(Return(OK));
+ EXPECT_CALL(*this, onAsBinder()).WillRepeatedly(Return(mBinder.get()));
+ }
+
+ private:
+ sp<MockBinder> mBinder;
+};
+
+} // namespace
+
+class PowerPolicyAidlTest : public ::testing::TestWithParam<std::string> {
+ public:
+ virtual void SetUp() override {
+ powerPolicyServer =
+ android::waitForDeclaredService<ICarPowerPolicyServer>(String16(GetParam().c_str()));
+ ASSERT_NE(powerPolicyServer.get(), nullptr);
+ }
+
+ sp<ICarPowerPolicyServer> powerPolicyServer;
+};
+
+TEST_P(PowerPolicyAidlTest, TestGetCurrentPowerPolicy) {
+ CarPowerPolicy policy;
+
+ Status status = powerPolicyServer->getCurrentPowerPolicy(&policy);
+
+ ASSERT_TRUE(status.isOk() || status.exceptionCode() == Status::EX_ILLEGAL_STATE);
+}
+
+TEST_P(PowerPolicyAidlTest, TestGetPowerComponentState) {
+ bool state;
+ for (const auto componentId : android::enum_range<PowerComponent>()) {
+ Status status = powerPolicyServer->getPowerComponentState(componentId, &state);
+
+ ASSERT_TRUE(status.isOk());
+ }
+}
+
+TEST_P(PowerPolicyAidlTest, TestGetPowerComponentState_invalidComponent) {
+ bool state;
+ PowerComponent invalidComponent = (PowerComponent)-1;
+
+ Status status = powerPolicyServer->getPowerComponentState(invalidComponent, &state);
+
+ ASSERT_FALSE(status.isOk());
+}
+
+TEST_P(PowerPolicyAidlTest, TestRegisterCallback) {
+ sp<MockPowerPolicyChangeCallback> callback = new MockPowerPolicyChangeCallback();
+ callback->expectNormalBinder();
+ CarPowerPolicyFilter filter;
+ filter.components.push_back(PowerComponent::AUDIO);
+
+ Status status = powerPolicyServer->registerPowerPolicyChangeCallback(callback, filter);
+
+ ASSERT_TRUE(status.isOk());
+
+ status = powerPolicyServer->unregisterPowerPolicyChangeCallback(callback.get());
+
+ ASSERT_TRUE(status.isOk());
+}
+
+TEST_P(PowerPolicyAidlTest, TestRegisterCallback_doubleRegistering) {
+ sp<MockPowerPolicyChangeCallback> callback = new MockPowerPolicyChangeCallback();
+ callback->expectNormalBinder();
+ CarPowerPolicyFilter filter;
+ filter.components.push_back(PowerComponent::AUDIO);
+
+ Status status = powerPolicyServer->registerPowerPolicyChangeCallback(callback, filter);
+
+ ASSERT_TRUE(status.isOk());
+
+ status = powerPolicyServer->registerPowerPolicyChangeCallback(callback, filter);
+
+ ASSERT_FALSE(status.isOk());
+ ASSERT_EQ(status.exceptionCode(), Status::EX_ILLEGAL_ARGUMENT);
+}
+
+TEST_P(PowerPolicyAidlTest, TestUnegisterNotRegisteredCallback) {
+ sp<MockPowerPolicyChangeCallback> callback = new MockPowerPolicyChangeCallback();
+
+ Status status = powerPolicyServer->unregisterPowerPolicyChangeCallback(callback);
+
+ ASSERT_FALSE(status.isOk());
+}
+
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(PowerPolicyAidlTest);
+INSTANTIATE_TEST_SUITE_P(
+ CarPowerPolicyServer, PowerPolicyAidlTest,
+ ::testing::ValuesIn(android::getAidlHalInstanceNames(ICarPowerPolicyServer::descriptor)),
+ android::PrintInstanceNameToString);
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ProcessState::self()->setThreadPoolMaxThreadCount(1);
+ ProcessState::self()->startThreadPool();
+ return RUN_ALL_TESTS();
+}
diff --git a/automotive/telemetry/OWNERS b/automotive/telemetry/OWNERS
new file mode 100644
index 0000000..80794e1
--- /dev/null
+++ b/automotive/telemetry/OWNERS
@@ -0,0 +1,3 @@
+sgurun@google.com
+zhomart@google.com
+mdashouk@google.com
diff --git a/automotive/telemetry/aidl/Android.bp b/automotive/telemetry/aidl/Android.bp
new file mode 100644
index 0000000..cfb04f5
--- /dev/null
+++ b/automotive/telemetry/aidl/Android.bp
@@ -0,0 +1,46 @@
+// Copyright (C) 2021 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.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+// Audomotive Telemetry interfaces.
+//
+// Depend on "android.frameworks.automotive.telemetry-V1-ndk". Change "V1" to desired version (it
+// must be always provided), and "ndk" to a desired AIDL back-end.
+aidl_interface {
+ name: "android.frameworks.automotive.telemetry",
+ srcs: [
+ "android/frameworks/automotive/telemetry/*.aidl",
+ ],
+ vendor_available: true,
+ stability: "vintf",
+ backend: {
+ cpp: {
+ enabled: true,
+ },
+ java: {
+ enabled: false,
+ },
+ ndk: {
+ enabled: true,
+ },
+ },
+ // Run "m android.frameworks.automotive.telemetry-freeze-api" to bump the version. Freeze the
+ // version only during the release.
+ // Run "m android.frameworks.automotive.telemetry-update-api" to update the
+ // "aidl_api/.../current/" dir.
+ versions: ["1"],
+}
diff --git a/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/.hash b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/.hash
new file mode 100644
index 0000000..b0481d7
--- /dev/null
+++ b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/.hash
@@ -0,0 +1 @@
+8f06f70c4b251c81941f12b8d0dc08e9b56fe2b7
diff --git a/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/android/frameworks/automotive/telemetry/CarData.aidl b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/android/frameworks/automotive/telemetry/CarData.aidl
new file mode 100644
index 0000000..4e400b1
--- /dev/null
+++ b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/android/frameworks/automotive/telemetry/CarData.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2021, 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.telemetry;
+@VintfStability
+parcelable CarData {
+ int id;
+ byte[] content;
+}
diff --git a/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/android/frameworks/automotive/telemetry/ICarTelemetry.aidl b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/android/frameworks/automotive/telemetry/ICarTelemetry.aidl
new file mode 100644
index 0000000..bdf5631
--- /dev/null
+++ b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/1/android/frameworks/automotive/telemetry/ICarTelemetry.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2021, 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.telemetry;
+@VintfStability
+interface ICarTelemetry {
+ void write(in android.frameworks.automotive.telemetry.CarData[] dataList);
+}
diff --git a/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/current/android/frameworks/automotive/telemetry/CarData.aidl b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/current/android/frameworks/automotive/telemetry/CarData.aidl
new file mode 100644
index 0000000..4e400b1
--- /dev/null
+++ b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/current/android/frameworks/automotive/telemetry/CarData.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2021, 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.telemetry;
+@VintfStability
+parcelable CarData {
+ int id;
+ byte[] content;
+}
diff --git a/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/current/android/frameworks/automotive/telemetry/ICarTelemetry.aidl b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/current/android/frameworks/automotive/telemetry/ICarTelemetry.aidl
new file mode 100644
index 0000000..bdf5631
--- /dev/null
+++ b/automotive/telemetry/aidl/aidl_api/android.frameworks.automotive.telemetry/current/android/frameworks/automotive/telemetry/ICarTelemetry.aidl
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2021, 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.automotive.telemetry;
+@VintfStability
+interface ICarTelemetry {
+ void write(in android.frameworks.automotive.telemetry.CarData[] dataList);
+}
diff --git a/automotive/telemetry/aidl/android/frameworks/automotive/telemetry/CarData.aidl b/automotive/telemetry/aidl/android/frameworks/automotive/telemetry/CarData.aidl
new file mode 100644
index 0000000..e1f9b81
--- /dev/null
+++ b/automotive/telemetry/aidl/android/frameworks/automotive/telemetry/CarData.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2021, 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.
+ */
+
+package android.frameworks.automotive.telemetry;
+
+/**
+ * ICarTelemetry data.
+ *
+ * <p>Contents of this object should not be parsed by Android framework.
+ *
+ * <p>Please see packages/services/Car/cpp/telemetry/README.md to learn more.
+ */
+@VintfStability
+parcelable CarData {
+ /**
+ * Must be a valid id. Scripts subscribe to data using this id.
+ */
+ int id;
+
+ /**
+ * Content corresponding to the schema defined by the id.
+ */
+ byte[] content;
+}
diff --git a/automotive/telemetry/aidl/android/frameworks/automotive/telemetry/ICarTelemetry.aidl b/automotive/telemetry/aidl/android/frameworks/automotive/telemetry/ICarTelemetry.aidl
new file mode 100644
index 0000000..daf2d77
--- /dev/null
+++ b/automotive/telemetry/aidl/android/frameworks/automotive/telemetry/ICarTelemetry.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2021, 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.
+ */
+
+package android.frameworks.automotive.telemetry;
+
+import android.frameworks.automotive.telemetry.CarData;
+
+/**
+ * This service collects data from varios other services, buffers them, and delivers to the
+ * listening scripts running in CarTelemetryService.
+ */
+@VintfStability
+interface ICarTelemetry {
+ /**
+ * Sends a list of CarData to CarTelemetry.
+ *
+ * <p>Total `dataList` size is limited to 10KB, if it's larger than that, all the data is dropped.
+ * Note that Binder has 1MB data limit from all the clients combined, please keep that in
+ * mind when writing frequent data.
+ *
+ * @throws {@code Parcel#EX_ILLEGAL_ARGUMENT} if {@code dataList} is too large.
+ */
+ void write(in CarData[] dataList);
+}
diff --git a/bufferhub/1.0/Android.bp b/bufferhub/1.0/Android.bp
index 741709f..2c5aa0a 100644
--- a/bufferhub/1.0/Android.bp
+++ b/bufferhub/1.0/Android.bp
@@ -1,5 +1,9 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.bufferhub@1.0",
root: "android.frameworks",
@@ -15,4 +19,8 @@ hidl_interface {
"android.hidl.base@1.0",
],
gen_java: true,
+ apex_available: [
+ "com.android.media.swcodec",
+ "//apex_available:platform",
+ ],
}
diff --git a/bufferhub/1.0/README.md b/bufferhub/1.0/README.md
deleted file mode 100644
index bbc8a7b..0000000
--- a/bufferhub/1.0/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Why is this marked as '.hidl_for_test'?
-
-This is used to explicitly exclude the interface from the VNDK. Disallow direct vendor access
-as this interface should only be used by the Android platform. Vendors should use
-libnativewindow ll-ndk API to access BufferHub.
diff --git a/bufferhub/1.0/vts/functional/Android.bp b/bufferhub/1.0/vts/functional/Android.bp
index a5f8463..f936850 100644
--- a/bufferhub/1.0/vts/functional/Android.bp
+++ b/bufferhub/1.0/vts/functional/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_test {
name: "VtsHalBufferHubV1_0TargetTest",
defaults: [
@@ -43,4 +47,3 @@ cc_test {
"-g",
]
}
-
diff --git a/cameraservice/common/2.0/Android.bp b/cameraservice/common/2.0/Android.bp
index b58d2fc..507b22c 100644
--- a/cameraservice/common/2.0/Android.bp
+++ b/cameraservice/common/2.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.cameraservice.common@2.0",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"types.hal",
],
diff --git a/cameraservice/device/2.0/Android.bp b/cameraservice/device/2.0/Android.bp
index a37ac64..21162b7 100644
--- a/cameraservice/device/2.0/Android.bp
+++ b/cameraservice/device/2.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.cameraservice.device@2.0",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"types.hal",
"ICameraDeviceCallback.hal",
diff --git a/cameraservice/device/2.1/Android.bp b/cameraservice/device/2.1/Android.bp
new file mode 100644
index 0000000..dd819c9
--- /dev/null
+++ b/cameraservice/device/2.1/Android.bp
@@ -0,0 +1,19 @@
+// This file is autogenerated by hidl-gen -Landroidbp.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+hidl_interface {
+ name: "android.frameworks.cameraservice.device@2.1",
+ root: "android.frameworks",
+ srcs: [
+ "ICameraDeviceUser.hal",
+ ],
+ interfaces: [
+ "android.frameworks.cameraservice.common@2.0",
+ "android.frameworks.cameraservice.device@2.0",
+ "android.hidl.base@1.0",
+ ],
+ gen_java: false,
+}
diff --git a/cameraservice/device/2.1/ICameraDeviceUser.hal b/cameraservice/device/2.1/ICameraDeviceUser.hal
new file mode 100644
index 0000000..c99c027
--- /dev/null
+++ b/cameraservice/device/2.1/ICameraDeviceUser.hal
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.cameraservice.device@2.1;
+
+import android.frameworks.cameraservice.common@2.0::Status;
+import android.frameworks.cameraservice.device@2.0::ICameraDeviceUser;
+import android.frameworks.cameraservice.device@2.0::StreamConfigurationMode;
+import android.frameworks.cameraservice.device@2.0::CameraMetadata;
+
+interface ICameraDeviceUser extends @2.0::ICameraDeviceUser {
+
+ /**
+ * endConfigure_2_1:
+ *
+ * Identical to @2.0::ICameraDeviceUser::endConfigure(), except that
+ * it takes an extra startTimeNs parameter to indicate the timestamp when
+ * session configuration starts.
+ *
+ */
+ endConfigure_2_1(StreamConfigurationMode operatingMode,
+ CameraMetadata sessionParams, int64_t startTimeNs) generates (Status status);
+};
diff --git a/cameraservice/service/2.0/Android.bp b/cameraservice/service/2.0/Android.bp
index 8e04217..e2311f6 100644
--- a/cameraservice/service/2.0/Android.bp
+++ b/cameraservice/service/2.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.cameraservice.service@2.0",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"types.hal",
"ICameraService.hal",
diff --git a/cameraservice/service/2.1/Android.bp b/cameraservice/service/2.1/Android.bp
index a45b814..a1a7c73 100644
--- a/cameraservice/service/2.1/Android.bp
+++ b/cameraservice/service/2.1/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.cameraservice.service@2.1",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"types.hal",
"ICameraService.hal",
diff --git a/cameraservice/service/2.2/Android.bp b/cameraservice/service/2.2/Android.bp
new file mode 100644
index 0000000..e2482bf
--- /dev/null
+++ b/cameraservice/service/2.2/Android.bp
@@ -0,0 +1,22 @@
+// This file is autogenerated by hidl-gen -Landroidbp.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+hidl_interface {
+ name: "android.frameworks.cameraservice.service@2.2",
+ root: "android.frameworks",
+ srcs: [
+ "ICameraService.hal",
+ ],
+ interfaces: [
+ "android.frameworks.cameraservice.common@2.0",
+ "android.frameworks.cameraservice.device@2.0",
+ "android.frameworks.cameraservice.device@2.1",
+ "android.frameworks.cameraservice.service@2.0",
+ "android.frameworks.cameraservice.service@2.1",
+ "android.hidl.base@1.0",
+ ],
+ gen_java: false,
+}
diff --git a/cameraservice/service/2.2/ICameraService.hal b/cameraservice/service/2.2/ICameraService.hal
new file mode 100644
index 0000000..87ec225
--- /dev/null
+++ b/cameraservice/service/2.2/ICameraService.hal
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package android.frameworks.cameraservice.service@2.2;
+
+import android.frameworks.cameraservice.service@2.1::ICameraService;
+
+interface ICameraService extends @2.1::ICameraService {
+};
diff --git a/cameraservice/vts/functional/Android.bp b/cameraservice/vts/functional/Android.bp
index b45c61d..26c09ec 100644
--- a/cameraservice/vts/functional/Android.bp
+++ b/cameraservice/vts/functional/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_test {
name: "VtsHalCameraServiceV2_0TargetTest",
defaults: ["VtsHalTargetTestDefaults"],
@@ -22,8 +26,10 @@ cc_test {
static_libs: [
"android.hardware.camera.common@1.0-helper",
"android.frameworks.cameraservice.device@2.0",
+ "android.frameworks.cameraservice.device@2.1",
"android.frameworks.cameraservice.service@2.0",
"android.frameworks.cameraservice.service@2.1",
+ "android.frameworks.cameraservice.service@2.2",
"android.frameworks.cameraservice.common@2.0",
"libfmq",
],
@@ -39,10 +45,5 @@ cc_test {
// (http://b/123320603). This is needed for libmediandk's llndk only api.
"-D__ANDROID_VNDK__",
],
- auto_gen_config: true,
test_suites: ["vts"],
}
-
-vts_config {
- name: "VtsHalCameraServiceV2_0Target",
-}
diff --git a/cameraservice/vts/functional/AndroidTest.xml b/cameraservice/vts/functional/AndroidTest.xml
deleted file mode 100644
index 10b0925..0000000
--- a/cameraservice/vts/functional/AndroidTest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2019 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.
--->
-<configuration description="Config for VTS VtsHalCameraServiceV2_0* test cases">
- <option name="config-descriptor:metadata" key="plan" value="vts-treble" />
- <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
- <option name="abort-on-push-failure" value="false"/>
- <option name="push-group" value="HalHidlTargetTest.push"/>
- </target_preparer>
- <multi_target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
- <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
- <option name="test-module-name" value="VtsHalCameraServiceV2_0Target"/>
- <option name="binary-test-working-directory" value="_32bit::/data/nativetest/" />
- <option name="binary-test-working-directory" value="_64bit::/data/nativetest64/" />
- <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsHalCameraServiceV2_0TargetTest/VtsHalCameraServiceV2_0TargetTest" />
- <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsHalCameraServiceV2_0TargetTest/VtsHalCameraServiceV2_0TargetTest" />
- <option name="binary-test-type" value="gtest"/>
- <option name="test-timeout" value="5m"/>
- </test>
-</configuration>
diff --git a/cameraservice/vts/functional/VtsHalCameraServiceV2_0TargetTest.cpp b/cameraservice/vts/functional/VtsHalCameraServiceV2_0TargetTest.cpp
index 3ca7d75..b93cc70 100644
--- a/cameraservice/vts/functional/VtsHalCameraServiceV2_0TargetTest.cpp
+++ b/cameraservice/vts/functional/VtsHalCameraServiceV2_0TargetTest.cpp
@@ -18,6 +18,7 @@
//#define LOG_NDEBUG 0
#include <android/frameworks/cameraservice/device/2.0/ICameraDeviceUser.h>
+#include <android/frameworks/cameraservice/device/2.1/ICameraDeviceUser.h>
#include <android/frameworks/cameraservice/service/2.0/ICameraService.h>
#include <android/frameworks/cameraservice/service/2.1/ICameraService.h>
#include <system/camera_metadata.h>
@@ -536,6 +537,33 @@ TEST_P(VtsHalCameraServiceV2_0TargetTest, BasicCameraLifeCycleTest) {
statusRet = deviceRemote->deleteStream(streamId);
EXPECT_TRUE(statusRet.isOk() && statusRet == Status::NO_ERROR);
+ /**
+ * For camera device V2.1, test newly added functions.
+ * TODO: Refactor the device 2.1 test into a separate test for service 2.2.
+ */
+ auto castResult =
+ android::frameworks::cameraservice::device::V2_1::ICameraDeviceUser::castFrom(
+ deviceRemote);
+ sp<android::frameworks::cameraservice::device::V2_1::ICameraDeviceUser> deviceRemote2_1;
+ if (castResult.isOk()) {
+ deviceRemote2_1 = castResult;
+ }
+ if (deviceRemote2_1 != nullptr) {
+ // Reconfigure a capture session using v2.1 version of the device
+ ret = deviceRemote2_1->beginConfigure();
+ EXPECT_TRUE(ret.isOk() && ret == Status::NO_ERROR);
+ remoteRet =
+ deviceRemote2_1->createStream(output, [&status, &streamId](Status s, auto sId) {
+ status = s;
+ streamId = sId;
+ });
+ EXPECT_TRUE(remoteRet.isOk() && status == Status::NO_ERROR);
+ EXPECT_TRUE(streamId >= 0);
+ ret = deviceRemote2_1->endConfigure_2_1(StreamConfigurationMode::NORMAL_MODE,
+ hidlParams, systemTime());
+ EXPECT_TRUE(ret.isOk() && ret == Status::NO_ERROR);
+ }
+
remoteRet = deviceRemote->disconnect();
EXPECT_TRUE(remoteRet.isOk());
}
@@ -603,6 +631,7 @@ TEST_P(VtsHalCameraServiceV2_0TargetTest, CameraServiceListener2_1Test) {
EXPECT_TRUE(remoteStatus.isOk() && remoteStatus == Status::NO_ERROR);
}
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(VtsHalCameraServiceV2_0TargetTest);
INSTANTIATE_TEST_SUITE_P(
PerInstance, VtsHalCameraServiceV2_0TargetTest,
testing::ValuesIn(android::hardware::getAllHalInstanceNames(ICameraService::descriptor)),
diff --git a/current.txt b/current.txt
index 5a450a6..e106135 100644
--- a/current.txt
+++ b/current.txt
@@ -39,3 +39,9 @@ f5bcda0e55d2cf2a8f9d5ebc436d6f967e210835dc4ac4ea014cd12bc476639e android.framewo
392d98ed528ebd5ee14c9e65ef633cbbeeb33c74e5ab1be2cfd8a865ac4c9c86 android.frameworks.cameraservice.service@2.1::ICameraServiceListener
aedecd4d47697f0cc2d62e46ff7442bab2c4571237719f44b222bfdfcbd30d92 android.frameworks.cameraservice.service@2.1::types
fefd24d57da1924188e377073e9714dc03b6df181d581da1dab3651d45ebc3c9 android.frameworks.vr.composer@2.0::IVrComposerClient
+
+# HALs released in Android S
+3f47c629bee4057bd76e408bd335088b90f1f088c7ae73c703a75b812738d19e android.frameworks.cameraservice.device@2.1::ICameraDeviceUser
+2959b6f2b54e75c6965f6ddc90d4c8a0673d5585fa9aad2ab03f01f1b76b1945 android.frameworks.cameraservice.service@2.2::ICameraService
+
+# There should be no more HIDL HALs - please use AIDL instead.
diff --git a/displayservice/1.0/Android.bp b/displayservice/1.0/Android.bp
index 0ce1732..fa4a4b9 100644
--- a/displayservice/1.0/Android.bp
+++ b/displayservice/1.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.displayservice@1.0",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"types.hal",
"IDisplayEventReceiver.hal",
diff --git a/displayservice/1.0/vts/functional/Android.bp b/displayservice/1.0/vts/functional/Android.bp
index 40a9092..02f7c73 100644
--- a/displayservice/1.0/vts/functional/Android.bp
+++ b/displayservice/1.0/vts/functional/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_test {
name: "VtsFwkDisplayServiceV1_0TargetTest",
defaults: ["VtsHalTargetTestDefaults"],
@@ -29,4 +33,3 @@ cc_test {
],
test_suites: ["vts"],
}
-
diff --git a/displayservice/1.0/vts/functional/VtsFwkDisplayServiceV1_0TargetTest.cpp b/displayservice/1.0/vts/functional/VtsFwkDisplayServiceV1_0TargetTest.cpp
index e993882..da1fa34 100644
--- a/displayservice/1.0/vts/functional/VtsFwkDisplayServiceV1_0TargetTest.cpp
+++ b/displayservice/1.0/vts/functional/VtsFwkDisplayServiceV1_0TargetTest.cpp
@@ -162,6 +162,7 @@ TEST_P(DisplayServiceTest, TestVsync) {
EXPECT_BAD_VALUE(receiver->setVsyncRate(-1000));
}
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DisplayServiceTest);
INSTANTIATE_TEST_SUITE_P(
PerInstance, DisplayServiceTest,
testing::ValuesIn(android::hardware::getAllHalInstanceNames(IDisplayService::descriptor)),
diff --git a/schedulerservice/1.0/Android.bp b/schedulerservice/1.0/Android.bp
index 7dbfb17..1ee7dcf 100644
--- a/schedulerservice/1.0/Android.bp
+++ b/schedulerservice/1.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.schedulerservice@1.0",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"ISchedulingPolicyService.hal",
],
diff --git a/sensorservice/1.0/Android.bp b/sensorservice/1.0/Android.bp
index a7d6d50..3b2b73e 100644
--- a/sensorservice/1.0/Android.bp
+++ b/sensorservice/1.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.sensorservice@1.0",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"types.hal",
"IDirectReportChannel.hal",
diff --git a/sensorservice/1.0/vts/OWNERS b/sensorservice/1.0/vts/OWNERS
new file mode 100644
index 0000000..90c2330
--- /dev/null
+++ b/sensorservice/1.0/vts/OWNERS
@@ -0,0 +1,3 @@
+arthuri@google.com
+bduddie@google.com
+stange@google.com
diff --git a/sensorservice/1.0/vts/functional/Android.bp b/sensorservice/1.0/vts/functional/Android.bp
index cca3999..feb01ab 100644
--- a/sensorservice/1.0/vts/functional/Android.bp
+++ b/sensorservice/1.0/vts/functional/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_test {
name: "VtsHalSensorManagerV1_0TargetTest",
defaults: ["hidl_defaults"],
diff --git a/sensorservice/1.0/vts/functional/VtsHalSensorManagerV1_0TargetTest.cpp b/sensorservice/1.0/vts/functional/VtsHalSensorManagerV1_0TargetTest.cpp
index 02c0fc2..cd91647 100644
--- a/sensorservice/1.0/vts/functional/VtsHalSensorManagerV1_0TargetTest.cpp
+++ b/sensorservice/1.0/vts/functional/VtsHalSensorManagerV1_0TargetTest.cpp
@@ -289,6 +289,7 @@ TEST_P(SensorManagerTest, Accelerometer) {
}
}
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(SensorManagerTest);
INSTANTIATE_TEST_SUITE_P(
PerInstance, SensorManagerTest,
testing::ValuesIn(android::hardware::getAllHalInstanceNames(ISensorManager::descriptor)),
diff --git a/sensorservice/libsensorndkbridge/ALooper.h b/sensorservice/libsensorndkbridge/ALooper.h
index aa14e03..5fa2b62 100644
--- a/sensorservice/libsensorndkbridge/ALooper.h
+++ b/sensorservice/libsensorndkbridge/ALooper.h
@@ -37,7 +37,7 @@ struct ALooper {
void invalidateSensorQueue(android::wp<ASensorEventQueue> queue);
-private:
+ private:
android::Mutex mLock;
android::Condition mCondition;
diff --git a/sensorservice/libsensorndkbridge/Android.bp b/sensorservice/libsensorndkbridge/Android.bp
index a2b5061..33b9619 100644
--- a/sensorservice/libsensorndkbridge/Android.bp
+++ b/sensorservice/libsensorndkbridge/Android.bp
@@ -12,6 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_library_shared {
name: "libsensorndkbridge",
proprietary: true,
diff --git a/sensorservice/libsensorndkbridge/OWNERS b/sensorservice/libsensorndkbridge/OWNERS
new file mode 100644
index 0000000..90c2330
--- /dev/null
+++ b/sensorservice/libsensorndkbridge/OWNERS
@@ -0,0 +1,3 @@
+arthuri@google.com
+bduddie@google.com
+stange@google.com
diff --git a/stats/1.0/Android.bp b/stats/1.0/Android.bp
index aa4d500..5488b87 100644
--- a/stats/1.0/Android.bp
+++ b/stats/1.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.stats@1.0",
root: "android.frameworks",
- vndk: {
- enabled: true,
- },
srcs: [
"types.hal",
"IStats.hal",
diff --git a/stats/1.0/test_client/Android.bp b/stats/1.0/test_client/Android.bp
index 85d2882..6f323a1 100644
--- a/stats/1.0/test_client/Android.bp
+++ b/stats/1.0/test_client/Android.bp
@@ -1,3 +1,7 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_binary {
name: "stats_client",
srcs: [
@@ -11,4 +15,3 @@ cc_binary {
"android.frameworks.stats@1.0",
],
}
-
diff --git a/stats/1.0/test_client/README b/stats/1.0/test_client/README
index 73c9016..c50b34c 100644
--- a/stats/1.0/test_client/README
+++ b/stats/1.0/test_client/README
@@ -1,2 +1,18 @@
This client can be installed on the device to test accesses of the service as
it would be called from other clients.
+
+To install copy binary to /data/local/tmp
+
+Supported command line arguments:
+
+ -h or --help - shows help information
+ -S or --SpeakerImpedance
+ -f or --HardwareFailed
+ -p or --PhysicalDropDetected
+ -y or --ChargeCycles
+ -n or --BatteryHealthSnapshot
+ -i or --SlowIo
+ -s or --BatteryCausedShutdown
+ -u or --UsbPortOverheatEvent
+ -d or --SpeechDspStat
+ -v or --VendorAtom
diff --git a/stats/1.0/test_client/StatsClient.cpp b/stats/1.0/test_client/StatsClient.cpp
index b564161..5abaac0 100644
--- a/stats/1.0/test_client/StatsClient.cpp
+++ b/stats/1.0/test_client/StatsClient.cpp
@@ -42,6 +42,7 @@ void expect_message(int32_t action) {
void show_help() {
std::cout << "Stats HAL client\n";
std::cout << " arguments:\n";
+ std::cout << " -h or --help - shows help information\n";
std::cout << " -S or --SpeakerImpedance\n";
std::cout << " -f or --HardwareFailed\n";
std::cout << " -p or --PhysicalDropDetected\n";
@@ -74,12 +75,17 @@ int main(int argc, char* argv[]) {
{"UsbPortOverheatEvent", no_argument, 0, 'u'},
{"SpeechDspStat", no_argument, 0, 'd'},
{"VendorAtom", no_argument, 0, 'v'},
+ {"help", no_argument, 0, 'h'},
};
int c;
int hal_calls = 0;
- while ((c = getopt_long(argc, argv, "Sfpynisudv", opts, nullptr)) != -1) {
+ while ((c = getopt_long(argc, argv, "hSfpynisudv", opts, nullptr)) != -1) {
switch (c) {
+ case 'h': {
+ show_help();
+ break;
+ }
case 'S': {
SpeakerImpedance left_obj = {.speakerLocation = 0,
.milliOhms = static_cast<int32_t>(1234 * 1000)};
@@ -180,12 +186,14 @@ int main(int argc, char* argv[]) {
++hal_calls;
break;
}
+ default: {
+ show_help();
+ return 1;
+ }
}
}
- if (hal_calls == 0) {
- show_help();
- } else {
+ if (hal_calls > 0) {
std::cout << hal_calls << " HAL methods called.\n";
std::cout << "try: logcat | grep \"statsd.*0x1000\"\n";
}
diff --git a/stats/1.0/vts/functional/Android.bp b/stats/1.0/vts/functional/Android.bp
index 0d8a7fb..4259123 100644
--- a/stats/1.0/vts/functional/Android.bp
+++ b/stats/1.0/vts/functional/Android.bp
@@ -14,6 +14,10 @@
// limitations under the License.
//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
cc_test {
name: "VtsHalStatsV1_0TargetTest",
defaults: ["VtsHalTargetTestDefaults"],
diff --git a/stats/1.0/vts/functional/VtsHalStatsV1_0TargetTest.cpp b/stats/1.0/vts/functional/VtsHalStatsV1_0TargetTest.cpp
index 2aa675e..8a57955 100644
--- a/stats/1.0/vts/functional/VtsHalStatsV1_0TargetTest.cpp
+++ b/stats/1.0/vts/functional/VtsHalStatsV1_0TargetTest.cpp
@@ -48,7 +48,7 @@ class StatsHidlTest : public ::testing::TestWithParam<std::string> {
sp<IStats> client;
};
-// Sanity check IStats::reportSpeakerImpedance.
+// Validate IStats::reportSpeakerImpedance.
TEST_P(StatsHidlTest, reportSpeakerImpedance) {
SpeakerImpedance impedance = {.speakerLocation = 0,
.milliOhms = static_cast<int32_t>(1234 * 1000)};
@@ -57,7 +57,7 @@ TEST_P(StatsHidlTest, reportSpeakerImpedance) {
ASSERT_TRUE(ret.isOk());
}
-// Sanity check IStats::reportHardwareFailed.
+// Validate IStats::reportHardwareFailed.
TEST_P(StatsHidlTest, reportHardwareFailed) {
HardwareFailed failed = {.hardwareType = HardwareFailed::HardwareType::CODEC,
.hardwareLocation = 0,
@@ -68,7 +68,7 @@ TEST_P(StatsHidlTest, reportHardwareFailed) {
ASSERT_TRUE(ret.isOk());
}
-// Sanity check IStats::reportChargeCycles.
+// Validate IStats::reportChargeCycles.
TEST_P(StatsHidlTest, reportChargeCycles) {
std::vector<int> charge_cycles = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ChargeCycles cycles;
@@ -79,7 +79,7 @@ TEST_P(StatsHidlTest, reportChargeCycles) {
ASSERT_TRUE(ret.isOk());
}
-// Sanity check IStats::reportBatteryHealthSnapshot.
+// Validate IStats::reportBatteryHealthSnapshot.
TEST_P(StatsHidlTest, reportBatteryHealthSnapshot) {
BatteryHealthSnapshotArgs args{.temperatureDeciC = 3000,
.voltageMicroV = 1,
@@ -94,7 +94,7 @@ TEST_P(StatsHidlTest, reportBatteryHealthSnapshot) {
ASSERT_TRUE(ret.isOk());
}
-// Sanity check IStats::reportSlowIo.
+// Validate IStats::reportSlowIo.
TEST_P(StatsHidlTest, reportSlowIo) {
SlowIo slowio = {.operation = SlowIo::IoOperation::READ, .count = 5};
@@ -104,7 +104,7 @@ TEST_P(StatsHidlTest, reportSlowIo) {
ASSERT_TRUE(ret.isOk());
}
-// Sanity check IStats::reportBatteryCausedShutdown.
+// Validate IStats::reportBatteryCausedShutdown.
TEST_P(StatsHidlTest, reportBatteryCausedShutdown) {
BatteryCausedShutdown shutdown = {.voltageMicroV = 3};
@@ -113,7 +113,7 @@ TEST_P(StatsHidlTest, reportBatteryCausedShutdown) {
ASSERT_TRUE(ret.isOk());
}
-// Sanity check IStats::reportUsbPortOverheatEvent.
+// Validate IStats::reportUsbPortOverheatEvent.
TEST_P(StatsHidlTest, reportUsbPortOverheatEvent) {
UsbPortOverheatEvent event = {.plugTemperatureDeciC = 210,
.maxTemperatureDeciC = 220,
@@ -126,7 +126,7 @@ TEST_P(StatsHidlTest, reportUsbPortOverheatEvent) {
ASSERT_TRUE(ret.isOk());
}
-// Sanity check IStats::reportVendorAtom.
+// Validate IStats::reportVendorAtom.
TEST_P(StatsHidlTest, reportVendorAtom) {
std::vector<Value> values;
Value tmp;
@@ -147,6 +147,7 @@ TEST_P(StatsHidlTest, reportVendorAtom) {
ASSERT_TRUE(ret.isOk());
}
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(StatsHidlTest);
INSTANTIATE_TEST_SUITE_P(
PerInstance, StatsHidlTest,
testing::ValuesIn(android::hardware::getAllHalInstanceNames(IStats::descriptor)),
diff --git a/stats/aidl/Android.bp b/stats/aidl/Android.bp
new file mode 100644
index 0000000..364e1f2
--- /dev/null
+++ b/stats/aidl/Android.bp
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2021 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.
+//
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+aidl_interface {
+ name: "android.frameworks.stats",
+ vendor_available: true,
+ srcs: ["android/frameworks/stats/*.aidl"],
+ stability: "vintf",
+ backend: {
+ cpp: {
+ enabled: false,
+ },
+ java: {
+ enabled: true,
+ platform_apis: true,
+ },
+ ndk: {
+ enabled: true,
+ },
+ },
+ versions: ["1"],
+}
diff --git a/stats/aidl/aidl_api/android.frameworks.stats/1/.hash b/stats/aidl/aidl_api/android.frameworks.stats/1/.hash
new file mode 100644
index 0000000..2291282
--- /dev/null
+++ b/stats/aidl/aidl_api/android.frameworks.stats/1/.hash
@@ -0,0 +1 @@
+ee0b303cae7889e83a6a198c9b33781ad74ae633
diff --git a/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/IStats.aidl b/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/IStats.aidl
new file mode 100644
index 0000000..5be1d2f
--- /dev/null
+++ b/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/IStats.aidl
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2021 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.stats;
+@VintfStability
+interface IStats {
+ oneway void reportVendorAtom(in android.frameworks.stats.VendorAtom vendorAtom);
+}
diff --git a/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/VendorAtom.aidl b/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/VendorAtom.aidl
new file mode 100644
index 0000000..c91e4e0
--- /dev/null
+++ b/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/VendorAtom.aidl
@@ -0,0 +1,40 @@
+//
+// Copyright (C) 2021 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.stats;
+@VintfStability
+parcelable VendorAtom {
+ String reverseDomainName;
+ int atomId;
+ android.frameworks.stats.VendorAtomValue[] values;
+}
diff --git a/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/VendorAtomValue.aidl b/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/VendorAtomValue.aidl
new file mode 100644
index 0000000..31f26f7
--- /dev/null
+++ b/stats/aidl/aidl_api/android.frameworks.stats/1/android/frameworks/stats/VendorAtomValue.aidl
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2021 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.stats;
+@VintfStability
+union VendorAtomValue {
+ int intValue;
+ long longValue;
+ float floatValue;
+ String stringValue;
+}
diff --git a/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/IStats.aidl b/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/IStats.aidl
new file mode 100644
index 0000000..5be1d2f
--- /dev/null
+++ b/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/IStats.aidl
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2021 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.stats;
+@VintfStability
+interface IStats {
+ oneway void reportVendorAtom(in android.frameworks.stats.VendorAtom vendorAtom);
+}
diff --git a/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/VendorAtom.aidl b/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/VendorAtom.aidl
new file mode 100644
index 0000000..c91e4e0
--- /dev/null
+++ b/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/VendorAtom.aidl
@@ -0,0 +1,40 @@
+//
+// Copyright (C) 2021 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.stats;
+@VintfStability
+parcelable VendorAtom {
+ String reverseDomainName;
+ int atomId;
+ android.frameworks.stats.VendorAtomValue[] values;
+}
diff --git a/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/VendorAtomValue.aidl b/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/VendorAtomValue.aidl
new file mode 100644
index 0000000..31f26f7
--- /dev/null
+++ b/stats/aidl/aidl_api/android.frameworks.stats/current/android/frameworks/stats/VendorAtomValue.aidl
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2021 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 FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+// the interface (from the latest frozen version), the build system will
+// prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.frameworks.stats;
+@VintfStability
+union VendorAtomValue {
+ int intValue;
+ long longValue;
+ float floatValue;
+ String stringValue;
+}
diff --git a/stats/aidl/android/frameworks/stats/IStats.aidl b/stats/aidl/android/frameworks/stats/IStats.aidl
new file mode 100644
index 0000000..8ccd41d
--- /dev/null
+++ b/stats/aidl/android/frameworks/stats/IStats.aidl
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2021 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.
+//
+package android.frameworks.stats;
+
+import android.frameworks.stats.VendorAtom;
+
+/**
+ * IStats is an interface that allows clients to report specific hardware
+ * reliability events, which are translated into calls for the client to accept.
+ */
+@VintfStability
+interface IStats {
+ /**
+ * Report a custom vendor atom.
+ *
+ * @param VendorAtom A VendorAtom struct that specifies the atom ID, field
+ * types, and data from the client that must be logged in statsd.
+ * Whether or not the atom is uploaded must be determined by the
+ * atom ID and server-side configs.
+ */
+ oneway void reportVendorAtom(in VendorAtom vendorAtom);
+}
diff --git a/stats/aidl/android/frameworks/stats/VendorAtom.aidl b/stats/aidl/android/frameworks/stats/VendorAtom.aidl
new file mode 100644
index 0000000..9f34395
--- /dev/null
+++ b/stats/aidl/android/frameworks/stats/VendorAtom.aidl
@@ -0,0 +1,54 @@
+//
+// Copyright (C) 2021 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.
+//
+package android.frameworks.stats;
+
+import android.frameworks.stats.VendorAtomValue;
+
+/*
+ * Generic vendor atom that allows dynamically allocated atoms to be uploaded
+ * through statsd.
+ *
+ * Here's an example that uses this struct:
+ * VendorAtom atom = {
+ * .atomId = 100000,
+ * .values = {2, 70000, 5.2, 4, "a"}
+ * };
+ *
+ * The resulting LogEvent must have the following fields:
+ * Index Value
+ * 0x1 2
+ * 0x2 70000
+ * 0x3 5.2
+ * 0x4 4
+ * 0x5 "a"
+ */
+@VintfStability
+parcelable VendorAtom {
+ /**
+ * Vendor or OEM reverse domain name. Must be less than 50 characters.
+ * Ex. "com.google.pixel"
+ */
+ String reverseDomainName;
+ /*
+ * Atom ID. Must be between 100,000 - 199,999 to indicate non-AOSP field.
+ */
+ int atomId;
+ /*
+ * Vector of fields in the order that the LogEvent should be filled.
+ */
+ VendorAtomValue[] values;
+}
+
diff --git a/stats/aidl/android/frameworks/stats/VendorAtomValue.aidl b/stats/aidl/android/frameworks/stats/VendorAtomValue.aidl
new file mode 100644
index 0000000..9ae0372
--- /dev/null
+++ b/stats/aidl/android/frameworks/stats/VendorAtomValue.aidl
@@ -0,0 +1,27 @@
+//
+// Copyright (C) 2021 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.
+//
+package android.frameworks.stats;
+
+/*
+ * Supported field types for this struct.
+ */
+@VintfStability
+union VendorAtomValue {
+ int intValue;
+ long longValue;
+ float floatValue;
+ String stringValue;
+}
diff --git a/stats/aidl/test_client/AidlStatsClient.cpp b/stats/aidl/test_client/AidlStatsClient.cpp
new file mode 100644
index 0000000..2f8cd89
--- /dev/null
+++ b/stats/aidl/test_client/AidlStatsClient.cpp
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+#include <aidl/android/frameworks/stats/IStats.h>
+
+#include <android/binder_manager.h>
+
+#include <statslog.h>
+
+#include <getopt.h>
+#include <iostream>
+
+using aidl::android::frameworks::stats::IStats;
+using aidl::android::frameworks::stats::VendorAtom;
+using aidl::android::frameworks::stats::VendorAtomValue;
+
+void expect_message(int32_t action) {
+ std::cout << "expect the following log in logcat:\n";
+ std::cout << "statsd.*(" << action << ")0x10000->\n";
+}
+
+void show_help() {
+ std::cout << "AIDL Stats HAL client\n";
+ std::cout << " arguments:\n";
+ std::cout << " -h or --help - shows help information\n";
+ std::cout << " -v or --VendorAtom - tests report reportVendorAtom API\n";
+ std::cout << "Please enable statsd logging using 'cmd stats print-logs'";
+ std::cout << "\n\n you can use multiple arguments to trigger multiple events.\n";
+}
+
+int main(int argc, char* argv[]) {
+ // get instance of the aidl version
+ const std::string instance = std::string() + IStats::descriptor + "/default";
+ std::shared_ptr<IStats> service =
+ IStats::fromBinder(ndk::SpAIBinder(AServiceManager_getService(instance.c_str())));
+ if (!service) {
+ std::cerr << "No Stats aidl HAL";
+ return 1;
+ }
+
+ std::cout << "Service instance obtained : " << instance << std::endl;
+
+ static struct option opts[] = {
+ {"VendorAtom", no_argument, 0, 'v'},
+ {"help", no_argument, 0, 'h'},
+ };
+
+ int c;
+ int hal_calls = 0;
+ int failed_calls = 0;
+ while ((c = getopt_long(argc, argv, "vh", opts, nullptr)) != -1) {
+ switch (c) {
+ case 'h': {
+ show_help();
+ break;
+ }
+ case 'v': {
+ std::vector<VendorAtomValue> values;
+ VendorAtomValue tmp;
+ tmp.set<VendorAtomValue::longValue>(70000);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(7);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::floatValue>(8.5);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::stringValue>("test");
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(3);
+ values.push_back(tmp);
+ VendorAtom atom = {
+ .reverseDomainName = "com.google.pixel", .atomId = 100001, .values = values};
+ const ndk::ScopedAStatus ret = service->reportVendorAtom(atom);
+ if (!ret.isOk()) {
+ std::cout << "reportVendorAtom failed: " << ret.getServiceSpecificError()
+ << ". Message: " << ret.getMessage() << std::endl;
+ ++failed_calls;
+ }
+ ++hal_calls;
+ break;
+ }
+ default: {
+ show_help();
+ return 1;
+ }
+ }
+ }
+
+ if (hal_calls > 0) {
+ std::cout << hal_calls << " HAL methods called.\n";
+ std::cout << "try: logcat | grep \"statsd.*0x1000\"\n";
+ }
+
+ return failed_calls;
+}
diff --git a/stats/aidl/test_client/Android.bp b/stats/aidl/test_client/Android.bp
new file mode 100644
index 0000000..c2afd6f
--- /dev/null
+++ b/stats/aidl/test_client/Android.bp
@@ -0,0 +1,40 @@
+//
+// Copyright (C) 2021 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 client can be installed on the device to test accesses of the AIDL service as
+// it would be called from other clients.
+// To install copy binary to /data/local/tmp
+//
+// Supported command line arguments:
+// -h or --help - shows help information
+// -v or --VendorAtom - tests report reportVendorAtom API
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_binary {
+ name: "aidl_stats_client",
+ srcs: [
+ "AidlStatsClient.cpp",
+ ],
+ shared_libs: [
+ "android.frameworks.stats-V1-ndk_platform",
+ "libbase",
+ "libbinder_ndk",
+ "libutils",
+ "libstatslog",
+ ],
+}
diff --git a/stats/aidl/test_client/README b/stats/aidl/test_client/README
new file mode 100644
index 0000000..27e8c72
--- /dev/null
+++ b/stats/aidl/test_client/README
@@ -0,0 +1,8 @@
+This client can be installed on the device to test accesses of the AIDL service as
+it would be called from other clients.
+
+To install copy binary to /data/local/tmp
+
+Supported command line arguments:
+ -h or --help - shows help information
+ -v or --VendorAtom - tests report reportVendorAtom API
diff --git a/stats/aidl/vts/functional/Android.bp b/stats/aidl/vts/functional/Android.bp
new file mode 100644
index 0000000..e0663bd
--- /dev/null
+++ b/stats/aidl/vts/functional/Android.bp
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2021 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.
+//
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+ name: "VtsAidlHalStatsTargetTest",
+ defaults: [
+ "VtsHalTargetTestDefaults",
+ "use_libaidlvintf_gtest_helper_static",
+ ],
+ srcs: [
+ "VtsHalStatsTargetTest.cpp"
+ ],
+ shared_libs: [
+ "libbinder_ndk",
+ "libvndksupport",
+ ],
+ static_libs: [
+ "android.frameworks.stats-V1-ndk_platform",
+ ],
+ test_suites: [
+ "general-tests",
+ "vts"
+ ],
+}
diff --git a/stats/aidl/vts/functional/VtsHalStatsTargetTest.cpp b/stats/aidl/vts/functional/VtsHalStatsTargetTest.cpp
new file mode 100644
index 0000000..ac46f49
--- /dev/null
+++ b/stats/aidl/vts/functional/VtsHalStatsTargetTest.cpp
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2021 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 "VtsAidlHalStatsTest"
+
+#include <aidl/Gtest.h>
+#include <aidl/Vintf.h>
+
+#include <aidl/android/frameworks/stats/IStats.h>
+#include <android/binder_manager.h>
+#include <android/log.h>
+
+using aidl::android::frameworks::stats::IStats;
+using aidl::android::frameworks::stats::VendorAtom;
+using aidl::android::frameworks::stats::VendorAtomValue;
+
+class StatsAidlTest : public ::testing::TestWithParam<std::string> {
+ public:
+ virtual void SetUp() override {
+ ndk::SpAIBinder binder(AServiceManager_getService(GetParam().c_str()));
+ client = IStats::fromBinder(binder);
+ ASSERT_NE(client, nullptr);
+ }
+
+ virtual void TearDown() override {}
+
+ std::shared_ptr<IStats> client;
+};
+
+// Validate IStats::reportVendorAtom.
+TEST_P(StatsAidlTest, reportVendorAtom) {
+ std::vector<VendorAtomValue> values;
+ VendorAtomValue tmp;
+ tmp.set<VendorAtomValue::longValue>(70000);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(7);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::floatValue>(8.5);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::stringValue>("test");
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(3);
+ values.push_back(tmp);
+ VendorAtom atom = {.reverseDomainName = "com.google.pixel", .atomId = 100001, .values = values};
+ const ndk::ScopedAStatus ret = client->reportVendorAtom(atom);
+
+ ASSERT_TRUE(ret.isOk());
+}
+
+// Validate IStats::reportVendorAtom - this is a negative test - the error is dumped to logcat
+// Due to the AIDL reportVendorAtom is oneway API - the return code is not returned to the client
+TEST_P(StatsAidlTest, reportVendorAtomInvalidAtomIdLow) {
+ std::vector<VendorAtomValue> values;
+ VendorAtomValue tmp;
+ tmp.set<VendorAtomValue::longValue>(70000);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(7);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::floatValue>(8.5);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::stringValue>("test");
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(3);
+ values.push_back(tmp);
+ VendorAtom atom = {.reverseDomainName = "com.google.pixel", .atomId = 1000, .values = values};
+ const ndk::ScopedAStatus ret = client->reportVendorAtom(atom);
+
+ ASSERT_TRUE(ret.isOk());
+}
+
+// Validate IStats::reportVendorAtom - this is a negative test - the error is dumped to logcat
+// Due to the AIDL reportVendorAtom is oneway API - the return code is not returned to the client
+TEST_P(StatsAidlTest, reportVendorAtomInvalidAtomIdHigh) {
+ std::vector<VendorAtomValue> values;
+ VendorAtomValue tmp;
+ tmp.set<VendorAtomValue::longValue>(70000);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(7);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::floatValue>(8.5);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::stringValue>("test");
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(3);
+ values.push_back(tmp);
+ VendorAtom atom = {.reverseDomainName = "com.google.pixel", .atomId = 300001, .values = values};
+ const ndk::ScopedAStatus ret = client->reportVendorAtom(atom);
+
+ ASSERT_TRUE(ret.isOk());
+}
+
+// Validate IStats::reportVendorAtom - this is a negative test - the error is dumped to logcat
+// Due to the AIDL reportVendorAtom is oneway API - the return code is not returned to the client
+TEST_P(StatsAidlTest, reportVendorAtomInvalidDomainNameTooLong) {
+ std::vector<VendorAtomValue> values;
+ VendorAtomValue tmp;
+ tmp.set<VendorAtomValue::longValue>(70000);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(7);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::floatValue>(8.5);
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::stringValue>("test");
+ values.push_back(tmp);
+ tmp.set<VendorAtomValue::intValue>(3);
+ values.push_back(tmp);
+ VendorAtom atom = {.reverseDomainName = "com.google.pixel.SubDomainName.SubDomainName.Domain",
+ .atomId = 100001,
+ .values = values};
+ const ndk::ScopedAStatus ret = client->reportVendorAtom(atom);
+
+ ASSERT_TRUE(ret.isOk());
+}
+
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(StatsAidlTest);
+INSTANTIATE_TEST_SUITE_P(PerInstance, StatsAidlTest,
+ testing::ValuesIn(android::getAidlHalInstanceNames(IStats::descriptor)),
+ android::PrintInstanceNameToString);
diff --git a/vr/composer/1.0/Android.bp b/vr/composer/1.0/Android.bp
index e064ba5..3c91185 100644
--- a/vr/composer/1.0/Android.bp
+++ b/vr/composer/1.0/Android.bp
@@ -1,11 +1,12 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.vr.composer@1.0",
root: "android.frameworks",
- vndk: {
- enabled: false,
- },
srcs: [
"IVrComposerClient.hal",
],
diff --git a/bufferhub/1.0/.hidl_for_test b/vr/composer/2.0/.hidl_for_system_ext
index e69de29..e69de29 100644
--- a/bufferhub/1.0/.hidl_for_test
+++ b/vr/composer/2.0/.hidl_for_system_ext
diff --git a/vr/composer/2.0/Android.bp b/vr/composer/2.0/Android.bp
index d1d5632..83e4a3b 100644
--- a/vr/composer/2.0/Android.bp
+++ b/vr/composer/2.0/Android.bp
@@ -1,11 +1,13 @@
// This file is autogenerated by hidl-gen -Landroidbp.
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
hidl_interface {
name: "android.frameworks.vr.composer@2.0",
root: "android.frameworks",
- vndk: {
- enabled: false,
- },
+ system_ext_specific: true,
srcs: [
"IVrComposerClient.hal",
],