summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2024-01-17 22:14:14 -0800
committerXin Li <delphij@google.com>2024-01-17 22:14:14 -0800
commit277caa5369e4e1421860f18959e9ea436e54467a (patch)
treeb43810650541178970ab550717b6aecfd3d3b38e
parent6d4d0dca074701ceb68ea18be0a4b9364dc57a0d (diff)
parent026d7741ca2e39da06fd47b7f6dfb62db799d3db (diff)
downloadinterfaces-277caa5369e4e1421860f18959e9ea436e54467a.tar.gz
Merge Android 24Q1 Release (ab/11220357)temp_319669529
Bug: 319669529 Merged-In: I381a0edece5a2241b8e88442945df15006874e8a Change-Id: I0d7672162e9e4719d4cd727f2b4969dbfec93b1d
-rw-r--r--bluetooth/bt_channel_avoidance/aidl/Android.bp30
-rw-r--r--bluetooth/bt_channel_avoidance/aidl/OWNERS2
-rw-r--r--bluetooth/bt_channel_avoidance/aidl/aidl_api/hardware.google.bluetooth.bt_channel_avoidance/current/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl40
-rw-r--r--bluetooth/bt_channel_avoidance/aidl/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl36
-rw-r--r--bluetooth/bt_channel_avoidance/aidl/vts/Android.bp28
-rw-r--r--bluetooth/bt_channel_avoidance/aidl/vts/VtsHalBTChannelAvoidanceTargetTest.cpp76
-rw-r--r--bluetooth/bt_channel_avoidance/aidl/vts/VtsHalBTChannelAvoidanceTargetTest.xml41
-rw-r--r--bluetooth/ccc/aidl/Android.bp7
-rw-r--r--bluetooth/ccc/aidl/vts/Android.bp44
-rw-r--r--bluetooth/ccc/aidl/vts/OWNERS2
-rw-r--r--bluetooth/ccc/aidl/vts/VtsHalBluetoothCccTargetTest.cpp121
-rw-r--r--bluetooth/ccc/aidl/vts/VtsHalBluetoothCccTargetTest.xml32
-rw-r--r--bluetooth/ewp/aidl/Android.bp30
-rw-r--r--bluetooth/ewp/aidl/OWNERS2
-rw-r--r--bluetooth/ewp/aidl/aidl_api/hardware.google.bluetooth.ewp/current/hardware/google/bluetooth/ewp/IBluetoothEwp.aidl41
-rw-r--r--bluetooth/ewp/aidl/hardware/google/bluetooth/ewp/IBluetoothEwp.aidl35
-rw-r--r--bluetooth/ewp/aidl/vts/Android.bp29
-rw-r--r--bluetooth/ewp/aidl/vts/VtsHalBluetoothEwpTargetTest.cpp86
-rw-r--r--bluetooth/ewp/aidl/vts/VtsHalBluetoothEwpTargetTest.xml42
-rw-r--r--bluetooth/ext/aidl/Android.bp30
-rw-r--r--bluetooth/ext/aidl/OWNERS2
-rw-r--r--bluetooth/ext/aidl/aidl_api/hardware.google.bluetooth.ext/current/hardware/google/bluetooth/ext/IBluetoothExt.aidl40
-rw-r--r--bluetooth/ext/aidl/hardware/google/bluetooth/ext/IBluetoothExt.aidl31
-rw-r--r--bluetooth/ext/aidl/vts/Android.bp27
-rw-r--r--bluetooth/ext/aidl/vts/VtsHalBluetoothExtTargetTest.cpp83
-rw-r--r--bluetooth/ext/aidl/vts/VtsHalBluetoothExtTargetTest.xml41
-rw-r--r--bluetooth/sar/aidl/Android.bp15
-rw-r--r--bluetooth/sar/aidl/OWNERS2
-rw-r--r--bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/1/.hash1
-rw-r--r--bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/1/hardware/google/bluetooth/sar/IBluetoothSar.aidl42
-rw-r--r--bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/current/hardware/google/bluetooth/sar/IBluetoothSar.aidl2
-rw-r--r--bluetooth/sar/aidl/hardware/google/bluetooth/sar/IBluetoothSar.aidl2
-rw-r--r--bluetooth/sar/aidl/vts/Android.bp28
-rw-r--r--bluetooth/sar/aidl/vts/VtsHalBluetoothSarTargetTest.cpp137
-rw-r--r--bluetooth/sar/aidl/vts/VtsHalBluetoothSarTargetTest.xml42
-rw-r--r--display/Android.bp27
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/.hash1
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HbmState.aidl40
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramCapability.aidl43
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramConfig.aidl41
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramErrorCode.aidl51
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramPos.aidl39
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramSamplePos.aidl39
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/IDisplay.aidl62
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/LbeState.aidl42
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/PanelCalibrationStatus.aidl40
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/Priority.aidl39
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/Weight.aidl40
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramCapability.aidl1
-rw-r--r--display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramConfig.aidl1
-rw-r--r--display/com/google/hardware/pixel/display/HistogramCapability.aidl6
-rw-r--r--display/com/google/hardware/pixel/display/HistogramConfig.aidl13
-rw-r--r--ril_ext/Android.bp8
-rw-r--r--ril_ext/aidl_api/hardware.google.ril_ext/1/.hash1
-rw-r--r--ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/CarrierConfig.aidl49
-rw-r--r--ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExt.aidl40
-rw-r--r--ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExtIndication.aidl39
-rw-r--r--ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExtResponse.aidl39
-rw-r--r--ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/RilError.aidl41
-rw-r--r--ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/RilResponseInfo.aidl39
60 files changed, 2018 insertions, 12 deletions
diff --git a/bluetooth/bt_channel_avoidance/aidl/Android.bp b/bluetooth/bt_channel_avoidance/aidl/Android.bp
new file mode 100644
index 0000000..9895232
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/aidl/Android.bp
@@ -0,0 +1,30 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+aidl_interface {
+ name: "hardware.google.bluetooth.bt_channel_avoidance",
+ owner: "google",
+ vendor_available: true,
+ srcs: [
+ "hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl",
+ ],
+ stability: "vintf",
+
+ backend: {
+ cpp: {
+ enabled: true,
+ },
+ java: {
+ platform_apis: true,
+ },
+ ndk: {
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.btservices",
+ ],
+ min_sdk_version: "33",
+ },
+ },
+}
diff --git a/bluetooth/bt_channel_avoidance/aidl/OWNERS b/bluetooth/bt_channel_avoidance/aidl/OWNERS
new file mode 100644
index 0000000..e406ad5
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/aidl/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 27441
+tiand@google.com
diff --git a/bluetooth/bt_channel_avoidance/aidl/aidl_api/hardware.google.bluetooth.bt_channel_avoidance/current/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl b/bluetooth/bt_channel_avoidance/aidl/aidl_api/hardware.google.bluetooth.bt_channel_avoidance/current/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl
new file mode 100644
index 0000000..afd2053
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/aidl/aidl_api/hardware.google.bluetooth.bt_channel_avoidance/current/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *//**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// 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 hardware.google.bluetooth.bt_channel_avoidance;
+@VintfStability
+interface IBTChannelAvoidance {
+ oneway void setBluetoothChannelStatus(in byte[10] channelMap);
+}
diff --git a/bluetooth/bt_channel_avoidance/aidl/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl b/bluetooth/bt_channel_avoidance/aidl/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl
new file mode 100644
index 0000000..425e315
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/aidl/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.aidl
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+package hardware.google.bluetooth.bt_channel_avoidance;
+
+@VintfStability
+interface IBTChannelAvoidance {
+ /**
+ * API to set Bluetooth channel map.
+ *
+ * This API must be invoked whenever the Bluetooth channel map needs to be
+ * changed because Bluetooth channels have conflict with wifi or cellular.
+ *
+ * @param channelMap The lower 79 bits of the 80-bit parameter represents
+ * the status of 79 channels. 0 means the channel is bad and 1 means
+ * unknown. The most significant bit (bit 79) is reserved for future
+ * use.
+ */
+ oneway void setBluetoothChannelStatus(in byte[10] channelMap);
+}
diff --git a/bluetooth/bt_channel_avoidance/aidl/vts/Android.bp b/bluetooth/bt_channel_avoidance/aidl/vts/Android.bp
new file mode 100644
index 0000000..be2a6f6
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/aidl/vts/Android.bp
@@ -0,0 +1,28 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+ name: "VtsHalBTChannelAvoidanceTargetTest",
+ defaults: [
+ "use_libaidlvintf_gtest_helper_static",
+ ],
+ srcs: ["VtsHalBTChannelAvoidanceTargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "libbinder_ndk",
+ "liblog",
+ "libutils",
+ "//hardware/google/interfaces:hardware.google.bluetooth.bt_channel_avoidance-V1-ndk",
+ ],
+ static_libs: [
+ "libbluetooth-types",
+ ],
+ test_config: "VtsHalBTChannelAvoidanceTargetTest.xml",
+ test_suites: [
+ "general-tests",
+ "vts",
+ ],
+}
diff --git a/bluetooth/bt_channel_avoidance/aidl/vts/VtsHalBTChannelAvoidanceTargetTest.cpp b/bluetooth/bt_channel_avoidance/aidl/vts/VtsHalBTChannelAvoidanceTargetTest.cpp
new file mode 100644
index 0000000..e6d8f14
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/aidl/vts/VtsHalBTChannelAvoidanceTargetTest.cpp
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2023 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 <aidl/hardware/google/bluetooth/bt_channel_avoidance/IBTChannelAvoidance.h>
+#include <android/binder_auto_utils.h>
+#include <android/binder_manager.h>
+#include <android/binder_process.h>
+#include <binder/IServiceManager.h>
+#include <binder/ProcessState.h>
+
+using aidl::hardware::google::bluetooth::bt_channel_avoidance::IBTChannelAvoidance;
+using ndk::ScopedAStatus;
+using ndk::SpAIBinder;
+
+class BTChannelAvoidanceTest : public ::testing::TestWithParam<std::string> {
+public:
+ virtual void SetUp() override;
+ virtual void TearDown() override;
+
+ ndk::ScopedAStatus setBluetoothChannelStatus(const std::array<uint8_t, 10>& channel_map);
+
+private:
+ std::shared_ptr<IBTChannelAvoidance> bt_channel_avoidance_;
+};
+
+void BTChannelAvoidanceTest::SetUp() {
+ ALOGI("SetUp Bluetooth Channel Avoidance Test");
+ bt_channel_avoidance_ = IBTChannelAvoidance::fromBinder(
+ ndk::SpAIBinder(AServiceManager_waitForService(GetParam().c_str())));
+ ASSERT_NE(bt_channel_avoidance_, nullptr);
+}
+
+void BTChannelAvoidanceTest::TearDown() {
+ ALOGI("TearDown Bluetooth Channel Avoidance Test");
+ bt_channel_avoidance_ = nullptr;
+ ASSERT_EQ(bt_channel_avoidance_, nullptr);
+}
+
+ndk::ScopedAStatus BTChannelAvoidanceTest::setBluetoothChannelStatus(const std::array<uint8_t, 10>& channel_map) {
+ return bt_channel_avoidance_->setBluetoothChannelStatus(channel_map);
+}
+
+TEST_P(BTChannelAvoidanceTest, setBluetoothChannelStatus) {
+ std::array<uint8_t, 10> channel_map = {127, 255, 255, 255, 255, 255, 255, 0, 0, 15};
+ ndk::ScopedAStatus status = setBluetoothChannelStatus(channel_map);
+ ASSERT_TRUE(status.isOk());
+}
+
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BTChannelAvoidanceTest);
+INSTANTIATE_TEST_SUITE_P(PerInstance, BTChannelAvoidanceTest,
+ testing::ValuesIn(android::getAidlHalInstanceNames(
+ IBTChannelAvoidance::descriptor)),
+ android::PrintInstanceNameToString);
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ABinderProcess_startThreadPool();
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
+}
+
diff --git a/bluetooth/bt_channel_avoidance/aidl/vts/VtsHalBTChannelAvoidanceTargetTest.xml b/bluetooth/bt_channel_avoidance/aidl/vts/VtsHalBTChannelAvoidanceTargetTest.xml
new file mode 100644
index 0000000..eb76734
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/aidl/vts/VtsHalBTChannelAvoidanceTargetTest.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 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="Runs VtsHalBTChannelAvoidanceTargetTest.">
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-suite-tag" value="apct-native" />
+
+ <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <option name="run-command" value="settings put global ble_scan_always_enabled 0" />
+ <option name="run-command" value="cmd bluetooth_manager disable" />
+ <option name="run-command" value="cmd bluetooth_manager wait-for-state:STATE_OFF" />
+ <option name="teardown-command" value="cmd bluetooth_manager enable" />
+ <option name="teardown-command" value="cmd bluetooth_manager wait-for-state:STATE_ON" />
+ <option name="teardown-command" value="settings put global ble_scan_always_enabled 1" />
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+ <option name="cleanup" value="true" />
+ <option name="push" value="VtsHalBTChannelAvoidanceTargetTest->/data/local/tmp/VtsHalBTChannelAvoidanceTargetTest" />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.GTest" >
+ <option name="native-test-device-path" value="/data/local/tmp" />
+ <option name="module-name" value="VtsHalBTChannelAvoidanceTargetTest" />
+ </test>
+</configuration>
diff --git a/bluetooth/ccc/aidl/Android.bp b/bluetooth/ccc/aidl/Android.bp
index 9b623ff..affe46b 100644
--- a/bluetooth/ccc/aidl/Android.bp
+++ b/bluetooth/ccc/aidl/Android.bp
@@ -17,5 +17,12 @@ aidl_interface {
java: {
platform_apis: true,
},
+ ndk: {
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.btservices",
+ ],
+ min_sdk_version: "33",
+ },
},
}
diff --git a/bluetooth/ccc/aidl/vts/Android.bp b/bluetooth/ccc/aidl/vts/Android.bp
new file mode 100644
index 0000000..e348939
--- /dev/null
+++ b/bluetooth/ccc/aidl/vts/Android.bp
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2023 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 {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+ name: "VtsHalBluetoothCccTargetTest",
+ defaults: [
+ "use_libaidlvintf_gtest_helper_static",
+ ],
+ srcs: ["VtsHalBluetoothCccTargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "libbinder_ndk",
+ "liblog",
+ "libutils",
+ ],
+ static_libs: [
+ "//hardware/google/interfaces:hardware.google.bluetooth.ccc-V1-ndk",
+ "libbluetooth-types",
+ ],
+ test_config: "VtsHalBluetoothCccTargetTest.xml",
+ test_suites: [
+ "general-tests",
+ "vts",
+ ],
+}
diff --git a/bluetooth/ccc/aidl/vts/OWNERS b/bluetooth/ccc/aidl/vts/OWNERS
new file mode 100644
index 0000000..af657a8
--- /dev/null
+++ b/bluetooth/ccc/aidl/vts/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 27441
+tedwang@google.com
diff --git a/bluetooth/ccc/aidl/vts/VtsHalBluetoothCccTargetTest.cpp b/bluetooth/ccc/aidl/vts/VtsHalBluetoothCccTargetTest.cpp
new file mode 100644
index 0000000..c39a2a6
--- /dev/null
+++ b/bluetooth/ccc/aidl/vts/VtsHalBluetoothCccTargetTest.cpp
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2023 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 <aidl/hardware/google/bluetooth/ccc/BnBluetoothCccCallback.h>
+#include <aidl/hardware/google/bluetooth/ccc/IBluetoothCcc.h>
+#include <aidl/hardware/google/bluetooth/ccc/IBluetoothCccCallback.h>
+#include <android-base/logging.h>
+#include <android/binder_manager.h>
+#include <android/binder_process.h>
+#include <binder/IServiceManager.h>
+#include <utils/Log.h>
+
+#include <vector>
+#include <array>
+
+using ::aidl::hardware::google::bluetooth::ccc::IBluetoothCcc;
+using ::aidl::hardware::google::bluetooth::ccc::IBluetoothCccCallback;
+using ::aidl::hardware::google::bluetooth::ccc::Direction;
+using ::aidl::hardware::google::bluetooth::ccc::LmpEventId;
+using ::aidl::hardware::google::bluetooth::ccc::Timestamp;
+using ::ndk::ScopedAStatus;
+
+class BluetoothCccTest : public ::testing::TestWithParam<std::string> {
+ public:
+ class BluetoothCccCallback
+ : public ::aidl::hardware::google::bluetooth::ccc::BnBluetoothCccCallback {
+ public:
+ BluetoothCccCallback() = default;
+
+ ::ndk::ScopedAStatus onEventGenerated(const Timestamp& /* timestamp */,
+ const std::array<uint8_t, 6>& /* address */,
+ Direction /* direction */,
+ LmpEventId /* lmpEventId */,
+ char16_t /* eventCounter */) override {
+ return ::ndk::ScopedAStatus::ok();
+ }
+
+ ::ndk::ScopedAStatus onRegistered(bool) override {
+ return ::ndk::ScopedAStatus::ok();
+ }
+ };
+
+ virtual void SetUp() override {
+ ALOGI("SetUp Ccc Test");
+ bluetooth_ccc = IBluetoothCcc::fromBinder(
+ ndk::SpAIBinder(AServiceManager_waitForService(GetParam().c_str())));
+ ASSERT_NE(bluetooth_ccc, nullptr);
+
+ ccc_callback = ndk::SharedRefBase::make<BluetoothCccCallback>();
+ ASSERT_NE(ccc_callback, nullptr);
+ }
+
+ virtual void TearDown() override {
+ ALOGI("TearDown Ccc Test");
+ bluetooth_ccc = nullptr;
+ ASSERT_EQ(bluetooth_ccc, nullptr);
+ }
+
+ // test functions to call
+ ScopedAStatus registerForLmpEvents(std::array<uint8_t, 6>);
+ ScopedAStatus unregisterLmpEvents(std::array<uint8_t, 6>);
+
+private:
+ std::shared_ptr<IBluetoothCcc> bluetooth_ccc;
+ std::shared_ptr<BluetoothCccCallback> ccc_callback;
+};
+
+
+ScopedAStatus BluetoothCccTest::registerForLmpEvents(std::array<uint8_t, 6> addr) {
+ std::vector<LmpEventId> events = {LmpEventId::CONNECT_IND,
+ LmpEventId::LL_PHY_UPDATE_IND};
+ return bluetooth_ccc->registerForLmpEvents(ccc_callback, std::array<uint8_t, 6>(addr), events);
+}
+
+ScopedAStatus BluetoothCccTest::unregisterLmpEvents(std::array<uint8_t, 6> addr) {
+ return bluetooth_ccc->unregisterLmpEvents(std::array<uint8_t, 6>(addr));
+}
+
+TEST_P(BluetoothCccTest, RegisterForLmpEvents) {
+ ALOGI("Run test RegisterForLmpEvents");
+ ScopedAStatus status = registerForLmpEvents(
+ std::array<uint8_t, 6>{0x11, 0x22, 0x33, 0x44, 0x55, 0x66});
+ ASSERT_TRUE(status.isOk());
+}
+
+TEST_P(BluetoothCccTest, UnregisterLmpEvents) {
+ std::array<uint8_t, 6> addr = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
+ ScopedAStatus status = registerForLmpEvents(addr);
+ ASSERT_TRUE(status.isOk());
+ status = unregisterLmpEvents(addr);
+ ASSERT_TRUE(status.isOk());
+}
+
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BluetoothCccTest);
+INSTANTIATE_TEST_SUITE_P(PerInstance, BluetoothCccTest,
+ testing::ValuesIn(android::getAidlHalInstanceNames(
+ IBluetoothCcc::descriptor)),
+ android::PrintInstanceNameToString);
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ABinderProcess_startThreadPool();
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
+}
diff --git a/bluetooth/ccc/aidl/vts/VtsHalBluetoothCccTargetTest.xml b/bluetooth/ccc/aidl/vts/VtsHalBluetoothCccTargetTest.xml
new file mode 100644
index 0000000..1b86379
--- /dev/null
+++ b/bluetooth/ccc/aidl/vts/VtsHalBluetoothCccTargetTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 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="Runs VtsHalBluetoothCccTargetTest.">
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-suite-tag" value="apct-native" />
+
+ <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+ <option name="cleanup" value="true" />
+ <option name="push" value="VtsHalBluetoothCccTargetTest->/data/local/tmp/VtsHalBluetoothCccTargetTest" />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.GTest" >
+ <option name="native-test-device-path" value="/data/local/tmp" />
+ <option name="module-name" value="VtsHalBluetoothCccTargetTest" />
+ </test>
+</configuration>
diff --git a/bluetooth/ewp/aidl/Android.bp b/bluetooth/ewp/aidl/Android.bp
new file mode 100644
index 0000000..faa79ff
--- /dev/null
+++ b/bluetooth/ewp/aidl/Android.bp
@@ -0,0 +1,30 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+aidl_interface {
+ name: "hardware.google.bluetooth.ewp",
+ owner: "google",
+ vendor_available: true,
+ srcs: [
+ "hardware/google/bluetooth/ewp/IBluetoothEwp.aidl",
+ ],
+ stability: "vintf",
+
+ backend: {
+ cpp: {
+ enabled: true,
+ },
+ java: {
+ platform_apis: true,
+ },
+ ndk: {
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.btservices",
+ ],
+ min_sdk_version: "33",
+ },
+ },
+}
diff --git a/bluetooth/ewp/aidl/OWNERS b/bluetooth/ewp/aidl/OWNERS
new file mode 100644
index 0000000..e406ad5
--- /dev/null
+++ b/bluetooth/ewp/aidl/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 27441
+tiand@google.com
diff --git a/bluetooth/ewp/aidl/aidl_api/hardware.google.bluetooth.ewp/current/hardware/google/bluetooth/ewp/IBluetoothEwp.aidl b/bluetooth/ewp/aidl/aidl_api/hardware.google.bluetooth.ewp/current/hardware/google/bluetooth/ewp/IBluetoothEwp.aidl
new file mode 100644
index 0000000..4ec4bba
--- /dev/null
+++ b/bluetooth/ewp/aidl/aidl_api/hardware.google.bluetooth.ewp/current/hardware/google/bluetooth/ewp/IBluetoothEwp.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *//**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// 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 hardware.google.bluetooth.ewp;
+@VintfStability
+interface IBluetoothEwp {
+ oneway void enableEwp(char eventMask);
+ oneway void disableEwp();
+}
diff --git a/bluetooth/ewp/aidl/hardware/google/bluetooth/ewp/IBluetoothEwp.aidl b/bluetooth/ewp/aidl/hardware/google/bluetooth/ewp/IBluetoothEwp.aidl
new file mode 100644
index 0000000..37297b8
--- /dev/null
+++ b/bluetooth/ewp/aidl/hardware/google/bluetooth/ewp/IBluetoothEwp.aidl
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+package hardware.google.bluetooth.ewp;
+
+@VintfStability
+interface IBluetoothEwp {
+ /**
+ * API to enable Bluetooth Le Audio offload debugging mechanism.
+ *
+ * @param eventMask Mask to enable different dump data
+ */
+ oneway void enableEwp(char eventMask);
+
+ /**
+ * API to disable Bluetooth Le Audio offload debugging mechanism.
+ */
+ oneway void disableEwp();
+}
diff --git a/bluetooth/ewp/aidl/vts/Android.bp b/bluetooth/ewp/aidl/vts/Android.bp
new file mode 100644
index 0000000..e77c527
--- /dev/null
+++ b/bluetooth/ewp/aidl/vts/Android.bp
@@ -0,0 +1,29 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+ name: "VtsHalBluetoothEwpTargetTest",
+ defaults: [
+ "use_libaidlvintf_gtest_helper_static",
+ ],
+ srcs: ["VtsHalBluetoothEwpTargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "libbinder_ndk",
+ "liblog",
+ "libutils",
+ "//hardware/google/interfaces:hardware.google.bluetooth.ewp-V1-ndk",
+ ],
+ static_libs: [
+ "libbluetooth-types",
+ ],
+ test_config: "VtsHalBluetoothEwpTargetTest.xml",
+ test_suites: [
+ "general-tests",
+ "vts",
+ ],
+}
+
diff --git a/bluetooth/ewp/aidl/vts/VtsHalBluetoothEwpTargetTest.cpp b/bluetooth/ewp/aidl/vts/VtsHalBluetoothEwpTargetTest.cpp
new file mode 100644
index 0000000..34dd807
--- /dev/null
+++ b/bluetooth/ewp/aidl/vts/VtsHalBluetoothEwpTargetTest.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2023 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 <aidl/hardware/google/bluetooth/ewp/IBluetoothEwp.h>
+#include <android/binder_auto_utils.h>
+#include <android/binder_manager.h>
+#include <android/binder_process.h>
+#include <binder/IServiceManager.h>
+#include <binder/ProcessState.h>
+
+using aidl::hardware::google::bluetooth::ewp::IBluetoothEwp;
+using ndk::ScopedAStatus;
+using ndk::SpAIBinder;
+
+class BluetoothEwpTest : public ::testing::TestWithParam<std::string> {
+public:
+ virtual void SetUp() override;
+ virtual void TearDown() override;
+
+ ndk::ScopedAStatus enableEwp(uint16_t event_mask);
+ ndk::ScopedAStatus disableEwp();
+
+private:
+ std::shared_ptr<IBluetoothEwp> bluetooth_ewp_;
+};
+
+void BluetoothEwpTest::SetUp() {
+ ALOGI("SetUp Bluetooth Ewp Test");
+ bluetooth_ewp_ = IBluetoothEwp::fromBinder(
+ ndk::SpAIBinder(AServiceManager_waitForService(GetParam().c_str())));
+ ASSERT_NE(bluetooth_ewp_, nullptr);
+}
+
+void BluetoothEwpTest::TearDown() {
+ ALOGI("TearDown Bluetooth Ewp Test");
+ bluetooth_ewp_ = nullptr;
+ ASSERT_EQ(bluetooth_ewp_, nullptr);
+}
+
+ndk::ScopedAStatus BluetoothEwpTest::enableEwp(uint16_t event_mask){
+ return bluetooth_ewp_->enableEwp(event_mask);
+}
+
+ndk::ScopedAStatus BluetoothEwpTest::disableEwp() {
+ return bluetooth_ewp_->disableEwp();
+}
+
+TEST_P(BluetoothEwpTest, enableEwp) {
+ uint16_t event_mask = 275;
+ ndk::ScopedAStatus status = enableEwp(event_mask);
+ ASSERT_TRUE(status.isOk());
+}
+
+TEST_P(BluetoothEwpTest, disableEwp) {
+ ndk::ScopedAStatus status = disableEwp();
+ ASSERT_TRUE(status.isOk());
+}
+
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BluetoothEwpTest);
+INSTANTIATE_TEST_SUITE_P(PerInstance, BluetoothEwpTest,
+ testing::ValuesIn(android::getAidlHalInstanceNames(
+ IBluetoothEwp::descriptor)),
+ android::PrintInstanceNameToString);
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ABinderProcess_startThreadPool();
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
+}
+
diff --git a/bluetooth/ewp/aidl/vts/VtsHalBluetoothEwpTargetTest.xml b/bluetooth/ewp/aidl/vts/VtsHalBluetoothEwpTargetTest.xml
new file mode 100644
index 0000000..963d0d5
--- /dev/null
+++ b/bluetooth/ewp/aidl/vts/VtsHalBluetoothEwpTargetTest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 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="Runs VtsHalBluetoothEwpTargetTest.">
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-suite-tag" value="apct-native" />
+
+ <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <option name="run-command" value="settings put global ble_scan_always_enabled 0" />
+ <option name="run-command" value="cmd bluetooth_manager disable" />
+ <option name="run-command" value="cmd bluetooth_manager wait-for-state:STATE_OFF" />
+ <option name="teardown-command" value="cmd bluetooth_manager enable" />
+ <option name="teardown-command" value="cmd bluetooth_manager wait-for-state:STATE_ON" />
+ <option name="teardown-command" value="settings put global ble_scan_always_enabled 1" />
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+ <option name="cleanup" value="true" />
+ <option name="push" value="VtsHalBluetoothEwpTargetTest->/data/local/tmp/VtsHalBluetoothEwpTargetTest" />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.GTest" >
+ <option name="native-test-device-path" value="/data/local/tmp" />
+ <option name="module-name" value="VtsHalBluetoothEwpTargetTest" />
+ </test>
+</configuration>
+
diff --git a/bluetooth/ext/aidl/Android.bp b/bluetooth/ext/aidl/Android.bp
new file mode 100644
index 0000000..00debbb
--- /dev/null
+++ b/bluetooth/ext/aidl/Android.bp
@@ -0,0 +1,30 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+aidl_interface {
+ name: "hardware.google.bluetooth.ext",
+ owner: "google",
+ vendor_available: true,
+ srcs: [
+ "hardware/google/bluetooth/ext/IBluetoothExt.aidl",
+ ],
+ stability: "vintf",
+
+ backend: {
+ cpp: {
+ enabled: true,
+ },
+ java: {
+ platform_apis: true,
+ },
+ ndk: {
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.btservices",
+ ],
+ min_sdk_version: "33",
+ },
+ },
+}
diff --git a/bluetooth/ext/aidl/OWNERS b/bluetooth/ext/aidl/OWNERS
new file mode 100644
index 0000000..e406ad5
--- /dev/null
+++ b/bluetooth/ext/aidl/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 27441
+tiand@google.com
diff --git a/bluetooth/ext/aidl/aidl_api/hardware.google.bluetooth.ext/current/hardware/google/bluetooth/ext/IBluetoothExt.aidl b/bluetooth/ext/aidl/aidl_api/hardware.google.bluetooth.ext/current/hardware/google/bluetooth/ext/IBluetoothExt.aidl
new file mode 100644
index 0000000..839c726
--- /dev/null
+++ b/bluetooth/ext/aidl/aidl_api/hardware.google.bluetooth.ext/current/hardware/google/bluetooth/ext/IBluetoothExt.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *//**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// 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 hardware.google.bluetooth.ext;
+@VintfStability
+interface IBluetoothExt {
+ boolean setBluetoothCmdPacket(in char opcode, in byte[] params);
+}
diff --git a/bluetooth/ext/aidl/hardware/google/bluetooth/ext/IBluetoothExt.aidl b/bluetooth/ext/aidl/hardware/google/bluetooth/ext/IBluetoothExt.aidl
new file mode 100644
index 0000000..4001489
--- /dev/null
+++ b/bluetooth/ext/aidl/hardware/google/bluetooth/ext/IBluetoothExt.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+package hardware.google.bluetooth.ext;
+
+@VintfStability
+interface IBluetoothExt {
+ /**
+ * API to set Bluetooth HCI packet
+ *
+ * @param opcode : Bluetooth HCI command opcode to be send
+ * @param params : Bluetooth HCI command parameters for the opcode
+ */
+ boolean setBluetoothCmdPacket(in char opcode, in byte[] params);
+}
diff --git a/bluetooth/ext/aidl/vts/Android.bp b/bluetooth/ext/aidl/vts/Android.bp
new file mode 100644
index 0000000..983424f
--- /dev/null
+++ b/bluetooth/ext/aidl/vts/Android.bp
@@ -0,0 +1,27 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+cc_test {
+ name: "VtsHalBluetoothExtTargetTest",
+ defaults: [
+ "use_libaidlvintf_gtest_helper_static",
+ ],
+ srcs: ["VtsHalBluetoothExtTargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "libbinder_ndk",
+ "liblog",
+ "libutils",
+ "//hardware/google/interfaces:hardware.google.bluetooth.ext-V1-ndk",
+ ],
+ static_libs: [
+ "libbluetooth-types",
+ ],
+ test_config: "VtsHalBluetoothExtTargetTest.xml",
+ test_suites: [
+ "general-tests",
+ "vts",
+ ],
+}
diff --git a/bluetooth/ext/aidl/vts/VtsHalBluetoothExtTargetTest.cpp b/bluetooth/ext/aidl/vts/VtsHalBluetoothExtTargetTest.cpp
new file mode 100644
index 0000000..55abbd8
--- /dev/null
+++ b/bluetooth/ext/aidl/vts/VtsHalBluetoothExtTargetTest.cpp
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2023 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 <aidl/hardware/google/bluetooth/ext/IBluetoothExt.h>
+#include <android/binder_auto_utils.h>
+#include <android/binder_manager.h>
+#include <android/binder_process.h>
+#include <binder/IServiceManager.h>
+#include <binder/ProcessState.h>
+
+using aidl::hardware::google::bluetooth::ext::IBluetoothExt;
+using ndk::ScopedAStatus;
+using ndk::SpAIBinder;
+
+class BluetoothExtTest : public ::testing::TestWithParam<std::string> {
+public:
+ virtual void SetUp() override;
+ virtual void TearDown() override;
+
+ ndk::ScopedAStatus setBluetoothCmdPacket(uint16_t opcode, const std::vector<uint8_t>& params, bool* ret_ptr);
+
+private:
+ std::shared_ptr<IBluetoothExt> bluetooth_ext_;
+};
+
+void BluetoothExtTest::SetUp() {
+ ALOGI("SetUp Bluetooth Ext Test");
+ bluetooth_ext_ = IBluetoothExt::fromBinder(
+ ndk::SpAIBinder(AServiceManager_waitForService(GetParam().c_str())));
+ ASSERT_NE(bluetooth_ext_, nullptr);
+}
+
+void BluetoothExtTest::TearDown() {
+ ALOGI("Tear Down Bluetooth Ext Test");
+ bluetooth_ext_ = nullptr;
+ ASSERT_EQ(bluetooth_ext_, nullptr);
+}
+
+ndk::ScopedAStatus BluetoothExtTest::setBluetoothCmdPacket(uint16_t opcode, const std::vector<uint8_t>& params, bool* ret_ptr) {
+ ndk::ScopedAStatus status = bluetooth_ext_->setBluetoothCmdPacket(opcode, params, ret_ptr);
+ if (!(*ret_ptr)) {
+ return ndk::ScopedAStatus::fromServiceSpecificError(STATUS_BAD_VALUE);
+ }
+ return status;
+}
+
+TEST_P(BluetoothExtTest, setBluetoothCmdPacket) {
+ uint16_t opcode = 0xfe20;
+ std::vector<uint8_t> params = {0x20, 0xfe, 0x08, 0x14, 0x01, 0xff, 0x00, 0x10, 0x00, 0x01, 0x00};
+ bool is_valid_packet = false;
+ ndk::ScopedAStatus status = setBluetoothCmdPacket(opcode, params, &is_valid_packet);
+ ASSERT_TRUE(is_valid_packet);
+ ASSERT_TRUE(status.isOk());
+}
+
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BluetoothExtTest);
+INSTANTIATE_TEST_SUITE_P(PerInstance, BluetoothExtTest,
+ testing::ValuesIn(android::getAidlHalInstanceNames(
+ IBluetoothExt::descriptor)),
+ android::PrintInstanceNameToString);
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ABinderProcess_startThreadPool();
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
+}
+
diff --git a/bluetooth/ext/aidl/vts/VtsHalBluetoothExtTargetTest.xml b/bluetooth/ext/aidl/vts/VtsHalBluetoothExtTargetTest.xml
new file mode 100644
index 0000000..4e8b3d9
--- /dev/null
+++ b/bluetooth/ext/aidl/vts/VtsHalBluetoothExtTargetTest.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 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="Runs VtsHalBluetoothExtTargetTest.">
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-suite-tag" value="apct-native" />
+
+ <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <option name="run-command" value="settings put global ble_scan_always_enabled 0" />
+ <option name="run-command" value="cmd bluetooth_manager disable" />
+ <option name="run-command" value="cmd bluetooth_manager wait-for-state:STATE_OFF" />
+ <option name="teardown-command" value="cmd bluetooth_manager enable" />
+ <option name="teardown-command" value="cmd bluetooth_manager wait-for-state:STATE_ON" />
+ <option name="teardown-command" value="settings put global ble_scan_always_enabled 1" />
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+ <option name="cleanup" value="true" />
+ <option name="push" value="VtsHalBluetoothExtTargetTest->/data/local/tmp/VtsHalBluetoothExtTargetTest" />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.GTest" >
+ <option name="native-test-device-path" value="/data/local/tmp" />
+ <option name="module-name" value="VtsHalBluetoothExtTargetTest" />
+ </test>
+</configuration>
diff --git a/bluetooth/sar/aidl/Android.bp b/bluetooth/sar/aidl/Android.bp
index 557081e..66f7f12 100644
--- a/bluetooth/sar/aidl/Android.bp
+++ b/bluetooth/sar/aidl/Android.bp
@@ -17,5 +17,20 @@ aidl_interface {
java: {
platform_apis: true,
},
+ ndk: {
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.btservices",
+ ],
+ min_sdk_version: "33",
+ },
},
+ versions_with_info: [
+ {
+ version: "1",
+ imports: [],
+ },
+ ],
+ frozen: true,
+
}
diff --git a/bluetooth/sar/aidl/OWNERS b/bluetooth/sar/aidl/OWNERS
new file mode 100644
index 0000000..e406ad5
--- /dev/null
+++ b/bluetooth/sar/aidl/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 27441
+tiand@google.com
diff --git a/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/1/.hash b/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/1/.hash
new file mode 100644
index 0000000..76a0736
--- /dev/null
+++ b/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/1/.hash
@@ -0,0 +1 @@
+3c35bb863a7aef2b57076b4bc2fd28848df8edc0
diff --git a/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/1/hardware/google/bluetooth/sar/IBluetoothSar.aidl b/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/1/hardware/google/bluetooth/sar/IBluetoothSar.aidl
new file mode 100644
index 0000000..4e32ff9
--- /dev/null
+++ b/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/1/hardware/google/bluetooth/sar/IBluetoothSar.aidl
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2022 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 hardware.google.bluetooth.sar;
+@VintfStability
+interface IBluetoothSar {
+ oneway void setBluetoothTxPowerCap(in byte cap);
+ oneway void setBluetoothTechBasedTxPowerCap(in byte brCap, in byte edrCap, in byte bleCap);
+ oneway void setBluetoothModeBasedTxPowerCap(in byte[3] chain0Cap, in byte[3] chain1Cap, in byte[6] beamformingCap);
+ oneway void setBluetoothModeBasedTxPowerCapPlusHR(in byte[4] chain0Cap, in byte[4] chain1Cap, in byte[8] beamformingCap);
+ oneway void setBluetoothAreaCode(in byte[3] areaCode);
+}
diff --git a/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/current/hardware/google/bluetooth/sar/IBluetoothSar.aidl b/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/current/hardware/google/bluetooth/sar/IBluetoothSar.aidl
index a7b2d7f..4e32ff9 100644
--- a/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/current/hardware/google/bluetooth/sar/IBluetoothSar.aidl
+++ b/bluetooth/sar/aidl/aidl_api/hardware.google.bluetooth.sar/current/hardware/google/bluetooth/sar/IBluetoothSar.aidl
@@ -38,5 +38,5 @@ interface IBluetoothSar {
oneway void setBluetoothTechBasedTxPowerCap(in byte brCap, in byte edrCap, in byte bleCap);
oneway void setBluetoothModeBasedTxPowerCap(in byte[3] chain0Cap, in byte[3] chain1Cap, in byte[6] beamformingCap);
oneway void setBluetoothModeBasedTxPowerCapPlusHR(in byte[4] chain0Cap, in byte[4] chain1Cap, in byte[8] beamformingCap);
- oneway void setBluetoothAreaCode(in int areaCode);
+ oneway void setBluetoothAreaCode(in byte[3] areaCode);
}
diff --git a/bluetooth/sar/aidl/hardware/google/bluetooth/sar/IBluetoothSar.aidl b/bluetooth/sar/aidl/hardware/google/bluetooth/sar/IBluetoothSar.aidl
index 023f634..96b37fc 100644
--- a/bluetooth/sar/aidl/hardware/google/bluetooth/sar/IBluetoothSar.aidl
+++ b/bluetooth/sar/aidl/hardware/google/bluetooth/sar/IBluetoothSar.aidl
@@ -93,5 +93,5 @@ interface IBluetoothSar {
* between 0-899. 900-999 may be user-assigned by vendor to add further names
* of countries, territories, or regions.
*/
- oneway void setBluetoothAreaCode(in int areaCode);
+ oneway void setBluetoothAreaCode(in byte[3] areaCode);
}
diff --git a/bluetooth/sar/aidl/vts/Android.bp b/bluetooth/sar/aidl/vts/Android.bp
new file mode 100644
index 0000000..ace79d3
--- /dev/null
+++ b/bluetooth/sar/aidl/vts/Android.bp
@@ -0,0 +1,28 @@
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+ name: "VtsHalBluetoothSarTargetTest",
+ defaults: [
+ "use_libaidlvintf_gtest_helper_static",
+ ],
+ srcs: ["VtsHalBluetoothSarTargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "libbinder_ndk",
+ "liblog",
+ "libutils",
+ "//hardware/google/interfaces:hardware.google.bluetooth.sar-V1-ndk",
+ ],
+ static_libs: [
+ "libbluetooth-types",
+ ],
+ test_config: "VtsHalBluetoothSarTargetTest.xml",
+ test_suites: [
+ "general-tests",
+ "vts",
+ ],
+}
diff --git a/bluetooth/sar/aidl/vts/VtsHalBluetoothSarTargetTest.cpp b/bluetooth/sar/aidl/vts/VtsHalBluetoothSarTargetTest.cpp
new file mode 100644
index 0000000..817c953
--- /dev/null
+++ b/bluetooth/sar/aidl/vts/VtsHalBluetoothSarTargetTest.cpp
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2023 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 <aidl/hardware/google/bluetooth/sar/IBluetoothSar.h>
+#include <android/binder_auto_utils.h>
+#include <android/binder_manager.h>
+#include <android/binder_process.h>
+#include <binder/IServiceManager.h>
+#include <binder/ProcessState.h>
+
+using aidl::hardware::google::bluetooth::sar::IBluetoothSar;
+using ndk::ScopedAStatus;
+using ndk::SpAIBinder;
+
+class BluetoothSarTest : public ::testing::TestWithParam<std::string> {
+public:
+ virtual void SetUp() override;
+ virtual void TearDown() override;
+
+ ndk::ScopedAStatus setAndCheckBluetoothTxPowerCap(int8_t cap);
+ ndk::ScopedAStatus setAndCheckBluetoothTechBasedTxPowerCap(int8_t br_cap, int8_t edr_cap, int8_t ble_cap);
+ ndk::ScopedAStatus setAndCheckBluetoothModeBasedTxPowerCap(const std::array<uint8_t, 3>& chain_0_cap, const std::array<uint8_t, 3>& chain_1_cap, const std::array<uint8_t, 6>& beamforming_cap);
+ ndk::ScopedAStatus setAndCheckBluetoothModeBasedTxPowerCapPlusHR(const std::array<uint8_t, 4>& chain_0_cap, const std::array<uint8_t, 4>& chain_1_cap, const std::array<uint8_t, 8>& beamforming_cap);
+ ndk::ScopedAStatus setAndCheckBluetoothAreaCode(const std::array<uint8_t, 3>& area_code);
+
+private:
+ std::shared_ptr<IBluetoothSar> bluetooth_sar_;
+};
+
+void BluetoothSarTest::SetUp() {
+ ALOGI("SetUp Bluetooth SAR Test");
+ bluetooth_sar_ = IBluetoothSar::fromBinder(
+ ndk::SpAIBinder(AServiceManager_waitForService(GetParam().c_str())));
+ ASSERT_NE(bluetooth_sar_, nullptr);
+}
+
+void BluetoothSarTest::TearDown() {
+ ALOGI("TearDown Bluetooth SAR Test");
+ bluetooth_sar_ = nullptr;
+ ASSERT_EQ(bluetooth_sar_, nullptr);
+}
+
+ndk::ScopedAStatus BluetoothSarTest::setAndCheckBluetoothTxPowerCap(int8_t cap) {
+ return bluetooth_sar_->setBluetoothTxPowerCap(cap);
+}
+
+ndk::ScopedAStatus BluetoothSarTest::setAndCheckBluetoothTechBasedTxPowerCap(
+ int8_t br_cap, int8_t edr_cap, int8_t ble_cap) {
+ return bluetooth_sar_->setBluetoothTechBasedTxPowerCap(br_cap, edr_cap, ble_cap);
+}
+
+ndk::ScopedAStatus BluetoothSarTest::setAndCheckBluetoothModeBasedTxPowerCap(
+ const std::array<uint8_t, 3>& chain_0_cap,
+ const std::array<uint8_t, 3>& chain_1_cap,
+ const std::array<uint8_t, 6>& beamforming_cap) {
+ return bluetooth_sar_->setBluetoothModeBasedTxPowerCap(chain_0_cap, chain_1_cap, beamforming_cap);
+}
+
+
+ndk::ScopedAStatus BluetoothSarTest::setAndCheckBluetoothModeBasedTxPowerCapPlusHR(
+ const std::array<uint8_t, 4>& chain_0_cap,
+ const std::array<uint8_t, 4>& chain_1_cap,
+ const std::array<uint8_t, 8>& beamforming_cap){
+ return bluetooth_sar_->setBluetoothModeBasedTxPowerCapPlusHR(chain_0_cap, chain_1_cap, beamforming_cap);
+}
+
+TEST_P(BluetoothSarTest, setAndCheckBluetoothTxPowerCap) {
+ ndk::ScopedAStatus status = setAndCheckBluetoothTxPowerCap(40);
+ ASSERT_TRUE(status.isOk());
+ // check invalid power cap (greater than 80)
+ status = setAndCheckBluetoothTxPowerCap(100);
+ ASSERT_FALSE(status.isOk());
+}
+
+
+TEST_P(BluetoothSarTest, setAndCheckBluetoothTechBasedTxPowerCap) {
+ ndk::ScopedAStatus status = setAndCheckBluetoothTechBasedTxPowerCap(10, 20, 30);
+ ASSERT_TRUE(status.isOk());
+ // check invalid power cap (greater than 80)
+ status = setAndCheckBluetoothTechBasedTxPowerCap(10, 120, 30);
+ ASSERT_FALSE(status.isOk());
+}
+
+TEST_P(BluetoothSarTest, setAndCheckBluetoothModeBasedTxPowerCap) {
+ std::array<uint8_t, 3> chain_0_cap = {10, 20, 30};
+ std::array<uint8_t, 3> chain_1_cap = {15, 25, 35};
+ std::array<uint8_t, 6> beamforming_cap = {10, 20, 30, 40, 50, 60};
+ ndk::ScopedAStatus status =
+ setAndCheckBluetoothModeBasedTxPowerCap(chain_0_cap, chain_1_cap, beamforming_cap);
+ ASSERT_TRUE(status.isOk());
+ // check invalid power cap (greater than 80)
+ std::array<uint8_t, 3> bad_cap = {15, 125, 35};
+ status = setAndCheckBluetoothModeBasedTxPowerCap(chain_0_cap, bad_cap, beamforming_cap);
+ ASSERT_FALSE(status.isOk());
+}
+
+TEST_P(BluetoothSarTest, setAndCheckBluetoothModeBasedTxPowerCapPlusHR) {
+ std::array<uint8_t, 4> chain_0_cap = {10, 20, 30, 40};
+ std::array<uint8_t, 4> chain_1_cap = {15, 25, 35, 45};
+ std::array<uint8_t, 8> beamforming_cap = {10, 20, 30, 40, 50, 60, 70, 80};
+ ndk::ScopedAStatus status =
+ setAndCheckBluetoothModeBasedTxPowerCapPlusHR(chain_0_cap, chain_1_cap, beamforming_cap);
+ ASSERT_TRUE(status.isOk());
+ // check invalid power cap (greater than 80)
+ std::array<uint8_t, 4> bad_cap = {10, 20, 30, 200};
+ status = setAndCheckBluetoothModeBasedTxPowerCapPlusHR(bad_cap, chain_1_cap, beamforming_cap);
+ ASSERT_FALSE(status.isOk());
+}
+
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BluetoothSarTest);
+INSTANTIATE_TEST_SUITE_P(PerInstance, BluetoothSarTest,
+ testing::ValuesIn(android::getAidlHalInstanceNames(
+ IBluetoothSar::descriptor)),
+ android::PrintInstanceNameToString);
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ABinderProcess_startThreadPool();
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
+}
diff --git a/bluetooth/sar/aidl/vts/VtsHalBluetoothSarTargetTest.xml b/bluetooth/sar/aidl/vts/VtsHalBluetoothSarTargetTest.xml
new file mode 100644
index 0000000..cb14573
--- /dev/null
+++ b/bluetooth/sar/aidl/vts/VtsHalBluetoothSarTargetTest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 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="Runs VtsHalBluetoothSarTargetTest.">
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-suite-tag" value="apct-native" />
+
+ <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <option name="run-command" value="settings put global ble_scan_always_enabled 0" />
+ <option name="run-command" value="cmd bluetooth_manager disable" />
+ <option name="run-command" value="cmd bluetooth_manager wait-for-state:STATE_OFF" />
+ <option name="teardown-command" value="cmd bluetooth_manager enable" />
+ <option name="teardown-command" value="cmd bluetooth_manager wait-for-state:STATE_ON" />
+ <option name="teardown-command" value="settings put global ble_scan_always_enabled 1" />
+ </target_preparer>
+
+ <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+ <option name="cleanup" value="true" />
+ <option name="push" value="VtsHalBluetoothSarTargetTest->/data/local/tmp/VtsHalBluetoothSarTargetTest" />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.GTest" >
+ <option name="native-test-device-path" value="/data/local/tmp" />
+ <option name="module-name" value="VtsHalBluetoothSarTargetTest" />
+ </test>
+</configuration>
+
diff --git a/display/Android.bp b/display/Android.bp
index b146a54..31542e9 100644
--- a/display/Android.bp
+++ b/display/Android.bp
@@ -15,7 +15,7 @@ aidl_interface {
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
backend: {
@@ -31,63 +31,70 @@ aidl_interface {
version: "1",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
},
{
version: "2",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
},
{
version: "3",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
},
{
version: "4",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
},
{
version: "5",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
},
{
version: "6",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
},
{
version: "7",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
},
{
version: "8",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
],
},
{
version: "9",
imports: [
"android.hardware.common-V2",
- "android.hardware.graphics.common-V4",
+ "android.hardware.graphics.common-V5",
+ ],
+ },
+ {
+ version: "10",
+ imports: [
+ "android.hardware.common-V2",
+ "android.hardware.graphics.common-V5",
],
},
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/.hash b/display/aidl_api/com.google.hardware.pixel.display/10/.hash
new file mode 100644
index 0000000..fd6bc86
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/.hash
@@ -0,0 +1 @@
+baba07b678d5de541a70f3c4b7b3c03bd78d5d3a
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HbmState.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HbmState.aidl
new file mode 100644
index 0000000..76af8b3
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HbmState.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 com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum HbmState {
+ OFF = 0,
+ HDR = 1,
+ SUNLIGHT = 2,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramCapability.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramCapability.aidl
new file mode 100644
index 0000000..bf4a34c
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramCapability.aidl
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2023 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 com.google.hardware.pixel.display;
+@VintfStability
+parcelable HistogramCapability {
+ boolean supportMultiChannel;
+ int channelCount;
+ int fullResolutionWidth;
+ int fullResolutionHeight;
+ com.google.hardware.pixel.display.HistogramSamplePos[] supportSamplePosList;
+ boolean supportBlockingRoi;
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramConfig.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramConfig.aidl
new file mode 100644
index 0000000..a5fe1d4
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramConfig.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2023 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 com.google.hardware.pixel.display;
+@VintfStability
+parcelable HistogramConfig {
+ android.hardware.graphics.common.Rect roi;
+ com.google.hardware.pixel.display.Weight weights;
+ com.google.hardware.pixel.display.HistogramSamplePos samplePos;
+ @nullable android.hardware.graphics.common.Rect blockingRoi;
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramErrorCode.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramErrorCode.aidl
new file mode 100644
index 0000000..6c8bca7
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramErrorCode.aidl
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2022 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 com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum HistogramErrorCode {
+ NONE = 0,
+ BAD_ROI = 1,
+ BAD_WEIGHT = 2,
+ BAD_POSITION = 3,
+ BAD_PRIORITY = 4,
+ ENABLE_HIST_ERROR = 5,
+ DISABLE_HIST_ERROR = 6,
+ BAD_HIST_DATA = 7,
+ DRM_PLAYING = 8,
+ DISPLAY_POWEROFF = 9,
+ API_DEPRECATED = 10,
+ BAD_TOKEN = 11,
+ CONFIG_HIST_ERROR = 12,
+ NO_CHANNEL_AVAILABLE = 13,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramPos.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramPos.aidl
new file mode 100644
index 0000000..20b8160
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramPos.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2022 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 com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum HistogramPos {
+ POST = 0,
+ PRE = 1,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramSamplePos.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramSamplePos.aidl
new file mode 100644
index 0000000..0acc055
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/HistogramSamplePos.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2023 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 com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum HistogramSamplePos {
+ POST_POSTPROC = 0,
+ PRE_POSTPROC = 1,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/IDisplay.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/IDisplay.aidl
new file mode 100644
index 0000000..7a54c1c
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/IDisplay.aidl
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2022 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 com.google.hardware.pixel.display;
+@VintfStability
+interface IDisplay {
+ boolean isHbmSupported();
+ void setHbmState(in com.google.hardware.pixel.display.HbmState state);
+ com.google.hardware.pixel.display.HbmState getHbmState();
+ boolean isLbeSupported();
+ void setLbeState(in com.google.hardware.pixel.display.LbeState state);
+ void setLbeAmbientLight(in int ambientLux);
+ com.google.hardware.pixel.display.LbeState getLbeState();
+ boolean isLhbmSupported();
+ void setLhbmState(in boolean enabled);
+ boolean getLhbmState();
+ int setCompensationImageHandle(in android.hardware.common.NativeHandle native_handle, in String imageName);
+ int setMinIdleRefreshRate(in int fps);
+ int setRefreshRateThrottle(in int delayMs);
+ com.google.hardware.pixel.display.HistogramErrorCode histogramSample(in android.hardware.graphics.common.Rect roi, in com.google.hardware.pixel.display.Weight weight, in com.google.hardware.pixel.display.HistogramPos pos, in com.google.hardware.pixel.display.Priority pri, out char[] histogrambuffer);
+ com.google.hardware.pixel.display.PanelCalibrationStatus getPanelCalibrationStatus();
+ boolean isDbmSupported();
+ void setDbmState(in boolean enabled);
+ void setPeakRefreshRate(in int rate);
+ void setLowPowerMode(in boolean enabled);
+ boolean isOperationRateSupported();
+ com.google.hardware.pixel.display.HistogramCapability getHistogramCapability();
+ com.google.hardware.pixel.display.HistogramErrorCode registerHistogram(in IBinder token, in com.google.hardware.pixel.display.HistogramConfig histogramConfig);
+ com.google.hardware.pixel.display.HistogramErrorCode queryHistogram(in IBinder token, out char[] histogramBuffer);
+ com.google.hardware.pixel.display.HistogramErrorCode reconfigHistogram(in IBinder token, in com.google.hardware.pixel.display.HistogramConfig histogramConfig);
+ com.google.hardware.pixel.display.HistogramErrorCode unregisterHistogram(in IBinder token);
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/LbeState.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/LbeState.aidl
new file mode 100644
index 0000000..8c8b53e
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/LbeState.aidl
@@ -0,0 +1,42 @@
+/*
+ * 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 com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum LbeState {
+ OFF = 0,
+ NORMAL = 1,
+ HIGH_BRIGHTNESS = 2,
+ POWER_SAVE = 3,
+ HIGH_BRIGHTNESS_ENHANCE = 4,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/PanelCalibrationStatus.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/PanelCalibrationStatus.aidl
new file mode 100644
index 0000000..55271d0
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/PanelCalibrationStatus.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2022 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 com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum PanelCalibrationStatus {
+ ORIGINAL = 0,
+ GOLDEN = 1,
+ UNCALIBRATED = 2,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/Priority.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/Priority.aidl
new file mode 100644
index 0000000..2b2c957
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/Priority.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2022 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 com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum Priority {
+ NORMAL = 0,
+ PRIORITY = 1,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/Weight.aidl b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/Weight.aidl
new file mode 100644
index 0000000..e25da1e
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/10/com/google/hardware/pixel/display/Weight.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2022 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 com.google.hardware.pixel.display;
+@VintfStability
+parcelable Weight {
+ char weightR;
+ char weightG;
+ char weightB;
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramCapability.aidl b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramCapability.aidl
index bbae60d..bf4a34c 100644
--- a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramCapability.aidl
+++ b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramCapability.aidl
@@ -39,4 +39,5 @@ parcelable HistogramCapability {
int fullResolutionWidth;
int fullResolutionHeight;
com.google.hardware.pixel.display.HistogramSamplePos[] supportSamplePosList;
+ boolean supportBlockingRoi;
}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramConfig.aidl b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramConfig.aidl
index c72f349..a5fe1d4 100644
--- a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramConfig.aidl
+++ b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HistogramConfig.aidl
@@ -37,4 +37,5 @@ parcelable HistogramConfig {
android.hardware.graphics.common.Rect roi;
com.google.hardware.pixel.display.Weight weights;
com.google.hardware.pixel.display.HistogramSamplePos samplePos;
+ @nullable android.hardware.graphics.common.Rect blockingRoi;
}
diff --git a/display/com/google/hardware/pixel/display/HistogramCapability.aidl b/display/com/google/hardware/pixel/display/HistogramCapability.aidl
index ea6e312..ad6a8a8 100644
--- a/display/com/google/hardware/pixel/display/HistogramCapability.aidl
+++ b/display/com/google/hardware/pixel/display/HistogramCapability.aidl
@@ -51,4 +51,10 @@ parcelable HistogramCapability {
* supportSamplePosList lists the supported histogram sample position.
*/
HistogramSamplePos[] supportSamplePosList;
+
+ /**
+ * supportBlockingRoi is true means the server support blocking ROI. Otherwise,
+ * the client should not use the blocking ROI.
+ */
+ boolean supportBlockingRoi;
}
diff --git a/display/com/google/hardware/pixel/display/HistogramConfig.aidl b/display/com/google/hardware/pixel/display/HistogramConfig.aidl
index 4798447..34df010 100644
--- a/display/com/google/hardware/pixel/display/HistogramConfig.aidl
+++ b/display/com/google/hardware/pixel/display/HistogramConfig.aidl
@@ -28,6 +28,8 @@ parcelable HistogramConfig {
* calculated based on the full resolution which is described by
* getHistogramCapability. Note that the right and bottom coordinates are
* exclusive.
+ * Note: (0, 0, 0, 0) means the ROI is disabled, histogram hardware will
+ * capture the region inside the entire screen but outside the blocking ROI.
*/
Rect roi;
@@ -44,4 +46,15 @@ parcelable HistogramConfig {
* (before post processing) or POST_POSTPROC (after post processing).
*/
HistogramSamplePos samplePos;
+
+ /**
+ * blockingRoi is the ROI blocking region. The histogram inside blockingRoi
+ * is not captured even that region lies within the roi. Rect is represented
+ * by the (int) coordinates of its 4 edges (left, top, right, bottom).
+ * The coordinates should be calculated based on the full resolution which
+ * is described by getHistogramCapability. Note that the right and bottom
+ * coordinates are exclusive.
+ * Note: (0, 0, 0, 0) means the blocking ROI is disabled.
+ */
+ @nullable Rect blockingRoi;
}
diff --git a/ril_ext/Android.bp b/ril_ext/Android.bp
index 63ecd37..97f61c5 100644
--- a/ril_ext/Android.bp
+++ b/ril_ext/Android.bp
@@ -19,4 +19,12 @@ aidl_interface {
enabled: true,
},
},
+ versions_with_info: [
+ {
+ version: "1",
+ imports: [],
+ },
+ ],
+ frozen: true,
+
}
diff --git a/ril_ext/aidl_api/hardware.google.ril_ext/1/.hash b/ril_ext/aidl_api/hardware.google.ril_ext/1/.hash
new file mode 100644
index 0000000..c9c1d39
--- /dev/null
+++ b/ril_ext/aidl_api/hardware.google.ril_ext/1/.hash
@@ -0,0 +1 @@
+585f9549747efe73bb7a8ec7cb4216c7e513613e
diff --git a/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/CarrierConfig.aidl b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/CarrierConfig.aidl
new file mode 100644
index 0000000..b863898
--- /dev/null
+++ b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/CarrierConfig.aidl
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2023 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 hardware.google.ril_ext;
+@VintfStability
+parcelable CarrierConfig {
+ String configKey;
+ hardware.google.ril_ext.CarrierConfig.ConfigValue configValue;
+ union ConfigValue {
+ boolean boolValue;
+ boolean[] boolArray;
+ int intValue;
+ int[] intArray;
+ long longValue;
+ long[] longArray;
+ String stringValue;
+ String[] stringArray;
+ }
+}
diff --git a/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExt.aidl b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExt.aidl
new file mode 100644
index 0000000..7dcbfa1
--- /dev/null
+++ b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExt.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2023 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 hardware.google.ril_ext;
+@VintfStability
+interface IRilExt {
+ void setCallback(in hardware.google.ril_ext.IRilExtResponse rilExtResponse, in hardware.google.ril_ext.IRilExtIndication rilExtIndication);
+ void sendCarrierId(in int serial, in int carrierId);
+ void sendCarrierConfigs(in int serial, in hardware.google.ril_ext.CarrierConfig[] carrierConfigs);
+}
diff --git a/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExtIndication.aidl b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExtIndication.aidl
new file mode 100644
index 0000000..2db2705
--- /dev/null
+++ b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExtIndication.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2023 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 hardware.google.ril_ext;
+@VintfStability
+interface IRilExtIndication {
+ void registerCarrierConfigChange(in String[] registeredKeys, in String[] unregisteredKeys);
+ void triggerBugreport(in String title);
+}
diff --git a/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExtResponse.aidl b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExtResponse.aidl
new file mode 100644
index 0000000..a5dfb2b
--- /dev/null
+++ b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/IRilExtResponse.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2023 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 hardware.google.ril_ext;
+@VintfStability
+interface IRilExtResponse {
+ void sendCarrierIdResponse(in hardware.google.ril_ext.RilResponseInfo info);
+ void sendCarrierConfigsResponse(in hardware.google.ril_ext.RilResponseInfo info);
+}
diff --git a/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/RilError.aidl b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/RilError.aidl
new file mode 100644
index 0000000..66ec05f
--- /dev/null
+++ b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/RilError.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2023 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 hardware.google.ril_ext;
+@Backing(type="int") @JavaDerive(toString=true) @VintfStability
+enum RilError {
+ NONE = 0,
+ GENERIC_FAILURE = 1,
+ REQUEST_NOT_SUPPORTED = 2,
+ NO_MEMORY = 3,
+}
diff --git a/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/RilResponseInfo.aidl b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/RilResponseInfo.aidl
new file mode 100644
index 0000000..88e8648
--- /dev/null
+++ b/ril_ext/aidl_api/hardware.google.ril_ext/1/hardware/google/ril_ext/RilResponseInfo.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2023 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 hardware.google.ril_ext;
+@JavaDerive(toString=true) @VintfStability
+parcelable RilResponseInfo {
+ int serial;
+ hardware.google.ril_ext.RilError error;
+}