OSDN Git Service

Merge "bootctrl HAL uses "default" service name"
authorChris Phoenix <cphoenix@google.com>
Mon, 23 Jan 2017 20:27:49 +0000 (20:27 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Mon, 23 Jan 2017 20:27:50 +0000 (20:27 +0000)
76 files changed:
audio/2.0/default/StreamIn.cpp
audio/2.0/default/StreamOut.cpp
biometrics/fingerprint/2.1/default/BiometricsFingerprint.cpp
bluetooth/1.0/vts/Android.mk [new file with mode: 0644]
bluetooth/1.0/vts/BluetoothHci.vts [new file with mode: 0644]
bluetooth/1.0/vts/BluetoothHciCallbacks.vts [new file with mode: 0644]
bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/Android.mk [new file with mode: 0644]
bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target/Android.mk [new file with mode: 0644]
bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target/AndroidTest.xml [new file with mode: 0644]
bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target_profiling/Android.mk [new file with mode: 0644]
bluetooth/1.0/vts/functional/vts/testcases/hal/bluetooth/hidl/target_profiling/AndroidTest.xml [new file with mode: 0644]
bluetooth/1.0/vts/types.vts [new file with mode: 0644]
boot/1.0/default/BootControl.cpp
boot/1.0/default/service.cpp
camera/device/3.2/default/Android.bp
camera/provider/2.4/default/Android.bp
camera/provider/2.4/default/CameraProvider.cpp
camera/provider/2.4/default/CameraProvider.h
camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc [new file with mode: 0644]
camera/provider/2.4/default/service.cpp [new file with mode: 0644]
drm/1.0/Android.bp [new file with mode: 0644]
drm/1.0/ICryptoFactory.hal [moved from drm/crypto/1.0/ICryptoFactory.hal with 97% similarity]
drm/1.0/ICryptoPlugin.hal [moved from drm/crypto/1.0/ICryptoPlugin.hal with 87% similarity]
drm/1.0/IDrmFactory.hal [moved from drm/drm/1.0/IDrmFactory.hal with 98% similarity]
drm/1.0/IDrmPlugin.hal [moved from drm/drm/1.0/IDrmPlugin.hal with 99% similarity]
drm/1.0/IDrmPluginListener.hal [moved from drm/drm/1.0/IDrmPluginListener.hal with 96% similarity]
drm/1.0/default/Android.mk
drm/1.0/default/CryptoFactory.cpp [moved from drm/crypto/1.0/default/CryptoFactory.cpp with 95% similarity]
drm/1.0/default/CryptoFactory.h [moved from drm/crypto/1.0/default/CryptoFactory.h with 78% similarity]
drm/1.0/default/CryptoPlugin.cpp [moved from drm/crypto/1.0/default/CryptoPlugin.cpp with 79% similarity]
drm/1.0/default/CryptoPlugin.h [moved from drm/crypto/1.0/default/CryptoPlugin.h with 68% similarity]
drm/1.0/default/DrmFactory.cpp [moved from drm/drm/1.0/default/DrmFactory.cpp with 95% similarity]
drm/1.0/default/DrmFactory.h [moved from drm/drm/1.0/default/DrmFactory.h with 80% similarity]
drm/1.0/default/DrmPlugin.cpp [moved from drm/drm/1.0/default/DrmPlugin.cpp with 99% similarity]
drm/1.0/default/DrmPlugin.h [moved from drm/drm/1.0/default/DrmPlugin.h with 87% similarity]
drm/1.0/default/TypeConvert.cpp [moved from drm/drm/1.0/default/TypeConvert.cpp with 93% similarity]
drm/1.0/default/TypeConvert.h [moved from drm/crypto/1.0/default/TypeConvert.h with 86% similarity]
drm/1.0/default/service.cpp
drm/1.0/types.hal [moved from drm/drm/1.0/types.hal with 67% similarity]
drm/Android.bp
drm/crypto/1.0/Android.bp [deleted file]
drm/crypto/1.0/default/Android.mk [deleted file]
drm/crypto/1.0/default/TypeConvert.cpp [deleted file]
drm/crypto/1.0/types.hal [deleted file]
drm/drm/1.0/Android.bp [deleted file]
drm/drm/1.0/default/Android.mk [deleted file]
drm/drm/1.0/default/TypeConvert.h [deleted file]
gnss/1.0/IGnssCallback.hal
gnss/1.0/IGnssMeasurementCallback.hal
graphics/common/1.0/types.hal
graphics/composer/2.1/default/HwcClient.cpp
ir/1.0/Android.bp
ir/1.0/vts/Android.mk [new file with mode: 0644]
ir/1.0/vts/ConsumerIr.vts [new file with mode: 0644]
ir/1.0/vts/functional/Android.bp [new file with mode: 0644]
ir/1.0/vts/functional/ir_hidl_hal_test.cpp [new file with mode: 0644]
ir/1.0/vts/functional/vts/testcases/hal/ir/hidl/target/Android.mk [new file with mode: 0644]
ir/1.0/vts/functional/vts/testcases/hal/ir/hidl/target/AndroidTest.xml [new file with mode: 0644]
ir/1.0/vts/types.vts [new file with mode: 0644]
ir/Android.bp
ir/Android.mk [new file with mode: 0644]
sensors/1.0/default/service.cpp
tv/input/1.0/default/TvInput.cpp
tv/input/1.0/default/service.cpp
tv/input/1.0/vts/functional/vts/testcases/hal/tv_input/hidl/host/TvInputHidlTest.py
vehicle/2.0/default/tests/VehicleHalManager_test.cpp
vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
vehicle/2.0/vts/functional/vts/testcases/hal/vehicle/hidl/host/VehicleHidlTest.py
vibrator/1.0/default/Vibrator.cpp
vibrator/1.0/vts/functional/vibrator_hidl_hal_test.cpp
vibrator/1.0/vts/functional/vts/testcases/hal/vibrator/hidl/host/VibratorHidlTest.py
wifi/1.0/default/hidl_struct_util.cpp
wifi/1.0/default/service.cpp
wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp

index de7bf13..ad18986 100644 (file)
@@ -275,7 +275,7 @@ Return<void> StreamIn::prepareForReading(
     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 @@ Return<void> StreamIn::prepareForReading(
         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 @@ Return<void> StreamIn::prepareForReading(
     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 @@ Return<void> StreamIn::prepareForReading(
     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();
     }
 
index ea6221e..1948b68 100644 (file)
@@ -259,7 +259,7 @@ Return<void> StreamOut::prepareForWriting(
     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 @@ Return<void> StreamOut::prepareForWriting(
         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 @@ Return<void> StreamOut::prepareForWriting(
     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 @@ Return<void> StreamOut::prepareForWriting(
     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();
     }
 
index eb28e46..516cd00 100644 (file)
@@ -25,6 +25,8 @@
 #include <hardware/fingerprint.h>
 #include "BiometricsFingerprint.h"
 
+#include <inttypes.h>
+
 namespace android {
 namespace hardware {
 namespace biometrics {
@@ -245,12 +247,12 @@ void BiometricsFingerprint::notifyKeystore(const uint8_t *auth_token, const size
     if (auth_token != nullptr && auth_token_length > 0) {
         // TODO: cache service?
         sp<IServiceManager> sm = android::defaultServiceManager();
-        sp<IBinder> binder = sm->getService(String16("android.security.keystore"));
+        sp<::android::IBinder> binder = sm->getService(String16("android.security.keystore"));
         sp<IKeystoreService> service = interface_cast<IKeystoreService>(binder);
         if (service != nullptr) {
-            status_t ret = service->addAuthToken(auth_token, auth_token_length);
-            if (ret != ResponseCode::NO_ERROR) {
-                ALOGE("Falure sending auth token to KeyStore: %d", ret);
+            auto ret = service->addAuthToken(auth_token, auth_token_length);
+            if (!ret.isOk()) {
+                ALOGE("Failure sending auth token to KeyStore: %" PRId32, int32_t(ret));
             }
         } else {
             ALOGE("Unable to communicate with KeyStore");
diff --git a/bluetooth/1.0/vts/Android.mk b/bluetooth/1.0/vts/Android.mk
new file mode 100644 (file)
index 0000000..85e0c38
--- /dev/null
@@ -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 (file)
index 0000000..1112371
--- /dev/null
@@ -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 (file)
index 0000000..f2df5b4
--- /dev/null
@@ -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 (file)
index 0000000..f9e3276
--- /dev/null
@@ -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 (file)
index 0000000..98bb686
--- /dev/null
@@ -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 (file)
index 0000000..54fb89b
--- /dev/null
@@ -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 (file)
index 0000000..81a2db9
--- /dev/null
@@ -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 (file)
index 0000000..8052b3c
--- /dev/null
@@ -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 (file)
index 0000000..59eb3d4
--- /dev/null
@@ -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
+        }
+    }
+}
+
index 828da16..9a90076 100644 (file)
@@ -93,14 +93,14 @@ Return<void> BootControl::getSuffix(uint32_t slot, getSuffix_cb _hidl_cb)  {
 }
 
 
-IBootControl* HIDL_FETCH_IBootControl(const char* hal) {
+IBootControl* HIDL_FETCH_IBootControl(const char* /* hal */) {
     int ret = 0;
     boot_control_module_t* module = NULL;
     hw_module_t **hwm = reinterpret_cast<hw_module_t**>(&module);
-    ret = hw_get_module(hal, const_cast<const hw_module_t**>(hwm));
+    ret = hw_get_module(BOOT_CONTROL_HARDWARE_MODULE_ID, const_cast<const hw_module_t**>(hwm));
     if (ret)
     {
-        ALOGE("hw_get_module %s failed: %d", hal, ret);
+        ALOGE("hw_get_module %s failed: %d", BOOT_CONTROL_HARDWARE_MODULE_ID, ret);
         return nullptr;
     }
     module->init(module);
index 0dc56bf..f3996ef 100644 (file)
@@ -22,5 +22,5 @@ using ::android::hardware::boot::V1_0::IBootControl;
 using android::hardware::defaultPassthroughServiceImplementation;
 
 int main (int /* argc */, char * /* argv */ []) {
-    return defaultPassthroughServiceImplementation<IBootControl>("bootctrl");
+    return defaultPassthroughServiceImplementation<IBootControl>();
 }
index 9820220..40d4253 100644 (file)
@@ -20,3 +20,27 @@ cc_library_shared {
     ],
     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: ["."]
+}
index f28c9cd..ee40ce5 100644 (file)
@@ -21,3 +21,29 @@ cc_library_shared {
         "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"
+    ]
+}
index 9617d8d..1a34aa6 100644 (file)
@@ -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>
index 8497ff3..2a43e2f 100644 (file)
@@ -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 (file)
index 0000000..31f0810
--- /dev/null
@@ -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 (file)
index 0000000..2723dee
--- /dev/null
@@ -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 (file)
index 0000000..d899114
--- /dev/null
@@ -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",
+    ],
+}
similarity index 97%
rename from drm/crypto/1.0/ICryptoFactory.hal
rename to drm/1.0/ICryptoFactory.hal
index 4b60ccc..aeab9bc 100644 (file)
@@ -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;
 
similarity index 87%
rename from drm/crypto/1.0/ICryptoPlugin.hal
rename to drm/1.0/ICryptoPlugin.hal
index 52c1d02..d66151e 100644 (file)
@@ -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 @@ interface ICryptoPlugin {
     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 @@ interface ICryptoPlugin {
      */
     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);
 };
similarity index 98%
rename from drm/drm/1.0/IDrmFactory.hal
rename to drm/1.0/IDrmFactory.hal
index 1ef1d27..de53929 100644 (file)
@@ -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;
 
similarity index 99%
rename from drm/drm/1.0/IDrmPlugin.hal
rename to drm/1.0/IDrmPlugin.hal
index 881bf80..5bae22d 100644 (file)
@@ -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;
 
similarity index 96%
rename from drm/drm/1.0/IDrmPluginListener.hal
rename to drm/1.0/IDrmPluginListener.hal
index 92010a1..15ce008 100644 (file)
@@ -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
index 87a0019..ac5b90a 100644 (file)
@@ -14,6 +14,8 @@
 # limitations under the License.
 
 
+############# Build legacy drm service ############
+
 LOCAL_PATH := $(call my-dir)
 
 include $(CLEAR_VARS)
@@ -24,16 +26,14 @@ LOCAL_SRC_FILES := \
   service.cpp \
 
 LOCAL_SHARED_LIBRARIES := \
+  android.hardware.drm@1.0 \
+  android.hidl.memory@1.0 \
   libhidlbase \
   libhidltransport \
-  liblog \
+  libhardware \
   libhwbinder \
+  liblog \
   libutils \
-  libhardware \
-  android.hardware.drm.drm@1.0 \
-  android.hardware.drm.crypto@1.0 \
-  android.hidl.memory@1.0 \
-
 
 LOCAL_C_INCLUDES := \
   hardware/interfaces/drm
@@ -43,3 +43,37 @@ LOCAL_C_INCLUDES := \
 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)
similarity index 95%
rename from drm/crypto/1.0/default/CryptoFactory.cpp
rename to drm/1.0/default/CryptoFactory.cpp
index 9519d01..02084e7 100644 (file)
@@ -22,7 +22,6 @@
 namespace android {
 namespace hardware {
 namespace drm {
-namespace crypto {
 namespace V1_0 {
 namespace implementation {
 
@@ -30,7 +29,7 @@ namespace implementation {
         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 implementation
 }  // namespace V1_0
-}  // namespace crypto
 }  // namespace drm
 }  // namespace hardware
 }  // namespace android
similarity index 78%
rename from drm/crypto/1.0/default/CryptoFactory.h
rename to drm/1.0/default/CryptoFactory.h
index 0855996..412b557 100644 (file)
  * 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>
 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 @@ struct CryptoFactory : public ICryptoFactory {
     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 @@ extern "C" ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char* name);
 
 }  // 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
similarity index 79%
rename from drm/crypto/1.0/default/CryptoPlugin.cpp
rename to drm/1.0/default/CryptoPlugin.cpp
index 81365c8..073f030 100644 (file)
 #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 @@ namespace implementation {
         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 @@ namespace implementation {
 
         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 @@ namespace implementation {
                 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 implementation
 }  // namespace V1_0
-}  // namespace crypto
 }  // namespace drm
 }  // namespace hardware
 }  // namespace android
similarity index 68%
rename from drm/crypto/1.0/default/CryptoPlugin.h
rename to drm/1.0/default/CryptoPlugin.h
index b1473f1..f805f09 100644 (file)
  * 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 @@ struct CryptoPlugin : public ICryptoPlugin {
 
     ~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 @@ struct CryptoPlugin : public ICryptoPlugin {
     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 @@ private:
 
 }  // 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
similarity index 95%
rename from drm/drm/1.0/default/DrmFactory.cpp
rename to drm/1.0/default/DrmFactory.cpp
index 98a8416..cba2c99 100644 (file)
@@ -22,7 +22,6 @@
 namespace android {
 namespace hardware {
 namespace drm {
-namespace drm {
 namespace V1_0 {
 namespace implementation {
 
@@ -30,7 +29,7 @@ namespace implementation {
         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 implementation
 }  // namespace V1_0
 }  // namespace drm
-}  // namespace drm
 }  // namespace hardware
 }  // namespace android
similarity index 80%
rename from drm/drm/1.0/default/DrmFactory.h
rename to drm/1.0/default/DrmFactory.h
index 2b88d00..78b7f6e 100644 (file)
  * 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>
 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 @@ struct DrmFactory : public IDrmFactory {
     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 @@ extern "C" IDrmFactory* HIDL_FETCH_IDrmFactory(const char* name);
 }  // 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
similarity index 99%
rename from drm/drm/1.0/default/DrmPlugin.cpp
rename to drm/1.0/default/DrmPlugin.cpp
index 0239502..9204fc5 100644 (file)
 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 implementation
 }  // namespace V1_0
 }  // namespace drm
-}  // namespace drm
 }  // namespace hardware
 }  // namespace android
similarity index 87%
rename from drm/drm/1.0/default/DrmPlugin.h
rename to drm/1.0/default/DrmPlugin.h
index 2bf3b5e..dce6c0c 100644 (file)
  * 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 @@ struct DrmPlugin : public IDrmPlugin, android::DrmPluginListener {
     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 @@ private:
 }  // 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
similarity index 93%
rename from drm/drm/1.0/default/TypeConvert.cpp
rename to drm/1.0/default/TypeConvert.cpp
index 4bed284..52cc503 100644 (file)
@@ -19,7 +19,6 @@
 namespace android {
 namespace hardware {
 namespace drm {
-namespace drm {
 namespace V1_0 {
 namespace implementation {
 
@@ -53,6 +52,9 @@ Status toStatus(status_t legacyStatus) {
     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 @@ Status toStatus(status_t legacyStatus) {
 }  // namespace implementation
 }  // namespace V1_0
 }  // namespace drm
-}  // namespace drm
 }  // namespace hardware
 }  // namespace android
similarity index 86%
rename from drm/crypto/1.0/default/TypeConvert.h
rename to drm/1.0/default/TypeConvert.h
index 1655bab..107fda5 100644 (file)
  * 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 @@ Status toStatus(status_t legacyStatus);
 
 }  // 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
index 3531e03..fba56ec 100644 (file)
@@ -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::configureRpcThreadpool;
 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...");
similarity index 67%
rename from drm/drm/1.0/types.hal
rename to drm/1.0/types.hal
index e099418..33bbf9a 100644 (file)
@@ -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 @@ enum Status : uint32_t {
     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 @@ enum Status : uint32_t {
     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 @@ struct SecureStop {
 };
 
 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;
+};
index 412e162..bbb3e4b 100644 (file)
@@ -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 (file)
index 73eded1..0000000
+++ /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 (file)
index 27fca98..0000000
+++ /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 (file)
index ed95d15..0000000
+++ /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 (file)
index e71d73a..0000000
+++ /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 (file)
index dfff435..0000000
+++ /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 (file)
index 52e67e1..0000000
+++ /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 (file)
index 2f7875e..0000000
+++ /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
index eb66d78..afef55f 100644 (file)
@@ -111,9 +111,16 @@ interface IGnssCallback {
 
         /*
          * Carrier frequency of the signal tracked, for example it can be the
-         * GPS L1 = 1.57542e9 Hz, or L2, L5, varying GLO channels, etc. If
-         * the field is not set, it is the primary common use frequency,
-         * e.g. L1 for GPS.
+         * GPS central frequency for L1 = 1575.45 MHz, or L2 = 1227.60 MHz, L5 =
+         * 1176.45 MHz, varying GLO channels, etc. If the field is not set, it
+         * is the primary common use central frequency, e.g. L1 = 1575.45 MHz
+         * for GPS.
+         *
+         * For an L1, L5 receiver tracking a satellite on L1 and L5 at the same
+         * time, two GnssSvInfo structs must be reported for this same
+         * satellite, in one of the structs, all the values related
+         * to L1 must be filled, and in the other all of the values related to
+         * L5 must be filled.
          *
          * If the data is available, gnssClockFlags must contain
          * HAS_CARRIER_FREQUENCY.
index de640ae..00e57cd 100644 (file)
@@ -480,9 +480,16 @@ interface IGnssMeasurementCallback {
 
         /*
          * Carrier frequency of the signal tracked, for example it can be the
-         * GPS L1 = 1.57542e9 Hz, or L2, L5, varying GLO channels, etc. If the
-         * field is not set, it is the primary common use frequency,
-         * e.g. L1 for GPS.
+         * GPS central frequency for L1 = 1575.45 MHz, or L2 = 1227.60 MHz, L5 =
+         * 1176.45 MHz, varying GLO channels, etc. If the field is not set, it
+         * is the primary common use central frequency, e.g. L1 = 1575.45 MHz
+         * for GPS.
+         *
+         * For an L1, L5 receiver tracking a satellite on L1 and L5 at the same
+         * time, two raw measurement structs must be reported for this same
+         * satellite, in one of the measurement structs, all the values related
+         * to L1 must be filled, and in the other all of the values related to
+         * L5 must be filled.
          *
          * If the data is available, gnssClockFlags must contain
          * HAS_CARRIER_FREQUENCY.
@@ -552,12 +559,12 @@ interface IGnssMeasurementCallback {
 
         /*
          * Automatic gain control (AGC) level. AGC acts as a variable gain
-         * amplifier adjusting the power of the incoming signal to minimize the
-         * quantization losses. The AGC level may be used to indicate potential
-         * interference. When AGC is at a nominal level, this value
-         * must be set as 0. Higher gain (and/or lower input power) must be
-         * output as a positive number. Hence in cases of strong jamming, in the
-         * band of this signal, this value must go more negative.
+         * amplifier adjusting the power of the incoming signal. The AGC level
+         * may be used to indicate potential interference. When AGC is at a
+         * nominal level, this value must be set as 0. Higher gain (and/or lower
+         * input power) must be output as a positive number. Hence in cases of
+         * strong jamming, in the band of this signal, this value must go more
+         * negative.
          *
          * Note: Different hardware designs (e.g. antenna, pre-amplification, or
          * other RF HW components) may also affect the typical output of of this
index ebdba77..6fddfaf 100644 (file)
@@ -1264,7 +1264,7 @@ enum ColorMode : int32_t {
    *  red             0.680   0.320
    *  white (D65)     0.3127  0.3290
    *
-   * Gamma: 2.2
+   * Gamma: 2.6
    */
   DCI_P3 = 6,
 
@@ -1309,7 +1309,27 @@ enum ColorMode : int32_t {
    *
    * Gamma: 2.2
    */
-  ADOBE_RGB = 8
+  ADOBE_RGB = 8,
+
+  /*
+   * DISPLAY_P3 is a color space that uses the DCI_P3 primaries,
+   * the D65 white point and the SRGB transfer functions.
+   * Rendering Intent: Colorimetric
+   * Primaries:
+   *                  x       y
+   *  green           0.265   0.690
+   *  blue            0.150   0.060
+   *  red             0.680   0.320
+   *  white (D65)     0.3127  0.3290
+   *
+   * PC/Internet (sRGB) Gamma Correction (GC):
+   *
+   *  if Vlinear â‰¤ 0.0031308
+   *    Vnonlinear = 12.92 * Vlinear
+   *  else
+   *    Vnonlinear = 1.055 * (Vlinear)^(1/2.4) â€“ 0.055
+   */
+  DISPLAY_P3 = 9
 };
 
 /*
index 54dfd89..621cb14 100644 (file)
@@ -514,7 +514,7 @@ Return<void> HwcClient::getOutputCommandQueue(
     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();
index 3a8fceb..fb9f070 100644 (file)
@@ -54,3 +54,106 @@ cc_library_shared {
         "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 (file)
index 0000000..90c50c8
--- /dev/null
@@ -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 (file)
index 0000000..bebc6cf
--- /dev/null
@@ -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 (file)
index 0000000..c5265de
--- /dev/null
@@ -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 (file)
index 0000000..57d0b73
--- /dev/null
@@ -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 (file)
index 0000000..a69fd08
--- /dev/null
@@ -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 (file)
index 0000000..3ad7e45
--- /dev/null
@@ -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 (file)
index 0000000..d308b1f
--- /dev/null
@@ -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
index ba90f2c..ed19a37 100644 (file)
@@ -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 (file)
index 0000000..f9e3276
--- /dev/null
@@ -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)
index 230ead3..f165a45 100644 (file)
@@ -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>
index 6181ffb..4cd1d40 100644 (file)
@@ -196,7 +196,7 @@ bool TvInput::isSupportedStreamType(int type) {
     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 @@ ITvInput* HIDL_FETCH_ITvInput(const char* name) {
         }
     }
     else {
-        LOG(ERROR) << "hw_get_module " << name << " failed: " << ret;
+        LOG(ERROR) << "hw_get_module " << TV_INPUT_HARDWARE_MODULE_ID
+                   << " failed: " << ret;
         return nullptr;
     }
 }
index d59c848..d904d0b 100644 (file)
@@ -27,5 +27,5 @@ using android::hardware::tv::input::V1_0::ITvInput;
 using android::hardware::defaultPassthroughServiceImplementation;
 
 int main() {
-    return defaultPassthroughServiceImplementation<ITvInput>("tv.input");
+    return defaultPassthroughServiceImplementation<ITvInput>();
 }
index 9b49078..b5becd6 100644 (file)
@@ -39,7 +39,6 @@ class TvInputHidlTest(base_test_with_webdb.BaseTestWithWebDbClass):
                                  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")
index dffcfbb..4a20ea5 100644 (file)
@@ -353,7 +353,7 @@ TEST_F(VehicleHalManagerTest, get_StaticString) {
 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);
index b4eb484..5d2e6fe 100644 (file)
@@ -87,7 +87,7 @@ Return<void> VehicleHalManager::get(
     }
 
     if (!checkReadPermission(*config, getCaller())) {
-        _hidl_cb(StatusCode::INVALID_ARG, kEmptyValue);
+        _hidl_cb(StatusCode::ACCESS_DENIED, kEmptyValue);
         return Void();
     }
 
@@ -108,7 +108,7 @@ Return<StatusCode> VehicleHalManager::set(const VehiclePropValue &value) {
     }
 
     if (!checkWritePermission(*config, getCaller())) {
-        return StatusCode::INVALID_ARG;
+        return StatusCode::ACCESS_DENIED;
     }
 
     handlePropertySetEvent(value);
@@ -122,6 +122,7 @@ Return<StatusCode> VehicleHalManager::subscribe(
         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> VehicleHalManager::subscribe(
             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 @@ bool VehicleHalManager::isSubscribable(const VehiclePropConfig& config,
     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 @@ bool VehicleHalManager::checkWritePermission(const VehiclePropConfig &config,
         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 @@ bool VehicleHalManager::checkReadPermission(const VehiclePropConfig &config,
         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) {
index 519b09b..6768741 100644 (file)
@@ -100,6 +100,9 @@ private:
                               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);
index 5faf78a..cd52abf 100644 (file)
@@ -20,6 +20,7 @@ import time
 
 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 @@ class VehicleHidlTest(base_test_with_webdb.BaseTestWithWebDbClass):
         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 @@ class VehicleHidlTest(base_test_with_webdb.BaseTestWithWebDbClass):
             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)
 
index e86e681..8c82bcd 100644 (file)
@@ -50,18 +50,18 @@ Return<Status> Vibrator::off()  {
     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) {
index ec8db3a..782a763 100644 (file)
@@ -28,13 +28,11 @@ using ::android::hardware::Return;
 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);
   }
 
index 498ea06..84f2907 100644 (file)
@@ -45,7 +45,6 @@ class VibratorHidlTest(base_test_with_webdb.BaseTestWithWebDbClass):
             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):
index bbb9346..37fcfea 100644 (file)
@@ -887,7 +887,7 @@ bool convertHidlNanPublishRequestToLegacy(
   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 @@ bool convertHidlNanSubscribeRequestToLegacy(
   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 @@ bool convertHidlNanTransmitFollowupRequestToLegacy(
   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 @@ bool convertHidlNanConfigRequestToLegacy(
   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 @@ bool convertHidlNanBeaconSdfPayloadRequestToLegacy(
   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 @@ bool convertHidlNanDataPathInitiatorRequestToLegacy(
   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 @@ bool convertHidlNanDataPathIndicationResponseToLegacy(
   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;
index 40e8b12..96d5c6f 100644 (file)
@@ -34,7 +34,7 @@ int main(int /*argc*/, char** argv) {
   // 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();
index f88b866..050bba3 100644 (file)
@@ -34,8 +34,6 @@ using ::android::sp;
 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 stopFramework() {
 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;
 }
 
index 3877b97..2f3405d 100644 (file)
@@ -49,7 +49,7 @@ using ::android::wifi_system::InterfaceTool;
 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() {