use alloc::vec::Vec;
use crate::{Error, Support};
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[derive(Debug, PartialEq, Eq)]
pub enum Event {
EnrollDone,
EnrollStep {
remaining: usize,
},
EnrollError {
error: Error,
},
IdentifyDone {
result: bool,
},
IdentifyError {
error: Error,
},
}
impl<B: crate::Api> From<Event> for crate::Event<B> {
fn from(event: Event) -> Self {
super::Event::Matcher(event).into()
}
}
pub trait Api: Support<bool> + Send {
const TEMPLATE_ID_SIZE: usize;
fn start_enroll() -> Result<(), Error>;
fn read_enroll(template_id: &mut [u8]) -> Result<(), Error>;
fn abort_enroll() -> Result<(), Error>;
fn start_identify(template_id: Option<&[u8]>) -> Result<(), Error>;
fn read_identify(template_id: &mut [u8]) -> Result<(), Error>;
fn abort_identify() -> Result<(), Error>;
fn delete_template(template_id: Option<&[u8]>) -> Result<(), Error>;
fn list_templates() -> Result<Vec<u8>, Error>;
}