blob: 7402085d03fbd9604169b3f22c33ef12bcd5cc68 [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.biometrics.fingerprint@2.1;
/**
* Request status indicates whether the request is accepted by the vendor
* implementation or not. These values are taken from the errno set,
* except for the SYS_UNKNOWN
*/
enum RequestStatus : int32_t {
SYS_UNKNOWN = 1,
SYS_OK = 0,
SYS_ENOENT = -2,
SYS_EINTR = -4,
SYS_EIO = -5,
SYS_EAGAIN = -11,
SYS_ENOMEM = -12,
SYS_EACCES = -13,
SYS_EFAULT = -14,
SYS_EBUSY = -16,
SYS_EINVAL = -22,
SYS_ENOSPC = -28,
SYS_ETIMEDOUT = -110,
};
/**
* Fingerprint errors are meant to tell the framework to terminate the current
* operation and ask for the user to correct the situation. These will almost
* always result in messaging and user interaction to correct the problem.
*
* For example, ERROR_CANCELED should follow any acquisition message that
* results in a situation where the current operation can't continue without
* user interaction. For example, if the sensor is dirty during enrollment and
* no further enrollment progress can be made, send ACQUIRED_IMAGER_DIRTY
* followed by ERROR_CANCELED.
*/
enum FingerprintError : int32_t {
/** Used for testing, no error returned */
ERROR_NO_ERROR = 0,
/** The hardware has an error that can't be resolved. */
ERROR_HW_UNAVAILABLE = 1,
/** Bad data; operation can't continue */
ERROR_UNABLE_TO_PROCESS = 2,
/** The operation has timed out waiting for user input. */
ERROR_TIMEOUT = 3,
/** No space available to store a template */
ERROR_NO_SPACE = 4,
/** The current operation has been canceled */
ERROR_CANCELED = 5,
/** Unable to remove a template */
ERROR_UNABLE_TO_REMOVE = 6,
/** The hardware is in lockout due to too many attempts */
ERROR_LOCKOUT = 7,
/** Vendor-specific error message */
ERROR_VENDOR = 8
};
/**
* Fingerprint acquisition info is meant as feedback for the current operation.
* Anything but ACQUIRED_GOOD must be shown to the user as feedback on how to
* take action on the current operation. For example, ACQUIRED_IMAGER_DIRTY may
* be used to tell the user to clean the sensor if it is detected to be dirty.
* If this causes the current operation to fail, an additional ERROR_CANCELED
* must be sent to stop the operation in progress (e.g. enrollment).
* In general, these messages will result in a "Try again" message.
*/
enum FingerprintAcquiredInfo : int32_t {
ACQUIRED_GOOD = 0,
/** sensor needs more data, i.e. longer swipe. */
ACQUIRED_PARTIAL = 1,
/**
* image doesn't contain enough detail for recognition*/
ACQUIRED_INSUFFICIENT = 2,
/** sensor needs to be cleaned */
ACQUIRED_IMAGER_DIRTY = 3,
/** mostly swipe-type sensors; not enough data collected */
ACQUIRED_TOO_SLOW = 4,
/** vendor-specific acquisition messages start here */
ACQUIRED_TOO_FAST = 5,
/** vendor-specific acquisition messages */
ACQUIRED_VENDOR = 6
};
struct FingerprintFingerId {
/** Group ID */
uint32_t gid;
/** Fingerprint template ID */
uint32_t fid;
};
struct FingerprintEnroll {
/** Template ID */
FingerprintFingerId finger;
/**
* samplesRemaining goes from N (no data collected, but N scans needed)
* to 0 (no more data is needed to build a template). */
uint32_t samplesRemaining;
/** Vendor specific message. Used for user guidance */
uint64_t msg;
};
struct FingerprintIterator {
/** Template ID */
FingerprintFingerId finger;
/** How many templates remain to iterate through */
uint32_t remainingTemplates;
};
typedef FingerprintIterator FingerprintEnumerated;
typedef FingerprintIterator FingerprintRemoved;
struct FingerprintAcquired {
/** information about the image */
FingerprintAcquiredInfo acquiredInfo;
};
struct FingerprintAuthenticated {
/** Matched template ID */
FingerprintFingerId finger;
/** Authentication result from the keymaster */
uint8_t[69] hat;
};
/** Run time type identification for the notify() call payload. */
enum FingerprintMsgType : int32_t {
ERROR = -1,
ACQUIRED = 1,
TEMPLATE_ENROLLING = 3,
TEMPLATE_REMOVED = 4,
AUTHENTICATED = 5,
TEMPLATE_ENUMERATING = 6,
};