use crate::api::timestamp::VfatTimestamp;
use crate::{SectorId, error};
use core::fmt::Debug;
pub trait TimeManagerTrait: Debug + Send + Sync {
fn get_current_timestamp(&self) -> u64;
fn get_current_vfat_timestamp(&self) -> VfatTimestamp {
VfatTimestamp::from(self.get_current_timestamp())
}
}
pub trait BlockDevice {
fn sector_size(&self) -> usize {
crate::SECTOR_SIZE
}
fn read_sector(&mut self, sector: SectorId, buf: &mut [u8]) -> error::Result<usize> {
self.read_sector_offset(sector, 0, buf) }
fn read_sector_offset(
&mut self,
sector: SectorId,
offset: usize,
buf: &mut [u8],
) -> error::Result<usize>;
fn write_sector(&mut self, sector: SectorId, buf: &[u8]) -> error::Result<usize> {
self.write_sector_offset(sector, 0, buf)
}
fn write_sector_offset(
&mut self,
sector: SectorId,
offset: usize,
buf: &[u8],
) -> error::Result<usize>;
fn get_canonical_name() -> &'static str
where
Self: Sized,
{
"Block Device"
}
}