diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-06-23 02:35:46 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-06-23 02:35:46 +0000 |
commit | 21814a49d70761a4bd0cb46bfe4f3f73e5c4557d (patch) | |
tree | 587d909e49ef45644058b8ddb4b3e32b07d3a944 | |
parent | 90a7329a54a104089169c75f189c252113156d55 (diff) | |
parent | 71fd7608ce17ec9c55fbaaf89e52bdb563ea4e2c (diff) | |
download | interfaces-android-mainline-12.0.0_r92.tar.gz |
Snap for 7483611 from 71fd7608ce17ec9c55fbaaf89e52bdb563ea4e2c to mainline-neuralnetworks-releaseandroid-mainline-12.0.0_r92android-mainline-12.0.0_r78android-mainline-12.0.0_r50android-mainline-12.0.0_r33android-mainline-12.0.0_r3android12-mainline-neuralnetworks-release
Change-Id: I69545a1ebf67a0f62c15a218cbf1662065c451cc
89 files changed, 2337 insertions, 104 deletions
@@ -1,3 +1,7 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + hidl_package_root { name: "android.frameworks", } @@ -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", ], |