# fingerprint.sysprop
# module becomes static class (Java) / namespace (C++) for serving API
module: "android.fingerprint.virt.FingerprintHalProperties"
owner: Vendor

# type of fingerprint sensor
prop {
    prop_name: "persist.vendor.fingerprint.virtual.type"
    type: String
    scope: Internal
    access: ReadWrite
    enum_values: "default|rear|udfps|side"
    api_name: "type"
}

# ids of call current enrollments
prop {
    prop_name: "persist.vendor.fingerprint.virtual.enrollments"
    type: IntegerList
    scope: Internal
    access: ReadWrite
    api_name: "enrollments"
}

# authenticate and detectInteraction will succeed with this
# enrollment id, when present, otherwise they will error
prop {
    prop_name: "vendor.fingerprint.virtual.enrollment_hit"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "enrollment_hit"
}

# the next enrollment in the format of:
# "<id>:<delay>,<delay>,...:<result>"
# <delay> = <duration-[acquiredInfos]>
# [acquiredInfos] = [acquiredInfo1, acquiredInfo2, ...]
# (refer to README.md file for acquiredInfo values)
# e.g. "2:100,20:true", "2:100-[5,1],20:true"
# this property is reset after enroll completes
prop {
    prop_name: "vendor.fingerprint.virtual.next_enrollment"
    type: String
    scope: Internal
    access: ReadWrite
    api_name: "next_enrollment"
}

# value for getAuthenticatorId or 0
prop {
    prop_name: "persist.vendor.fingerprint.virtual.authenticator_id"
    type: Long
    scope: Internal
    access: ReadWrite
    api_name: "authenticator_id"
}

# value for generateChallenge
prop {
    prop_name: "vendor.fingerprint.virtual.challenge"
    type: Long
    scope: Internal
    access: ReadWrite
    api_name: "challenge"
}

# force all authenticate operations to fail
prop {
    prop_name: "vendor.fingerprint.virtual.operation_authenticate_fails"
    type: Boolean
    scope: Internal
    access: ReadWrite
    api_name: "operation_authenticate_fails"
}

# force all detectInteraction operations to error out
# error consists of errorCode and vendorErrorCode
# valid errorCodes are listed in README.md file
# vendorErrorCode = (error>1000) ? error-1000 : 0
# e.g. error(1002) --> errorCode(7) and vendorErrorCode(2)
prop {
    prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_error"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "operation_detect_interaction_error"
}

# force all enroll operations to result in error
prop {
    prop_name: "vendor.fingerprint.virtual.operation_enroll_error"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "operation_enroll_error"
}

# add a latency to authentication operations
#   default to 400ms
#   [x] = x ms
#   [x,y] = randomly between x and y ms
#   others = invalid
prop {
    prop_name: "vendor.fingerprint.virtual.operation_authenticate_latency"
    type: IntegerList
    scope: Internal
    access: ReadWrite
    api_name: "operation_authenticate_latency"
}

# add a latency to detectInteraction operations
#   refer to `operation_authenticate_latency` above for usage
prop {
    prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_latency"
    type: IntegerList
    scope: Internal
    access: ReadWrite
    api_name: "operation_detect_interaction_latency"
}

# add a latency to enroll operations
#   refer to `operation_authenticate_latency` above for usage
prop {
    prop_name: "vendor.fingerprint.virtual.operation_enroll_latency"
    type: IntegerList
    scope: Internal
    access: ReadWrite
    api_name: "operation_enroll_latency"
}

# millisecond duration for authenticate operations
# (waits for changes to enrollment_hit)
prop {
    prop_name: "vendor.fingerprint.virtual.operation_authenticate_duration"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "operation_authenticate_duration"
}

# insert error for authenticate operations
prop {
    prop_name: "vendor.fingerprint.virtual.operation_authenticate_error"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "operation_authenticate_error"
}

# sensor location
#    <x>:<y>:<radius> in pixel
prop {
    prop_name: "persist.vendor.fingerprint.virtual.sensor_location"
    type: String
    scope: Internal
    access: ReadWrite
    api_name: "sensor_location"
}

# acquired info during authentication in format of sequence
prop {
    prop_name: "vendor.fingerprint.virtual.operation_authenticate_acquired"
    type: String
    scope: Internal
    access: ReadWrite
    api_name: "operation_authenticate_acquired"
}

# millisecond duration for detect interaction operations
# (waits for changes to enrollment_hit)
prop {
    prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_duration"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "operation_detect_interaction_duration"
}

# acquired info during detect interaction operation in format of sequence
# e.g. 5,6,1  (TOO_SLOW, TOO_FAST, GOOD)
# onAcquired() callback will be invoked in sequence
# vendorAcquiredCode = (acquired>1000) ? acquired-1000 : 0
prop {
    prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_acquired"
    type: String
    scope: Internal
    access: ReadWrite
    api_name: "operation_detect_interaction_acquired"
}

# sensor id (default: 5)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.sensor_id"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "sensor_id"
}

# sensor strength (default: 2)
# [0=CONVENECE, 1=WEAK, 2=STRONG]
prop {
    prop_name: "persist.vendor.fingerprint.virtual.sensor_strength"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "sensor_strength"
}

# max enrollments per user (default: 5)
#
prop {
    prop_name: "persist.vendor.fingerprint.virtual.max_enrollments"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "max_enrollments"
}

# whether support navigation guestures (default: false)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.navigation_guesture"
    type: Boolean
    scope: Internal
    access: ReadWrite
    api_name: "navigation_guesture"
}

# whether support detect interaction (default: false)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.detect_interaction"
    type: Boolean
    scope: Internal
    access: ReadWrite
    api_name: "detect_interaction"
}

# whether support display touch by hal (default: true)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.udfps.display_touch"
    type: Boolean
    scope: Internal
    access: ReadWrite
    api_name: "display_touch"
}

# whether support illumination control  by hal (default: false)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.udfps.control_illumination"
    type: Boolean
    scope: Internal
    access: ReadWrite
    api_name: "control_illumination"
}

# force to be locked out (default: false)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.lockout"
    type: Boolean
    scope: Internal
    access: ReadWrite
    api_name: "lockout"
}

# whether support lockout based on the failed auth attempts (default: false)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.lockout_enable"
    type: Boolean
    scope: Internal
    access: ReadWrite
    api_name: "lockout_enable"
}

# temporarily lockout threshold in number of consecutive failed auth attempts (default: 5)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_threshold"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "lockout_timed_threshold"
}

# temporary lockout duration in ms (default: 10000ms)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_duration"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "lockout_timed_duration"
}

# permanently lockout threshold  in number of consecutive failed auth attempts (default: 20)
prop {
    prop_name: "persist.vendor.fingerprint.virtual.lockout_permanent_threshold"
    type: Integer
    scope: Internal
    access: ReadWrite
    api_name: "lockout_permanent_threshold"
}
