/*
 * Copyright (C) 2016 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.
 */

syntax = "proto2";
package com.android.server.fingerprint;

option java_multiple_files = true;
option java_outer_classname = "FingerprintServiceProto";

message FingerprintServiceDumpProto {
    // Each log may include multiple tuples of (user_id, num_fingerprints).
    repeated FingerprintUserStatsProto users = 1;
}

message FingerprintUserStatsProto {
    // Should be 0, 10, 11, 12, etc. where 0 is the owner.
    optional int32 user_id = 1;

    // The number of fingerprints registered to this user.
    optional int32 num_fingerprints = 2;

    // Normal fingerprint authentications (e.g. lockscreen).
    optional PerformanceStatsProto normal = 3;

    // Crypto authentications (e.g. to unlock password storage, make secure
    // purchases, etc).
    optional PerformanceStatsProto crypto = 4;
}

// A com.android.server.fingerprint.FingerpintService.PerformanceStats object.
message PerformanceStatsProto {
    // Number of accepted fingerprints.
    optional int32 accept = 1;

    // Number of rejected fingerprints.
    optional int32 reject = 2;

    // Total number of acquisitions. Should be >= accept+reject due to poor
    // image acquisition in some cases (too fast, too slow, dirty sensor, etc.)
    optional int32 acquire = 3;

    // Total number of lockouts.
    optional int32 lockout = 4;

    // Total number of permanent lockouts.
    optional int32 permanent_lockout = 5;
}
