use crate::error::CanError;
use crate::id::CanId;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Filter {
pub id: CanId,
pub mask: u32,
}
impl Filter {
#[must_use]
pub fn new(id: CanId, mask: u32) -> Self {
let max = match id {
CanId::Standard(_) => 0x7FF,
CanId::Extended(_) => 0x1FFF_FFFF,
};
Filter {
id,
mask: mask & max,
}
}
}
pub trait Filterable {
type Error: CanError;
fn set_filters(&mut self, filters: &[Filter]) -> Result<(), Self::Error>;
fn clear_filters(&mut self) -> Result<(), Self::Error>;
}