blob: b98bdcc897971c97d601ace389c9bece9b6867ad [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BIOD_CROS_FP_DEVICE_INTERFACE_H_
#define BIOD_CROS_FP_DEVICE_INTERFACE_H_
#include <bitset>
#include <string>
#include <vector>
#include <brillo/secure_blob.h>
#include <chromeos/ec/ec_commands.h>
#include "biod/ec_command.h"
#include "biod/fp_mode.h"
using VendorTemplate = std::vector<uint8_t>;
namespace biod {
class CrosFpDeviceInterface {
public:
using MkbpCallback = base::Callback<void(const uint32_t event)>;
CrosFpDeviceInterface() = default;
virtual ~CrosFpDeviceInterface() = default;
struct EcVersion {
std::string ro_version;
std::string rw_version;
ec_current_image current_image = EC_IMAGE_UNKNOWN;
};
virtual void SetMkbpEventCallback(MkbpCallback callback) = 0;
virtual bool SetFpMode(const FpMode& mode) = 0;
virtual bool GetFpMode(FpMode* mode) = 0;
virtual bool GetFpStats(int* capture_ms,
int* matcher_ms,
int* overall_ms) = 0;
virtual bool GetDirtyMap(std::bitset<32>* bitmap) = 0;
virtual bool SupportsPositiveMatchSecret() = 0;
virtual bool GetPositiveMatchSecret(int index,
brillo::SecureBlob* secret) = 0;
virtual bool GetTemplate(int index, VendorTemplate* out) = 0;
virtual bool UploadTemplate(const VendorTemplate& tmpl) = 0;
virtual bool SetContext(std::string user_id) = 0;
virtual bool ResetContext() = 0;
// Initialise the entropy in the SBP. If |reset| is true, the old entropy
// will be deleted. If |reset| is false, we will only add entropy, and only
// if no entropy had been added before.
virtual bool InitEntropy(bool reset) = 0;
virtual bool UpdateFpInfo() = 0;
virtual int MaxTemplateCount() = 0;
virtual int TemplateVersion() = 0;
virtual int DeadPixelCount() = 0;
virtual EcCmdVersionSupportStatus EcCmdVersionSupported(uint16_t cmd,
uint32_t ver) = 0;
DISALLOW_COPY_AND_ASSIGN(CrosFpDeviceInterface);
};
} // namespace biod
#endif // BIOD_CROS_FP_DEVICE_INTERFACE_H_