mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-01-27 18:59:11 +00:00
Bind Fingerprint Virutal HAL with IVirtual interface
Bug: 326227403
Test: atest CtsBiometricsTestCases -c
Ignore-AOSP-First: CLs of other related projects needs this CL to run
presubmit tests
Change-Id: I295925d7c26235dc66c7c9481d08661095c8dc92
This commit is contained in:
@@ -22,6 +22,12 @@ aidl_interface {
|
|||||||
cpp: {
|
cpp: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
|
ndk: {
|
||||||
|
apex_available: [
|
||||||
|
"//apex_available:anyapex",
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
versions_with_info: [
|
versions_with_info: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ cc_library {
|
|||||||
// SPDX-license-identifier-Apache-2.0
|
// SPDX-license-identifier-Apache-2.0
|
||||||
name: "android.hardware.biometrics.common.config",
|
name: "android.hardware.biometrics.common.config",
|
||||||
export_include_dirs: ["include"],
|
export_include_dirs: ["include"],
|
||||||
vendor: true,
|
vendor_available: true,
|
||||||
srcs: [
|
srcs: [
|
||||||
"Config.cpp",
|
"Config.cpp",
|
||||||
],
|
],
|
||||||
@@ -30,6 +30,10 @@ cc_library {
|
|||||||
"libbase",
|
"libbase",
|
||||||
"libbinder_ndk",
|
"libbinder_ndk",
|
||||||
],
|
],
|
||||||
|
apex_available: [
|
||||||
|
"//apex_available:anyapex",
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_test_host {
|
cc_test_host {
|
||||||
|
|||||||
@@ -10,10 +10,14 @@ cc_library {
|
|||||||
// SPDX-license-identifier-Apache-2.0
|
// SPDX-license-identifier-Apache-2.0
|
||||||
name: "android.hardware.biometrics.common.thread",
|
name: "android.hardware.biometrics.common.thread",
|
||||||
export_include_dirs: ["include"],
|
export_include_dirs: ["include"],
|
||||||
vendor: true,
|
vendor_available: true,
|
||||||
srcs: [
|
srcs: [
|
||||||
"WorkerThread.cpp",
|
"WorkerThread.cpp",
|
||||||
],
|
],
|
||||||
|
apex_available: [
|
||||||
|
"//apex_available:anyapex",
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_test_host {
|
cc_test_host {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ cc_library {
|
|||||||
// SPDX-license-identifier-Apache-2.0
|
// SPDX-license-identifier-Apache-2.0
|
||||||
name: "android.hardware.biometrics.common.util",
|
name: "android.hardware.biometrics.common.util",
|
||||||
export_include_dirs: ["include"],
|
export_include_dirs: ["include"],
|
||||||
vendor: true,
|
vendor_available: true,
|
||||||
srcs: [
|
srcs: [
|
||||||
"CancellationSignal.cpp",
|
"CancellationSignal.cpp",
|
||||||
],
|
],
|
||||||
@@ -15,4 +15,8 @@ cc_library {
|
|||||||
"libbinder_ndk",
|
"libbinder_ndk",
|
||||||
"android.hardware.biometrics.common-V4-ndk",
|
"android.hardware.biometrics.common-V4-ndk",
|
||||||
],
|
],
|
||||||
|
apex_available: [
|
||||||
|
"//apex_available:anyapex",
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ aidl_interface {
|
|||||||
name: "android.hardware.biometrics.fingerprint",
|
name: "android.hardware.biometrics.fingerprint",
|
||||||
vendor_available: true,
|
vendor_available: true,
|
||||||
srcs: [
|
srcs: [
|
||||||
"android/hardware/biometrics/fingerprint/**/*.aidl",
|
"android/hardware/biometrics/fingerprint/*.aidl",
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
"android.hardware.biometrics.common-V4",
|
"android.hardware.biometrics.common-V4",
|
||||||
@@ -25,6 +25,12 @@ aidl_interface {
|
|||||||
cpp: {
|
cpp: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
},
|
},
|
||||||
|
ndk: {
|
||||||
|
apex_available: [
|
||||||
|
"//apex_available:platform",
|
||||||
|
"//apex_available:anyapex",
|
||||||
|
],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
versions_with_info: [
|
versions_with_info: [
|
||||||
{
|
{
|
||||||
@@ -57,5 +63,34 @@ aidl_interface {
|
|||||||
},
|
},
|
||||||
|
|
||||||
],
|
],
|
||||||
|
frozen: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
aidl_interface {
|
||||||
|
name: "android.hardware.biometrics.fingerprint.virtualhal",
|
||||||
|
srcs: [
|
||||||
|
"android/hardware/biometrics/fingerprint/virtualhal/*.aidl",
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
"android.hardware.biometrics.common-V4",
|
||||||
|
"android.hardware.keymaster-V4",
|
||||||
|
"android.hardware.biometrics.fingerprint-V4",
|
||||||
|
],
|
||||||
|
vendor_available: true,
|
||||||
|
unstable: true,
|
||||||
|
backend: {
|
||||||
|
java: {
|
||||||
|
platform_apis: true,
|
||||||
|
},
|
||||||
|
cpp: {
|
||||||
|
enabled: false,
|
||||||
|
},
|
||||||
|
ndk: {
|
||||||
|
apex_available: [
|
||||||
|
"com.android.hardware.biometrics.fingerprint.virtual",
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
frozen: false,
|
frozen: false,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2024 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
|
||||||
// two cases:
|
|
||||||
// 1). this is a frozen version file - do not edit this in any case.
|
|
||||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
|
||||||
// the interface (from the latest frozen version), the build system will
|
|
||||||
// prompt you to update this file with `m <name>-update-api`.
|
|
||||||
//
|
|
||||||
// You must not make a backward incompatible change to any AIDL file built
|
|
||||||
// with the aidl_interface module type with versions property set. The module
|
|
||||||
// type is used to build AIDL files in a way that they can be used across
|
|
||||||
// independently updatable components of the system. If a device is shipped
|
|
||||||
// with such a backward incompatible change, it has a high risk of breaking
|
|
||||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
|
||||||
|
|
||||||
package android.hardware.biometrics.fingerprint;
|
|
||||||
/* @hide */
|
|
||||||
@VintfStability
|
|
||||||
union AcquiredInfoAndVendorCode {
|
|
||||||
android.hardware.biometrics.fingerprint.AcquiredInfo acquiredInfo = android.hardware.biometrics.fingerprint.AcquiredInfo.UNKNOWN;
|
|
||||||
int vendorCode;
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2024 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
|
||||||
// two cases:
|
|
||||||
// 1). this is a frozen version file - do not edit this in any case.
|
|
||||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
|
||||||
// the interface (from the latest frozen version), the build system will
|
|
||||||
// prompt you to update this file with `m <name>-update-api`.
|
|
||||||
//
|
|
||||||
// You must not make a backward incompatible change to any AIDL file built
|
|
||||||
// with the aidl_interface module type with versions property set. The module
|
|
||||||
// type is used to build AIDL files in a way that they can be used across
|
|
||||||
// independently updatable components of the system. If a device is shipped
|
|
||||||
// with such a backward incompatible change, it has a high risk of breaking
|
|
||||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
|
||||||
|
|
||||||
package android.hardware.biometrics.fingerprint;
|
|
||||||
/* @hide */
|
|
||||||
@VintfStability
|
|
||||||
parcelable EnrollmentProgressStep {
|
|
||||||
int durationMs;
|
|
||||||
android.hardware.biometrics.fingerprint.AcquiredInfoAndVendorCode[] acquiredInfoAndVendorCodes;
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2024 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
|
||||||
// two cases:
|
|
||||||
// 1). this is a frozen version file - do not edit this in any case.
|
|
||||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
|
||||||
// the interface (from the latest frozen version), the build system will
|
|
||||||
// prompt you to update this file with `m <name>-update-api`.
|
|
||||||
//
|
|
||||||
// You must not make a backward incompatible change to any AIDL file built
|
|
||||||
// with the aidl_interface module type with versions property set. The module
|
|
||||||
// type is used to build AIDL files in a way that they can be used across
|
|
||||||
// independently updatable components of the system. If a device is shipped
|
|
||||||
// with such a backward incompatible change, it has a high risk of breaking
|
|
||||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
|
||||||
|
|
||||||
package android.hardware.biometrics.fingerprint;
|
|
||||||
/* @hide */
|
|
||||||
@VintfStability
|
|
||||||
interface IVirtualHal {
|
|
||||||
oneway void setEnrollments(in int[] id);
|
|
||||||
oneway void setEnrollmentHit(in int hit_id);
|
|
||||||
oneway void setNextEnrollment(in android.hardware.biometrics.fingerprint.NextEnrollment next_enrollment);
|
|
||||||
oneway void setAuthenticatorId(in long id);
|
|
||||||
oneway void setChallenge(in long challenge);
|
|
||||||
oneway void setOperationAuthenticateFails(in boolean fail);
|
|
||||||
oneway void setOperationAuthenticateLatency(in int[] latencyMs);
|
|
||||||
oneway void setOperationAuthenticateDuration(in int durationMs);
|
|
||||||
oneway void setOperationAuthenticateError(in int error);
|
|
||||||
oneway void setOperationAuthenticateAcquired(in android.hardware.biometrics.fingerprint.AcquiredInfoAndVendorCode[] acquired);
|
|
||||||
oneway void setOperationEnrollError(in int error);
|
|
||||||
oneway void setOperationEnrollLatency(in int[] latencyMs);
|
|
||||||
oneway void setOperationDetectInteractionLatency(in int[] latencyMs);
|
|
||||||
oneway void setOperationDetectInteractionError(in int error);
|
|
||||||
oneway void setOperationDetectInteractionDuration(in int durationMs);
|
|
||||||
oneway void setOperationDetectInteractionAcquired(in android.hardware.biometrics.fingerprint.AcquiredInfoAndVendorCode[] acquired);
|
|
||||||
oneway void setLockout(in boolean lockout);
|
|
||||||
oneway void setLockoutEnable(in boolean enable);
|
|
||||||
oneway void setLockoutTimedThreshold(in int threshold);
|
|
||||||
oneway void setLockoutTimedDuration(in int durationMs);
|
|
||||||
oneway void setLockoutPermanentThreshold(in int threshold);
|
|
||||||
oneway void resetConfigurations();
|
|
||||||
oneway void setType(in android.hardware.biometrics.fingerprint.FingerprintSensorType type);
|
|
||||||
oneway void setSensorId(in int id);
|
|
||||||
oneway void setSensorStrength(in android.hardware.biometrics.common.SensorStrength strength);
|
|
||||||
oneway void setMaxEnrollmentPerUser(in int max);
|
|
||||||
oneway void setSensorLocation(in android.hardware.biometrics.fingerprint.SensorLocation loc);
|
|
||||||
oneway void setNavigationGuesture(in boolean v);
|
|
||||||
oneway void setDetectInteraction(in boolean v);
|
|
||||||
oneway void setDisplayTouch(in boolean v);
|
|
||||||
oneway void setControlIllumination(in boolean v);
|
|
||||||
const int STATUS_INVALID_PARAMETER = 1;
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2024 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
|
||||||
// two cases:
|
|
||||||
// 1). this is a frozen version file - do not edit this in any case.
|
|
||||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
|
||||||
// the interface (from the latest frozen version), the build system will
|
|
||||||
// prompt you to update this file with `m <name>-update-api`.
|
|
||||||
//
|
|
||||||
// You must not make a backward incompatible change to any AIDL file built
|
|
||||||
// with the aidl_interface module type with versions property set. The module
|
|
||||||
// type is used to build AIDL files in a way that they can be used across
|
|
||||||
// independently updatable components of the system. If a device is shipped
|
|
||||||
// with such a backward incompatible change, it has a high risk of breaking
|
|
||||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
|
||||||
|
|
||||||
package android.hardware.biometrics.fingerprint;
|
|
||||||
/* @hide */
|
|
||||||
@VintfStability
|
|
||||||
parcelable NextEnrollment {
|
|
||||||
int id;
|
|
||||||
android.hardware.biometrics.fingerprint.EnrollmentProgressStep[] progressSteps;
|
|
||||||
boolean result = true;
|
|
||||||
}
|
|
||||||
@@ -14,14 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package android.hardware.biometrics.fingerprint;
|
package android.hardware.biometrics.fingerprint.virtualhal;
|
||||||
|
|
||||||
import android.hardware.biometrics.fingerprint.AcquiredInfo;
|
import android.hardware.biometrics.fingerprint.AcquiredInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@VintfStability
|
|
||||||
union AcquiredInfoAndVendorCode {
|
union AcquiredInfoAndVendorCode {
|
||||||
/**
|
/**
|
||||||
* Acquired info as specified in AcqauiredInfo.aidl
|
* Acquired info as specified in AcqauiredInfo.aidl
|
||||||
@@ -14,14 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package android.hardware.biometrics.fingerprint;
|
package android.hardware.biometrics.fingerprint.virtualhal;
|
||||||
|
|
||||||
import android.hardware.biometrics.fingerprint.AcquiredInfoAndVendorCode;
|
import android.hardware.biometrics.fingerprint.virtualhal.AcquiredInfoAndVendorCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@VintfStability
|
|
||||||
parcelable EnrollmentProgressStep {
|
parcelable EnrollmentProgressStep {
|
||||||
/**
|
/**
|
||||||
* The duration of the enrollment step in milli-seconds
|
* The duration of the enrollment step in milli-seconds
|
||||||
@@ -14,19 +14,19 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package android.hardware.biometrics.fingerprint;
|
package android.hardware.biometrics.fingerprint.virtualhal;
|
||||||
|
|
||||||
import android.hardware.biometrics.common.SensorStrength;
|
import android.hardware.biometrics.common.SensorStrength;
|
||||||
import android.hardware.biometrics.fingerprint.AcquiredInfoAndVendorCode;
|
|
||||||
import android.hardware.biometrics.fingerprint.FingerprintSensorType;
|
import android.hardware.biometrics.fingerprint.FingerprintSensorType;
|
||||||
import android.hardware.biometrics.fingerprint.NextEnrollment;
|
import android.hardware.biometrics.fingerprint.IFingerprint;
|
||||||
import android.hardware.biometrics.fingerprint.SensorLocation;
|
import android.hardware.biometrics.fingerprint.SensorLocation;
|
||||||
|
import android.hardware.biometrics.fingerprint.virtualhal.AcquiredInfoAndVendorCode;
|
||||||
|
import android.hardware.biometrics.fingerprint.virtualhal.NextEnrollment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@VintfStability
|
interface IVirtualHal {
|
||||||
oneway interface IVirtualHal {
|
|
||||||
/**
|
/**
|
||||||
* The operation failed due to invalid input parameters, the error messages should
|
* The operation failed due to invalid input parameters, the error messages should
|
||||||
* gives more details
|
* gives more details
|
||||||
@@ -315,4 +315,5 @@ oneway interface IVirtualHal {
|
|||||||
void setDetectInteraction(in boolean v);
|
void setDetectInteraction(in boolean v);
|
||||||
void setDisplayTouch(in boolean v);
|
void setDisplayTouch(in boolean v);
|
||||||
void setControlIllumination(in boolean v);
|
void setControlIllumination(in boolean v);
|
||||||
|
IFingerprint getFingerprintHal();
|
||||||
}
|
}
|
||||||
@@ -14,12 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package android.hardware.biometrics.fingerprint;
|
package android.hardware.biometrics.fingerprint.virtualhal;
|
||||||
|
|
||||||
|
import android.hardware.biometrics.fingerprint.virtualhal.EnrollmentProgressStep;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@VintfStability
|
|
||||||
parcelable NextEnrollment {
|
parcelable NextEnrollment {
|
||||||
/**
|
/**
|
||||||
* Identifier of the next enrollment if successful
|
* Identifier of the next enrollment if successful
|
||||||
@@ -31,7 +32,7 @@ parcelable NextEnrollment {
|
|||||||
* and sequence of acquired info codes to be generated by HAL.
|
* and sequence of acquired info codes to be generated by HAL.
|
||||||
* See EnrollmentProgressStep.aidl for more details
|
* See EnrollmentProgressStep.aidl for more details
|
||||||
*/
|
*/
|
||||||
android.hardware.biometrics.fingerprint.EnrollmentProgressStep[] progressSteps;
|
EnrollmentProgressStep[] progressSteps;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Success or failure of the next enrollment
|
* Success or failure of the next enrollment
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
The aidl files in this directory are used only by fingerprint virtual hal
|
||||||
|
which is controlled/configured via IVirtualHal interface
|
||||||
@@ -8,10 +8,9 @@ package {
|
|||||||
default_applicable_licenses: ["hardware_interfaces_license"],
|
default_applicable_licenses: ["hardware_interfaces_license"],
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_binary {
|
cc_library_static {
|
||||||
name: "android.hardware.biometrics.fingerprint-service.example",
|
name: "android.hardware.biometrics.fingerprint-service.lib",
|
||||||
vendor: true,
|
vendor_available: true,
|
||||||
relative_install_path: "hw",
|
|
||||||
local_include_dirs: ["include"],
|
local_include_dirs: ["include"],
|
||||||
srcs: [
|
srcs: [
|
||||||
"FakeLockoutTracker.cpp",
|
"FakeLockoutTracker.cpp",
|
||||||
@@ -30,22 +29,80 @@ cc_binary {
|
|||||||
"libbinder_ndk",
|
"libbinder_ndk",
|
||||||
"liblog",
|
"liblog",
|
||||||
],
|
],
|
||||||
static_libs: [
|
whole_static_libs: [
|
||||||
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
||||||
"libbase",
|
"libbase",
|
||||||
"android.hardware.biometrics.fingerprint-V5-ndk",
|
"android.hardware.biometrics.fingerprint.virtualhal-ndk",
|
||||||
|
"android.hardware.biometrics.fingerprint-V4-ndk",
|
||||||
"android.hardware.biometrics.common-V4-ndk",
|
"android.hardware.biometrics.common-V4-ndk",
|
||||||
"android.hardware.biometrics.common.thread",
|
"android.hardware.biometrics.common.thread",
|
||||||
"android.hardware.biometrics.common.util",
|
"android.hardware.biometrics.common.util",
|
||||||
"android.hardware.biometrics.common.config",
|
"android.hardware.biometrics.common.config",
|
||||||
"android.hardware.keymaster-V4-ndk",
|
"android.hardware.keymaster-V4-ndk",
|
||||||
],
|
],
|
||||||
|
product_variables: {
|
||||||
|
debuggable: {
|
||||||
|
cflags: ["-DFPS_DEBUGGABLE"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
apex_available: [
|
||||||
|
"com.android.hardware.biometrics.fingerprint.virtual",
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_binary {
|
||||||
|
name: "android.hardware.biometrics.fingerprint-service.example",
|
||||||
|
system_ext_specific: true,
|
||||||
|
relative_install_path: "hw",
|
||||||
|
local_include_dirs: ["include"],
|
||||||
|
srcs: [
|
||||||
|
],
|
||||||
|
stl: "c++_static",
|
||||||
|
shared_libs: [
|
||||||
|
"libbinder_ndk",
|
||||||
|
"liblog",
|
||||||
|
],
|
||||||
|
whole_static_libs: [
|
||||||
|
"android.hardware.biometrics.fingerprint-service.lib",
|
||||||
|
],
|
||||||
installable: false, // install APEX instead
|
installable: false, // install APEX instead
|
||||||
product_variables: {
|
product_variables: {
|
||||||
debuggable: {
|
debuggable: {
|
||||||
cflags: ["-DFPS_DEBUGGABLE"],
|
cflags: ["-DFPS_DEBUGGABLE"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
apex_available: [
|
||||||
|
"com.android.hardware.biometrics.fingerprint.virtual",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_binary {
|
||||||
|
name: "android.hardware.biometrics.fingerprint-service.default",
|
||||||
|
//system_ext_specific: true,
|
||||||
|
vendor: true,
|
||||||
|
relative_install_path: "hw",
|
||||||
|
init_rc: ["fingerprint-default.rc"],
|
||||||
|
vintf_fragments: ["fingerprint-default.xml"],
|
||||||
|
local_include_dirs: ["include"],
|
||||||
|
srcs: [
|
||||||
|
],
|
||||||
|
stl: "c++_static",
|
||||||
|
shared_libs: [
|
||||||
|
"libbinder_ndk",
|
||||||
|
"liblog",
|
||||||
|
],
|
||||||
|
whole_static_libs: [
|
||||||
|
"android.hardware.biometrics.fingerprint-service.lib",
|
||||||
|
],
|
||||||
|
product_variables: {
|
||||||
|
debuggable: {
|
||||||
|
cflags: ["-DFPS_DEBUGGABLE"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
apex_available: [
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_test {
|
cc_test {
|
||||||
@@ -63,14 +120,13 @@ cc_test {
|
|||||||
],
|
],
|
||||||
static_libs: [
|
static_libs: [
|
||||||
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
||||||
"android.hardware.biometrics.fingerprint-V5-ndk",
|
"android.hardware.biometrics.fingerprint-V4-ndk",
|
||||||
"android.hardware.biometrics.common-V4-ndk",
|
"android.hardware.biometrics.common-V4-ndk",
|
||||||
"android.hardware.keymaster-V4-ndk",
|
"android.hardware.keymaster-V4-ndk",
|
||||||
"android.hardware.biometrics.common.util",
|
"android.hardware.biometrics.common.util",
|
||||||
"android.hardware.biometrics.common.config",
|
"android.hardware.biometrics.common.config",
|
||||||
"android.hardware.biometrics.common.thread",
|
"android.hardware.biometrics.common.thread",
|
||||||
],
|
],
|
||||||
vendor: true,
|
|
||||||
test_suites: ["general-tests"],
|
test_suites: ["general-tests"],
|
||||||
require_root: true,
|
require_root: true,
|
||||||
}
|
}
|
||||||
@@ -91,14 +147,13 @@ cc_test {
|
|||||||
],
|
],
|
||||||
static_libs: [
|
static_libs: [
|
||||||
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
||||||
"android.hardware.biometrics.fingerprint-V5-ndk",
|
"android.hardware.biometrics.fingerprint-V4-ndk",
|
||||||
"android.hardware.biometrics.common-V4-ndk",
|
"android.hardware.biometrics.common-V4-ndk",
|
||||||
"android.hardware.keymaster-V4-ndk",
|
"android.hardware.keymaster-V4-ndk",
|
||||||
"android.hardware.biometrics.common.util",
|
"android.hardware.biometrics.common.util",
|
||||||
"android.hardware.biometrics.common.config",
|
"android.hardware.biometrics.common.config",
|
||||||
"android.hardware.biometrics.common.thread",
|
"android.hardware.biometrics.common.thread",
|
||||||
],
|
],
|
||||||
vendor: true,
|
|
||||||
test_suites: ["general-tests"],
|
test_suites: ["general-tests"],
|
||||||
require_root: true,
|
require_root: true,
|
||||||
}
|
}
|
||||||
@@ -117,14 +172,13 @@ cc_test {
|
|||||||
],
|
],
|
||||||
static_libs: [
|
static_libs: [
|
||||||
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
||||||
"android.hardware.biometrics.fingerprint-V5-ndk",
|
"android.hardware.biometrics.fingerprint-V4-ndk",
|
||||||
"android.hardware.biometrics.common-V4-ndk",
|
"android.hardware.biometrics.common-V4-ndk",
|
||||||
"android.hardware.keymaster-V4-ndk",
|
"android.hardware.keymaster-V4-ndk",
|
||||||
"android.hardware.biometrics.common.util",
|
"android.hardware.biometrics.common.util",
|
||||||
"android.hardware.biometrics.common.thread",
|
"android.hardware.biometrics.common.thread",
|
||||||
"android.hardware.biometrics.common.config",
|
"android.hardware.biometrics.common.config",
|
||||||
],
|
],
|
||||||
vendor: true,
|
|
||||||
test_suites: ["general-tests"],
|
test_suites: ["general-tests"],
|
||||||
require_root: true,
|
require_root: true,
|
||||||
}
|
}
|
||||||
@@ -145,14 +199,13 @@ cc_test {
|
|||||||
],
|
],
|
||||||
static_libs: [
|
static_libs: [
|
||||||
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
||||||
"android.hardware.biometrics.fingerprint-V5-ndk",
|
"android.hardware.biometrics.fingerprint-V4-ndk",
|
||||||
"android.hardware.biometrics.common-V4-ndk",
|
"android.hardware.biometrics.common-V4-ndk",
|
||||||
"android.hardware.keymaster-V4-ndk",
|
"android.hardware.keymaster-V4-ndk",
|
||||||
"android.hardware.biometrics.common.util",
|
"android.hardware.biometrics.common.util",
|
||||||
"android.hardware.biometrics.common.thread",
|
"android.hardware.biometrics.common.thread",
|
||||||
"android.hardware.biometrics.common.config",
|
"android.hardware.biometrics.common.config",
|
||||||
],
|
],
|
||||||
vendor: true,
|
|
||||||
test_suites: ["general-tests"],
|
test_suites: ["general-tests"],
|
||||||
require_root: true,
|
require_root: true,
|
||||||
}
|
}
|
||||||
@@ -178,7 +231,8 @@ cc_test {
|
|||||||
],
|
],
|
||||||
static_libs: [
|
static_libs: [
|
||||||
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
"libandroid.hardware.biometrics.fingerprint.VirtualProps",
|
||||||
"android.hardware.biometrics.fingerprint-V5-ndk",
|
"android.hardware.biometrics.fingerprint-V4-ndk",
|
||||||
|
"android.hardware.biometrics.fingerprint.virtualhal-ndk",
|
||||||
"android.hardware.biometrics.common-V4-ndk",
|
"android.hardware.biometrics.common-V4-ndk",
|
||||||
"android.hardware.keymaster-V4-ndk",
|
"android.hardware.keymaster-V4-ndk",
|
||||||
"android.hardware.biometrics.common.util",
|
"android.hardware.biometrics.common.util",
|
||||||
@@ -190,7 +244,6 @@ cc_test {
|
|||||||
cflags: ["-DFPS_DEBUGGABLE"],
|
cflags: ["-DFPS_DEBUGGABLE"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
vendor: true,
|
|
||||||
test_suites: ["general-tests"],
|
test_suites: ["general-tests"],
|
||||||
require_root: true,
|
require_root: true,
|
||||||
}
|
}
|
||||||
@@ -198,39 +251,34 @@ cc_test {
|
|||||||
sysprop_library {
|
sysprop_library {
|
||||||
name: "android.hardware.biometrics.fingerprint.VirtualProps",
|
name: "android.hardware.biometrics.fingerprint.VirtualProps",
|
||||||
srcs: ["fingerprint.sysprop"],
|
srcs: ["fingerprint.sysprop"],
|
||||||
property_owner: "Vendor",
|
property_owner: "Platform",
|
||||||
vendor: true,
|
vendor_available: true,
|
||||||
|
apex_available: [
|
||||||
|
"com.android.hardware.biometrics.fingerprint.virtual",
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
prebuilt_etc {
|
prebuilt_etc {
|
||||||
name: "fingerprint-example.rc",
|
name: "fingerprint-virtual.rc",
|
||||||
src: "fingerprint-example.rc",
|
src: "fingerprint-virtual.rc",
|
||||||
installable: false,
|
|
||||||
}
|
|
||||||
|
|
||||||
prebuilt_etc {
|
|
||||||
name: "fingerprint-example.xml",
|
|
||||||
src: "fingerprint-example.xml",
|
|
||||||
sub_dir: "vintf",
|
|
||||||
installable: false,
|
installable: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
apex {
|
apex {
|
||||||
name: "com.android.hardware.biometrics.fingerprint.virtual",
|
name: "com.android.hardware.biometrics.fingerprint.virtual",
|
||||||
manifest: "apex_manifest.json",
|
manifest: "apex_manifest.json",
|
||||||
file_contexts: "apex_file_contexts",
|
file_contexts: ":com.android.biometrics.virtual.fingerprint-file_contexts",
|
||||||
key: "com.android.hardware.key",
|
key: "com.android.hardware.key",
|
||||||
certificate: ":com.android.hardware.certificate",
|
certificate: ":com.android.hardware.certificate",
|
||||||
updatable: false,
|
updatable: false,
|
||||||
vendor: true,
|
system_ext_specific: true,
|
||||||
|
|
||||||
binaries: [
|
binaries: [
|
||||||
"android.hardware.biometrics.fingerprint-service.example",
|
"android.hardware.biometrics.fingerprint-service.example",
|
||||||
],
|
],
|
||||||
prebuilts: [
|
prebuilts: [
|
||||||
// init_rc
|
// init_rc
|
||||||
"fingerprint-example.rc",
|
"fingerprint-virtual.rc",
|
||||||
// vintf_fragment
|
|
||||||
"fingerprint-example.xml",
|
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
#define LOG_TAG "FingerprintVirtualHalAidl"
|
#define LOG_TAG "FingerprintVirtualHalAidl"
|
||||||
|
|
||||||
namespace aidl::android::hardware::biometrics::fingerprint {
|
namespace aidl::android::hardware::biometrics::fingerprint {
|
||||||
|
using AcquiredInfoAndVendorCode = virtualhal::AcquiredInfoAndVendorCode;
|
||||||
using Tag = AcquiredInfoAndVendorCode::Tag;
|
using Tag = AcquiredInfoAndVendorCode::Tag;
|
||||||
|
|
||||||
::ndk::ScopedAStatus VirtualHal::setEnrollments(const std::vector<int32_t>& enrollments) {
|
::ndk::ScopedAStatus VirtualHal::setEnrollments(const std::vector<int32_t>& enrollments) {
|
||||||
@@ -41,8 +41,7 @@ using Tag = AcquiredInfoAndVendorCode::Tag;
|
|||||||
return ndk::ScopedAStatus::ok();
|
return ndk::ScopedAStatus::ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
::ndk::ScopedAStatus VirtualHal::setNextEnrollment(
|
::ndk::ScopedAStatus VirtualHal::setNextEnrollment(const NextEnrollment& next_enrollment) {
|
||||||
const ::aidl::android::hardware::biometrics::fingerprint::NextEnrollment& next_enrollment) {
|
|
||||||
Fingerprint::cfg().sourcedFromAidl();
|
Fingerprint::cfg().sourcedFromAidl();
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
os << next_enrollment.id << ":";
|
os << next_enrollment.id << ":";
|
||||||
@@ -333,4 +332,10 @@ OptIntVec VirtualHal::acquiredInfoVec2OptIntVec(
|
|||||||
return ndk::ScopedAStatus::ok();
|
return ndk::ScopedAStatus::ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
::ndk::ScopedAStatus VirtualHal::getFingerprintHal(
|
||||||
|
std::shared_ptr<::aidl::android::hardware::biometrics::fingerprint::IFingerprint>* pFp) {
|
||||||
|
LOG(INFO) << " calling getFingerprintHal in VirtualHal.cpp";
|
||||||
|
*pFp = mFp;
|
||||||
|
return ndk::ScopedAStatus::ok();
|
||||||
|
}
|
||||||
} // namespace aidl::android::hardware::biometrics::fingerprint
|
} // namespace aidl::android::hardware::biometrics::fingerprint
|
||||||
|
|||||||
@@ -0,0 +1,178 @@
|
|||||||
|
props {
|
||||||
|
owner: Vendor
|
||||||
|
module: "android.fingerprint.virt.FingerprintHalProperties"
|
||||||
|
prop {
|
||||||
|
api_name: "authenticator_id"
|
||||||
|
type: Long
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.authenticator_id"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "challenge"
|
||||||
|
type: Long
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.challenge"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "control_illumination"
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.udfps.control_illumination"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "detect_interaction"
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.detect_interaction"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "display_touch"
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.udfps.display_touch"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "enrollment_hit"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.enrollment_hit"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "enrollments"
|
||||||
|
type: IntegerList
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.enrollments"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "lockout"
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.lockout"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "lockout_enable"
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.lockout_enable"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "lockout_permanent_threshold"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.lockout_permanent_threshold"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "lockout_timed_duration"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_duration"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "lockout_timed_threshold"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_threshold"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "max_enrollments"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.max_enrollments"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "navigation_guesture"
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.navigation_guesture"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "next_enrollment"
|
||||||
|
type: String
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.next_enrollment"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_authenticate_acquired"
|
||||||
|
type: String
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_acquired"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_authenticate_duration"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_duration"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_authenticate_error"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_error"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_authenticate_fails"
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_fails"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_authenticate_latency"
|
||||||
|
type: IntegerList
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_latency"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_detect_interaction_acquired"
|
||||||
|
type: String
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_acquired"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_detect_interaction_duration"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_duration"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_detect_interaction_error"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_error"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_detect_interaction_latency"
|
||||||
|
type: IntegerList
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_latency"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_enroll_error"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_enroll_error"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "operation_enroll_latency"
|
||||||
|
type: IntegerList
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "vendor.fingerprint.virtual.operation_enroll_latency"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "sensor_id"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.sensor_id"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "sensor_location"
|
||||||
|
type: String
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.sensor_location"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "sensor_strength"
|
||||||
|
type: Integer
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.sensor_strength"
|
||||||
|
}
|
||||||
|
prop {
|
||||||
|
api_name: "type"
|
||||||
|
type: String
|
||||||
|
access: ReadWrite
|
||||||
|
prop_name: "persist.vendor.fingerprint.virtual.type"
|
||||||
|
enum_values: "default|rear|udfps|side"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
service vendor.fingerprint-default /vendor/bin/hw/android.hardware.biometrics.fingerprint-service.default default
|
||||||
|
class hal
|
||||||
|
user nobody
|
||||||
|
group nobody
|
||||||
|
interface aidl android.hardware.biometrics.fingerprint.IFingerprint/default
|
||||||
|
oneshot
|
||||||
|
disabled
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
<manifest version="1.0" type="device">
|
<manifest version="1.0" type="device">
|
||||||
<hal format="aidl">
|
<hal format="aidl">
|
||||||
<name>android.hardware.biometrics.fingerprint</name>
|
<name>android.hardware.biometrics.fingerprint</name>
|
||||||
<version>5</version>
|
<version>4</version>
|
||||||
<fqname>IFingerprint/virtual</fqname>
|
<interface>
|
||||||
|
<name>IFingerprint</name>
|
||||||
|
<instance>default</instance>
|
||||||
|
</interface>
|
||||||
</hal>
|
</hal>
|
||||||
</manifest>
|
</manifest>
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
service vendor.fingerprint-example /apex/com.android.hardware.biometrics.fingerprint.virtual/bin/hw/android.hardware.biometrics.fingerprint-service.example
|
|
||||||
class hal
|
|
||||||
user nobody
|
|
||||||
group nobody
|
|
||||||
interface aidl android.hardware.biometrics.fingerprint.IFingerprint/virtual
|
|
||||||
oneshot
|
|
||||||
disabled
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
service fingerprint-virtual /apex/com.android.hardware.biometrics.fingerprint.virtual/bin/hw/android.hardware.biometrics.fingerprint-service.example virtual
|
||||||
|
class hal
|
||||||
|
user nobody
|
||||||
|
group nobody
|
||||||
|
interface aidl android.hardware.biometrics.fingerprint.virtualhal.IVirtualHal/virtual
|
||||||
|
oneshot
|
||||||
|
disabled
|
||||||
@@ -7,7 +7,7 @@ owner: Vendor
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.type"
|
prop_name: "persist.vendor.fingerprint.virtual.type"
|
||||||
type: String
|
type: String
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
enum_values: "default|rear|udfps|side"
|
enum_values: "default|rear|udfps|side"
|
||||||
api_name: "type"
|
api_name: "type"
|
||||||
@@ -17,7 +17,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.enrollments"
|
prop_name: "persist.vendor.fingerprint.virtual.enrollments"
|
||||||
type: IntegerList
|
type: IntegerList
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "enrollments"
|
api_name: "enrollments"
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.enrollment_hit"
|
prop_name: "vendor.fingerprint.virtual.enrollment_hit"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "enrollment_hit"
|
api_name: "enrollment_hit"
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.next_enrollment"
|
prop_name: "vendor.fingerprint.virtual.next_enrollment"
|
||||||
type: String
|
type: String
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "next_enrollment"
|
api_name: "next_enrollment"
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.authenticator_id"
|
prop_name: "persist.vendor.fingerprint.virtual.authenticator_id"
|
||||||
type: Long
|
type: Long
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "authenticator_id"
|
api_name: "authenticator_id"
|
||||||
}
|
}
|
||||||
@@ -60,7 +60,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.challenge"
|
prop_name: "vendor.fingerprint.virtual.challenge"
|
||||||
type: Long
|
type: Long
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "challenge"
|
api_name: "challenge"
|
||||||
}
|
}
|
||||||
@@ -69,7 +69,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_authenticate_fails"
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_fails"
|
||||||
type: Boolean
|
type: Boolean
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_authenticate_fails"
|
api_name: "operation_authenticate_fails"
|
||||||
}
|
}
|
||||||
@@ -82,7 +82,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_error"
|
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_error"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_detect_interaction_error"
|
api_name: "operation_detect_interaction_error"
|
||||||
}
|
}
|
||||||
@@ -91,7 +91,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_enroll_error"
|
prop_name: "vendor.fingerprint.virtual.operation_enroll_error"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_enroll_error"
|
api_name: "operation_enroll_error"
|
||||||
}
|
}
|
||||||
@@ -104,7 +104,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_authenticate_latency"
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_latency"
|
||||||
type: IntegerList
|
type: IntegerList
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_authenticate_latency"
|
api_name: "operation_authenticate_latency"
|
||||||
}
|
}
|
||||||
@@ -114,7 +114,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_latency"
|
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_latency"
|
||||||
type: IntegerList
|
type: IntegerList
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_detect_interaction_latency"
|
api_name: "operation_detect_interaction_latency"
|
||||||
}
|
}
|
||||||
@@ -124,7 +124,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_enroll_latency"
|
prop_name: "vendor.fingerprint.virtual.operation_enroll_latency"
|
||||||
type: IntegerList
|
type: IntegerList
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_enroll_latency"
|
api_name: "operation_enroll_latency"
|
||||||
}
|
}
|
||||||
@@ -134,7 +134,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_authenticate_duration"
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_duration"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_authenticate_duration"
|
api_name: "operation_authenticate_duration"
|
||||||
}
|
}
|
||||||
@@ -143,7 +143,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_authenticate_error"
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_error"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_authenticate_error"
|
api_name: "operation_authenticate_error"
|
||||||
}
|
}
|
||||||
@@ -153,7 +153,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.sensor_location"
|
prop_name: "persist.vendor.fingerprint.virtual.sensor_location"
|
||||||
type: String
|
type: String
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "sensor_location"
|
api_name: "sensor_location"
|
||||||
}
|
}
|
||||||
@@ -162,7 +162,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_authenticate_acquired"
|
prop_name: "vendor.fingerprint.virtual.operation_authenticate_acquired"
|
||||||
type: String
|
type: String
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_authenticate_acquired"
|
api_name: "operation_authenticate_acquired"
|
||||||
}
|
}
|
||||||
@@ -172,7 +172,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_duration"
|
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_duration"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_detect_interaction_duration"
|
api_name: "operation_detect_interaction_duration"
|
||||||
}
|
}
|
||||||
@@ -184,7 +184,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_acquired"
|
prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_acquired"
|
||||||
type: String
|
type: String
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "operation_detect_interaction_acquired"
|
api_name: "operation_detect_interaction_acquired"
|
||||||
}
|
}
|
||||||
@@ -193,7 +193,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.sensor_id"
|
prop_name: "persist.vendor.fingerprint.virtual.sensor_id"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "sensor_id"
|
api_name: "sensor_id"
|
||||||
}
|
}
|
||||||
@@ -203,7 +203,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.sensor_strength"
|
prop_name: "persist.vendor.fingerprint.virtual.sensor_strength"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "sensor_strength"
|
api_name: "sensor_strength"
|
||||||
}
|
}
|
||||||
@@ -213,7 +213,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.max_enrollments"
|
prop_name: "persist.vendor.fingerprint.virtual.max_enrollments"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "max_enrollments"
|
api_name: "max_enrollments"
|
||||||
}
|
}
|
||||||
@@ -222,7 +222,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.navigation_guesture"
|
prop_name: "persist.vendor.fingerprint.virtual.navigation_guesture"
|
||||||
type: Boolean
|
type: Boolean
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "navigation_guesture"
|
api_name: "navigation_guesture"
|
||||||
}
|
}
|
||||||
@@ -231,7 +231,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.detect_interaction"
|
prop_name: "persist.vendor.fingerprint.virtual.detect_interaction"
|
||||||
type: Boolean
|
type: Boolean
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "detect_interaction"
|
api_name: "detect_interaction"
|
||||||
}
|
}
|
||||||
@@ -240,7 +240,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.udfps.display_touch"
|
prop_name: "persist.vendor.fingerprint.virtual.udfps.display_touch"
|
||||||
type: Boolean
|
type: Boolean
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "display_touch"
|
api_name: "display_touch"
|
||||||
}
|
}
|
||||||
@@ -249,7 +249,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.udfps.control_illumination"
|
prop_name: "persist.vendor.fingerprint.virtual.udfps.control_illumination"
|
||||||
type: Boolean
|
type: Boolean
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "control_illumination"
|
api_name: "control_illumination"
|
||||||
}
|
}
|
||||||
@@ -258,7 +258,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.lockout"
|
prop_name: "persist.vendor.fingerprint.virtual.lockout"
|
||||||
type: Boolean
|
type: Boolean
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "lockout"
|
api_name: "lockout"
|
||||||
}
|
}
|
||||||
@@ -267,7 +267,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.lockout_enable"
|
prop_name: "persist.vendor.fingerprint.virtual.lockout_enable"
|
||||||
type: Boolean
|
type: Boolean
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "lockout_enable"
|
api_name: "lockout_enable"
|
||||||
}
|
}
|
||||||
@@ -276,7 +276,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_threshold"
|
prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_threshold"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "lockout_timed_threshold"
|
api_name: "lockout_timed_threshold"
|
||||||
}
|
}
|
||||||
@@ -285,7 +285,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_duration"
|
prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_duration"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "lockout_timed_duration"
|
api_name: "lockout_timed_duration"
|
||||||
}
|
}
|
||||||
@@ -294,7 +294,7 @@ prop {
|
|||||||
prop {
|
prop {
|
||||||
prop_name: "persist.vendor.fingerprint.virtual.lockout_permanent_threshold"
|
prop_name: "persist.vendor.fingerprint.virtual.lockout_permanent_threshold"
|
||||||
type: Integer
|
type: Integer
|
||||||
scope: Internal
|
scope: Public
|
||||||
access: ReadWrite
|
access: ReadWrite
|
||||||
api_name: "lockout_permanent_threshold"
|
api_name: "lockout_permanent_threshold"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,21 +16,21 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <aidl/android/hardware/biometrics/fingerprint/BnVirtualHal.h>
|
#include <aidl/android/hardware/biometrics/fingerprint/virtualhal/BnVirtualHal.h>
|
||||||
|
|
||||||
#include "Fingerprint.h"
|
#include "Fingerprint.h"
|
||||||
|
|
||||||
namespace aidl::android::hardware::biometrics::fingerprint {
|
namespace aidl::android::hardware::biometrics::fingerprint {
|
||||||
|
|
||||||
|
using namespace virtualhal;
|
||||||
|
|
||||||
class VirtualHal : public BnVirtualHal {
|
class VirtualHal : public BnVirtualHal {
|
||||||
public:
|
public:
|
||||||
VirtualHal(Fingerprint* fp) : mFp(fp) {}
|
VirtualHal(std::shared_ptr<Fingerprint> fp) : mFp(fp) {}
|
||||||
|
|
||||||
::ndk::ScopedAStatus setEnrollments(const std::vector<int32_t>& in_id) override;
|
::ndk::ScopedAStatus setEnrollments(const std::vector<int32_t>& in_id) override;
|
||||||
::ndk::ScopedAStatus setEnrollmentHit(int32_t in_hit_id) override;
|
::ndk::ScopedAStatus setEnrollmentHit(int32_t in_hit_id) override;
|
||||||
::ndk::ScopedAStatus setNextEnrollment(
|
::ndk::ScopedAStatus setNextEnrollment(const NextEnrollment& in_next_enrollment) override;
|
||||||
const ::aidl::android::hardware::biometrics::fingerprint::NextEnrollment&
|
|
||||||
in_next_enrollment) override;
|
|
||||||
::ndk::ScopedAStatus setAuthenticatorId(int64_t in_id) override;
|
::ndk::ScopedAStatus setAuthenticatorId(int64_t in_id) override;
|
||||||
::ndk::ScopedAStatus setChallenge(int64_t in_challenge) override;
|
::ndk::ScopedAStatus setChallenge(int64_t in_challenge) override;
|
||||||
::ndk::ScopedAStatus setOperationAuthenticateFails(bool in_fail) override;
|
::ndk::ScopedAStatus setOperationAuthenticateFails(bool in_fail) override;
|
||||||
@@ -67,12 +67,15 @@ class VirtualHal : public BnVirtualHal {
|
|||||||
::ndk::ScopedAStatus setDetectInteraction(bool in_v) override;
|
::ndk::ScopedAStatus setDetectInteraction(bool in_v) override;
|
||||||
::ndk::ScopedAStatus setDisplayTouch(bool in_v) override;
|
::ndk::ScopedAStatus setDisplayTouch(bool in_v) override;
|
||||||
::ndk::ScopedAStatus setControlIllumination(bool in_v) override;
|
::ndk::ScopedAStatus setControlIllumination(bool in_v) override;
|
||||||
|
::ndk::ScopedAStatus getFingerprintHal(
|
||||||
|
std::shared_ptr<::aidl::android::hardware::biometrics::fingerprint::IFingerprint>*
|
||||||
|
_aidl_return);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OptIntVec intVec2OptIntVec(const std::vector<int32_t>& intVec);
|
OptIntVec intVec2OptIntVec(const std::vector<int32_t>& intVec);
|
||||||
OptIntVec acquiredInfoVec2OptIntVec(const std::vector<AcquiredInfoAndVendorCode>& intVec);
|
OptIntVec acquiredInfoVec2OptIntVec(const std::vector<AcquiredInfoAndVendorCode>& intVec);
|
||||||
::ndk::ScopedAStatus sanityCheckLatency(const std::vector<int32_t>& in_latency);
|
::ndk::ScopedAStatus sanityCheckLatency(const std::vector<int32_t>& in_latency);
|
||||||
Fingerprint* mFp;
|
std::shared_ptr<Fingerprint> mFp;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aidl::android::hardware::biometrics::fingerprint
|
} // namespace aidl::android::hardware::biometrics::fingerprint
|
||||||
|
|||||||
@@ -24,21 +24,38 @@
|
|||||||
using aidl::android::hardware::biometrics::fingerprint::Fingerprint;
|
using aidl::android::hardware::biometrics::fingerprint::Fingerprint;
|
||||||
using aidl::android::hardware::biometrics::fingerprint::VirtualHal;
|
using aidl::android::hardware::biometrics::fingerprint::VirtualHal;
|
||||||
|
|
||||||
int main() {
|
int main(int argc, char** argv) {
|
||||||
LOG(INFO) << "Fingerprint HAL started";
|
if (argc < 2) {
|
||||||
|
LOG(ERROR) << "Missing argument -> exiting";
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG(INFO) << "Fingerprint HAL started: " << argv[1];
|
||||||
ABinderProcess_setThreadPoolMaxThreadCount(0);
|
ABinderProcess_setThreadPoolMaxThreadCount(0);
|
||||||
std::shared_ptr<Fingerprint> hal = ndk::SharedRefBase::make<Fingerprint>();
|
std::shared_ptr<Fingerprint> hal = ndk::SharedRefBase::make<Fingerprint>();
|
||||||
auto binder = hal->asBinder();
|
std::shared_ptr<VirtualHal> hal_vhal = ndk::SharedRefBase::make<VirtualHal>(hal);
|
||||||
|
|
||||||
std::shared_ptr<VirtualHal> hal_ext = ndk::SharedRefBase::make<VirtualHal>(hal.get());
|
|
||||||
auto binder_ext = hal_ext->asBinder();
|
|
||||||
|
|
||||||
if (hal->connected()) {
|
if (hal->connected()) {
|
||||||
CHECK(STATUS_OK == AIBinder_setExtension(binder.get(), binder_ext.get()));
|
if (strcmp(argv[1], "default") == 0) {
|
||||||
const std::string instance = std::string(Fingerprint::descriptor) + "/virtual";
|
const std::string instance = std::string(Fingerprint::descriptor) + "/default";
|
||||||
binder_status_t status =
|
auto binder = hal->asBinder();
|
||||||
AServiceManager_registerLazyService(binder.get(), instance.c_str());
|
auto binder_ext = hal_vhal->asBinder();
|
||||||
CHECK_EQ(status, STATUS_OK);
|
CHECK(STATUS_OK == AIBinder_setExtension(binder.get(), binder_ext.get()));
|
||||||
|
binder_status_t status =
|
||||||
|
AServiceManager_registerLazyService(binder.get(), instance.c_str());
|
||||||
|
CHECK_EQ(status, STATUS_OK);
|
||||||
|
LOG(INFO) << "started IFingerprint/default";
|
||||||
|
} else if (strcmp(argv[1], "virtual") == 0) {
|
||||||
|
const std::string instance = std::string(VirtualHal::descriptor) + "/virtual";
|
||||||
|
auto binder = hal_vhal->asBinder();
|
||||||
|
binder_status_t status =
|
||||||
|
AServiceManager_registerLazyService(binder.get(), instance.c_str());
|
||||||
|
CHECK_EQ(status, STATUS_OK);
|
||||||
|
LOG(INFO) << "started IVirtualHal/virtual";
|
||||||
|
} else {
|
||||||
|
LOG(ERROR) << "Unexpected argument: " << argv[1];
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
AServiceManager_forceLazyServicesPersist(true);
|
AServiceManager_forceLazyServicesPersist(true);
|
||||||
} else {
|
} else {
|
||||||
LOG(ERROR) << "Fingerprint HAL is not connected";
|
LOG(ERROR) << "Fingerprint HAL is not connected";
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class VirtualHalTest : public ::testing::Test {
|
|||||||
protected:
|
protected:
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
mHal = ndk::SharedRefBase::make<Fingerprint>();
|
mHal = ndk::SharedRefBase::make<Fingerprint>();
|
||||||
mVhal = ndk::SharedRefBase::make<VirtualHal>(mHal.get());
|
mVhal = ndk::SharedRefBase::make<VirtualHal>(mHal);
|
||||||
ASSERT_TRUE(mVhal != nullptr);
|
ASSERT_TRUE(mVhal != nullptr);
|
||||||
mHal->resetConfigToDefault();
|
mHal->resetConfigToDefault();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ cc_test {
|
|||||||
],
|
],
|
||||||
srcs: ["VtsHalBiometricsFingerprintTargetTest.cpp"],
|
srcs: ["VtsHalBiometricsFingerprintTargetTest.cpp"],
|
||||||
static_libs: [
|
static_libs: [
|
||||||
"android.hardware.biometrics.common-V3-ndk",
|
"android.hardware.biometrics.common-V4-ndk",
|
||||||
"android.hardware.biometrics.fingerprint-V3-ndk",
|
"android.hardware.biometrics.fingerprint-V4-ndk",
|
||||||
"android.hardware.keymaster-V4-ndk",
|
"android.hardware.keymaster-V4-ndk",
|
||||||
],
|
],
|
||||||
shared_libs: [
|
shared_libs: [
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ bool ShouldCheckMissingAidlHalsInFcm(const std::string& packageAndVersion) {
|
|||||||
"android.hardware.radio@",
|
"android.hardware.radio@",
|
||||||
"android.hardware.uwb.fira_android@",
|
"android.hardware.uwb.fira_android@",
|
||||||
"android.hardware.wifi.common@",
|
"android.hardware.wifi.common@",
|
||||||
|
"android.hardware.biometrics.fingerprint.virtualhal@",
|
||||||
|
|
||||||
// Test packages are exempted.
|
// Test packages are exempted.
|
||||||
"android.hardware.tests.",
|
"android.hardware.tests.",
|
||||||
|
|||||||
@@ -18,6 +18,12 @@ aidl_interface {
|
|||||||
java: {
|
java: {
|
||||||
platform_apis: true,
|
platform_apis: true,
|
||||||
},
|
},
|
||||||
|
ndk: {
|
||||||
|
apex_available: [
|
||||||
|
"com.android.hardware.biometrics.fingerprint.virtual",
|
||||||
|
"//apex_available:platform",
|
||||||
|
],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
versions_with_info: [
|
versions_with_info: [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user