| 1 | //! # embedded-storage - A Storage Abstraction Layer for Embedded Systems |
| 2 | //! |
| 3 | //! Storage traits to allow on and off board storage devices to read and write |
| 4 | //! data. |
| 5 | |
| 6 | #![doc (html_root_url = "https://docs.rs/embedded-storage/0.1.0" )] |
| 7 | #![no_std ] |
| 8 | #![deny (missing_docs)] |
| 9 | #![deny (unsafe_code)] |
| 10 | |
| 11 | /// Currently contains [`OverlapIterator`] |
| 12 | pub mod iter; |
| 13 | /// Technology specific traits for NOR Flashes |
| 14 | pub mod nor_flash; |
| 15 | |
| 16 | /// A region denotes a contiguous piece of memory between two addresses. |
| 17 | pub trait Region { |
| 18 | /// Check if `address` is contained in the region of `Self` |
| 19 | fn contains(&self, address: u32) -> bool; |
| 20 | } |
| 21 | |
| 22 | /// Transparent read only storage trait |
| 23 | pub trait ReadStorage { |
| 24 | /// An enumeration of storage errors |
| 25 | type Error; |
| 26 | |
| 27 | /// Read a slice of data from the storage peripheral, starting the read |
| 28 | /// operation at the given address offset, and reading `bytes.len()` bytes. |
| 29 | /// |
| 30 | /// This should throw an error in case `bytes.len()` will be larger than |
| 31 | /// `self.capacity() - offset`. |
| 32 | fn read(&mut self, offset: u32, bytes: &mut [u8]) -> Result<(), Self::Error>; |
| 33 | |
| 34 | /// The capacity of the storage peripheral in bytes. |
| 35 | fn capacity(&self) -> usize; |
| 36 | } |
| 37 | |
| 38 | /// Transparent read/write storage trait |
| 39 | pub trait Storage: ReadStorage { |
| 40 | /// Write a slice of data to the storage peripheral, starting the write |
| 41 | /// operation at the given address offset (between 0 and `self.capacity()`). |
| 42 | /// |
| 43 | /// **NOTE:** |
| 44 | /// This function will automatically erase any pages necessary to write the given data, |
| 45 | /// and might as such do RMW operations at an undesirable performance impact. |
| 46 | fn write(&mut self, offset: u32, bytes: &[u8]) -> Result<(), Self::Error>; |
| 47 | } |
| 48 | |