embedded_savegame/
eeprom24x.rs1use crate::storage::Flash;
9use core::fmt;
10use eeprom24x::Eeprom24xTrait;
11
12impl<T: Eeprom24xTrait> Flash for T
14where
15 T::Error: fmt::Debug,
16{
17 type Error = eeprom24x::Error<T::Error>;
18
19 fn read(&mut self, addr: u32, buf: &mut [u8]) -> Result<(), Self::Error> {
20 self.read_data(addr, buf)?;
21 Ok(())
22 }
23
24 fn write(&mut self, addr: u32, data: &mut [u8]) -> Result<(), Self::Error> {
25 self.write_page(addr, data)?;
26 while self.read_current_address().is_err() {}
27 Ok(())
28 }
29
30 fn erase(&mut self, addr: u32) -> Result<(), Self::Error> {
31 if self.read_byte(addr)? != 0xFF {
32 self.write_byte(addr, 0xFF)?;
33 while self.read_current_address().is_err() {}
34 }
35 Ok(())
36 }
37}