Merge "Adjust for minor changes in the native keystore client interface"
diff --git a/audio/2.0/default/StreamIn.cpp b/audio/2.0/default/StreamIn.cpp
index de7bf13..ad18986 100644
--- a/audio/2.0/default/StreamIn.cpp
+++ b/audio/2.0/default/StreamIn.cpp
@@ -275,7 +275,7 @@
if (mDataMQ) {
ALOGE("the client attempts to call prepareForReading twice");
_hidl_cb(Result::INVALID_STATE,
- MQDescriptorSync<uint8_t>(), MQDescriptorSync<ReadStatus>());
+ DataMQ::Descriptor(), StatusMQ::Descriptor());
return Void();
}
std::unique_ptr<DataMQ> tempDataMQ(
@@ -285,7 +285,7 @@
ALOGE_IF(!tempDataMQ->isValid(), "data MQ is invalid");
ALOGE_IF(!tempStatusMQ->isValid(), "status MQ is invalid");
_hidl_cb(Result::INVALID_ARGUMENTS,
- MQDescriptorSync<uint8_t>(), MQDescriptorSync<ReadStatus>());
+ DataMQ::Descriptor(), StatusMQ::Descriptor());
return Void();
}
// TODO: Remove event flag management once blocking MQ is implemented. b/33815422
@@ -293,7 +293,7 @@
if (status != OK || !mEfGroup) {
ALOGE("failed creating event flag for data MQ: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS,
- MQDescriptorSync<uint8_t>(), MQDescriptorSync<ReadStatus>());
+ DataMQ::Descriptor(), StatusMQ::Descriptor());
return Void();
}
@@ -309,7 +309,7 @@
if (status != OK) {
ALOGW("failed to start reader thread: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS,
- MQDescriptorSync<uint8_t>(), MQDescriptorSync<ReadStatus>());
+ DataMQ::Descriptor(), StatusMQ::Descriptor());
return Void();
}
diff --git a/audio/2.0/default/StreamOut.cpp b/audio/2.0/default/StreamOut.cpp
index ea6221e..1948b68 100644
--- a/audio/2.0/default/StreamOut.cpp
+++ b/audio/2.0/default/StreamOut.cpp
@@ -259,7 +259,7 @@
if (mDataMQ) {
ALOGE("the client attempts to call prepareForWriting twice");
_hidl_cb(Result::INVALID_STATE,
- MQDescriptorSync<uint8_t>(), MQDescriptorSync<WriteStatus>());
+ DataMQ::Descriptor(), StatusMQ::Descriptor());
return Void();
}
std::unique_ptr<DataMQ> tempDataMQ(
@@ -269,7 +269,7 @@
ALOGE_IF(!tempDataMQ->isValid(), "data MQ is invalid");
ALOGE_IF(!tempStatusMQ->isValid(), "status MQ is invalid");
_hidl_cb(Result::INVALID_ARGUMENTS,
- MQDescriptorSync<uint8_t>(), MQDescriptorSync<WriteStatus>());
+ DataMQ::Descriptor(), StatusMQ::Descriptor());
return Void();
}
// TODO: Remove event flag management once blocking MQ is implemented. b/33815422
@@ -277,7 +277,7 @@
if (status != OK || !mEfGroup) {
ALOGE("failed creating event flag for data MQ: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS,
- MQDescriptorSync<uint8_t>(), MQDescriptorSync<WriteStatus>());
+ DataMQ::Descriptor(), StatusMQ::Descriptor());
return Void();
}
@@ -293,7 +293,7 @@
if (status != OK) {
ALOGW("failed to start writer thread: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS,
- MQDescriptorSync<uint8_t>(), MQDescriptorSync<WriteStatus>());
+ DataMQ::Descriptor(), StatusMQ::Descriptor());
return Void();
}
diff --git a/bluetooth/1.0/vts/Android.mk b/bluetooth/1.0/vts/Android.mk
new file mode 100644
index 0000000..85e0c38
--- /dev/null
+++ b/bluetooth/1.0/vts/Android.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2016 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(LOCAL_PATH)/functional/vts/testcases/hal/bluetooth/hidl/Android.mk
diff --git a/bluetooth/1.0/vts/BluetoothHci.vts b/bluetooth/1.0/vts/BluetoothHci.vts
new file mode 100644
index 0000000..1112371
--- /dev/null
+++ b/bluetooth/1.0/vts/BluetoothHci.vts
@@ -0,0 +1,61 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IBluetoothHci"
+
+package: "android.hardware.bluetooth"
+
+import: "android.hardware.bluetooth@1.0::IBluetoothHciCallbacks"
+import: "android.hardware.bluetooth@1.0::types"
+
+interface: {
+ api: {
+ name: "initialize"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::bluetooth::V1_0::Status"
+ }
+ arg: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IBluetoothHciCallbacks"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "sendHciCommand"
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "sendAclData"
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "sendScoData"
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "close"
+ }
+
+}
diff --git a/bluetooth/1.0/vts/BluetoothHciCallbacks.vts b/bluetooth/1.0/vts/BluetoothHciCallbacks.vts
new file mode 100644
index 0000000..f2df5b4
--- /dev/null
+++ b/bluetooth/1.0/vts/BluetoothHciCallbacks.vts
@@ -0,0 +1,43 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IBluetoothHciCallbacks"
+
+package: "android.hardware.bluetooth"
+
+import: "android.hardware.bluetooth@1.0::types"
+
+interface: {
+ api: {
+ name: "hciEventReceived"
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "aclDataReceived"
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "scoDataReceived"
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+}
diff --git a/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/Android.mk b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/Android.mk
new file mode 100644
index 0000000..f9e3276
--- /dev/null
+++ b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/Android.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2016 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(call all-subdir-makefiles)
diff --git a/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target/Android.mk b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target/Android.mk
new file mode 100644
index 0000000..98bb686
--- /dev/null
+++ b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2016 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := HalBluetoothHidlTargetBasicTest
+VTS_CONFIG_SRC_DIR := testcases/hal/bluetooth/hidl/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target/AndroidTest.xml b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target/AndroidTest.xml
new file mode 100644
index 0000000..54fb89b
--- /dev/null
+++ b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target/AndroidTest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS Bluetooth HIDL HAL's basic target-side test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="HalBluetoothHidlTargetBasicTest" />
+ <option name="binary-test-sources" value="
+ _64bit::DATA/nativetest64/bluetooth_hidl_hal_test/bluetooth_hidl_hal_test,
+ "/>
+ <option name="binary-test-type" value="gtest" />
+ <option name="test-timeout" value="1m" />
+ </test>
+</configuration>
diff --git a/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target_profiling/Android.mk b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target_profiling/Android.mk
new file mode 100644
index 0000000..81a2db9
--- /dev/null
+++ b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+## Copyright (C) 2016 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.
+# #
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := BluetoothHidlTargetProfilingTest
+VTS_CONFIG_SRC_DIR := testcases/hal/bluetooth/hidl/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target_profiling/AndroidTest.xml b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..8052b3c
--- /dev/null
+++ b/bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target_profiling/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS Bluetooth HIDL HAL's target-side profiling test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="BluetoothHidlTargetProfilingTest" />
+ <option name="binary-test-sources" value="
+ _64bit::DATA/nativetest64/bluetooth_hidl_hal_test/bluetooth_hidl_hal_test,
+ "/>
+ <option name="binary-test-type" value="gtest" />
+ <option name="test-timeout" value="1m" />
+ <option name="enable-profiling" value="true" />
+ </test>
+</configuration>
diff --git a/bluetooth/1.0/vts/types.vts b/bluetooth/1.0/vts/types.vts
new file mode 100644
index 0000000..59eb3d4
--- /dev/null
+++ b/bluetooth/1.0/vts/types.vts
@@ -0,0 +1,32 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "types"
+
+package: "android.hardware.bluetooth"
+
+
+attribute: {
+ name: "::android::hardware::bluetooth::V1_0::Status"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ int32_t: 0
+ }
+ enumerator: "TRANSPORT_ERROR"
+ scalar_value: {
+ int32_t: 1
+ }
+ enumerator: "INITIALIZATION_ERROR"
+ scalar_value: {
+ int32_t: 2
+ }
+ enumerator: "UNKNOWN"
+ scalar_value: {
+ int32_t: 3
+ }
+ }
+}
+
diff --git a/camera/device/3.2/default/Android.bp b/camera/device/3.2/default/Android.bp
index 9820220..40d4253 100644
--- a/camera/device/3.2/default/Android.bp
+++ b/camera/device/3.2/default/Android.bp
@@ -20,3 +20,27 @@
],
export_include_dirs: ["."]
}
+
+cc_library_shared {
+ name: "android.hardware.camera.device@3.2-impl-binderized",
+ srcs: ["CameraDevice.cpp",
+ "CameraDeviceSession.cpp",
+ "convert.cpp"],
+ cppflags: ["-DBINDERIZED"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "libcutils",
+ "android.hardware.camera.device@3.2",
+ "android.hardware.camera.provider@2.4",
+ "liblog",
+ "libhardware",
+ "libcamera_metadata"
+ ],
+ static_libs: [
+ "android.hardware.camera.common@1.0-helper"
+ ],
+ export_include_dirs: ["."]
+}
diff --git a/camera/provider/2.4/default/Android.bp b/camera/provider/2.4/default/Android.bp
index f28c9cd..ee40ce5 100644
--- a/camera/provider/2.4/default/Android.bp
+++ b/camera/provider/2.4/default/Android.bp
@@ -21,3 +21,29 @@
"android.hardware.camera.common@1.0-helper"
]
}
+
+cc_binary {
+ name: "android.hardware.camera.provider@2.4-service",
+ relative_install_path: "hw",
+ srcs: ["service.cpp", "CameraProvider.cpp"],
+ compile_multilib: "32",
+ init_rc: ["android.hardware.camera.provider@2.4-service.rc"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "liblog",
+ "libhwbinder",
+ "libutils",
+ "libhardware",
+ "android.hardware.camera.device@1.0",
+ "android.hardware.camera.device@3.2",
+ "android.hardware.camera.provider@2.4",
+ "android.hardware.camera.common@1.0",
+ "libcutils",
+ "android.hardware.camera.device@3.2-impl-binderized",
+ "libcamera_metadata"
+ ],
+ static_libs: [
+ "android.hardware.camera.common@1.0-helper"
+ ]
+}
diff --git a/camera/provider/2.4/default/CameraProvider.cpp b/camera/provider/2.4/default/CameraProvider.cpp
index 9617d8d..1a34aa6 100644
--- a/camera/provider/2.4/default/CameraProvider.cpp
+++ b/camera/provider/2.4/default/CameraProvider.cpp
@@ -17,8 +17,6 @@
#define LOG_TAG "CamProvider@2.4-impl"
#include <android/log.h>
-#include <regex>
-
#include "CameraProvider.h"
#include "CameraDevice.h"
#include <string.h>
diff --git a/camera/provider/2.4/default/CameraProvider.h b/camera/provider/2.4/default/CameraProvider.h
index 8497ff3..2a43e2f 100644
--- a/camera/provider/2.4/default/CameraProvider.h
+++ b/camera/provider/2.4/default/CameraProvider.h
@@ -17,6 +17,7 @@
#ifndef ANDROID_HARDWARE_CAMERA_PROVIDER_V2_4_CAMERAPROVIDER_H
#define ANDROID_HARDWARE_CAMERA_PROVIDER_V2_4_CAMERAPROVIDER_H
+#include <regex>
#include "hardware/camera_common.h"
#include "utils/Mutex.h"
#include "utils/SortedVector.h"
diff --git a/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc b/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc
new file mode 100644
index 0000000..31f0810
--- /dev/null
+++ b/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc
@@ -0,0 +1,6 @@
+service camera-provider-2-4 /system/bin/hw/android.hardware.camera.provider@2.4-service
+ class hal
+ user cameraserver
+ group audio camera input drmrpc
+ ioprio rt 4
+ writepid /dev/cpuset/camera-daemon/tasks /dev/stune/top-app/tasks
\ No newline at end of file
diff --git a/camera/provider/2.4/default/service.cpp b/camera/provider/2.4/default/service.cpp
new file mode 100644
index 0000000..2723dee
--- /dev/null
+++ b/camera/provider/2.4/default/service.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "android.hardware.camera.provider@2.4-service"
+
+#include <android/hardware/camera/provider/2.4/ICameraProvider.h>
+#include <CameraProvider.h>
+
+#include <hidl/HidlTransportSupport.h>
+#include <utils/StrongPointer.h>
+
+using android::hardware::configureRpcThreadpool;
+using android::hardware::joinRpcThreadpool;
+using android::sp;
+using android::hardware::camera::provider::V2_4::ICameraProvider;
+using android::hardware::camera::provider::V2_4::implementation::HIDL_FETCH_ICameraProvider;
+
+int main()
+{
+ const char instance[] = "legacy/0";
+
+ ALOGI("Camera provider Service is starting.");
+
+ configureRpcThreadpool(1, true /* callerWillJoin */);
+ // TODO (b/34510650): check the passthrough/binderized dev key
+ sp<ICameraProvider> service = HIDL_FETCH_ICameraProvider(instance);
+ if (service == nullptr) {
+ ALOGI("Camera provider getService returned NULL");
+ return -1;
+ }
+
+ LOG_FATAL_IF(service->isRemote(), "Camera provider service is REMOTE!");
+
+ service->registerAsService(instance);
+ joinRpcThreadpool();
+
+ return 0;
+}
\ No newline at end of file
diff --git a/drm/1.0/Android.bp b/drm/1.0/Android.bp
new file mode 100644
index 0000000..d899114
--- /dev/null
+++ b/drm/1.0/Android.bp
@@ -0,0 +1,88 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+genrule {
+ name: "android.hardware.drm@1.0_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0",
+ srcs: [
+ "types.hal",
+ "ICryptoFactory.hal",
+ "ICryptoPlugin.hal",
+ "IDrmFactory.hal",
+ "IDrmPlugin.hal",
+ "IDrmPluginListener.hal",
+ ],
+ out: [
+ "android/hardware/drm/1.0/types.cpp",
+ "android/hardware/drm/1.0/CryptoFactoryAll.cpp",
+ "android/hardware/drm/1.0/CryptoPluginAll.cpp",
+ "android/hardware/drm/1.0/DrmFactoryAll.cpp",
+ "android/hardware/drm/1.0/DrmPluginAll.cpp",
+ "android/hardware/drm/1.0/DrmPluginListenerAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.drm@1.0_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm@1.0",
+ srcs: [
+ "types.hal",
+ "ICryptoFactory.hal",
+ "ICryptoPlugin.hal",
+ "IDrmFactory.hal",
+ "IDrmPlugin.hal",
+ "IDrmPluginListener.hal",
+ ],
+ out: [
+ "android/hardware/drm/1.0/types.h",
+ "android/hardware/drm/1.0/ICryptoFactory.h",
+ "android/hardware/drm/1.0/IHwCryptoFactory.h",
+ "android/hardware/drm/1.0/BnHwCryptoFactory.h",
+ "android/hardware/drm/1.0/BpHwCryptoFactory.h",
+ "android/hardware/drm/1.0/BsCryptoFactory.h",
+ "android/hardware/drm/1.0/ICryptoPlugin.h",
+ "android/hardware/drm/1.0/IHwCryptoPlugin.h",
+ "android/hardware/drm/1.0/BnHwCryptoPlugin.h",
+ "android/hardware/drm/1.0/BpHwCryptoPlugin.h",
+ "android/hardware/drm/1.0/BsCryptoPlugin.h",
+ "android/hardware/drm/1.0/IDrmFactory.h",
+ "android/hardware/drm/1.0/IHwDrmFactory.h",
+ "android/hardware/drm/1.0/BnHwDrmFactory.h",
+ "android/hardware/drm/1.0/BpHwDrmFactory.h",
+ "android/hardware/drm/1.0/BsDrmFactory.h",
+ "android/hardware/drm/1.0/IDrmPlugin.h",
+ "android/hardware/drm/1.0/IHwDrmPlugin.h",
+ "android/hardware/drm/1.0/BnHwDrmPlugin.h",
+ "android/hardware/drm/1.0/BpHwDrmPlugin.h",
+ "android/hardware/drm/1.0/BsDrmPlugin.h",
+ "android/hardware/drm/1.0/IDrmPluginListener.h",
+ "android/hardware/drm/1.0/IHwDrmPluginListener.h",
+ "android/hardware/drm/1.0/BnHwDrmPluginListener.h",
+ "android/hardware/drm/1.0/BpHwDrmPluginListener.h",
+ "android/hardware/drm/1.0/BsDrmPluginListener.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.drm@1.0",
+ generated_sources: ["android.hardware.drm@1.0_genc++"],
+ generated_headers: ["android.hardware.drm@1.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.drm@1.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hidl.base@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/drm/crypto/1.0/ICryptoFactory.hal b/drm/1.0/ICryptoFactory.hal
similarity index 97%
rename from drm/crypto/1.0/ICryptoFactory.hal
rename to drm/1.0/ICryptoFactory.hal
index 4b60ccc..aeab9bc 100644
--- a/drm/crypto/1.0/ICryptoFactory.hal
+++ b/drm/1.0/ICryptoFactory.hal
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.hardware.drm.crypto@1.0;
+package android.hardware.drm@1.0;
import ICryptoPlugin;
diff --git a/drm/crypto/1.0/ICryptoPlugin.hal b/drm/1.0/ICryptoPlugin.hal
similarity index 87%
rename from drm/crypto/1.0/ICryptoPlugin.hal
rename to drm/1.0/ICryptoPlugin.hal
index 52c1d02..d66151e 100644
--- a/drm/crypto/1.0/ICryptoPlugin.hal
+++ b/drm/1.0/ICryptoPlugin.hal
@@ -13,9 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.hardware.drm.crypto@1.0;
+package android.hardware.drm@1.0;
-import android.hardware.drm.crypto@1.0::types;
+import android.hardware.drm@1.0::types;
/**
* Ref: frameworks/native/include/media/hardware/CryptoAPI.h:CryptoPlugin
@@ -57,6 +57,15 @@
setMediaDrmSession(vec<uint8_t> sessionId) generates(Status status);
/**
+ * Set a shared memory base for subsequent decrypt operations. The buffer
+ * base is a hidl_memory which maps shared memory in the HAL module.
+ * After the shared buffer base is established, the decrypt() method
+ * receives SharedBuffer instances which specify the buffer address range
+ * for decrypt source and destination addresses.
+ */
+ setSharedBufferBase(memory base);
+
+ /**
* Decrypt an array of subsamples from the source memory buffer to the
* destination memory buffer.
*
@@ -91,6 +100,6 @@
*/
decrypt(bool secure, uint8_t[16] keyId, uint8_t[16] iv, Mode mode,
Pattern pattern, vec<SubSample> subSamples,
- memory source, uint32_t offset, DestinationBuffer destination)
+ SharedBuffer source, uint64_t offset, DestinationBuffer destination)
generates(Status status, uint32_t bytesWritten, string detailedError);
};
diff --git a/drm/drm/1.0/IDrmFactory.hal b/drm/1.0/IDrmFactory.hal
similarity index 98%
rename from drm/drm/1.0/IDrmFactory.hal
rename to drm/1.0/IDrmFactory.hal
index 1ef1d27..de53929 100644
--- a/drm/drm/1.0/IDrmFactory.hal
+++ b/drm/1.0/IDrmFactory.hal
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.hardware.drm.drm@1.0;
+package android.hardware.drm@1.0;
import IDrmPlugin;
diff --git a/drm/drm/1.0/IDrmPlugin.hal b/drm/1.0/IDrmPlugin.hal
similarity index 99%
rename from drm/drm/1.0/IDrmPlugin.hal
rename to drm/1.0/IDrmPlugin.hal
index 881bf80..5bae22d 100644
--- a/drm/drm/1.0/IDrmPlugin.hal
+++ b/drm/1.0/IDrmPlugin.hal
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.hardware.drm.drm@1.0;
+package android.hardware.drm@1.0;
import IDrmPluginListener;
diff --git a/drm/drm/1.0/IDrmPluginListener.hal b/drm/1.0/IDrmPluginListener.hal
similarity index 96%
rename from drm/drm/1.0/IDrmPluginListener.hal
rename to drm/1.0/IDrmPluginListener.hal
index 92010a1..15ce008 100644
--- a/drm/drm/1.0/IDrmPluginListener.hal
+++ b/drm/1.0/IDrmPluginListener.hal
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package android.hardware.drm.drm@1.0;
+package android.hardware.drm@1.0;
-import android.hardware.drm.drm@1.0::types;
+import android.hardware.drm@1.0::types;
/**
* Ref: frameworks/native/include/media/drm/DrmAPI.h:DrmPluginListener
diff --git a/drm/1.0/default/Android.mk b/drm/1.0/default/Android.mk
index 87a0019..ac5b90a 100644
--- a/drm/1.0/default/Android.mk
+++ b/drm/1.0/default/Android.mk
@@ -14,6 +14,8 @@
# limitations under the License.
+############# Build legacy drm service ############
+
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
@@ -24,16 +26,14 @@
service.cpp \
LOCAL_SHARED_LIBRARIES := \
+ android.hardware.drm@1.0 \
+ android.hidl.memory@1.0 \
libhidlbase \
libhidltransport \
- liblog \
- libhwbinder \
- libutils \
libhardware \
- android.hardware.drm.drm@1.0 \
- android.hardware.drm.crypto@1.0 \
- android.hidl.memory@1.0 \
-
+ libhwbinder \
+ liblog \
+ libutils \
LOCAL_C_INCLUDES := \
hardware/interfaces/drm
@@ -43,3 +43,37 @@
LOCAL_32_BIT_ONLY := true
include $(BUILD_EXECUTABLE)
+
+############# Build legacy drm impl library ############
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.drm@1.0-impl
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_SRC_FILES := \
+ DrmFactory.cpp \
+ DrmPlugin.cpp \
+ CryptoFactory.cpp \
+ CryptoPlugin.cpp \
+ TypeConvert.cpp \
+
+LOCAL_SHARED_LIBRARIES := \
+ android.hardware.drm@1.0 \
+ android.hidl.memory@1.0 \
+ libhidlbase \
+ libhidlmemory \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libmediadrm \
+ libstagefright_foundation \
+ libutils \
+
+LOCAL_C_INCLUDES := \
+ frameworks/native/include \
+ frameworks/av/include
+
+# TODO: The legacy DRM plugins only support 32-bit. They need
+# to be migrated to 64-bit (b/18948909)
+LOCAL_32_BIT_ONLY := true
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/drm/crypto/1.0/default/CryptoFactory.cpp b/drm/1.0/default/CryptoFactory.cpp
similarity index 94%
rename from drm/crypto/1.0/default/CryptoFactory.cpp
rename to drm/1.0/default/CryptoFactory.cpp
index 9519d01..02084e7 100644
--- a/drm/crypto/1.0/default/CryptoFactory.cpp
+++ b/drm/1.0/default/CryptoFactory.cpp
@@ -22,7 +22,6 @@
namespace android {
namespace hardware {
namespace drm {
-namespace crypto {
namespace V1_0 {
namespace implementation {
@@ -30,7 +29,7 @@
loader("/vendor/lib/mediadrm", "createCryptoFactory") {
}
- // Methods from ::android::hardware::drm::crypto::V1_0::ICryptoFactory follow.
+ // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
Return<bool> CryptoFactory::isCryptoSchemeSupported(
const hidl_array<uint8_t, 16>& uuid) {
for (size_t i = 0; i < loader.factoryCount(); i++) {
@@ -68,7 +67,6 @@
} // namespace implementation
} // namespace V1_0
-} // namespace crypto
} // namespace drm
} // namespace hardware
} // namespace android
diff --git a/drm/crypto/1.0/default/CryptoFactory.h b/drm/1.0/default/CryptoFactory.h
similarity index 78%
rename from drm/crypto/1.0/default/CryptoFactory.h
rename to drm/1.0/default/CryptoFactory.h
index 0855996..412b557 100644
--- a/drm/crypto/1.0/default/CryptoFactory.h
+++ b/drm/1.0/default/CryptoFactory.h
@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#ifndef ANDROID_HARDWARE_DRM_CRYPTO_V1_0__CRYPTOFACTORY_H
-#define ANDROID_HARDWARE_DRM_CRYPTO_V1_0__CRYPTOFACTORY_H
+#ifndef ANDROID_HARDWARE_DRM_V1_0__CRYPTOFACTORY_H
+#define ANDROID_HARDWARE_DRM_V1_0__CRYPTOFACTORY_H
-#include <android/hardware/drm/crypto/1.0/ICryptoFactory.h>
+#include <android/hardware/drm/1.0/ICryptoFactory.h>
#include <hidl/Status.h>
#include <media/hardware/CryptoAPI.h>
#include <media/PluginLoader.h>
@@ -25,12 +25,11 @@
namespace android {
namespace hardware {
namespace drm {
-namespace crypto {
namespace V1_0 {
namespace implementation {
-using ::android::hardware::drm::crypto::V1_0::ICryptoFactory;
-using ::android::hardware::drm::crypto::V1_0::ICryptoPlugin;
+using ::android::hardware::drm::V1_0::ICryptoFactory;
+using ::android::hardware::drm::V1_0::ICryptoPlugin;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
@@ -42,7 +41,7 @@
CryptoFactory();
virtual ~CryptoFactory() {}
- // Methods from ::android::hardware::drm::crypto::V1_0::ICryptoFactory follow.
+ // Methods from ::android::hardware::drm::V1_0::ICryptoFactory follow.
Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>& uuid)
override;
@@ -62,9 +61,8 @@
} // namespace implementation
} // namespace V1_0
-} // namespace crypto
} // namespace drm
} // namespace hardware
} // namespace android
-#endif // ANDROID_HARDWARE_DRM_CRYPTO_V1_0__CRYPTOFACTORY_H
+#endif // ANDROID_HARDWARE_DRM_V1_0__CRYPTOFACTORY_H
diff --git a/drm/crypto/1.0/default/CryptoPlugin.cpp b/drm/1.0/default/CryptoPlugin.cpp
similarity index 78%
rename from drm/crypto/1.0/default/CryptoPlugin.cpp
rename to drm/1.0/default/CryptoPlugin.cpp
index 81365c8..073f030 100644
--- a/drm/crypto/1.0/default/CryptoPlugin.cpp
+++ b/drm/1.0/default/CryptoPlugin.cpp
@@ -17,23 +17,21 @@
#include "CryptoPlugin.h"
#include "TypeConvert.h"
-#include <media/stagefright/foundation/AString.h>
-
-#include <hidlmemory/mapping.h>
#include <android/hidl/memory/1.0/IMemory.h>
+#include <hidlmemory/mapping.h>
+#include <media/stagefright/foundation/AString.h>
#include <utils/Log.h>
+using android::hardware::hidl_memory;
using android::hidl::memory::V1_0::IMemory;
-
namespace android {
namespace hardware {
namespace drm {
-namespace crypto {
namespace V1_0 {
namespace implementation {
- // Methods from ::android::hardware::drm::crypto::V1_0::ICryptoPlugin follow
+ // Methods from ::android::hardware::drm::V1_0::ICryptoPlugin follow
Return<bool> CryptoPlugin::requiresSecureDecoderComponent(
const hidl_string& mime) {
return mLegacyPlugin->requiresSecureDecoderComponent(mime);
@@ -50,11 +48,16 @@
return toStatus(mLegacyPlugin->setMediaDrmSession(toVector(sessionId)));
}
+ Return<void> CryptoPlugin::setSharedBufferBase(const hidl_memory& base) {
+ mSharedBufferBase = mapMemory(base);
+ return Void();
+ }
+
Return<void> CryptoPlugin::decrypt(bool secure,
const hidl_array<uint8_t, 16>& keyId,
const hidl_array<uint8_t, 16>& iv, Mode mode,
const Pattern& pattern, const hidl_vec<SubSample>& subSamples,
- const hidl_memory& source, uint32_t offset,
+ const SharedBuffer& source, uint64_t offset,
const DestinationBuffer& destination,
decrypt_cb _hidl_cb) {
@@ -89,19 +92,23 @@
AString detailMessage;
- sp<IMemory> sharedSourceMemory = mapMemory(source);
+ if (source.offset + offset + source.size > mSharedBufferBase->getSize()) {
+ _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
+ return Void();
+ }
- void *srcPtr = static_cast<void *>(sharedSourceMemory->getPointer());
- uint8_t *offsetSrc = static_cast<uint8_t *>(srcPtr) + offset;
- srcPtr = static_cast<void *>(offsetSrc);
+ uint8_t *base = static_cast<uint8_t *>
+ (static_cast<void *>(mSharedBufferBase->getPointer()));
+ void *srcPtr = static_cast<void *>(base + source.offset + offset);
- sp<IMemory> sharedDestinationMemory;
void *destPtr = NULL;
-
if (destination.type == BufferType::SHARED_MEMORY) {
- sharedDestinationMemory = mapMemory(destination.nonsecureMemory);
- sharedDestinationMemory->update();
- destPtr = sharedDestinationMemory->getPointer();
+ const SharedBuffer& destBuffer = destination.nonsecureMemory;
+ if (destBuffer.offset + destBuffer.size > mSharedBufferBase->getSize()) {
+ _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
+ return Void();
+ }
+ destPtr = static_cast<void *>(base + destination.nonsecureMemory.offset);
} else if (destination.type == BufferType::NATIVE_HANDLE) {
native_handle_t *handle = const_cast<native_handle_t *>(
destination.secureMemory.getNativeHandle());
@@ -111,10 +118,6 @@
legacyMode, legacyPattern, srcPtr, legacySubSamples,
subSamples.size(), destPtr, &detailMessage);
- if (destination.type == BufferType::SHARED_MEMORY) {
- sharedDestinationMemory->commit();
- }
-
delete[] legacySubSamples;
uint32_t status;
@@ -134,7 +137,6 @@
} // namespace implementation
} // namespace V1_0
-} // namespace crypto
} // namespace drm
} // namespace hardware
} // namespace android
diff --git a/drm/crypto/1.0/default/CryptoPlugin.h b/drm/1.0/default/CryptoPlugin.h
similarity index 68%
rename from drm/crypto/1.0/default/CryptoPlugin.h
rename to drm/1.0/default/CryptoPlugin.h
index b1473f1..f805f09 100644
--- a/drm/crypto/1.0/default/CryptoPlugin.h
+++ b/drm/1.0/default/CryptoPlugin.h
@@ -14,30 +14,31 @@
* limitations under the License.
*/
-#ifndef ANDROID_HARDWARE_DRM_CRYPTO_V1_0__CRYPTOPLUGIN_H
-#define ANDROID_HARDWARE_DRM_CRYPTO_V1_0__CRYPTOPLUGIN_H
+#ifndef ANDROID_HARDWARE_DRM_V1_0__CRYPTOPLUGIN_H
+#define ANDROID_HARDWARE_DRM_V1_0__CRYPTOPLUGIN_H
-#include <media/hardware/CryptoAPI.h>
-#include <android/hardware/drm/crypto/1.0/ICryptoPlugin.h>
+#include <android/hidl/memory/1.0/IMemory.h>
+#include <android/hardware/drm/1.0/ICryptoPlugin.h>
#include <hidl/Status.h>
+#include <media/hardware/CryptoAPI.h>
namespace android {
namespace hardware {
namespace drm {
-namespace crypto {
namespace V1_0 {
namespace implementation {
-using ::android::hardware::drm::crypto::V1_0::DestinationBuffer;
-using ::android::hardware::drm::crypto::V1_0::ICryptoPlugin;
-using ::android::hardware::drm::crypto::V1_0::Mode;
-using ::android::hardware::drm::crypto::V1_0::Pattern;
-using ::android::hardware::drm::crypto::V1_0::SubSample;
+using ::android::hardware::drm::V1_0::DestinationBuffer;
+using ::android::hardware::drm::V1_0::ICryptoPlugin;
+using ::android::hardware::drm::V1_0::Mode;
+using ::android::hardware::drm::V1_0::Pattern;
+using ::android::hardware::drm::V1_0::SubSample;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::hardware::Void;
+using ::android::hidl::memory::V1_0::IMemory;
using ::android::sp;
struct CryptoPlugin : public ICryptoPlugin {
@@ -45,7 +46,7 @@
~CryptoPlugin() {delete mLegacyPlugin;}
- // Methods from ::android::hardware::drm::crypto::V1_0::ICryptoPlugin
+ // Methods from ::android::hardware::drm::V1_0::ICryptoPlugin
// follow.
Return<bool> requiresSecureDecoderComponent(const hidl_string& mime)
@@ -56,14 +57,18 @@
Return<Status> setMediaDrmSession(const hidl_vec<uint8_t>& sessionId)
override;
+ Return<void> setSharedBufferBase(const ::android::hardware::hidl_memory& base)
+ override;
+
Return<void> decrypt(bool secure, const hidl_array<uint8_t, 16>& keyId,
const hidl_array<uint8_t, 16>& iv, Mode mode, const Pattern& pattern,
- const hidl_vec<SubSample>& subSamples, const hidl_memory& source,
- uint32_t offset, const DestinationBuffer& destination,
+ const hidl_vec<SubSample>& subSamples, const SharedBuffer& source,
+ uint64_t offset, const DestinationBuffer& destination,
decrypt_cb _hidl_cb) override;
private:
android::CryptoPlugin *mLegacyPlugin;
+ sp<IMemory> mSharedBufferBase;
CryptoPlugin() = delete;
CryptoPlugin(const CryptoPlugin &) = delete;
@@ -72,9 +77,8 @@
} // namespace implementation
} // namespace V1_0
-} // namespace crypto
} // namespace drm
} // namespace hardware
} // namespace android
-#endif // ANDROID_HARDWARE_DRM_CRYPTO_V1_0__CRYPTOPLUGIN_H
+#endif // ANDROID_HARDWARE_DRM_V1_0__CRYPTOPLUGIN_H
diff --git a/drm/drm/1.0/default/DrmFactory.cpp b/drm/1.0/default/DrmFactory.cpp
similarity index 95%
rename from drm/drm/1.0/default/DrmFactory.cpp
rename to drm/1.0/default/DrmFactory.cpp
index 98a8416..cba2c99 100644
--- a/drm/drm/1.0/default/DrmFactory.cpp
+++ b/drm/1.0/default/DrmFactory.cpp
@@ -22,7 +22,6 @@
namespace android {
namespace hardware {
namespace drm {
-namespace drm {
namespace V1_0 {
namespace implementation {
@@ -30,7 +29,7 @@
loader("/vendor/lib/mediadrm", "createDrmFactory") {
}
- // Methods from ::android::hardware::drm::drm::V1_0::IDrmFactory follow.
+ // Methods from ::android::hardware::drm::V1_0::IDrmFactory follow.
Return<bool> DrmFactory::isCryptoSchemeSupported (
const hidl_array<uint8_t, 16>& uuid) {
for (size_t i = 0; i < loader.factoryCount(); i++) {
@@ -80,6 +79,5 @@
} // namespace implementation
} // namespace V1_0
} // namespace drm
-} // namespace drm
} // namespace hardware
} // namespace android
diff --git a/drm/drm/1.0/default/DrmFactory.h b/drm/1.0/default/DrmFactory.h
similarity index 80%
rename from drm/drm/1.0/default/DrmFactory.h
rename to drm/1.0/default/DrmFactory.h
index 2b88d00..78b7f6e 100644
--- a/drm/drm/1.0/default/DrmFactory.h
+++ b/drm/1.0/default/DrmFactory.h
@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#ifndef ANDROID_HARDWARE_DRM_DRM_V1_0__DRMFACTORY_H
-#define ANDROID_HARDWARE_DRM_DRM_V1_0__DRMFACTORY_H
+#ifndef ANDROID_HARDWARE_DRM_V1_0__DRMFACTORY_H
+#define ANDROID_HARDWARE_DRM_V1_0__DRMFACTORY_H
-#include <android/hardware/drm/drm/1.0/IDrmFactory.h>
+#include <android/hardware/drm/1.0/IDrmFactory.h>
#include <hidl/Status.h>
#include <media/drm/DrmAPI.h>
#include <media/PluginLoader.h>
@@ -25,12 +25,11 @@
namespace android {
namespace hardware {
namespace drm {
-namespace drm {
namespace V1_0 {
namespace implementation {
-using ::android::hardware::drm::drm::V1_0::IDrmFactory;
-using ::android::hardware::drm::drm::V1_0::IDrmPlugin;
+using ::android::hardware::drm::V1_0::IDrmFactory;
+using ::android::hardware::drm::V1_0::IDrmPlugin;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
@@ -42,7 +41,7 @@
DrmFactory();
virtual ~DrmFactory() {}
- // Methods from ::android::hardware::drm::drm::V1_0::IDrmFactory follow.
+ // Methods from ::android::hardware::drm::V1_0::IDrmFactory follow.
Return<bool> isCryptoSchemeSupported(const hidl_array<uint8_t, 16>& uuid)
override;
@@ -65,8 +64,7 @@
} // namespace implementation
} // namespace V1_0
} // namespace drm
-} // namespace drm
} // namespace hardware
} // namespace android
-#endif // ANDROID_HARDWARE_DRM_DRM_V1_0__DRMFACTORY_H
+#endif // ANDROID_HARDWARE_DRM_V1_0__DRMFACTORY_H
diff --git a/drm/drm/1.0/default/DrmPlugin.cpp b/drm/1.0/default/DrmPlugin.cpp
similarity index 99%
rename from drm/drm/1.0/default/DrmPlugin.cpp
rename to drm/1.0/default/DrmPlugin.cpp
index 0239502..9204fc5 100644
--- a/drm/drm/1.0/default/DrmPlugin.cpp
+++ b/drm/1.0/default/DrmPlugin.cpp
@@ -23,11 +23,10 @@
namespace android {
namespace hardware {
namespace drm {
-namespace drm {
namespace V1_0 {
namespace implementation {
- // Methods from ::android::hardware::drm::drm::V1_0::IDrmPlugin follow.
+ // Methods from ::android::hardware::drm::V1_0::IDrmPlugin follow.
Return<void> DrmPlugin::openSession(openSession_cb _hidl_cb) {
Vector<uint8_t> legacySessionId;
@@ -422,6 +421,5 @@
} // namespace implementation
} // namespace V1_0
} // namespace drm
-} // namespace drm
} // namespace hardware
} // namespace android
diff --git a/drm/drm/1.0/default/DrmPlugin.h b/drm/1.0/default/DrmPlugin.h
similarity index 87%
rename from drm/drm/1.0/default/DrmPlugin.h
rename to drm/1.0/default/DrmPlugin.h
index 2bf3b5e..dce6c0c 100644
--- a/drm/drm/1.0/default/DrmPlugin.h
+++ b/drm/1.0/default/DrmPlugin.h
@@ -14,30 +14,28 @@
* limitations under the License.
*/
-#ifndef ANDROID_HARDWARE_DRM_DRM_V1_0__DRMPLUGIN_H
-#define ANDROID_HARDWARE_DRM_DRM_V1_0__DRMPLUGIN_H
+#ifndef ANDROID_HARDWARE_DRM_V1_0__DRMPLUGIN_H
+#define ANDROID_HARDWARE_DRM_V1_0__DRMPLUGIN_H
-#include <media/drm/DrmAPI.h>
-#include <android/hardware/drm/drm/1.0/IDrmPlugin.h>
-#include <android/hardware/drm/drm/1.0/IDrmPluginListener.h>
-#include <hidl/MQDescriptor.h>
+#include <android/hardware/drm/1.0/IDrmPlugin.h>
+#include <android/hardware/drm/1.0/IDrmPluginListener.h>
#include <hidl/Status.h>
+#include <media/drm/DrmAPI.h>
namespace android {
namespace hardware {
namespace drm {
-namespace drm {
namespace V1_0 {
namespace implementation {
-using ::android::hardware::drm::drm::V1_0::EventType;
-using ::android::hardware::drm::drm::V1_0::IDrmPlugin;
-using ::android::hardware::drm::drm::V1_0::IDrmPluginListener;
-using ::android::hardware::drm::drm::V1_0::KeyRequestType;
-using ::android::hardware::drm::drm::V1_0::KeyStatus;
-using ::android::hardware::drm::drm::V1_0::KeyType;
-using ::android::hardware::drm::drm::V1_0::KeyValue;
-using ::android::hardware::drm::drm::V1_0::SecureStop;
+using ::android::hardware::drm::V1_0::EventType;
+using ::android::hardware::drm::V1_0::IDrmPlugin;
+using ::android::hardware::drm::V1_0::IDrmPluginListener;
+using ::android::hardware::drm::V1_0::KeyRequestType;
+using ::android::hardware::drm::V1_0::KeyStatus;
+using ::android::hardware::drm::V1_0::KeyType;
+using ::android::hardware::drm::V1_0::KeyValue;
+using ::android::hardware::drm::V1_0::SecureStop;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
@@ -50,7 +48,7 @@
DrmPlugin(android::DrmPlugin *plugin) : mLegacyPlugin(plugin) {}
~DrmPlugin() {delete mLegacyPlugin;}
- // Methods from ::android::hardware::drm::drm::V1_0::IDrmPlugin follow.
+ // Methods from ::android::hardware::drm::V1_0::IDrmPlugin follow.
Return<void> openSession(openSession_cb _hidl_cb) override;
@@ -165,8 +163,7 @@
} // namespace implementation
} // namespace V1_0
} // namespace drm
-} // namespace drm
} // namespace hardware
} // namespace android
-#endif // ANDROID_HARDWARE_DRM_DRM_V1_0__DRMPLUGIN_H
+#endif // ANDROID_HARDWARE_DRM_V1_0__DRMPLUGIN_H
diff --git a/drm/drm/1.0/default/TypeConvert.cpp b/drm/1.0/default/TypeConvert.cpp
similarity index 93%
rename from drm/drm/1.0/default/TypeConvert.cpp
rename to drm/1.0/default/TypeConvert.cpp
index 4bed284..52cc503 100644
--- a/drm/drm/1.0/default/TypeConvert.cpp
+++ b/drm/1.0/default/TypeConvert.cpp
@@ -19,7 +19,6 @@
namespace android {
namespace hardware {
namespace drm {
-namespace drm {
namespace V1_0 {
namespace implementation {
@@ -53,6 +52,9 @@
case android::ERROR_DRM_RESOURCE_BUSY:
status = Status::ERROR_DRM_RESOURCE_BUSY;
break;
+ case android::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION:
+ status = Status::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION;
+ break;
case android::ERROR_DRM_DEVICE_REVOKED:
status = Status::ERROR_DRM_DEVICE_REVOKED;
break;
@@ -68,6 +70,5 @@
} // namespace implementation
} // namespace V1_0
} // namespace drm
-} // namespace drm
} // namespace hardware
} // namespace android
diff --git a/drm/crypto/1.0/default/TypeConvert.h b/drm/1.0/default/TypeConvert.h
similarity index 86%
rename from drm/crypto/1.0/default/TypeConvert.h
rename to drm/1.0/default/TypeConvert.h
index 1655bab..107fda5 100644
--- a/drm/crypto/1.0/default/TypeConvert.h
+++ b/drm/1.0/default/TypeConvert.h
@@ -14,20 +14,16 @@
* limitations under the License.
*/
-#ifndef ANDROID_HARDWARE_DRM_CRYPTO_V1_0_TYPECONVERT
-#define ANDROID_HARDWARE_DRM_CRYPTO_V1_0_TYPECONVERT
+#ifndef ANDROID_HARDWARE_DRM_V1_0_TYPECONVERT
+#define ANDROID_HARDWARE_DRM_V1_0_TYPECONVERT
-#include <utils/Vector.h>
+#include <android/hardware/drm/1.0/types.h>
#include <media/stagefright/MediaErrors.h>
-#include <media/hardware/CryptoAPI.h>
-
-#include <hidl/MQDescriptor.h>
-#include <android/hardware/drm/crypto/1.0/types.h>
+#include <utils/Vector.h>
namespace android {
namespace hardware {
namespace drm {
-namespace crypto {
namespace V1_0 {
namespace implementation {
@@ -75,9 +71,8 @@
} // namespace implementation
} // namespace V1_0
-} // namespace crypto
} // namespace drm
} // namespace hardware
} // namespace android
-#endif // ANDROID_HARDWARE_DRM_CRYPTO_V1_0_TYPECONVERT
+#endif // ANDROID_HARDWARE_DRM_V1_0_TYPECONVERT
diff --git a/drm/1.0/default/service.cpp b/drm/1.0/default/service.cpp
index 3531e03..fba56ec 100644
--- a/drm/1.0/default/service.cpp
+++ b/drm/1.0/default/service.cpp
@@ -16,8 +16,8 @@
#define LOG_TAG "android.hardware.drm@1.0-service"
-#include <crypto/1.0/default/CryptoFactory.h>
-#include <drm/1.0/default/DrmFactory.h>
+#include <1.0/default/CryptoFactory.h>
+#include <1.0/default/DrmFactory.h>
#include <hidl/HidlTransportSupport.h>
#include <hidl/LegacySupport.h>
@@ -26,8 +26,8 @@
using android::hardware::joinRpcThreadpool;
using android::hardware::registerPassthroughServiceImplementation;
-using android::hardware::drm::crypto::V1_0::ICryptoFactory;
-using android::hardware::drm::drm::V1_0::IDrmFactory;
+using android::hardware::drm::V1_0::ICryptoFactory;
+using android::hardware::drm::V1_0::IDrmFactory;
int main() {
ALOGD("android.hardware.drm@1.0-service starting...");
diff --git a/drm/drm/1.0/types.hal b/drm/1.0/types.hal
similarity index 67%
rename from drm/drm/1.0/types.hal
rename to drm/1.0/types.hal
index e099418..33bbf9a 100644
--- a/drm/drm/1.0/types.hal
+++ b/drm/1.0/types.hal
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.hardware.drm.drm@1.0;
+package android.hardware.drm@1.0;
enum Status : uint32_t {
/**
@@ -54,7 +54,7 @@
ERROR_DRM_INVALID_STATE,
/**
- * The Drm plugin must return BAD_VALUE whenever an illegal parameter is
+ * The DRM plugin must return BAD_VALUE whenever an illegal parameter is
* passed to one of the interface functions.
*/
BAD_VALUE,
@@ -74,7 +74,15 @@
ERROR_DRM_RESOURCE_BUSY,
/**
- * The Drm Plugin must return ERROR_DRM_DEVICE_REVOKED from
+ * The DRM Plugin must return ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION
+ * when the output protection level enabled on the device is not
+ * sufficient to meet the requirements in the license policy. HDCP is an
+ * example of a form of output protection.
+ */
+ ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION,
+
+ /**
+ * The DRM Plugin must return ERROR_DRM_DEVICE_REVOKED from
* provideProvisionResponse and provideKeyResponse if the response indicates
* that the device has been revoked. Device revocation means that the device
* is no longer permitted to play content.
@@ -237,3 +245,92 @@
};
typedef vec<uint8_t> SecureStopId;
+
+
+/**
+ * Enumerate the supported crypto modes
+ */
+enum Mode : uint32_t {
+ UNENCRYPTED = 0, // Samples are unencrypted
+ AES_CTR = 1, // Samples are encrypted with AES CTR mode
+ AES_CBC_CTS = 2, // Samples are encrypted with AES CBC CTS mode
+ AES_CBC = 3, // Samples are encrypted with AES CBC mode
+};
+
+/**
+ * A subsample consists of some number of bytes of clear (unencrypted)
+ * data followed by a number of bytes of encrypted data.
+ */
+struct SubSample {
+ uint32_t numBytesOfClearData;
+ uint32_t numBytesOfEncryptedData;
+};
+
+/**
+ * A crypto Pattern is a repeating sequence of encrypted and clear blocks
+ * occuring within the bytes indicated by mNumBytesOfEncryptedDatad bytes
+ * of a subsample. Patterns are used to reduce the CPU overhead of
+ * decrypting samples. As an example, HLS uses 1:9 patterns where every
+ * 10th block is encrypted.
+ */
+struct Pattern {
+ /**
+ * The number of blocks to be encrypted in the pattern. If zero,
+ * pattern encryption is inoperative.
+ */
+ uint32_t encryptBlocks;
+
+ /**
+ * The number of blocks to be skipped (left clear) in the pattern. If
+ * zero, pattern encryption is inoperative.
+ */
+ uint32_t skipBlocks;
+};
+
+enum BufferType : uint32_t {
+ SHARED_MEMORY = 0,
+ NATIVE_HANDLE = 1,
+};
+
+/**
+ * A SharedBuffer describes a decrypt buffer which is defined by an offset and
+ * a size. The offset is relative to the shared memory base which is established
+ * using setSharedMemoryBase().
+ */
+struct SharedBuffer {
+ /**
+ * The offset from the shared memory base
+ */
+ uint64_t offset;
+
+ /**
+ * The size of the shared buffer in bytes
+ */
+ uint64_t size;
+};
+
+
+/**
+ * A decrypt destination buffer can be either normal user-space shared
+ * memory for the non-secure decrypt case, or it can be a secure buffer
+ * which is referenced by a native-handle. The native handle is allocated
+ * by the vendor's buffer allocator.
+ */
+struct DestinationBuffer {
+ /**
+ * The type of the buffer
+ */
+ BufferType type;
+
+ /**
+ * If type == SHARED_MEMORY, the decrypted data must be written
+ * to user-space non-secure shared memory.
+ */
+ SharedBuffer nonsecureMemory;
+
+ /**
+ * If type == NATIVE_HANDLE, the decrypted data must be written
+ * to secure memory referenced by the vendor's buffer allocator.
+ */
+ handle secureMemory;
+};
diff --git a/drm/Android.bp b/drm/Android.bp
index 412e162..bbb3e4b 100644
--- a/drm/Android.bp
+++ b/drm/Android.bp
@@ -1,5 +1,4 @@
// This is an autogenerated file, do not edit.
subdirs = [
- "crypto/1.0",
- "drm/1.0",
+ "1.0",
]
diff --git a/drm/crypto/1.0/Android.bp b/drm/crypto/1.0/Android.bp
deleted file mode 100644
index 73eded1..0000000
--- a/drm/crypto/1.0/Android.bp
+++ /dev/null
@@ -1,64 +0,0 @@
-// This file is autogenerated by hidl-gen. Do not edit manually.
-
-genrule {
- name: "android.hardware.drm.crypto@1.0_genc++",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm.crypto@1.0",
- srcs: [
- "types.hal",
- "ICryptoFactory.hal",
- "ICryptoPlugin.hal",
- ],
- out: [
- "android/hardware/drm/crypto/1.0/types.cpp",
- "android/hardware/drm/crypto/1.0/CryptoFactoryAll.cpp",
- "android/hardware/drm/crypto/1.0/CryptoPluginAll.cpp",
- ],
-}
-
-genrule {
- name: "android.hardware.drm.crypto@1.0_genc++_headers",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm.crypto@1.0",
- srcs: [
- "types.hal",
- "ICryptoFactory.hal",
- "ICryptoPlugin.hal",
- ],
- out: [
- "android/hardware/drm/crypto/1.0/types.h",
- "android/hardware/drm/crypto/1.0/ICryptoFactory.h",
- "android/hardware/drm/crypto/1.0/IHwCryptoFactory.h",
- "android/hardware/drm/crypto/1.0/BnHwCryptoFactory.h",
- "android/hardware/drm/crypto/1.0/BpHwCryptoFactory.h",
- "android/hardware/drm/crypto/1.0/BsCryptoFactory.h",
- "android/hardware/drm/crypto/1.0/ICryptoPlugin.h",
- "android/hardware/drm/crypto/1.0/IHwCryptoPlugin.h",
- "android/hardware/drm/crypto/1.0/BnHwCryptoPlugin.h",
- "android/hardware/drm/crypto/1.0/BpHwCryptoPlugin.h",
- "android/hardware/drm/crypto/1.0/BsCryptoPlugin.h",
- ],
-}
-
-cc_library_shared {
- name: "android.hardware.drm.crypto@1.0",
- generated_sources: ["android.hardware.drm.crypto@1.0_genc++"],
- generated_headers: ["android.hardware.drm.crypto@1.0_genc++_headers"],
- export_generated_headers: ["android.hardware.drm.crypto@1.0_genc++_headers"],
- shared_libs: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "liblog",
- "libutils",
- "libcutils",
- "android.hidl.base@1.0",
- ],
- export_shared_lib_headers: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "libutils",
- "android.hidl.base@1.0",
- ],
-}
diff --git a/drm/crypto/1.0/default/Android.mk b/drm/crypto/1.0/default/Android.mk
deleted file mode 100644
index 27fca98..0000000
--- a/drm/crypto/1.0/default/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2016, 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.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.drm.crypto@1.0-impl
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SRC_FILES := \
- CryptoFactory.cpp \
- CryptoPlugin.cpp \
- TypeConvert.cpp \
-
-LOCAL_SHARED_LIBRARIES := \
- libhidlbase \
- libhidltransport \
- libhwbinder \
- libhidlmemory \
- libutils \
- liblog \
- libmediadrm \
- libstagefright_foundation \
- android.hardware.drm.crypto@1.0 \
- android.hidl.memory@1.0 \
-
-LOCAL_C_INCLUDES := \
- frameworks/native/include \
- frameworks/av/include
-
-# TODO: The legacy DRM plugins only support 32-bit. They need
-# to be migrated to 64-bit (b/18948909)
-LOCAL_32_BIT_ONLY := true
-
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/drm/crypto/1.0/default/TypeConvert.cpp b/drm/crypto/1.0/default/TypeConvert.cpp
deleted file mode 100644
index ed95d15..0000000
--- a/drm/crypto/1.0/default/TypeConvert.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2016 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 "TypeConvert.h"
-
-namespace android {
-namespace hardware {
-namespace drm {
-namespace crypto {
-namespace V1_0 {
-namespace implementation {
-
-Status toStatus(status_t legacyStatus) {
- Status status;
- switch(legacyStatus) {
- case android::OK:
- status = Status::OK;
- break;
- case android::ERROR_DRM_NO_LICENSE:
- status = Status::ERROR_DRM_NO_LICENSE;
- break;
- case android::ERROR_DRM_LICENSE_EXPIRED:
- status = Status::ERROR_DRM_LICENSE_EXPIRED;
- break;
- case android::ERROR_DRM_RESOURCE_BUSY:
- status = Status::ERROR_DRM_RESOURCE_BUSY;
- break;
- case android::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION:
- status = Status::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION;
- break;
- case android::ERROR_DRM_SESSION_NOT_OPENED:
- status = Status::ERROR_DRM_SESSION_NOT_OPENED;
- break;
- case android::ERROR_DRM_CANNOT_HANDLE:
- case android::BAD_VALUE:
- status = Status::ERROR_DRM_CANNOT_HANDLE;
- break;
- default:
- ALOGW("Unable to convert legacy status: %d, defaulting to UNKNOWN",
- legacyStatus);
- status = Status::ERROR_UNKNOWN_CRYPTO_EXCEPTION;
- break;
- }
- return status;
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace crypto
-} // namespace drm
-} // namespace hardware
-} // namespace android
diff --git a/drm/crypto/1.0/types.hal b/drm/crypto/1.0/types.hal
deleted file mode 100644
index e71d73a..0000000
--- a/drm/crypto/1.0/types.hal
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.hardware.drm.crypto@1.0;
-
-enum Status : uint32_t {
- /**
- * The Crypto plugin must return OK when an operation completes without any
- * errors.
- */
- OK,
-
- /**
- * The Crypto Plugin must return ERROR_DRM_NO_LICENSE if decryption is
- * attempted when the license keys have not been loaded into the crypto
- * session.
- */
- ERROR_DRM_NO_LICENSE,
-
- /**
- * The Crypto Plugin must return ERROR_DRM_LICENSE_EXPIRED if decryption
- * is attempted when the license keys have expired and are no longer usable.
- */
- ERROR_DRM_LICENSE_EXPIRED,
-
- /**
- * The Crypto Plugin must return ERROR_DRM_RESOURCE_BUSY when a required
- * crypto resource cannot be allocated while attempting decryption.
- */
- ERROR_DRM_RESOURCE_BUSY,
-
- /**
- * The Crypto Plugin must return ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION
- * when the output protection level enabled on the device is not
- * sufficient to meet the requirements in the license policy. HDCP is an
- * example of a form of output protection.
- */
- ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION,
-
- /**
- * The Crypto Plugin must return ERROR_DRM_SESSION_NOT_OPENED when
- * decryption is attempted on a session that is not opened.
- */
- ERROR_DRM_SESSION_NOT_OPENED,
-
- /**
- * The Crypto Plugin must return ERROR_DRM_CANNOT_HANDLE when an operation
- * is attempted that cannot be supported by the crypto system of the device.
- */
- ERROR_DRM_CANNOT_HANDLE,
-
- /**
- * The Crypto Plugin must return ERROR_UNKNOWN_CRYPTO_EXCEPTION in any
- * fatal condition that is not covered by the other error messages.
- */
- ERROR_UNKNOWN_CRYPTO_EXCEPTION,
-};
-
-/**
- * Enumerate the supported crypto modes
- */
-enum Mode : uint32_t {
- UNENCRYPTED = 0, // Samples are unencrypted
- AES_CTR = 1, // Samples are encrypted with AES CTR mode
- AES_CBC_CTS = 2, // Samples are encrypted with AES CBC CTS mode
- AES_CBC = 3, // Samples are encrypted with AES CBC mode
-};
-
-/**
- * A subsample consists of some number of bytes of clear (unencrypted)
- * data followed by a number of bytes of encrypted data.
- */
-struct SubSample {
- uint32_t numBytesOfClearData;
- uint32_t numBytesOfEncryptedData;
-};
-
-/**
- * A crypto Pattern is a repeating sequence of encrypted and clear blocks
- * occuring within the bytes indicated by mNumBytesOfEncryptedDatad bytes
- * of a subsample. Patterns are used to reduce the CPU overhead of
- * decrypting samples. As an example, HLS uses 1:9 patterns where every
- * 10th block is encrypted.
- */
-struct Pattern {
- /**
- * The number of blocks to be encrypted in the pattern. If zero,
- * pattern encryption is inoperative.
- */
- uint32_t encryptBlocks;
-
- /**
- * The number of blocks to be skipped (left clear) in the pattern. If
- * zero, pattern encryption is inoperative.
- */
- uint32_t skipBlocks;
-};
-
-enum BufferType : uint32_t {
- SHARED_MEMORY = 0,
- NATIVE_HANDLE = 1,
-};
-
-
-/**
- * A decrypt destination buffer can be either normal user-space shared
- * memory for the non-secure decrypt case, or it can be a secure buffer
- * which is referenced by a native-handle. The native handle is allocated
- * by the vendor's buffer allocator.
- */
-struct DestinationBuffer {
- /**
- * The type of the buffer
- */
- BufferType type;
-
- /**
- * If type == SHARED_MEMORY, the decrypted data must be written
- * to user-space non-secure shared memory.
- */
- memory nonsecureMemory;
-
- /**
- * If type == NATIVE_HANDLE, the decrypted data must be written
- * to secure memory referenced by the vendor's buffer allocator.
- */
- handle secureMemory;
-};
diff --git a/drm/drm/1.0/Android.bp b/drm/drm/1.0/Android.bp
deleted file mode 100644
index dfff435..0000000
--- a/drm/drm/1.0/Android.bp
+++ /dev/null
@@ -1,72 +0,0 @@
-// This file is autogenerated by hidl-gen. Do not edit manually.
-
-genrule {
- name: "android.hardware.drm.drm@1.0_genc++",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm.drm@1.0",
- srcs: [
- "types.hal",
- "IDrmFactory.hal",
- "IDrmPlugin.hal",
- "IDrmPluginListener.hal",
- ],
- out: [
- "android/hardware/drm/drm/1.0/types.cpp",
- "android/hardware/drm/drm/1.0/DrmFactoryAll.cpp",
- "android/hardware/drm/drm/1.0/DrmPluginAll.cpp",
- "android/hardware/drm/drm/1.0/DrmPluginListenerAll.cpp",
- ],
-}
-
-genrule {
- name: "android.hardware.drm.drm@1.0_genc++_headers",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.drm.drm@1.0",
- srcs: [
- "types.hal",
- "IDrmFactory.hal",
- "IDrmPlugin.hal",
- "IDrmPluginListener.hal",
- ],
- out: [
- "android/hardware/drm/drm/1.0/types.h",
- "android/hardware/drm/drm/1.0/IDrmFactory.h",
- "android/hardware/drm/drm/1.0/IHwDrmFactory.h",
- "android/hardware/drm/drm/1.0/BnHwDrmFactory.h",
- "android/hardware/drm/drm/1.0/BpHwDrmFactory.h",
- "android/hardware/drm/drm/1.0/BsDrmFactory.h",
- "android/hardware/drm/drm/1.0/IDrmPlugin.h",
- "android/hardware/drm/drm/1.0/IHwDrmPlugin.h",
- "android/hardware/drm/drm/1.0/BnHwDrmPlugin.h",
- "android/hardware/drm/drm/1.0/BpHwDrmPlugin.h",
- "android/hardware/drm/drm/1.0/BsDrmPlugin.h",
- "android/hardware/drm/drm/1.0/IDrmPluginListener.h",
- "android/hardware/drm/drm/1.0/IHwDrmPluginListener.h",
- "android/hardware/drm/drm/1.0/BnHwDrmPluginListener.h",
- "android/hardware/drm/drm/1.0/BpHwDrmPluginListener.h",
- "android/hardware/drm/drm/1.0/BsDrmPluginListener.h",
- ],
-}
-
-cc_library_shared {
- name: "android.hardware.drm.drm@1.0",
- generated_sources: ["android.hardware.drm.drm@1.0_genc++"],
- generated_headers: ["android.hardware.drm.drm@1.0_genc++_headers"],
- export_generated_headers: ["android.hardware.drm.drm@1.0_genc++_headers"],
- shared_libs: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "liblog",
- "libutils",
- "libcutils",
- "android.hidl.base@1.0",
- ],
- export_shared_lib_headers: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "libutils",
- "android.hidl.base@1.0",
- ],
-}
diff --git a/drm/drm/1.0/default/Android.mk b/drm/drm/1.0/default/Android.mk
deleted file mode 100644
index 52e67e1..0000000
--- a/drm/drm/1.0/default/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2016, 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.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.drm.drm@1.0-impl
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SRC_FILES := \
- DrmFactory.cpp \
- DrmPlugin.cpp \
- TypeConvert.cpp \
-
-LOCAL_SHARED_LIBRARIES := \
- libhidlbase \
- libhidltransport \
- libhwbinder \
- libutils \
- liblog \
- libmediadrm \
- libstagefright_foundation \
- android.hardware.drm.drm@1.0 \
-
-LOCAL_C_INCLUDES := \
- frameworks/native/include \
- frameworks/av/include
-
-# TODO: The legacy DRM plugins only support 32-bit. They need
-# to be migrated to 64-bit (b/18948909)
-LOCAL_32_BIT_ONLY := true
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/drm/drm/1.0/default/TypeConvert.h b/drm/drm/1.0/default/TypeConvert.h
deleted file mode 100644
index 2f7875e..0000000
--- a/drm/drm/1.0/default/TypeConvert.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-#ifndef ANDROID_HARDWARE_DRM_DRM_V1_0_TYPECONVERT
-#define ANDROID_HARDWARE_DRM_DRM_V1_0_TYPECONVERT
-
-#include <utils/Vector.h>
-#include <media/stagefright/MediaErrors.h>
-#include <media/drm/DrmAPI.h>
-
-#include <hidl/MQDescriptor.h>
-#include <android/hardware/drm/drm/1.0/types.h>
-
-namespace android {
-namespace hardware {
-namespace drm {
-namespace drm {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::hidl_vec;
-
-template<typename T> const hidl_vec<T> toHidlVec(const Vector<T> &Vector) {
- hidl_vec<T> vec;
- vec.setToExternal(const_cast<T *>(Vector.array()), Vector.size());
- return vec;
-}
-
-template<typename T> hidl_vec<T> toHidlVec(Vector<T> &Vector) {
- hidl_vec<T> vec;
- vec.setToExternal(Vector.editArray(), Vector.size());
- return vec;
-}
-
-template<typename T> const Vector<T> toVector(const hidl_vec<T> & vec) {
- Vector<T> vector;
- vector.appendArray(vec.data(), vec.size());
- return *const_cast<const Vector<T> *>(&vector);
-}
-
-template<typename T> Vector<T> toVector(hidl_vec<T> &vec) {
- Vector<T> vector;
- vector.appendArray(vec.data(), vec.size());
- return vector;
-}
-
-Status toStatus(status_t legacyStatus);
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace drm
-} // namespace drm
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_DRM_DRM_V1_0_TYPECONVERT
diff --git a/graphics/composer/2.1/default/HwcClient.cpp b/graphics/composer/2.1/default/HwcClient.cpp
index 54dfd89..621cb14 100644
--- a/graphics/composer/2.1/default/HwcClient.cpp
+++ b/graphics/composer/2.1/default/HwcClient.cpp
@@ -514,7 +514,7 @@
if (outDescriptor) {
hidl_cb(Error::NONE, *outDescriptor);
} else {
- hidl_cb(Error::NO_RESOURCES, MQDescriptorSync<uint32_t>());
+ hidl_cb(Error::NO_RESOURCES, CommandQueueType::Descriptor());
}
return Void();
diff --git a/ir/1.0/Android.bp b/ir/1.0/Android.bp
index 3a8fceb..fb9f070 100644
--- a/ir/1.0/Android.bp
+++ b/ir/1.0/Android.bp
@@ -54,3 +54,106 @@
"android.hidl.base@1.0",
],
}
+
+genrule {
+ name: "android.hardware.ir.vts.driver@1.0_genc++",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/ir/1.0/ $(genDir)/android/hardware/ir/1.0/",
+ srcs: [
+ "types.hal",
+ "IConsumerIr.hal",
+ ],
+ out: [
+ "android/hardware/ir/1.0/types.vts.cpp",
+ "android/hardware/ir/1.0/ConsumerIr.vts.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.ir.vts.driver@1.0_genc++_headers",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/ir/1.0/ $(genDir)/android/hardware/ir/1.0/",
+ srcs: [
+ "types.hal",
+ "IConsumerIr.hal",
+ ],
+ out: [
+ "android/hardware/ir/1.0/types.vts.h",
+ "android/hardware/ir/1.0/ConsumerIr.vts.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.ir.vts.driver@1.0",
+ generated_sources: ["android.hardware.ir.vts.driver@1.0_genc++"],
+ generated_headers: ["android.hardware.ir.vts.driver@1.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.ir.vts.driver@1.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "libvts_common",
+ "libvts_datatype",
+ "libvts_measurement",
+ "libvts_multidevice_proto",
+ "libcamera_metadata",
+ "libprotobuf-cpp-full",
+ "android.hidl.base@1.0",
+ "android.hardware.ir@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hidl.base@1.0",
+ ],
+}
+
+genrule {
+ name: "android.hardware.ir@1.0-IConsumerIr-vts.profiler_genc++",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/ir/1.0/ $(genDir)/android/hardware/ir/1.0/",
+ srcs: [
+ "IConsumerIr.hal",
+ "types.hal",
+ ],
+ out: [
+ "android/hardware/ir/1.0/ConsumerIr.vts.cpp",
+ "android/hardware/ir/1.0/types.vts.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.ir@1.0-IConsumerIr-vts.profiler_genc++_headers",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.ir@1.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/ir/1.0/ $(genDir)/android/hardware/ir/1.0/",
+ srcs: [
+ "IConsumerIr.hal",
+ "types.hal",
+ ],
+ out: [
+ "android/hardware/ir/1.0/ConsumerIr.vts.h",
+ "android/hardware/ir/1.0/types.vts.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.ir@1.0-IConsumerIr-vts.profiler",
+ generated_sources: ["android.hardware.ir@1.0-IConsumerIr-vts.profiler_genc++"],
+ generated_headers: ["android.hardware.ir@1.0-IConsumerIr-vts.profiler_genc++_headers"],
+ export_generated_headers: ["android.hardware.ir@1.0-IConsumerIr-vts.profiler_genc++_headers"],
+ shared_libs: [
+ "libbase",
+ "libhidlbase",
+ "libhidltransport",
+ "libvts_profiling",
+ "libvts_multidevice_proto",
+ "libprotobuf-cpp-full",
+ "android.hidl.base@1.0",
+ "android.hardware.ir@1.0",
+ ],
+}
diff --git a/ir/1.0/vts/Android.mk b/ir/1.0/vts/Android.mk
new file mode 100644
index 0000000..90c50c8
--- /dev/null
+++ b/ir/1.0/vts/Android.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2016 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(LOCAL_PATH)/functional/vts/testcases/hal/ir/hidl/target/Android.mk
diff --git a/ir/1.0/vts/ConsumerIr.vts b/ir/1.0/vts/ConsumerIr.vts
new file mode 100644
index 0000000..bebc6cf
--- /dev/null
+++ b/ir/1.0/vts/ConsumerIr.vts
@@ -0,0 +1,44 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IConsumerIr"
+
+package: "android.hardware.ir"
+
+import: "android.hardware.ir@1.0::types"
+
+interface: {
+ api: {
+ name: "transmit"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getCarrierFreqs"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::ir::V1_0::ConsumerIrFreqRange"
+ }
+ }
+ }
+
+}
diff --git a/ir/1.0/vts/functional/Android.bp b/ir/1.0/vts/functional/Android.bp
new file mode 100644
index 0000000..c5265de
--- /dev/null
+++ b/ir/1.0/vts/functional/Android.bp
@@ -0,0 +1,40 @@
+//
+// Copyright (C) 2016 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.
+//
+
+cc_test {
+ name: "ir_hidl_hal_test",
+ gtest: true,
+ srcs: ["ir_hidl_hal_test.cpp"],
+ shared_libs: [
+ "libbase",
+ "liblog",
+ "libcutils",
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.ir@1.0",
+ ],
+ static_libs: ["libgtest"],
+ cflags: [
+ "--coverage",
+ "-O0",
+ "-g",
+ ],
+ ldflags: [
+ "--coverage"
+ ]
+}
diff --git a/ir/1.0/vts/functional/ir_hidl_hal_test.cpp b/ir/1.0/vts/functional/ir_hidl_hal_test.cpp
new file mode 100644
index 0000000..57d0b73
--- /dev/null
+++ b/ir/1.0/vts/functional/ir_hidl_hal_test.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "ir_hidl_hal_test"
+
+#include <android-base/logging.h>
+
+#include <android/hardware/ir/1.0/IConsumerIr.h>
+#include <android/hardware/ir/1.0/types.h>
+
+#include <gtest/gtest.h>
+#include <algorithm>
+
+using ::android::hardware::ir::V1_0::IConsumerIr;
+using ::android::hardware::ir::V1_0::ConsumerIrFreqRange;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::sp;
+
+// The main test class for IR HIDL HAL.
+class ConsumerIrHidlTest : public ::testing::Test {
+ public:
+ virtual void SetUp() override {
+ ir = IConsumerIr::getService(false);
+ ASSERT_NE(ir, nullptr);
+ }
+
+ virtual void TearDown() override {}
+
+ sp<IConsumerIr> ir;
+};
+
+// Test transmit() for the min and max frequency of every available range
+TEST_F(ConsumerIrHidlTest, TransmitTest) {
+ int32_t freqs;
+ bool success;
+ hidl_vec<ConsumerIrFreqRange> ranges;
+ auto cb = [&](bool s, hidl_vec<ConsumerIrFreqRange> v) {
+ ranges = v;
+ success = s;
+ };
+ Return<void> ret = ir->getCarrierFreqs(cb);
+ ASSERT_TRUE(ret.isOk());
+ ASSERT_TRUE(success);
+
+ if (ranges.size() > 0) {
+ uint32_t len = 16;
+ hidl_vec<int32_t> vec;
+ vec.resize(len);
+ std::fill(vec.begin(), vec.end(), 1);
+ for (auto range = ranges.begin(); range != ranges.end(); range++) {
+ EXPECT_TRUE(ir->transmit(range->min, vec));
+ EXPECT_TRUE(ir->transmit(range->max, vec));
+ }
+ }
+}
+
+// Test transmit() when called with invalid frequencies
+TEST_F(ConsumerIrHidlTest, BadFreqTest) {
+ uint32_t len = 16;
+ hidl_vec<int32_t> vec;
+ vec.resize(len);
+ std::fill(vec.begin(), vec.end(), 1);
+ EXPECT_FALSE(ir->transmit(-1, vec));
+ EXPECT_FALSE(ir->transmit(0, vec));
+}
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ LOG(INFO) << "Test result = " << status;
+ return status;
+}
diff --git a/ir/1.0/vts/functional/vts/testcases/hal/ir/hidl/target/Android.mk b/ir/1.0/vts/functional/vts/testcases/hal/ir/hidl/target/Android.mk
new file mode 100644
index 0000000..a69fd08
--- /dev/null
+++ b/ir/1.0/vts/functional/vts/testcases/hal/ir/hidl/target/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2016 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := HalIrHidlTargetTest
+VTS_CONFIG_SRC_DIR := testcases/hal/ir/hidl/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/ir/1.0/vts/functional/vts/testcases/hal/ir/hidl/target/AndroidTest.xml b/ir/1.0/vts/functional/vts/testcases/hal/ir/hidl/target/AndroidTest.xml
new file mode 100644
index 0000000..3ad7e45
--- /dev/null
+++ b/ir/1.0/vts/functional/vts/testcases/hal/ir/hidl/target/AndroidTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS IR HIDL HAL's target-side test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="HalIrHidlTargetTest"/>
+ <option name="binary-test-sources" value="
+ _32bit::DATA/nativetest/ir_hidl_hal_test/ir_hidl_hal_test,
+ _64bit::DATA/nativetest64/ir_hidl_hal_test/ir_hidl_hal_test,
+ "/>
+ <option name="binary-test-type" value="hal_hidl_gtest" />
+ <option name="hwbinder-service" value="android.hardware.ir" />
+ <option name="test-timeout" value="1m" />
+ </test>
+</configuration>
diff --git a/ir/1.0/vts/types.vts b/ir/1.0/vts/types.vts
new file mode 100644
index 0000000..d308b1f
--- /dev/null
+++ b/ir/1.0/vts/types.vts
@@ -0,0 +1,21 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "types"
+
+package: "android.hardware.ir"
+
+
+attribute: {
+ name: "::android::hardware::ir::V1_0::ConsumerIrFreqRange"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "min"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "max"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
\ No newline at end of file
diff --git a/ir/Android.bp b/ir/Android.bp
index ba90f2c..ed19a37 100644
--- a/ir/Android.bp
+++ b/ir/Android.bp
@@ -2,4 +2,5 @@
subdirs = [
"1.0",
"1.0/default",
+ "1.0/vts/functional",
]
diff --git a/ir/Android.mk b/ir/Android.mk
new file mode 100644
index 0000000..f9e3276
--- /dev/null
+++ b/ir/Android.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2016 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(call all-subdir-makefiles)
diff --git a/keymaster/3.0/types.hal b/keymaster/3.0/types.hal
index e99e9c8..7123e57 100644
--- a/keymaster/3.0/types.hal
+++ b/keymaster/3.0/types.hal
@@ -241,6 +241,7 @@
SIGN = 2, /* Usable with RSA, EC and HMAC keys. */
VERIFY = 3, /* Usable with RSA, EC and HMAC keys. */
DERIVE_KEY = 4, /* Usable with EC keys. */
+ WRAP_KEY = 5, /* Usable with wrapping keys. */
};
/**
diff --git a/sensors/1.0/default/service.cpp b/sensors/1.0/default/service.cpp
index 230ead3..f165a45 100644
--- a/sensors/1.0/default/service.cpp
+++ b/sensors/1.0/default/service.cpp
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-#define LOG_TAG "android.hardware.nfc@1.0-service"
+#define LOG_TAG "android.hardware.sensors@1.0-service"
#include <android/hardware/sensors/1.0/ISensors.h>
#include <hidl/LegacySupport.h>
diff --git a/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/Android.mk b/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/Android.mk
new file mode 100644
index 0000000..40536a5
--- /dev/null
+++ b/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := TvCecHidlProfilingTest
+VTS_CONFIG_SRC_DIR := testcases/hal/tv_cec/hidl/host_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/AndroidTest.xml b/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/AndroidTest.xml
new file mode 100644
index 0000000..ffd857e
--- /dev/null
+++ b/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/AndroidTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS Tv Input HIDL HAL's host-side test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/HdmiCec.vts->/data/local/tmp/spec/HdmiCec.vts" />
+ <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/HdmiCecCallback.vts->/data/local/tmp/spec/HdmiCecCallback.vts" />
+ <option name="push" value="spec/hardware/interfaces/tv/cec/1.0/vts/types.vts->/data/local/tmp/spec/types.vts" />
+ <option name="cleanup" value="true" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer">
+ </target_preparer>
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="TvCecHidlProfilingTest" />
+ <option name="test-case-path" value="vts/testcases/hal/tv_cec/hidl/host/TvCecHidlTest" />
+ <option name="enable-profiling" value="true" />
+ </test>
+</configuration>
\ No newline at end of file
diff --git a/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/__init__.py b/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/cec/1.0/vts/functional/vts/testcases/hal/tv_cec/hidl/host_profiling/__init__.py
diff --git a/tv/input/1.0/default/TvInput.cpp b/tv/input/1.0/default/TvInput.cpp
index 6181ffb..4cd1d40 100644
--- a/tv/input/1.0/default/TvInput.cpp
+++ b/tv/input/1.0/default/TvInput.cpp
@@ -196,7 +196,7 @@
return type != TV_STREAM_TYPE_BUFFER_PRODUCER;
}
-ITvInput* HIDL_FETCH_ITvInput(const char* name) {
+ITvInput* HIDL_FETCH_ITvInput(const char* /* name */) {
int ret = 0;
const hw_module_t* hw_module = nullptr;
tv_input_device_t* input_device;
@@ -213,7 +213,8 @@
}
}
else {
- LOG(ERROR) << "hw_get_module " << name << " failed: " << ret;
+ LOG(ERROR) << "hw_get_module " << TV_INPUT_HARDWARE_MODULE_ID
+ << " failed: " << ret;
return nullptr;
}
}
diff --git a/tv/input/1.0/default/service.cpp b/tv/input/1.0/default/service.cpp
index d59c848..d904d0b 100644
--- a/tv/input/1.0/default/service.cpp
+++ b/tv/input/1.0/default/service.cpp
@@ -27,5 +27,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<ITvInput>("tv.input");
+ return defaultPassthroughServiceImplementation<ITvInput>();
}
diff --git a/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host/TvInputHidlTest.py b/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host/TvInputHidlTest.py
index 9b49078..b5becd6 100644
--- a/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host/TvInputHidlTest.py
+++ b/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host/TvInputHidlTest.py
@@ -39,7 +39,6 @@
target_version=1.0,
target_package="android.hardware.tv.input",
target_component_name="ITvInput",
- hw_binder_service_name="tv-input-1-0",
bits=64 if self.dut.is64Bit else 32)
self.dut.shell.InvokeTerminal("one")
diff --git a/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/Android.mk b/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/Android.mk
new file mode 100644
index 0000000..514df20
--- /dev/null
+++ b/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/Android.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := TvInputHidlProfilingTest
+VTS_CONFIG_SRC_DIR := testcases/hal/tv_input/hidl/host_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/AndroidTest.xml b/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/AndroidTest.xml
new file mode 100644
index 0000000..5b8e6f9
--- /dev/null
+++ b/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/AndroidTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS Tv Input HIDL HAL's host-side test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/TvInput.vts->/data/local/tmp/spec/TvInput.vts" />
+ <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/TvInputCallback.vts->/data/local/tmp/spec/TvInputCallback.vts" />
+ <option name="push" value="spec/hardware/interfaces/tv/input/1.0/vts/types.vts->/data/local/tmp/spec/types.vts" />
+ <option name="cleanup" value="true" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer">
+ </target_preparer>
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="TvInputHidlProfilingTest" />
+ <option name="test-case-path" value="vts/testcases/hal/tv_input/hidl/host/TvInputHidlTest" />
+ <option name="enable-profiling" value="true" />
+ </test>
+</configuration>
diff --git a/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/__init__.py b/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host_profiling/__init__.py
diff --git a/vehicle/2.0/default/tests/VehicleHalManager_test.cpp b/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
index dffcfbb..4a20ea5 100644
--- a/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
+++ b/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
@@ -353,7 +353,7 @@
TEST_F(VehicleHalManagerTest, get_NegativeCases) {
// Write-only property must fail.
invokeGet(VehicleProperty::HVAC_SEAT_TEMPERATURE, 0);
- ASSERT_EQ(StatusCode::INVALID_ARG, actualStatusCode);
+ ASSERT_EQ(StatusCode::ACCESS_DENIED, actualStatusCode);
// Unknown property must fail.
invokeGet(VehicleProperty::MIRROR_Z_MOVE, 0);
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp b/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
index b4eb484..5d2e6fe 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
+++ b/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
@@ -87,7 +87,7 @@
}
if (!checkReadPermission(*config, getCaller())) {
- _hidl_cb(StatusCode::INVALID_ARG, kEmptyValue);
+ _hidl_cb(StatusCode::ACCESS_DENIED, kEmptyValue);
return Void();
}
@@ -108,7 +108,7 @@
}
if (!checkWritePermission(*config, getCaller())) {
- return StatusCode::INVALID_ARG;
+ return StatusCode::ACCESS_DENIED;
}
handlePropertySetEvent(value);
@@ -122,6 +122,7 @@
const sp<IVehicleCallback> &callback,
const hidl_vec<SubscribeOptions> &options) {
hidl_vec<SubscribeOptions> verifiedOptions(options);
+ auto caller = getCaller();
for (size_t i = 0; i < verifiedOptions.size(); i++) {
SubscribeOptions& ops = verifiedOptions[i];
VehicleProperty prop = ops.propId;
@@ -133,6 +134,10 @@
return StatusCode::INVALID_ARG;
}
+ if (!checkAcl(caller.uid, config->prop, VehiclePropertyAccess::READ)) {
+ return StatusCode::ACCESS_DENIED;
+ }
+
if (!isSubscribable(*config, ops.flags)) {
ALOGE("Failed to subscribe: property 0x%x is not subscribable",
prop);
@@ -304,15 +309,13 @@
return true;
}
-bool checkAcl(const PropertyAclMap& aclMap,
- uid_t callerUid,
- VehicleProperty propertyId,
- VehiclePropertyAccess requiredAccess) {
+bool VehicleHalManager::checkAcl(uid_t callerUid, VehicleProperty propertyId,
+ VehiclePropertyAccess requiredAccess) const {
if (callerUid == AID_SYSTEM && isSystemProperty(propertyId)) {
return true;
}
- auto range = aclMap.equal_range(propertyId);
+ auto range = mPropertyAclMap.equal_range(propertyId);
for (auto it = range.first; it != range.second; ++it) {
auto& acl = it->second;
if (acl.uid == callerUid && (acl.access & requiredAccess)) {
@@ -328,8 +331,7 @@
ALOGW("Property 0%x has no write access", config.prop);
return false;
}
- return checkAcl(mPropertyAclMap, caller.uid, config.prop,
- VehiclePropertyAccess::WRITE);
+ return checkAcl(caller.uid, config.prop, VehiclePropertyAccess::WRITE);
}
bool VehicleHalManager::checkReadPermission(const VehiclePropConfig &config,
@@ -339,8 +341,7 @@
return false;
}
- return checkAcl(mPropertyAclMap, caller.uid, config.prop,
- VehiclePropertyAccess::READ);
+ return checkAcl(caller.uid, config.prop, VehiclePropertyAccess::READ);
}
void VehicleHalManager::handlePropertySetEvent(const VehiclePropValue& value) {
diff --git a/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h b/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
index 519b09b..6768741 100644
--- a/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
+++ b/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
@@ -100,6 +100,9 @@
const Caller& callee) const;
bool checkReadPermission(const VehiclePropConfig &config,
const Caller& caller) const;
+ bool checkAcl(uid_t callerUid,
+ VehicleProperty propertyId,
+ VehiclePropertyAccess requiredAccess) const;
static bool isSubscribable(const VehiclePropConfig& config,
SubscribeFlags flags);
diff --git a/vehicle/2.0/vts/functional/vts/testcases/hal/vehicle/hidl/host/VehicleHidlTest.py b/vehicle/2.0/vts/functional/vts/testcases/hal/vehicle/hidl/host/VehicleHidlTest.py
index 5faf78a..cd52abf 100644
--- a/vehicle/2.0/vts/functional/vts/testcases/hal/vehicle/hidl/host/VehicleHidlTest.py
+++ b/vehicle/2.0/vts/functional/vts/testcases/hal/vehicle/hidl/host/VehicleHidlTest.py
@@ -20,6 +20,7 @@
from vts.runners.host import asserts
from vts.runners.host import base_test_with_webdb
+from vts.runners.host import const
from vts.runners.host import test_runner
from vts.utils.python.controllers import android_device
from vts.utils.python.profiling import profiling_utils
@@ -35,6 +36,10 @@
self.dut.shell.InvokeTerminal("one")
self.dut.shell.one.Execute("setenforce 0") # SELinux permissive mode
+ results = self.dut.shell.one.Execute("id -u system")
+ system_uid = results[const.STDOUT][0].strip()
+ logging.info("system_uid: %s", system_uid)
+
self.dut.hal.InitHidlHal(
target_type="vehicle",
target_basepaths=self.dut.libPaths,
@@ -45,6 +50,7 @@
bits=64 if self.dut.is64Bit else 32)
self.vehicle = self.dut.hal.vehicle # shortcut
+ self.vehicle.SetCallerUid(system_uid)
self.vtypes = self.dut.hal.vehicle.GetHidlTypeInterface("types")
logging.info("vehicle types: %s", self.vtypes)
diff --git a/vibrator/1.0/default/Vibrator.cpp b/vibrator/1.0/default/Vibrator.cpp
index e86e681..8c82bcd 100644
--- a/vibrator/1.0/default/Vibrator.cpp
+++ b/vibrator/1.0/default/Vibrator.cpp
@@ -50,18 +50,18 @@
return Status::OK;
}
-IVibrator* HIDL_FETCH_IVibrator(const char *hal) {
+IVibrator* HIDL_FETCH_IVibrator(const char * /*hal*/) {
vibrator_device_t *vib_device;
const hw_module_t *hw_module = nullptr;
- int ret = hw_get_module(hal, &hw_module);
+ int ret = hw_get_module(VIBRATOR_HARDWARE_MODULE_ID, &hw_module);
if (ret == 0) {
ret = vibrator_open(hw_module, &vib_device);
if (ret != 0) {
- ALOGE("vibrator_open %s failed: %d", hal, ret);
+ ALOGE("vibrator_open failed: %d", ret);
}
} else {
- ALOGE("hw_get_module %s failed: %d", hal, ret);
+ ALOGE("hw_get_module %s failed: %d", VIBRATOR_HARDWARE_MODULE_ID, ret);
}
if (ret == 0) {
diff --git a/vibrator/1.0/vts/functional/vibrator_hidl_hal_test.cpp b/vibrator/1.0/vts/functional/vibrator_hidl_hal_test.cpp
index ec8db3a..782a763 100644
--- a/vibrator/1.0/vts/functional/vibrator_hidl_hal_test.cpp
+++ b/vibrator/1.0/vts/functional/vibrator_hidl_hal_test.cpp
@@ -28,13 +28,11 @@
using ::android::hardware::Void;
using ::android::sp;
-#define VIBRATOR_SERVICE_NAME "vibrator"
-
// The main test class for VIBRATOR HIDL HAL.
class VibratorHidlTest : public ::testing::Test {
public:
virtual void SetUp() override {
- vibrator = IVibrator::getService(VIBRATOR_SERVICE_NAME, false);
+ vibrator = IVibrator::getService(false);
ASSERT_NE(vibrator, nullptr);
}
diff --git a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host/VibratorHidlTest.py b/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host/VibratorHidlTest.py
index 498ea06..84f2907 100644
--- a/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host/VibratorHidlTest.py
+++ b/vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host/VibratorHidlTest.py
@@ -45,7 +45,6 @@
target_version=1.0,
target_package="android.hardware.vibrator",
target_component_name="IVibrator",
- hw_binder_service_name="vibrator",
bits=64 if self.dut.is64Bit else 32)
def tearDownClass(self):
diff --git a/wifi/1.0/default/hidl_struct_util.cpp b/wifi/1.0/default/hidl_struct_util.cpp
index bbb9346..37fcfea 100644
--- a/wifi/1.0/default/hidl_struct_util.cpp
+++ b/wifi/1.0/default/hidl_struct_util.cpp
@@ -887,7 +887,7 @@
if (!legacy_request) {
return false;
}
- memset(&legacy_request, 0, sizeof(legacy_hal::NanPublishRequest));
+ memset(legacy_request, 0, sizeof(legacy_hal::NanPublishRequest));
legacy_request->publish_id = hidl_request.baseConfigs.sessionId;
legacy_request->ttl = hidl_request.baseConfigs.ttlSec;
@@ -959,7 +959,7 @@
if (!legacy_request) {
return false;
}
- memset(&legacy_request, 0, sizeof(legacy_hal::NanSubscribeRequest));
+ memset(legacy_request, 0, sizeof(legacy_hal::NanSubscribeRequest));
legacy_request->subscribe_id = hidl_request.baseConfigs.sessionId;
legacy_request->ttl = hidl_request.baseConfigs.ttlSec;
@@ -1044,7 +1044,7 @@
if (!legacy_request) {
return false;
}
- memset(&legacy_request, 0, sizeof(legacy_hal::NanTransmitFollowupRequest));
+ memset(legacy_request, 0, sizeof(legacy_hal::NanTransmitFollowupRequest));
legacy_request->publish_subscribe_id = hidl_request.discoverySessionId;
legacy_request->requestor_instance_id = hidl_request.peerId;
@@ -1071,7 +1071,7 @@
if (!legacy_request) {
return false;
}
- memset(&legacy_request, 0, sizeof(legacy_hal::NanConfigRequest));
+ memset(legacy_request, 0, sizeof(legacy_hal::NanConfigRequest));
// TODO: b/34059183 tracks missing configurations in legacy HAL or uknown defaults
legacy_request->master_pref = hidl_request.masterPref;
@@ -1161,7 +1161,7 @@
if (!legacy_request) {
return false;
}
- memset(&legacy_request, 0, sizeof(legacy_hal::NanBeaconSdfPayloadRequest));
+ memset(legacy_request, 0, sizeof(legacy_hal::NanBeaconSdfPayloadRequest));
legacy_request->vsa.payload_transmit_flag = hidl_request.transmitInNext16dws ? 1 : 0;
legacy_request->vsa.tx_in_discovery_beacon = hidl_request.transmitInDiscoveryBeacon;
@@ -1183,7 +1183,7 @@
if (!legacy_request) {
return false;
}
- memset(&legacy_request, 0, sizeof(legacy_hal::NanDataPathInitiatorRequest));
+ memset(legacy_request, 0, sizeof(legacy_hal::NanDataPathInitiatorRequest));
legacy_request->requestor_instance_id = hidl_request.peerId;
memcpy(legacy_request->peer_disc_mac_addr, hidl_request.peerDiscMacAddr.data(), 6);
@@ -1215,7 +1215,7 @@
if (!legacy_request) {
return false;
}
- memset(&legacy_request, 0, sizeof(legacy_hal::NanDataPathIndicationResponse));
+ memset(legacy_request, 0, sizeof(legacy_hal::NanDataPathIndicationResponse));
legacy_request->rsp_code = hidl_request.acceptRequest ?
legacy_hal::NAN_DP_REQUEST_ACCEPT : legacy_hal::NAN_DP_REQUEST_REJECT;
diff --git a/wifi/1.0/default/service.cpp b/wifi/1.0/default/service.cpp
index 40e8b12..96d5c6f 100644
--- a/wifi/1.0/default/service.cpp
+++ b/wifi/1.0/default/service.cpp
@@ -34,7 +34,7 @@
// Setup hwbinder service
android::sp<android::hardware::wifi::V1_0::IWifi> service =
new android::hardware::wifi::V1_0::implementation::Wifi();
- CHECK_EQ(service->registerAsService("wifi"), android::NO_ERROR)
+ CHECK_EQ(service->registerAsService(), android::NO_ERROR)
<< "Failed to register wifi HAL";
joinRpcThreadpool();
diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
index f88b866..050bba3 100644
--- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
+++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
@@ -34,8 +34,6 @@
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
-const char kWifiServiceName[] = "wifi";
-
void stopFramework() {
ASSERT_EQ(std::system("svc wifi disable"), 0);
sleep(5);
@@ -44,7 +42,7 @@
void startFramework() { ASSERT_EQ(std::system("svc wifi enable"), 0); }
sp<IWifi> getWifi() {
- sp<IWifi> wifi = IWifi::getService(kWifiServiceName);
+ sp<IWifi> wifi = IWifi::getService();
return wifi;
}
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
index 3877b97..2f3405d 100644
--- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
@@ -49,7 +49,7 @@
using ::android::wifi_system::SupplicantManager;
namespace {
-const char kSupplicantServiceName[] = "wpa_supplicant";
+const char kSupplicantServiceName[] = "default";
// Helper function to initialize the driver and firmware to STA mode.
void initilializeDriverAndFirmware() {