diff --git a/patches/frameworks/base/0001-services-core-android.hardware.biometrics.fingerprin.patch b/patches/frameworks/base/0001-services-core-android.hardware.biometrics.fingerprin.patch new file mode 100644 index 0000000..98af73a --- /dev/null +++ b/patches/frameworks/base/0001-services-core-android.hardware.biometrics.fingerprin.patch @@ -0,0 +1,147 @@ +From 61e2fb2a3847a643a3ce7ea3f573ed54eb4f3cf3 Mon Sep 17 00:00:00 2001 +From: SamarV-121 +Date: Tue, 10 Sep 2019 10:00:43 +0000 +Subject: [PATCH] services: core: android.hardware.biometrics.fingerprint >> + vendor.oppo.hardware.biometrics.fingerprint + +Change-Id: Ia4cca5e99ca4fca42d345db7b731d2263a16bbcb +--- + services/core/Android.bp | 2 +- + .../fingerprint/AuthenticationClient.java | 2 +- + .../server/fingerprint/ClientMonitor.java | 2 +- + .../server/fingerprint/EnrollClient.java | 2 +- + .../server/fingerprint/EnumerateClient.java | 2 +- + .../fingerprint/FingerprintService.java | 32 +++++++++++++++++-- + .../server/fingerprint/RemovalClient.java | 2 +- + 7 files changed, 36 insertions(+), 8 deletions(-) + +diff --git a/services/core/Android.bp b/services/core/Android.bp +index e9f79ebd..5492b7b7 100644 +--- a/services/core/Android.bp ++++ b/services/core/Android.bp +@@ -38,7 +38,7 @@ java_library_static { + "android.hardware.health-V1.0-java", + "android.hardware.health-V2.0-java", + "android.hardware.weaver-V1.0-java", +- "android.hardware.biometrics.fingerprint-V2.1-java", ++ "vendor.oppo.hardware.biometrics.fingerprint-V2.1-java", + "android.hardware.oemlock-V1.0-java", + "android.hardware.tetheroffload.control-V1.0-java", + "android.hardware.vibrator-V1.0-java", +diff --git a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java +index adcb21a4..61daa610 100644 +--- a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java ++++ b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java +@@ -19,7 +19,7 @@ package com.android.server.fingerprint; + import android.content.Context; + import android.content.ComponentName; + import android.content.pm.PackageManager; +-import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; ++import vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; + import android.hardware.biometrics.BiometricPrompt; + import android.hardware.biometrics.IBiometricPromptReceiver; + import android.hardware.fingerprint.Fingerprint; +diff --git a/services/core/java/com/android/server/fingerprint/ClientMonitor.java b/services/core/java/com/android/server/fingerprint/ClientMonitor.java +index e14179d0..15c6be25 100644 +--- a/services/core/java/com/android/server/fingerprint/ClientMonitor.java ++++ b/services/core/java/com/android/server/fingerprint/ClientMonitor.java +@@ -18,7 +18,7 @@ package com.android.server.fingerprint; + + import android.Manifest; + import android.content.Context; +-import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; ++import vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; + import android.hardware.fingerprint.FingerprintManager; + import android.hardware.fingerprint.IFingerprintServiceReceiver; + import android.media.AudioAttributes; +diff --git a/services/core/java/com/android/server/fingerprint/EnrollClient.java b/services/core/java/com/android/server/fingerprint/EnrollClient.java +index 9944266c..87cef724 100644 +--- a/services/core/java/com/android/server/fingerprint/EnrollClient.java ++++ b/services/core/java/com/android/server/fingerprint/EnrollClient.java +@@ -18,7 +18,7 @@ package com.android.server.fingerprint; + + import android.content.Context; + import android.content.pm.PackageManager; +-import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; ++import vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; + import android.hardware.fingerprint.FingerprintManager; + import android.hardware.fingerprint.IFingerprintServiceReceiver; + import android.os.IBinder; +diff --git a/services/core/java/com/android/server/fingerprint/EnumerateClient.java b/services/core/java/com/android/server/fingerprint/EnumerateClient.java +index b6bbd1b7..c687c601 100644 +--- a/services/core/java/com/android/server/fingerprint/EnumerateClient.java ++++ b/services/core/java/com/android/server/fingerprint/EnumerateClient.java +@@ -17,7 +17,7 @@ + package com.android.server.fingerprint; + + import android.content.Context; +-import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; ++import vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; + import android.hardware.fingerprint.FingerprintManager; + import android.hardware.fingerprint.IFingerprintServiceReceiver; + import android.os.IBinder; +diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java +index 1fa4d34c..54e49002 100644 +--- a/services/core/java/com/android/server/fingerprint/FingerprintService.java ++++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java +@@ -39,8 +39,8 @@ import android.content.IntentFilter; + import android.content.pm.PackageManager; + import android.content.pm.UserInfo; + import android.hardware.biometrics.IBiometricPromptReceiver; +-import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; +-import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprintClientCallback; ++import vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; ++import vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprintClientCallback; + import android.hardware.fingerprint.Fingerprint; + import android.hardware.fingerprint.FingerprintManager; + import android.hardware.fingerprint.IFingerprintClientActiveCallback; +@@ -1189,6 +1189,34 @@ public class FingerprintService extends SystemService implements IHwBinder.Death + } + }); + } ++ ++ @Override ++ public void onTouchDown(final long deviceId) { ++ } ++ ++ @Override ++ public void onTouchUp(final long deviceId) { ++ } ++ ++ @Override ++ public void onMonitorEventTriggered(final int type, final String data) { ++ } ++ ++ @Override ++ public void onImageInfoAcquired(final int type, final int quality, final int match_score) { ++ } ++ ++ @Override ++ public void onSyncTemplates(final long deviceId, final ArrayList fingerIds, final int groupId) { ++ } ++ ++ @Override ++ public void onEngineeringInfoUpdated(final int lenth, final ArrayList keys, final ArrayList values) { ++ } ++ ++ @Override ++ public void onFingerprintCmd(final int cmdId , final ArrayList result, final int resultLen) { ++ } + }; + + private final class FingerprintServiceWrapper extends IFingerprintService.Stub { +diff --git a/services/core/java/com/android/server/fingerprint/RemovalClient.java b/services/core/java/com/android/server/fingerprint/RemovalClient.java +index ffc84888..8074140f 100644 +--- a/services/core/java/com/android/server/fingerprint/RemovalClient.java ++++ b/services/core/java/com/android/server/fingerprint/RemovalClient.java +@@ -17,7 +17,7 @@ + package com.android.server.fingerprint; + + import android.content.Context; +-import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; ++import vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; + import android.hardware.fingerprint.FingerprintManager; + import android.hardware.fingerprint.IFingerprintServiceReceiver; + import android.os.IBinder; +-- +2.17.1 diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/Android.bp b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/Android.bp new file mode 100644 index 0000000..906ac7a --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/Android.bp @@ -0,0 +1,6 @@ +java_library { + name: "vendor.oppo.hardware.biometrics.fingerprint-V2.1-java", + srcs: ["src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/*java"], + static_libs: ["android.hidl.base-V1.0-java"], + libs: ["android.hidl.base-V1.0-java"], +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAcquired.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAcquired.java new file mode 100644 index 0000000..7e977a5 --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAcquired.java @@ -0,0 +1,82 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import android.os.HidlSupport; +import android.os.HwBlob; +import android.os.HwParcel; +import java.util.ArrayList; +import java.util.Objects; + +public final class FingerprintAcquired { + public int acquiredInfo; + + public final boolean equals(Object otherObject) { + if (this == otherObject) { + return true; + } + if (otherObject == null || otherObject.getClass() != FingerprintAcquired.class) { + return false; + } + if (this.acquiredInfo != ((FingerprintAcquired) otherObject).acquiredInfo) { + return false; + } + return true; + } + + public final int hashCode() { + return Objects.hash(new Object[]{Integer.valueOf(HidlSupport.deepHashCode(Integer.valueOf(this.acquiredInfo)))}); + } + + public final String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("{"); + builder.append(".acquiredInfo = "); + builder.append(FingerprintAcquiredInfo.toString(this.acquiredInfo)); + builder.append("}"); + return builder.toString(); + } + + public final void readFromParcel(HwParcel parcel) { + readEmbeddedFromParcel(parcel, parcel.readBuffer(4), 0); + } + + public static final ArrayList readVectorFromParcel(HwParcel parcel) { + ArrayList _hidl_vec = new ArrayList<>(); + HwBlob _hidl_blob = parcel.readBuffer(16); + int _hidl_vec_size = _hidl_blob.getInt32(8); + HwBlob childBlob = parcel.readEmbeddedBuffer((long) (_hidl_vec_size * 4), _hidl_blob.handle(), 0, true); + _hidl_vec.clear(); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + FingerprintAcquired _hidl_vec_element = new FingerprintAcquired(); + _hidl_vec_element.readEmbeddedFromParcel(parcel, childBlob, (long) (_hidl_index_0 * 4)); + _hidl_vec.add(_hidl_vec_element); + } + return _hidl_vec; + } + + public final void readEmbeddedFromParcel(HwParcel parcel, HwBlob _hidl_blob, long _hidl_offset) { + this.acquiredInfo = _hidl_blob.getInt32(0 + _hidl_offset); + } + + public final void writeToParcel(HwParcel parcel) { + HwBlob _hidl_blob = new HwBlob(4); + writeEmbeddedToBlob(_hidl_blob, 0); + parcel.writeBuffer(_hidl_blob); + } + + public static final void writeVectorToParcel(HwParcel parcel, ArrayList _hidl_vec) { + HwBlob _hidl_blob = new HwBlob(16); + int _hidl_vec_size = _hidl_vec.size(); + _hidl_blob.putInt32(8, _hidl_vec_size); + _hidl_blob.putBool(12, false); + HwBlob childBlob = new HwBlob(_hidl_vec_size * 4); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + ((FingerprintAcquired) _hidl_vec.get(_hidl_index_0)).writeEmbeddedToBlob(childBlob, (long) (_hidl_index_0 * 4)); + } + _hidl_blob.putBlob(0, childBlob); + parcel.writeBuffer(_hidl_blob); + } + + public final void writeEmbeddedToBlob(HwBlob _hidl_blob, long _hidl_offset) { + _hidl_blob.putInt32(0 + _hidl_offset, this.acquiredInfo); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAcquiredInfo.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAcquiredInfo.java new file mode 100644 index 0000000..8596053 --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAcquiredInfo.java @@ -0,0 +1,102 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import java.util.ArrayList; + +public final class FingerprintAcquiredInfo { + public static final int ACQUIRED_ALREADY_ENROLLED = 1002; + public static final int ACQUIRED_GOOD = 0; + public static final int ACQUIRED_IMAGER_DIRTY = 3; + public static final int ACQUIRED_INSUFFICIENT = 2; + public static final int ACQUIRED_PARTIAL = 1; + public static final int ACQUIRED_TOO_FAST = 5; + public static final int ACQUIRED_TOO_SIMILAR = 1001; + public static final int ACQUIRED_TOO_SLOW = 4; + public static final int ACQUIRED_VENDOR = 6; + public static final int ACQUIRED_VENDOR_BASE = 1000; + + public static final String toString(int o) { + if (o == 0) { + return "ACQUIRED_GOOD"; + } + if (o == 1) { + return "ACQUIRED_PARTIAL"; + } + if (o == 2) { + return "ACQUIRED_INSUFFICIENT"; + } + if (o == 3) { + return "ACQUIRED_IMAGER_DIRTY"; + } + if (o == 4) { + return "ACQUIRED_TOO_SLOW"; + } + if (o == 5) { + return "ACQUIRED_TOO_FAST"; + } + if (o == 6) { + return "ACQUIRED_VENDOR"; + } + if (o == 1000) { + return "ACQUIRED_VENDOR_BASE"; + } + if (o == 1001) { + return "ACQUIRED_TOO_SIMILAR"; + } + if (o == 1002) { + return "ACQUIRED_ALREADY_ENROLLED"; + } + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString(o)); + return sb.toString(); + } + + public static final String dumpBitfield(int o) { + ArrayList list = new ArrayList<>(); + int flipped = 0; + list.add("ACQUIRED_GOOD"); + if ((o & 1) == 1) { + list.add("ACQUIRED_PARTIAL"); + flipped = 0 | 1; + } + if ((o & 2) == 2) { + list.add("ACQUIRED_INSUFFICIENT"); + flipped |= 2; + } + if ((o & 3) == 3) { + list.add("ACQUIRED_IMAGER_DIRTY"); + flipped |= 3; + } + if ((o & 4) == 4) { + list.add("ACQUIRED_TOO_SLOW"); + flipped |= 4; + } + if ((o & 5) == 5) { + list.add("ACQUIRED_TOO_FAST"); + flipped |= 5; + } + if ((o & 6) == 6) { + list.add("ACQUIRED_VENDOR"); + flipped |= 6; + } + if ((o & ACQUIRED_VENDOR_BASE) == 1000) { + list.add("ACQUIRED_VENDOR_BASE"); + flipped |= ACQUIRED_VENDOR_BASE; + } + if ((o & ACQUIRED_TOO_SIMILAR) == 1001) { + list.add("ACQUIRED_TOO_SIMILAR"); + flipped |= ACQUIRED_TOO_SIMILAR; + } + if ((o & ACQUIRED_ALREADY_ENROLLED) == 1002) { + list.add("ACQUIRED_ALREADY_ENROLLED"); + flipped |= ACQUIRED_ALREADY_ENROLLED; + } + if (o != flipped) { + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString((~flipped) & o)); + list.add(sb.toString()); + } + return String.join(" | ", list); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAuthType.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAuthType.java new file mode 100644 index 0000000..e75059b --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAuthType.java @@ -0,0 +1,49 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import java.util.ArrayList; + +public final class FingerprintAuthType { + public static final int TYPE_KEYGUARD = 1; + public static final int TYPE_OTHER = 3; + public static final int TYPE_PAY = 2; + + public static final String toString(int o) { + if (o == 1) { + return "TYPE_KEYGUARD"; + } + if (o == 2) { + return "TYPE_PAY"; + } + if (o == 3) { + return "TYPE_OTHER"; + } + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString(o)); + return sb.toString(); + } + + public static final String dumpBitfield(int o) { + ArrayList list = new ArrayList<>(); + int flipped = 0; + if ((o & 1) == 1) { + list.add("TYPE_KEYGUARD"); + flipped = 0 | 1; + } + if ((o & 2) == 2) { + list.add("TYPE_PAY"); + flipped |= 2; + } + if ((o & 3) == 3) { + list.add("TYPE_OTHER"); + flipped |= 3; + } + if (o != flipped) { + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString((~flipped) & o)); + list.add(sb.toString()); + } + return String.join(" | ", list); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAuthenticated.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAuthenticated.java new file mode 100644 index 0000000..11e0ccd --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintAuthenticated.java @@ -0,0 +1,89 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import android.os.HidlSupport; +import android.os.HwBlob; +import android.os.HwParcel; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Objects; + +public final class FingerprintAuthenticated { + public final FingerprintFingerId finger = new FingerprintFingerId(); + public final byte[] hat = new byte[69]; + + public final boolean equals(Object otherObject) { + if (this == otherObject) { + return true; + } + if (otherObject == null || otherObject.getClass() != FingerprintAuthenticated.class) { + return false; + } + FingerprintAuthenticated other = (FingerprintAuthenticated) otherObject; + if (HidlSupport.deepEquals(this.finger, other.finger) && HidlSupport.deepEquals(this.hat, other.hat)) { + return true; + } + return false; + } + + public final int hashCode() { + return Objects.hash(new Object[]{Integer.valueOf(HidlSupport.deepHashCode(this.finger)), Integer.valueOf(HidlSupport.deepHashCode(this.hat))}); + } + + public final String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("{"); + builder.append(".finger = "); + builder.append(this.finger); + builder.append(", .hat = "); + builder.append(Arrays.toString(this.hat)); + builder.append("}"); + return builder.toString(); + } + + public final void readFromParcel(HwParcel parcel) { + readEmbeddedFromParcel(parcel, parcel.readBuffer(80), 0); + } + + public static final ArrayList readVectorFromParcel(HwParcel parcel) { + ArrayList _hidl_vec = new ArrayList<>(); + HwBlob _hidl_blob = parcel.readBuffer(16); + int _hidl_vec_size = _hidl_blob.getInt32(8); + HwBlob childBlob = parcel.readEmbeddedBuffer((long) (_hidl_vec_size * 80), _hidl_blob.handle(), 0, true); + _hidl_vec.clear(); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + FingerprintAuthenticated _hidl_vec_element = new FingerprintAuthenticated(); + _hidl_vec_element.readEmbeddedFromParcel(parcel, childBlob, (long) (_hidl_index_0 * 80)); + _hidl_vec.add(_hidl_vec_element); + } + return _hidl_vec; + } + + public final void readEmbeddedFromParcel(HwParcel parcel, HwBlob _hidl_blob, long _hidl_offset) { + this.finger.readEmbeddedFromParcel(parcel, _hidl_blob, 0 + _hidl_offset); + _hidl_blob.copyToInt8Array(8 + _hidl_offset, this.hat, 69); + } + + public final void writeToParcel(HwParcel parcel) { + HwBlob _hidl_blob = new HwBlob(80); + writeEmbeddedToBlob(_hidl_blob, 0); + parcel.writeBuffer(_hidl_blob); + } + + public static final void writeVectorToParcel(HwParcel parcel, ArrayList _hidl_vec) { + HwBlob _hidl_blob = new HwBlob(16); + int _hidl_vec_size = _hidl_vec.size(); + _hidl_blob.putInt32(8, _hidl_vec_size); + _hidl_blob.putBool(12, false); + HwBlob childBlob = new HwBlob(_hidl_vec_size * 80); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + ((FingerprintAuthenticated) _hidl_vec.get(_hidl_index_0)).writeEmbeddedToBlob(childBlob, (long) (_hidl_index_0 * 80)); + } + _hidl_blob.putBlob(0, childBlob); + parcel.writeBuffer(_hidl_blob); + } + + public final void writeEmbeddedToBlob(HwBlob _hidl_blob, long _hidl_offset) { + this.finger.writeEmbeddedToBlob(_hidl_blob, 0 + _hidl_offset); + _hidl_blob.putInt8Array(8 + _hidl_offset, this.hat); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintEnroll.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintEnroll.java new file mode 100644 index 0000000..b9d82bc --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintEnroll.java @@ -0,0 +1,93 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import android.os.HidlSupport; +import android.os.HwBlob; +import android.os.HwParcel; +import java.util.ArrayList; +import java.util.Objects; + +public final class FingerprintEnroll { + public final FingerprintFingerId finger = new FingerprintFingerId(); + public long msg; + public int samplesRemaining; + + public final boolean equals(Object otherObject) { + if (this == otherObject) { + return true; + } + if (otherObject == null || otherObject.getClass() != FingerprintEnroll.class) { + return false; + } + FingerprintEnroll other = (FingerprintEnroll) otherObject; + if (HidlSupport.deepEquals(this.finger, other.finger) && this.samplesRemaining == other.samplesRemaining && this.msg == other.msg) { + return true; + } + return false; + } + + public final int hashCode() { + return Objects.hash(new Object[]{Integer.valueOf(HidlSupport.deepHashCode(this.finger)), Integer.valueOf(HidlSupport.deepHashCode(Integer.valueOf(this.samplesRemaining))), Integer.valueOf(HidlSupport.deepHashCode(Long.valueOf(this.msg)))}); + } + + public final String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("{"); + builder.append(".finger = "); + builder.append(this.finger); + builder.append(", .samplesRemaining = "); + builder.append(this.samplesRemaining); + builder.append(", .msg = "); + builder.append(this.msg); + builder.append("}"); + return builder.toString(); + } + + public final void readFromParcel(HwParcel parcel) { + readEmbeddedFromParcel(parcel, parcel.readBuffer(24), 0); + } + + public static final ArrayList readVectorFromParcel(HwParcel parcel) { + ArrayList _hidl_vec = new ArrayList<>(); + HwBlob _hidl_blob = parcel.readBuffer(16); + int _hidl_vec_size = _hidl_blob.getInt32(8); + HwBlob childBlob = parcel.readEmbeddedBuffer((long) (_hidl_vec_size * 24), _hidl_blob.handle(), 0, true); + _hidl_vec.clear(); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + FingerprintEnroll _hidl_vec_element = new FingerprintEnroll(); + _hidl_vec_element.readEmbeddedFromParcel(parcel, childBlob, (long) (_hidl_index_0 * 24)); + _hidl_vec.add(_hidl_vec_element); + } + return _hidl_vec; + } + + public final void readEmbeddedFromParcel(HwParcel parcel, HwBlob _hidl_blob, long _hidl_offset) { + this.finger.readEmbeddedFromParcel(parcel, _hidl_blob, 0 + _hidl_offset); + this.samplesRemaining = _hidl_blob.getInt32(8 + _hidl_offset); + this.msg = _hidl_blob.getInt64(16 + _hidl_offset); + } + + public final void writeToParcel(HwParcel parcel) { + HwBlob _hidl_blob = new HwBlob(24); + writeEmbeddedToBlob(_hidl_blob, 0); + parcel.writeBuffer(_hidl_blob); + } + + public static final void writeVectorToParcel(HwParcel parcel, ArrayList _hidl_vec) { + HwBlob _hidl_blob = new HwBlob(16); + int _hidl_vec_size = _hidl_vec.size(); + _hidl_blob.putInt32(8, _hidl_vec_size); + _hidl_blob.putBool(12, false); + HwBlob childBlob = new HwBlob(_hidl_vec_size * 24); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + ((FingerprintEnroll) _hidl_vec.get(_hidl_index_0)).writeEmbeddedToBlob(childBlob, (long) (_hidl_index_0 * 24)); + } + _hidl_blob.putBlob(0, childBlob); + parcel.writeBuffer(_hidl_blob); + } + + public final void writeEmbeddedToBlob(HwBlob _hidl_blob, long _hidl_offset) { + this.finger.writeEmbeddedToBlob(_hidl_blob, 0 + _hidl_offset); + _hidl_blob.putInt32(8 + _hidl_offset, this.samplesRemaining); + _hidl_blob.putInt64(16 + _hidl_offset, this.msg); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintError.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintError.java new file mode 100644 index 0000000..8ae50aa --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintError.java @@ -0,0 +1,94 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import java.util.ArrayList; + +public final class FingerprintError { + public static final int ERROR_CANCELED = 5; + public static final int ERROR_HW_UNAVAILABLE = 1; + public static final int ERROR_LOCKOUT = 7; + public static final int ERROR_NO_ERROR = 0; + public static final int ERROR_NO_SPACE = 4; + public static final int ERROR_TIMEOUT = 3; + public static final int ERROR_UNABLE_TO_PROCESS = 2; + public static final int ERROR_UNABLE_TO_REMOVE = 6; + public static final int ERROR_VENDOR = 8; + + public static final String toString(int o) { + if (o == 0) { + return "ERROR_NO_ERROR"; + } + if (o == 1) { + return "ERROR_HW_UNAVAILABLE"; + } + if (o == 2) { + return "ERROR_UNABLE_TO_PROCESS"; + } + if (o == 3) { + return "ERROR_TIMEOUT"; + } + if (o == 4) { + return "ERROR_NO_SPACE"; + } + if (o == 5) { + return "ERROR_CANCELED"; + } + if (o == 6) { + return "ERROR_UNABLE_TO_REMOVE"; + } + if (o == 7) { + return "ERROR_LOCKOUT"; + } + if (o == 8) { + return "ERROR_VENDOR"; + } + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString(o)); + return sb.toString(); + } + + public static final String dumpBitfield(int o) { + ArrayList list = new ArrayList<>(); + int flipped = 0; + list.add("ERROR_NO_ERROR"); + if ((o & 1) == 1) { + list.add("ERROR_HW_UNAVAILABLE"); + flipped = 0 | 1; + } + if ((o & 2) == 2) { + list.add("ERROR_UNABLE_TO_PROCESS"); + flipped |= 2; + } + if ((o & 3) == 3) { + list.add("ERROR_TIMEOUT"); + flipped |= 3; + } + if ((o & 4) == 4) { + list.add("ERROR_NO_SPACE"); + flipped |= 4; + } + if ((o & 5) == 5) { + list.add("ERROR_CANCELED"); + flipped |= 5; + } + if ((o & 6) == 6) { + list.add("ERROR_UNABLE_TO_REMOVE"); + flipped |= 6; + } + if ((o & 7) == 7) { + list.add("ERROR_LOCKOUT"); + flipped |= 7; + } + if ((o & 8) == 8) { + list.add("ERROR_VENDOR"); + flipped |= 8; + } + if (o != flipped) { + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString((~flipped) & o)); + list.add(sb.toString()); + } + return String.join(" | ", list); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintFingerId.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintFingerId.java new file mode 100644 index 0000000..91ee098 --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintFingerId.java @@ -0,0 +1,88 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import android.os.HidlSupport; +import android.os.HwBlob; +import android.os.HwParcel; +import java.util.ArrayList; +import java.util.Objects; + +public final class FingerprintFingerId { + public int fid; + public int gid; + + public final boolean equals(Object otherObject) { + if (this == otherObject) { + return true; + } + if (otherObject == null || otherObject.getClass() != FingerprintFingerId.class) { + return false; + } + FingerprintFingerId other = (FingerprintFingerId) otherObject; + if (this.gid == other.gid && this.fid == other.fid) { + return true; + } + return false; + } + + public final int hashCode() { + return Objects.hash(new Object[]{Integer.valueOf(HidlSupport.deepHashCode(Integer.valueOf(this.gid))), Integer.valueOf(HidlSupport.deepHashCode(Integer.valueOf(this.fid)))}); + } + + public final String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("{"); + builder.append(".gid = "); + builder.append(this.gid); + builder.append(", .fid = "); + builder.append(this.fid); + builder.append("}"); + return builder.toString(); + } + + public final void readFromParcel(HwParcel parcel) { + readEmbeddedFromParcel(parcel, parcel.readBuffer(8), 0); + } + + public static final ArrayList readVectorFromParcel(HwParcel parcel) { + ArrayList _hidl_vec = new ArrayList<>(); + HwBlob _hidl_blob = parcel.readBuffer(16); + int _hidl_vec_size = _hidl_blob.getInt32(8); + HwBlob childBlob = parcel.readEmbeddedBuffer((long) (_hidl_vec_size * 8), _hidl_blob.handle(), 0, true); + _hidl_vec.clear(); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + FingerprintFingerId _hidl_vec_element = new FingerprintFingerId(); + _hidl_vec_element.readEmbeddedFromParcel(parcel, childBlob, (long) (_hidl_index_0 * 8)); + _hidl_vec.add(_hidl_vec_element); + } + return _hidl_vec; + } + + public final void readEmbeddedFromParcel(HwParcel parcel, HwBlob _hidl_blob, long _hidl_offset) { + this.gid = _hidl_blob.getInt32(0 + _hidl_offset); + this.fid = _hidl_blob.getInt32(4 + _hidl_offset); + } + + public final void writeToParcel(HwParcel parcel) { + HwBlob _hidl_blob = new HwBlob(8); + writeEmbeddedToBlob(_hidl_blob, 0); + parcel.writeBuffer(_hidl_blob); + } + + public static final void writeVectorToParcel(HwParcel parcel, ArrayList _hidl_vec) { + HwBlob _hidl_blob = new HwBlob(16); + int _hidl_vec_size = _hidl_vec.size(); + _hidl_blob.putInt32(8, _hidl_vec_size); + _hidl_blob.putBool(12, false); + HwBlob childBlob = new HwBlob(_hidl_vec_size * 8); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + ((FingerprintFingerId) _hidl_vec.get(_hidl_index_0)).writeEmbeddedToBlob(childBlob, (long) (_hidl_index_0 * 8)); + } + _hidl_blob.putBlob(0, childBlob); + parcel.writeBuffer(_hidl_blob); + } + + public final void writeEmbeddedToBlob(HwBlob _hidl_blob, long _hidl_offset) { + _hidl_blob.putInt32(0 + _hidl_offset, this.gid); + _hidl_blob.putInt32(4 + _hidl_offset, this.fid); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintIterator.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintIterator.java new file mode 100644 index 0000000..8c44cdd --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintIterator.java @@ -0,0 +1,88 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import android.os.HidlSupport; +import android.os.HwBlob; +import android.os.HwParcel; +import java.util.ArrayList; +import java.util.Objects; + +public final class FingerprintIterator { + public final FingerprintFingerId finger = new FingerprintFingerId(); + public int remainingTemplates; + + public final boolean equals(Object otherObject) { + if (this == otherObject) { + return true; + } + if (otherObject == null || otherObject.getClass() != FingerprintIterator.class) { + return false; + } + FingerprintIterator other = (FingerprintIterator) otherObject; + if (HidlSupport.deepEquals(this.finger, other.finger) && this.remainingTemplates == other.remainingTemplates) { + return true; + } + return false; + } + + public final int hashCode() { + return Objects.hash(new Object[]{Integer.valueOf(HidlSupport.deepHashCode(this.finger)), Integer.valueOf(HidlSupport.deepHashCode(Integer.valueOf(this.remainingTemplates)))}); + } + + public final String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("{"); + builder.append(".finger = "); + builder.append(this.finger); + builder.append(", .remainingTemplates = "); + builder.append(this.remainingTemplates); + builder.append("}"); + return builder.toString(); + } + + public final void readFromParcel(HwParcel parcel) { + readEmbeddedFromParcel(parcel, parcel.readBuffer(12), 0); + } + + public static final ArrayList readVectorFromParcel(HwParcel parcel) { + ArrayList _hidl_vec = new ArrayList<>(); + HwBlob _hidl_blob = parcel.readBuffer(16); + int _hidl_vec_size = _hidl_blob.getInt32(8); + HwBlob childBlob = parcel.readEmbeddedBuffer((long) (_hidl_vec_size * 12), _hidl_blob.handle(), 0, true); + _hidl_vec.clear(); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + FingerprintIterator _hidl_vec_element = new FingerprintIterator(); + _hidl_vec_element.readEmbeddedFromParcel(parcel, childBlob, (long) (_hidl_index_0 * 12)); + _hidl_vec.add(_hidl_vec_element); + } + return _hidl_vec; + } + + public final void readEmbeddedFromParcel(HwParcel parcel, HwBlob _hidl_blob, long _hidl_offset) { + this.finger.readEmbeddedFromParcel(parcel, _hidl_blob, 0 + _hidl_offset); + this.remainingTemplates = _hidl_blob.getInt32(8 + _hidl_offset); + } + + public final void writeToParcel(HwParcel parcel) { + HwBlob _hidl_blob = new HwBlob(12); + writeEmbeddedToBlob(_hidl_blob, 0); + parcel.writeBuffer(_hidl_blob); + } + + public static final void writeVectorToParcel(HwParcel parcel, ArrayList _hidl_vec) { + HwBlob _hidl_blob = new HwBlob(16); + int _hidl_vec_size = _hidl_vec.size(); + _hidl_blob.putInt32(8, _hidl_vec_size); + _hidl_blob.putBool(12, false); + HwBlob childBlob = new HwBlob(_hidl_vec_size * 12); + for (int _hidl_index_0 = 0; _hidl_index_0 < _hidl_vec_size; _hidl_index_0++) { + ((FingerprintIterator) _hidl_vec.get(_hidl_index_0)).writeEmbeddedToBlob(childBlob, (long) (_hidl_index_0 * 12)); + } + _hidl_blob.putBlob(0, childBlob); + parcel.writeBuffer(_hidl_blob); + } + + public final void writeEmbeddedToBlob(HwBlob _hidl_blob, long _hidl_offset) { + this.finger.writeEmbeddedToBlob(_hidl_blob, 0 + _hidl_offset); + _hidl_blob.putInt32(8 + _hidl_offset, this.remainingTemplates); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintMsgType.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintMsgType.java new file mode 100644 index 0000000..2662b07 --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintMsgType.java @@ -0,0 +1,73 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import java.util.ArrayList; + +public final class FingerprintMsgType { + public static final int ACQUIRED = 1; + public static final int AUTHENTICATED = 5; + public static final int ERROR = -1; + public static final int TEMPLATE_ENROLLING = 3; + public static final int TEMPLATE_ENUMERATING = 6; + public static final int TEMPLATE_REMOVED = 4; + + public static final String toString(int o) { + if (o == -1) { + return "ERROR"; + } + if (o == 1) { + return "ACQUIRED"; + } + if (o == 3) { + return "TEMPLATE_ENROLLING"; + } + if (o == 4) { + return "TEMPLATE_REMOVED"; + } + if (o == 5) { + return "AUTHENTICATED"; + } + if (o == 6) { + return "TEMPLATE_ENUMERATING"; + } + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString(o)); + return sb.toString(); + } + + public static final String dumpBitfield(int o) { + ArrayList list = new ArrayList<>(); + int flipped = 0; + if ((o & -1) == -1) { + list.add("ERROR"); + flipped = 0 | -1; + } + if ((o & 1) == 1) { + list.add("ACQUIRED"); + flipped |= 1; + } + if ((o & 3) == 3) { + list.add("TEMPLATE_ENROLLING"); + flipped |= 3; + } + if ((o & 4) == 4) { + list.add("TEMPLATE_REMOVED"); + flipped |= 4; + } + if ((o & 5) == 5) { + list.add("AUTHENTICATED"); + flipped |= 5; + } + if ((o & 6) == 6) { + list.add("TEMPLATE_ENUMERATING"); + flipped |= 6; + } + if (o != flipped) { + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString((~flipped) & o)); + list.add(sb.toString()); + } + return String.join(" | ", list); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintScreenState.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintScreenState.java new file mode 100644 index 0000000..a309fc0 --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/FingerprintScreenState.java @@ -0,0 +1,38 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import java.util.ArrayList; + +public final class FingerprintScreenState { + public static final int FINGERPRINT_SCREEN_OFF = 0; + public static final int FINGERPRINT_SCREEN_ON = 1; + + public static final String toString(int o) { + if (o == 0) { + return "FINGERPRINT_SCREEN_OFF"; + } + if (o == 1) { + return "FINGERPRINT_SCREEN_ON"; + } + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString(o)); + return sb.toString(); + } + + public static final String dumpBitfield(int o) { + ArrayList list = new ArrayList<>(); + int flipped = 0; + list.add("FINGERPRINT_SCREEN_OFF"); + if ((o & 1) == 1) { + list.add("FINGERPRINT_SCREEN_ON"); + flipped = 0 | 1; + } + if (o != flipped) { + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString((~flipped) & o)); + list.add(sb.toString()); + } + return String.join(" | ", list); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint.java new file mode 100644 index 0000000..3d453a6 --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint.java @@ -0,0 +1,1277 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import android.hidl.base.V1_0.DebugInfo; +import android.hidl.base.V1_0.IBase; +import android.os.HidlSupport; +import android.os.HwBinder; +import android.os.HwBlob; +import android.os.HwParcel; +import android.os.IHwBinder; +import android.os.IHwBinder.DeathRecipient; +import android.os.IHwInterface; +import android.os.RemoteException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.Objects; + +public interface IBiometricsFingerprint extends IBase { + public static final String kInterfaceName = "vendor.oppo.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint"; + + public static final class Proxy implements IBiometricsFingerprint { + private IHwBinder mRemote; + + public Proxy(IHwBinder remote) { + this.mRemote = (IHwBinder) Objects.requireNonNull(remote); + } + + public IHwBinder asBinder() { + return this.mRemote; + } + + public String toString() { + try { + StringBuilder sb = new StringBuilder(); + sb.append(interfaceDescriptor()); + sb.append("@Proxy"); + return sb.toString(); + } catch (RemoteException e) { + return "[class or subclass of vendor.oppo.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint]@Proxy"; + } + } + + public final boolean equals(Object other) { + return HidlSupport.interfacesEqual(this, other); + } + + public final int hashCode() { + return asBinder().hashCode(); + } + + public long setNotify(IBiometricsFingerprintClientCallback clientCallback) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeStrongBinder(clientCallback == null ? null : clientCallback.asBinder()); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(1, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt64(); + } finally { + _hidl_reply.release(); + } + } + + public long preEnroll() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(2, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt64(); + } finally { + _hidl_reply.release(); + } + } + + public int enroll(byte[] hat, int gid, int timeoutSec) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwBlob _hidl_blob = new HwBlob(69); + _hidl_blob.putInt8Array(0, hat); + _hidl_request.writeBuffer(_hidl_blob); + _hidl_request.writeInt32(gid); + _hidl_request.writeInt32(timeoutSec); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(3, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int postEnroll() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(4, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public long getAuthenticatorId() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(5, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt64(); + } finally { + _hidl_reply.release(); + } + } + + public int cancel() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(6, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int enumerate() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(7, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int remove(int gid, int fid) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt32(gid); + _hidl_request.writeInt32(fid); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(8, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int setActiveGroup(int gid, String storePath) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt32(gid); + _hidl_request.writeString(storePath); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(9, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int authenticate(long operationId, int gid) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt64(operationId); + _hidl_request.writeInt32(gid); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(10, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int authenticateAsType(long operationId, int gid, int fingerprintAuthType) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt64(operationId); + _hidl_request.writeInt32(gid); + _hidl_request.writeInt32(fingerprintAuthType); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(11, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int cleanUp() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(12, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int pauseEnroll() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(13, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int continueEnroll() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(14, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int setTouchEventListener() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(15, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int setFingerKeymode(int enable) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt32(enable); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(16, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int dynamicallyConfigLog(int on) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt32(on); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(17, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int pauseIdentify() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(18, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int continueIdentify() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(19, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int getAlikeyStatus() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(20, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int getEnrollmentTotalTimes() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(21, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int setScreenState(int screen_state) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt32(screen_state); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(22, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int getEngineeringInfo(int type) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt32(type); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(23, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int touchDown() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(24, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int touchUp() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(25, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public int sendFingerprintCmd(int cmdId, ArrayList in_buf) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprint.kInterfaceName); + _hidl_request.writeInt32(cmdId); + _hidl_request.writeInt8Vector(in_buf); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(26, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readInt32(); + } finally { + _hidl_reply.release(); + } + } + + public ArrayList interfaceChain() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(256067662, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readStringVector(); + } finally { + _hidl_reply.release(); + } + } + + public String interfaceDescriptor() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(256136003, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readString(); + } finally { + _hidl_reply.release(); + } + } + + public ArrayList getHashChain() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + int _hidl_index_0 = 0; + this.mRemote.transact(256398152, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + ArrayList arrayList = new ArrayList(); + HwBlob _hidl_blob = _hidl_reply.readBuffer(16); + int _hidl_vec_size = _hidl_blob.getInt32(8); + HwBlob childBlob = _hidl_reply.readEmbeddedBuffer((long) (_hidl_vec_size * 32), _hidl_blob.handle(), 0, true); + arrayList.clear(); + while (true) { + int _hidl_index_02 = _hidl_index_0; + if (_hidl_index_02 >= _hidl_vec_size) { + return arrayList; + } + byte[] _hidl_vec_element = new byte[32]; + childBlob.copyToInt8Array((long) (_hidl_index_02 * 32), _hidl_vec_element, 32); + arrayList.add(_hidl_vec_element); + _hidl_index_0 = _hidl_index_02 + 1; + } + } finally { + _hidl_reply.release(); + } + } + + public void setHALInstrumentation() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(256462420, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public boolean linkToDeath(DeathRecipient recipient, long cookie) throws RemoteException { + return this.mRemote.linkToDeath(recipient, cookie); + } + + public void ping() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(256921159, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public DebugInfo getDebugInfo() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(257049926, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + DebugInfo _hidl_out_info = new DebugInfo(); + _hidl_out_info.readFromParcel(_hidl_reply); + return _hidl_out_info; + } finally { + _hidl_reply.release(); + } + } + + public void notifySyspropsChanged() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(257120595, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public boolean unlinkToDeath(DeathRecipient recipient) throws RemoteException { + return this.mRemote.unlinkToDeath(recipient); + } + } + + public static abstract class Stub extends HwBinder implements IBiometricsFingerprint { + public IHwBinder asBinder() { + return this; + } + + public final ArrayList interfaceChain() { + return new ArrayList<>(Arrays.asList(new String[]{IBiometricsFingerprint.kInterfaceName, IBase.kInterfaceName})); + } + + public final String interfaceDescriptor() { + return IBiometricsFingerprint.kInterfaceName; + } + + public final ArrayList getHashChain() { + return new ArrayList<>(Arrays.asList(new byte[][]{new byte[]{19, -93, 43, -76, -62, 78, -62, 11, -14, 48, -115, 30, 45, -113, -108, 90, 26, 98, 35, -10, 108, 99, -117, 79, -85, 65, 38, -70, -120, -58, 67, 108}, new byte[]{-67, -38, -74, 24, 77, 122, 52, 109, -90, -96, 125, -64, -126, -116, -15, -102, 105, 111, 76, -86, 54, 17, -59, 31, 46, 20, 86, 90, 20, -76, 15, -39}})); + } + + public final void setHALInstrumentation() { + } + + public final boolean linkToDeath(DeathRecipient recipient, long cookie) { + return true; + } + + public final void ping() { + } + + public final DebugInfo getDebugInfo() { + DebugInfo info = new DebugInfo(); + info.pid = HidlSupport.getPidIfSharable(); + info.ptr = 0; + info.arch = 0; + return info; + } + + public final void notifySyspropsChanged() { + HwBinder.enableInstrumentation(); + } + + public final boolean unlinkToDeath(DeathRecipient recipient) { + return true; + } + + public IHwInterface queryLocalInterface(String descriptor) { + if (IBiometricsFingerprint.kInterfaceName.equals(descriptor)) { + return this; + } + return null; + } + + public void registerAsService(String serviceName) throws RemoteException { + registerService(serviceName); + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(interfaceDescriptor()); + sb.append("@Stub"); + return sb.toString(); + } + + public void onTransact(int _hidl_code, HwParcel _hidl_request, HwParcel _hidl_reply, int _hidl_flags) throws RemoteException { + int _hidl_index_0 = 0; + boolean _hidl_is_oneway = true; + switch (_hidl_code) { + case 1: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + long _hidl_out_deviceId = setNotify(IBiometricsFingerprintClientCallback.asInterface(_hidl_request.readStrongBinder())); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt64(_hidl_out_deviceId); + _hidl_reply.send(); + return; + case 2: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + long _hidl_out_authChallenge = preEnroll(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt64(_hidl_out_authChallenge); + _hidl_reply.send(); + return; + case 3: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + byte[] hat = new byte[69]; + _hidl_request.readBuffer(69).copyToInt8Array(0, hat, 69); + int _hidl_out_debugErrno = enroll(hat, _hidl_request.readInt32(), _hidl_request.readInt32()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno); + _hidl_reply.send(); + return; + case 4: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno2 = postEnroll(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno2); + _hidl_reply.send(); + return; + case 5: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + long _hidl_out_AuthenticatorId = getAuthenticatorId(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt64(_hidl_out_AuthenticatorId); + _hidl_reply.send(); + return; + case 6: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno3 = cancel(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno3); + _hidl_reply.send(); + return; + case FingerprintError.ERROR_LOCKOUT /*7*/: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno4 = enumerate(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno4); + _hidl_reply.send(); + return; + case FingerprintError.ERROR_VENDOR /*8*/: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno5 = remove(_hidl_request.readInt32(), _hidl_request.readInt32()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno5); + _hidl_reply.send(); + return; + case 9: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno6 = setActiveGroup(_hidl_request.readInt32(), _hidl_request.readString()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno6); + _hidl_reply.send(); + return; + case 10: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno7 = authenticate(_hidl_request.readInt64(), _hidl_request.readInt32()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno7); + _hidl_reply.send(); + return; + case 11: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno8 = authenticateAsType(_hidl_request.readInt64(), _hidl_request.readInt32(), _hidl_request.readInt32()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno8); + _hidl_reply.send(); + return; + case 12: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno9 = cleanUp(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno9); + _hidl_reply.send(); + return; + case 13: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno10 = pauseEnroll(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno10); + _hidl_reply.send(); + return; + case 14: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno11 = continueEnroll(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno11); + _hidl_reply.send(); + return; + case 15: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno12 = setTouchEventListener(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno12); + _hidl_reply.send(); + return; + case 16: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_enable = setFingerKeymode(_hidl_request.readInt32()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_enable); + _hidl_reply.send(); + return; + case 17: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno13 = dynamicallyConfigLog(_hidl_request.readInt32()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno13); + _hidl_reply.send(); + return; + case 18: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno14 = pauseIdentify(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno14); + _hidl_reply.send(); + return; + case 19: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno15 = continueIdentify(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno15); + _hidl_reply.send(); + return; + case 20: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno16 = getAlikeyStatus(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno16); + _hidl_reply.send(); + return; + case 21: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_result = getEnrollmentTotalTimes(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_result); + _hidl_reply.send(); + return; + case 22: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno17 = setScreenState(_hidl_request.readInt32()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno17); + _hidl_reply.send(); + return; + case 23: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_result2 = getEngineeringInfo(_hidl_request.readInt32()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_result2); + _hidl_reply.send(); + return; + case 24: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno18 = touchDown(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno18); + _hidl_reply.send(); + return; + case 25: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno19 = touchUp(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno19); + _hidl_reply.send(); + return; + case 26: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBiometricsFingerprint.kInterfaceName); + int _hidl_out_debugErrno20 = sendFingerprintCmd(_hidl_request.readInt32(), _hidl_request.readInt8Vector()); + _hidl_reply.writeStatus(0); + _hidl_reply.writeInt32(_hidl_out_debugErrno20); + _hidl_reply.send(); + return; + default: + switch (_hidl_code) { + case 256067662: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBase.kInterfaceName); + ArrayList _hidl_out_descriptors = interfaceChain(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeStringVector(_hidl_out_descriptors); + _hidl_reply.send(); + return; + case 256131655: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBase.kInterfaceName); + _hidl_reply.writeStatus(0); + _hidl_reply.send(); + return; + case 256136003: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBase.kInterfaceName); + String _hidl_out_descriptor = interfaceDescriptor(); + _hidl_reply.writeStatus(0); + _hidl_reply.writeString(_hidl_out_descriptor); + _hidl_reply.send(); + return; + case 256398152: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBase.kInterfaceName); + ArrayList _hidl_out_hashchain = getHashChain(); + _hidl_reply.writeStatus(0); + HwBlob _hidl_blob = new HwBlob(16); + int _hidl_vec_size = _hidl_out_hashchain.size(); + _hidl_blob.putInt32(8, _hidl_vec_size); + _hidl_blob.putBool(12, false); + HwBlob childBlob = new HwBlob(_hidl_vec_size * 32); + while (_hidl_index_0 < _hidl_vec_size) { + childBlob.putInt8Array((long) (_hidl_index_0 * 32), (byte[]) _hidl_out_hashchain.get(_hidl_index_0)); + _hidl_index_0++; + } + _hidl_blob.putBlob(0, childBlob); + _hidl_reply.writeBuffer(_hidl_blob); + _hidl_reply.send(); + return; + case 256462420: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBase.kInterfaceName); + setHALInstrumentation(); + return; + case 256660548: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 0) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + return; + case 256921159: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBase.kInterfaceName); + ping(); + _hidl_reply.writeStatus(0); + _hidl_reply.send(); + return; + case 257049926: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBase.kInterfaceName); + DebugInfo _hidl_out_info = getDebugInfo(); + _hidl_reply.writeStatus(0); + _hidl_out_info.writeToParcel(_hidl_reply); + _hidl_reply.send(); + return; + case 257120595: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + _hidl_request.enforceInterface(IBase.kInterfaceName); + notifySyspropsChanged(); + return; + case 257250372: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 0) { + _hidl_reply.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + return; + default: + return; + } + } + } + } + + IHwBinder asBinder(); + + int authenticate(long j, int i) throws RemoteException; + + int authenticateAsType(long j, int i, int i2) throws RemoteException; + + int cancel() throws RemoteException; + + int cleanUp() throws RemoteException; + + int continueEnroll() throws RemoteException; + + int continueIdentify() throws RemoteException; + + int dynamicallyConfigLog(int i) throws RemoteException; + + int enroll(byte[] bArr, int i, int i2) throws RemoteException; + + int enumerate() throws RemoteException; + + int getAlikeyStatus() throws RemoteException; + + long getAuthenticatorId() throws RemoteException; + + DebugInfo getDebugInfo() throws RemoteException; + + int getEngineeringInfo(int i) throws RemoteException; + + int getEnrollmentTotalTimes() throws RemoteException; + + ArrayList getHashChain() throws RemoteException; + + ArrayList interfaceChain() throws RemoteException; + + String interfaceDescriptor() throws RemoteException; + + boolean linkToDeath(DeathRecipient deathRecipient, long j) throws RemoteException; + + void notifySyspropsChanged() throws RemoteException; + + int pauseEnroll() throws RemoteException; + + int pauseIdentify() throws RemoteException; + + void ping() throws RemoteException; + + int postEnroll() throws RemoteException; + + long preEnroll() throws RemoteException; + + int remove(int i, int i2) throws RemoteException; + + int sendFingerprintCmd(int i, ArrayList arrayList) throws RemoteException; + + int setActiveGroup(int i, String str) throws RemoteException; + + int setFingerKeymode(int i) throws RemoteException; + + void setHALInstrumentation() throws RemoteException; + + long setNotify(IBiometricsFingerprintClientCallback iBiometricsFingerprintClientCallback) throws RemoteException; + + int setScreenState(int i) throws RemoteException; + + int setTouchEventListener() throws RemoteException; + + int touchDown() throws RemoteException; + + int touchUp() throws RemoteException; + + boolean unlinkToDeath(DeathRecipient deathRecipient) throws RemoteException; + + static IBiometricsFingerprint asInterface(IHwBinder binder) { + if (binder == null) { + return null; + } + IHwInterface iface = binder.queryLocalInterface(kInterfaceName); + if (iface != null && (iface instanceof IBiometricsFingerprint)) { + return (IBiometricsFingerprint) iface; + } + IBiometricsFingerprint proxy = new Proxy(binder); + try { + Iterator it = proxy.interfaceChain().iterator(); + while (it.hasNext()) { + if (((String) it.next()).equals(kInterfaceName)) { + return proxy; + } + } + } catch (RemoteException e) { + } + return null; + } + + static IBiometricsFingerprint castFrom(IHwInterface iface) { + if (iface == null) { + return null; + } + return asInterface(iface.asBinder()); + } + + static IBiometricsFingerprint getService(String serviceName, boolean retry) throws RemoteException { + return asInterface(HwBinder.getService(kInterfaceName, serviceName, retry)); + } + + static IBiometricsFingerprint getService(boolean retry) throws RemoteException { + return getService("default", retry); + } + + static IBiometricsFingerprint getService(String serviceName) throws RemoteException { + return asInterface(HwBinder.getService(kInterfaceName, serviceName)); + } + + static IBiometricsFingerprint getService() throws RemoteException { + return getService("default"); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback.java new file mode 100644 index 0000000..7699270 --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback.java @@ -0,0 +1,826 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import android.hidl.base.V1_0.DebugInfo; +import android.hidl.base.V1_0.IBase; +import android.os.HidlSupport; +import android.os.HwBinder; +import android.os.HwBlob; +import android.os.HwParcel; +import android.os.IHwBinder; +import android.os.IHwBinder.DeathRecipient; +import android.os.IHwInterface; +import android.os.RemoteException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.Objects; + +public interface IBiometricsFingerprintClientCallback extends IBase { + public static final String kInterfaceName = "vendor.oppo.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprintClientCallback"; + + public static final class Proxy implements IBiometricsFingerprintClientCallback { + private IHwBinder mRemote; + + public Proxy(IHwBinder remote) { + this.mRemote = (IHwBinder) Objects.requireNonNull(remote); + } + + public IHwBinder asBinder() { + return this.mRemote; + } + + public String toString() { + try { + StringBuilder sb = new StringBuilder(); + sb.append(interfaceDescriptor()); + sb.append("@Proxy"); + return sb.toString(); + } catch (RemoteException e) { + return "[class or subclass of vendor.oppo.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprintClientCallback]@Proxy"; + } + } + + public final boolean equals(Object other) { + return HidlSupport.interfacesEqual(this, other); + } + + public final int hashCode() { + return asBinder().hashCode(); + } + + public void onEnrollResult(long deviceId, int fingerId, int groupId, int remaining) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + _hidl_request.writeInt32(fingerId); + _hidl_request.writeInt32(groupId); + _hidl_request.writeInt32(remaining); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(1, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onAcquired(long deviceId, int acquiredInfo, int vendorCode) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + _hidl_request.writeInt32(acquiredInfo); + _hidl_request.writeInt32(vendorCode); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(2, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onAuthenticated(long deviceId, int fingerId, int groupId, ArrayList token) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + _hidl_request.writeInt32(fingerId); + _hidl_request.writeInt32(groupId); + _hidl_request.writeInt8Vector(token); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(3, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onError(long deviceId, int error, int vendorCode) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + _hidl_request.writeInt32(error); + _hidl_request.writeInt32(vendorCode); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(4, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onRemoved(long deviceId, int fingerId, int groupId, int remaining) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + _hidl_request.writeInt32(fingerId); + _hidl_request.writeInt32(groupId); + _hidl_request.writeInt32(remaining); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(5, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onEnumerate(long deviceId, int fingerId, int groupId, int remaining) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + _hidl_request.writeInt32(fingerId); + _hidl_request.writeInt32(groupId); + _hidl_request.writeInt32(remaining); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(6, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onTouchDown(long deviceId) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(7, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onTouchUp(long deviceId) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(8, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onMonitorEventTriggered(int type, String data) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt32(type); + _hidl_request.writeString(data); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(9, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onImageInfoAcquired(int type, int quality, int match_score) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt32(type); + _hidl_request.writeInt32(quality); + _hidl_request.writeInt32(match_score); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(10, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onSyncTemplates(long deviceId, ArrayList fingerIds, int groupId) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt64(deviceId); + _hidl_request.writeInt32Vector(fingerIds); + _hidl_request.writeInt32(groupId); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(11, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onEngineeringInfoUpdated(int lenth, ArrayList keys, ArrayList values) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt32(lenth); + _hidl_request.writeInt32Vector(keys); + _hidl_request.writeStringVector(values); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(12, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public void onFingerprintCmd(int cmdId, ArrayList result, int resultLen) throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBiometricsFingerprintClientCallback.kInterfaceName); + _hidl_request.writeInt32(cmdId); + _hidl_request.writeInt8Vector(result); + _hidl_request.writeInt32(resultLen); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(13, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public ArrayList interfaceChain() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(256067662, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readStringVector(); + } finally { + _hidl_reply.release(); + } + } + + public String interfaceDescriptor() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(256136003, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + return _hidl_reply.readString(); + } finally { + _hidl_reply.release(); + } + } + + public ArrayList getHashChain() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + int _hidl_index_0 = 0; + this.mRemote.transact(256398152, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + ArrayList arrayList = new ArrayList(); + HwBlob _hidl_blob = _hidl_reply.readBuffer(16); + int _hidl_vec_size = _hidl_blob.getInt32(8); + HwBlob childBlob = _hidl_reply.readEmbeddedBuffer((long) (_hidl_vec_size * 32), _hidl_blob.handle(), 0, true); + arrayList.clear(); + while (true) { + int _hidl_index_02 = _hidl_index_0; + if (_hidl_index_02 >= _hidl_vec_size) { + return arrayList; + } + byte[] _hidl_vec_element = new byte[32]; + childBlob.copyToInt8Array((long) (_hidl_index_02 * 32), _hidl_vec_element, 32); + arrayList.add(_hidl_vec_element); + _hidl_index_0 = _hidl_index_02 + 1; + } + } finally { + _hidl_reply.release(); + } + } + + public void setHALInstrumentation() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(256462420, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public boolean linkToDeath(DeathRecipient recipient, long cookie) throws RemoteException { + return this.mRemote.linkToDeath(recipient, cookie); + } + + public void ping() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(256921159, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public DebugInfo getDebugInfo() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(257049926, _hidl_request, _hidl_reply, 0); + _hidl_reply.verifySuccess(); + _hidl_request.releaseTemporaryStorage(); + DebugInfo _hidl_out_info = new DebugInfo(); + _hidl_out_info.readFromParcel(_hidl_reply); + return _hidl_out_info; + } finally { + _hidl_reply.release(); + } + } + + public void notifySyspropsChanged() throws RemoteException { + HwParcel _hidl_request = new HwParcel(); + _hidl_request.writeInterfaceToken(IBase.kInterfaceName); + HwParcel _hidl_reply = new HwParcel(); + try { + this.mRemote.transact(257120595, _hidl_request, _hidl_reply, 1); + _hidl_request.releaseTemporaryStorage(); + } finally { + _hidl_reply.release(); + } + } + + public boolean unlinkToDeath(DeathRecipient recipient) throws RemoteException { + return this.mRemote.unlinkToDeath(recipient); + } + } + + public static abstract class Stub extends HwBinder implements IBiometricsFingerprintClientCallback { + public IHwBinder asBinder() { + return this; + } + + public final ArrayList interfaceChain() { + return new ArrayList<>(Arrays.asList(new String[]{IBiometricsFingerprintClientCallback.kInterfaceName, IBase.kInterfaceName})); + } + + public final String interfaceDescriptor() { + return IBiometricsFingerprintClientCallback.kInterfaceName; + } + + public final ArrayList getHashChain() { + return new ArrayList<>(Arrays.asList(new byte[][]{new byte[]{26, -80, -106, -40, -116, -25, 4, 112, 9, 84, 93, 47, 6, -77, -22, 89, -82, 118, -32, -93, -54, -9, -86, 101, -11, -40, -96, 122, -47, 121, 99, -119}, new byte[]{-67, -38, -74, 24, 77, 122, 52, 109, -90, -96, 125, -64, -126, -116, -15, -102, 105, 111, 76, -86, 54, 17, -59, 31, 46, 20, 86, 90, 20, -76, 15, -39}})); + } + + public final void setHALInstrumentation() { + } + + public final boolean linkToDeath(DeathRecipient recipient, long cookie) { + return true; + } + + public final void ping() { + } + + public final DebugInfo getDebugInfo() { + DebugInfo info = new DebugInfo(); + info.pid = HidlSupport.getPidIfSharable(); + info.ptr = 0; + info.arch = 0; + return info; + } + + public final void notifySyspropsChanged() { + HwBinder.enableInstrumentation(); + } + + public final boolean unlinkToDeath(DeathRecipient recipient) { + return true; + } + + public IHwInterface queryLocalInterface(String descriptor) { + if (IBiometricsFingerprintClientCallback.kInterfaceName.equals(descriptor)) { + return this; + } + return null; + } + + public void registerAsService(String serviceName) throws RemoteException { + registerService(serviceName); + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(interfaceDescriptor()); + sb.append("@Stub"); + return sb.toString(); + } + + public void onTransact(int _hidl_code, HwParcel _hidl_request, HwParcel _hidl_reply, int _hidl_flags) throws RemoteException { + HwParcel hwParcel = _hidl_request; + HwParcel hwParcel2 = _hidl_reply; + int _hidl_index_0 = 0; + boolean _hidl_is_oneway = true; + switch (_hidl_code) { + case 1: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onEnrollResult(_hidl_request.readInt64(), _hidl_request.readInt32(), _hidl_request.readInt32(), _hidl_request.readInt32()); + return; + case 2: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onAcquired(_hidl_request.readInt64(), _hidl_request.readInt32(), _hidl_request.readInt32()); + return; + case 3: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onAuthenticated(_hidl_request.readInt64(), _hidl_request.readInt32(), _hidl_request.readInt32(), _hidl_request.readInt8Vector()); + return; + case 4: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onError(_hidl_request.readInt64(), _hidl_request.readInt32(), _hidl_request.readInt32()); + return; + case 5: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onRemoved(_hidl_request.readInt64(), _hidl_request.readInt32(), _hidl_request.readInt32(), _hidl_request.readInt32()); + return; + case 6: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onEnumerate(_hidl_request.readInt64(), _hidl_request.readInt32(), _hidl_request.readInt32(), _hidl_request.readInt32()); + return; + case FingerprintError.ERROR_LOCKOUT /*7*/: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onTouchDown(_hidl_request.readInt64()); + return; + case FingerprintError.ERROR_VENDOR /*8*/: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onTouchUp(_hidl_request.readInt64()); + return; + case 9: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onMonitorEventTriggered(_hidl_request.readInt32(), _hidl_request.readString()); + return; + case 10: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onImageInfoAcquired(_hidl_request.readInt32(), _hidl_request.readInt32(), _hidl_request.readInt32()); + return; + case 11: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onSyncTemplates(_hidl_request.readInt64(), _hidl_request.readInt32Vector(), _hidl_request.readInt32()); + return; + case 12: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onEngineeringInfoUpdated(_hidl_request.readInt32(), _hidl_request.readInt32Vector(), _hidl_request.readStringVector()); + return; + case 13: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBiometricsFingerprintClientCallback.kInterfaceName); + onFingerprintCmd(_hidl_request.readInt32(), _hidl_request.readInt8Vector(), _hidl_request.readInt32()); + return; + default: + switch (_hidl_code) { + case 256067662: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBase.kInterfaceName); + ArrayList _hidl_out_descriptors = interfaceChain(); + hwParcel2.writeStatus(0); + hwParcel2.writeStringVector(_hidl_out_descriptors); + _hidl_reply.send(); + return; + case 256131655: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBase.kInterfaceName); + hwParcel2.writeStatus(0); + _hidl_reply.send(); + return; + case 256136003: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBase.kInterfaceName); + String _hidl_out_descriptor = interfaceDescriptor(); + hwParcel2.writeStatus(0); + hwParcel2.writeString(_hidl_out_descriptor); + _hidl_reply.send(); + return; + case 256398152: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBase.kInterfaceName); + ArrayList _hidl_out_hashchain = getHashChain(); + hwParcel2.writeStatus(0); + HwBlob _hidl_blob = new HwBlob(16); + int _hidl_vec_size = _hidl_out_hashchain.size(); + _hidl_blob.putInt32(8, _hidl_vec_size); + _hidl_blob.putBool(12, false); + HwBlob childBlob = new HwBlob(_hidl_vec_size * 32); + while (_hidl_index_0 < _hidl_vec_size) { + childBlob.putInt8Array((long) (_hidl_index_0 * 32), (byte[]) _hidl_out_hashchain.get(_hidl_index_0)); + _hidl_index_0++; + } + _hidl_blob.putBlob(0, childBlob); + hwParcel2.writeBuffer(_hidl_blob); + _hidl_reply.send(); + return; + case 256462420: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBase.kInterfaceName); + setHALInstrumentation(); + return; + case 256660548: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 0) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + return; + case 256921159: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBase.kInterfaceName); + ping(); + hwParcel2.writeStatus(0); + _hidl_reply.send(); + return; + case 257049926: + if ((_hidl_flags & 1) == 0) { + _hidl_is_oneway = false; + } + if (_hidl_is_oneway) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBase.kInterfaceName); + DebugInfo _hidl_out_info = getDebugInfo(); + hwParcel2.writeStatus(0); + _hidl_out_info.writeToParcel(hwParcel2); + _hidl_reply.send(); + return; + case 257120595: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 1) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + hwParcel.enforceInterface(IBase.kInterfaceName); + notifySyspropsChanged(); + return; + case 257250372: + if ((_hidl_flags & 1) != 0) { + _hidl_index_0 = 1; + } + if (_hidl_index_0 != 0) { + hwParcel2.writeStatus(Integer.MIN_VALUE); + _hidl_reply.send(); + return; + } + return; + default: + return; + } + } + } + } + + IHwBinder asBinder(); + + DebugInfo getDebugInfo() throws RemoteException; + + ArrayList getHashChain() throws RemoteException; + + ArrayList interfaceChain() throws RemoteException; + + String interfaceDescriptor() throws RemoteException; + + boolean linkToDeath(DeathRecipient deathRecipient, long j) throws RemoteException; + + void notifySyspropsChanged() throws RemoteException; + + void onAcquired(long j, int i, int i2) throws RemoteException; + + void onAuthenticated(long j, int i, int i2, ArrayList arrayList) throws RemoteException; + + void onEngineeringInfoUpdated(int i, ArrayList arrayList, ArrayList arrayList2) throws RemoteException; + + void onEnrollResult(long j, int i, int i2, int i3) throws RemoteException; + + void onEnumerate(long j, int i, int i2, int i3) throws RemoteException; + + void onError(long j, int i, int i2) throws RemoteException; + + void onFingerprintCmd(int i, ArrayList arrayList, int i2) throws RemoteException; + + void onImageInfoAcquired(int i, int i2, int i3) throws RemoteException; + + void onMonitorEventTriggered(int i, String str) throws RemoteException; + + void onRemoved(long j, int i, int i2, int i3) throws RemoteException; + + void onSyncTemplates(long j, ArrayList arrayList, int i) throws RemoteException; + + void onTouchDown(long j) throws RemoteException; + + void onTouchUp(long j) throws RemoteException; + + void ping() throws RemoteException; + + void setHALInstrumentation() throws RemoteException; + + boolean unlinkToDeath(DeathRecipient deathRecipient) throws RemoteException; + + static IBiometricsFingerprintClientCallback asInterface(IHwBinder binder) { + if (binder == null) { + return null; + } + IHwInterface iface = binder.queryLocalInterface(kInterfaceName); + if (iface != null && (iface instanceof IBiometricsFingerprintClientCallback)) { + return (IBiometricsFingerprintClientCallback) iface; + } + IBiometricsFingerprintClientCallback proxy = new Proxy(binder); + try { + Iterator it = proxy.interfaceChain().iterator(); + while (it.hasNext()) { + if (((String) it.next()).equals(kInterfaceName)) { + return proxy; + } + } + } catch (RemoteException e) { + } + return null; + } + + static IBiometricsFingerprintClientCallback castFrom(IHwInterface iface) { + if (iface == null) { + return null; + } + return asInterface(iface.asBinder()); + } + + static IBiometricsFingerprintClientCallback getService(String serviceName, boolean retry) throws RemoteException { + return asInterface(HwBinder.getService(kInterfaceName, serviceName, retry)); + } + + static IBiometricsFingerprintClientCallback getService(boolean retry) throws RemoteException { + return getService("default", retry); + } + + static IBiometricsFingerprintClientCallback getService(String serviceName) throws RemoteException { + return asInterface(HwBinder.getService(kInterfaceName, serviceName)); + } + + static IBiometricsFingerprintClientCallback getService() throws RemoteException { + return getService("default"); + } +} diff --git a/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/RequestStatus.java b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/RequestStatus.java new file mode 100644 index 0000000..d00fddb --- /dev/null +++ b/vendor.oppo.hardware.biometrics.fingerprint-V2.1/src/vendor/oppo/hardware/biometrics/fingerprint/V2_1/RequestStatus.java @@ -0,0 +1,126 @@ +package vendor.oppo.hardware.biometrics.fingerprint.V2_1; + +import java.util.ArrayList; + +public final class RequestStatus { + public static final int SYS_EACCES = -13; + public static final int SYS_EAGAIN = -11; + public static final int SYS_EBUSY = -16; + public static final int SYS_EFAULT = -14; + public static final int SYS_EINTR = -4; + public static final int SYS_EINVAL = -22; + public static final int SYS_EIO = -5; + public static final int SYS_ENOENT = -2; + public static final int SYS_ENOMEM = -12; + public static final int SYS_ENOSPC = -28; + public static final int SYS_ETIMEDOUT = -110; + public static final int SYS_OK = 0; + public static final int SYS_UNKNOWN = 1; + + public static final String toString(int o) { + if (o == 1) { + return "SYS_UNKNOWN"; + } + if (o == 0) { + return "SYS_OK"; + } + if (o == -2) { + return "SYS_ENOENT"; + } + if (o == -4) { + return "SYS_EINTR"; + } + if (o == -5) { + return "SYS_EIO"; + } + if (o == -11) { + return "SYS_EAGAIN"; + } + if (o == -12) { + return "SYS_ENOMEM"; + } + if (o == -13) { + return "SYS_EACCES"; + } + if (o == -14) { + return "SYS_EFAULT"; + } + if (o == -16) { + return "SYS_EBUSY"; + } + if (o == -22) { + return "SYS_EINVAL"; + } + if (o == -28) { + return "SYS_ENOSPC"; + } + if (o == -110) { + return "SYS_ETIMEDOUT"; + } + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString(o)); + return sb.toString(); + } + + public static final String dumpBitfield(int o) { + ArrayList list = new ArrayList<>(); + int flipped = 0; + if ((o & 1) == 1) { + list.add("SYS_UNKNOWN"); + flipped = 0 | 1; + } + list.add("SYS_OK"); + if ((o & -2) == -2) { + list.add("SYS_ENOENT"); + flipped |= -2; + } + if ((o & -4) == -4) { + list.add("SYS_EINTR"); + flipped |= -4; + } + if ((o & -5) == -5) { + list.add("SYS_EIO"); + flipped |= -5; + } + if ((o & -11) == -11) { + list.add("SYS_EAGAIN"); + flipped |= -11; + } + if ((o & -12) == -12) { + list.add("SYS_ENOMEM"); + flipped |= -12; + } + if ((o & -13) == -13) { + list.add("SYS_EACCES"); + flipped |= -13; + } + if ((o & -14) == -14) { + list.add("SYS_EFAULT"); + flipped |= -14; + } + if ((o & -16) == -16) { + list.add("SYS_EBUSY"); + flipped |= -16; + } + if ((o & -22) == -22) { + list.add("SYS_EINVAL"); + flipped |= -22; + } + if ((o & -28) == -28) { + list.add("SYS_ENOSPC"); + flipped |= -28; + } + if ((o & SYS_ETIMEDOUT) == -110) { + list.add("SYS_ETIMEDOUT"); + flipped |= SYS_ETIMEDOUT; + } + if (o != flipped) { + StringBuilder sb = new StringBuilder(); + sb.append("0x"); + sb.append(Integer.toHexString((~flipped) & o)); + list.add(sb.toString()); + } + return String.join(" | ", list); + } +}