Fingerprint VTS

Bug: 34179855
Test:
  make vts;
  adb push
    out/host/linux-x86/vts/android-vts/testcases/DATA/nativetest64/fingerprint_hidl_hal_test/fingerprint_hidl_hal_test
    /data/local/tmp/.;
  adb shell /data/local/tmp/fingerprint_hidl_hal_test;

Change-Id: If9174dc34d0802388a9af8cda88b28329248bc42
diff --git a/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts b/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
new file mode 100644
index 0000000..475333e
--- /dev/null
+++ b/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
@@ -0,0 +1,461 @@
+component_class: HAL_HIDL
+component_type_version: 2.1
+component_name: "IBiometricsFingerprint"
+
+package: "android.hardware.biometrics.fingerprint"
+
+import: "android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprintClientCallback"
+import: "android.hardware.biometrics.fingerprint@2.1::types"
+import: "android.hidl.base@1.0::types"
+
+interface: {
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+        type: TYPE_ENUM
+        enum_value: {
+            scalar_type: "int32_t"
+
+            enumerator: "SYS_UNKNOWN"
+            scalar_value: {
+                int32_t: 1
+            }
+            enumerator: "SYS_OK"
+            scalar_value: {
+                int32_t: 0
+            }
+            enumerator: "SYS_ENOENT"
+            scalar_value: {
+                int32_t: -2
+            }
+            enumerator: "SYS_EINTR"
+            scalar_value: {
+                int32_t: -4
+            }
+            enumerator: "SYS_EIO"
+            scalar_value: {
+                int32_t: -5
+            }
+            enumerator: "SYS_EAGAIN"
+            scalar_value: {
+                int32_t: -11
+            }
+            enumerator: "SYS_ENOMEM"
+            scalar_value: {
+                int32_t: -12
+            }
+            enumerator: "SYS_EACCES"
+            scalar_value: {
+                int32_t: -13
+            }
+            enumerator: "SYS_EFAULT"
+            scalar_value: {
+                int32_t: -14
+            }
+            enumerator: "SYS_EBUSY"
+            scalar_value: {
+                int32_t: -16
+            }
+            enumerator: "SYS_EINVAL"
+            scalar_value: {
+                int32_t: -22
+            }
+            enumerator: "SYS_ENOSPC"
+            scalar_value: {
+                int32_t: -28
+            }
+            enumerator: "SYS_ETIMEDOUT"
+            scalar_value: {
+                int32_t: -110
+            }
+        }
+    }
+
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintError"
+        type: TYPE_ENUM
+        enum_value: {
+            scalar_type: "int32_t"
+
+            enumerator: "ERROR_NO_ERROR"
+            scalar_value: {
+                int32_t: 0
+            }
+            enumerator: "ERROR_HW_UNAVAILABLE"
+            scalar_value: {
+                int32_t: 1
+            }
+            enumerator: "ERROR_UNABLE_TO_PROCESS"
+            scalar_value: {
+                int32_t: 2
+            }
+            enumerator: "ERROR_TIMEOUT"
+            scalar_value: {
+                int32_t: 3
+            }
+            enumerator: "ERROR_NO_SPACE"
+            scalar_value: {
+                int32_t: 4
+            }
+            enumerator: "ERROR_CANCELED"
+            scalar_value: {
+                int32_t: 5
+            }
+            enumerator: "ERROR_UNABLE_TO_REMOVE"
+            scalar_value: {
+                int32_t: 6
+            }
+            enumerator: "ERROR_LOCKOUT"
+            scalar_value: {
+                int32_t: 7
+            }
+            enumerator: "ERROR_VENDOR"
+            scalar_value: {
+                int32_t: 8
+            }
+        }
+    }
+
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
+        type: TYPE_ENUM
+        enum_value: {
+            scalar_type: "int32_t"
+
+            enumerator: "ACQUIRED_GOOD"
+            scalar_value: {
+                int32_t: 0
+            }
+            enumerator: "ACQUIRED_PARTIAL"
+            scalar_value: {
+                int32_t: 1
+            }
+            enumerator: "ACQUIRED_INSUFFICIENT"
+            scalar_value: {
+                int32_t: 2
+            }
+            enumerator: "ACQUIRED_IMAGER_DIRTY"
+            scalar_value: {
+                int32_t: 3
+            }
+            enumerator: "ACQUIRED_TOO_SLOW"
+            scalar_value: {
+                int32_t: 4
+            }
+            enumerator: "ACQUIRED_TOO_FAST"
+            scalar_value: {
+                int32_t: 5
+            }
+            enumerator: "ACQUIRED_VENDOR"
+            scalar_value: {
+                int32_t: 6
+            }
+        }
+    }
+
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
+        type: TYPE_STRUCT
+        struct_value: {
+            name: "gid"
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        struct_value: {
+            name: "fid"
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+    }
+
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintEnroll"
+        type: TYPE_STRUCT
+        struct_value: {
+            name: "finger"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
+        }
+        struct_value: {
+            name: "samplesRemaining"
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        struct_value: {
+            name: "msg"
+            type: TYPE_SCALAR
+            scalar_type: "uint64_t"
+        }
+    }
+
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintIterator"
+        type: TYPE_STRUCT
+        struct_value: {
+            name: "finger"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
+        }
+        struct_value: {
+            name: "remainingTemplates"
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+    }
+
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquired"
+        type: TYPE_STRUCT
+        struct_value: {
+            name: "acquiredInfo"
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
+        }
+    }
+
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAuthenticated"
+        type: TYPE_STRUCT
+        struct_value: {
+            name: "finger"
+            type: TYPE_STRUCT
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
+        }
+        struct_value: {
+            name: "hat"
+            type: TYPE_ARRAY
+            vector_size: 69
+            vector_value: {
+                type: TYPE_SCALAR
+                scalar_type: "uint8_t"
+            }
+        }
+    }
+
+    attribute: {
+        name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintMsgType"
+        type: TYPE_ENUM
+        enum_value: {
+            scalar_type: "int32_t"
+
+            enumerator: "ERROR"
+            scalar_value: {
+                int32_t: -1
+            }
+            enumerator: "ACQUIRED"
+            scalar_value: {
+                int32_t: 1
+            }
+            enumerator: "TEMPLATE_ENROLLING"
+            scalar_value: {
+                int32_t: 3
+            }
+            enumerator: "TEMPLATE_REMOVED"
+            scalar_value: {
+                int32_t: 4
+            }
+            enumerator: "AUTHENTICATED"
+            scalar_value: {
+                int32_t: 5
+            }
+            enumerator: "TEMPLATE_ENUMERATING"
+            scalar_value: {
+                int32_t: 6
+            }
+        }
+    }
+
+    attribute: {
+        name: "::android::hidl::base::V1_0::DebugInfo"
+        type: TYPE_STRUCT
+        struct_value: {
+            name: "pid"
+            type: TYPE_SCALAR
+            scalar_type: "int32_t"
+        }
+        struct_value: {
+            name: "ptr"
+            type: TYPE_SCALAR
+            scalar_type: "uint64_t"
+        }
+    }
+
+    api: {
+        name: "setNotify"
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "uint64_t"
+        }
+        arg: {
+            type: TYPE_HIDL_CALLBACK
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback"
+        }
+        callflow: {
+            next: "setActiveGroup"
+        }
+        callflow: {
+            entry: true
+        }
+    }
+
+    api: {
+        name: "preEnroll"
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "uint64_t"
+        }
+        callflow: {
+            next: "enroll"
+            next: "postEnroll"
+        }
+    }
+
+    api: {
+        name: "enroll"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+        }
+        arg: {
+            type: TYPE_ARRAY
+            vector_size: 69
+            vector_value: {
+                type: TYPE_SCALAR
+                scalar_type: "uint8_t"
+            }
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        callflow: {
+            next: "cancel"
+            next: "enroll"
+            next: "postEnroll"
+            next: "remove"
+        }
+    }
+
+    api: {
+        name: "postEnroll"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+        }
+        callflow: {
+            next: "authenticate"
+            next: "setActiveGroup"
+            next: "enumerate"
+            next: "remove"
+        }
+    }
+
+    api: {
+        name: "getAuthenticatorId"
+        return_type_hidl: {
+            type: TYPE_SCALAR
+            scalar_type: "uint64_t"
+        }
+        callflow: {
+            next: "authenticate"
+        }
+    }
+
+    api: {
+        name: "cancel"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+        }
+        callflow: {
+            next: "authenticate"
+            next: "enroll"
+            next: "enumerate"
+            next: "remove"
+            next: "setActiveGroup"
+        }
+    }
+
+    api: {
+        name: "enumerate"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+        }
+        callflow: {
+            next: "remove"
+            next: "enroll"
+            next: "authenticate"
+            next: "setActiveGroup"
+        }
+    }
+
+    api: {
+        name: "remove"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        callflow: {
+            next: "enumerate"
+            next: "authenticate"
+            next: "cancel"
+            next: "getAuthenticatorId"
+            next: "setActiveGroup"
+        }
+    }
+
+    api: {
+        name: "setActiveGroup"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        arg: {
+            type: TYPE_STRING
+        }
+        callflow: {
+            next: "authenticate"
+            next: "preEnroll"
+            next: "enumerate"
+            next: "remove"
+        }
+    }
+
+    api: {
+        name: "authenticate"
+        return_type_hidl: {
+            type: TYPE_ENUM
+            predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "uint64_t"
+        }
+        arg: {
+            type: TYPE_SCALAR
+            scalar_type: "uint32_t"
+        }
+        callflow: {
+            next: "cancel"
+            next: "preEnroll"
+            next: "remove"
+        }
+    }
+
+}