#![allow(non_camel_case_types)]
use generic_array::ArrayLength;
use littlefs2_sys as ll;
use crate::{
io::Result,
};
pub trait Storage {
const READ_SIZE: usize;
const WRITE_SIZE: usize;
const BLOCK_SIZE: usize;
const BLOCK_COUNT: usize;
const BLOCK_CYCLES: isize = -1;
type CACHE_SIZE: ArrayLength<u8>;
type LOOKAHEADWORDS_SIZE: ArrayLength<u32>;
fn read(&self, off: usize, buf: &mut [u8]) -> Result<usize>;
fn write(&mut self, off: usize, data: &[u8]) -> Result<usize>;
fn erase(&mut self, off: usize, len: usize) -> Result<usize>;
}
mod future {
pub trait DiskFormat {
const BLOCK_SIZE: usize;
const BLOCK_COUNT: usize;
type FILENAME_MAX_PLUS_ONE;
const FILEBYTES_MAX: usize = super::ll::LFS_FILE_MAX as _;
type ATTRBYTES_MAX;
}
pub trait Driver {
const READ_SIZE: usize;
const WRITE_SIZE: usize;
const BLOCK_SIZE: usize;
const BLOCK_COUNT: usize;
}
pub trait MemoryUsage {
type CACHE_SIZE;
type LOOKAHEADWORDS_SIZE;
}
pub trait RuntimeParameters {
const BLOCK_CYCLES: isize = -1;
}
}