eeprom 0.1.0

EEPROM emulation on top of FLASH for STM32
Documentation
[![crates.io](https://img.shields.io/crates/v/eeprom.svg)](https://crates.io/crates/eeprom)
[![crates.io](https://img.shields.io/crates/d/eeprom.svg)](https://crates.io/crates/eeprom)
[![CircleCI](https://img.shields.io/circleci/project/github/idubrov/eeprom.svg)](https://circleci.com/gh/idubrov/eeprom)
[![Codecov](https://img.shields.io/codecov/c/github/idubrov/eeprom.svg)](https://codecov.io/gh/idubrov/eeprom)

# eeprom

Flash-based EEPROM emulation for the STM32 series microcontrollers.
Uses 2 or more Flash pages for storing 16-bit data.

## Examples
```rust
extern crate stm32f103xx;
extern crate eeprom;
use stm32f103xx::FLASH;
use eeprom::EEPROM;
// Get flash somehow...
// let flash = FLASH.borrow(cs);
let eeprom = flash.eeprom();
eeprom.init().expect("failed to init EEPROM");
eeprom.write(1, 0xdead).expect("failed to write data to EEPROM");
eeprom.write(2, 0xbeef).expect("failed to write data to EEPROM");
assert_eq!(0xdead, eeprom.read(1).unwrap());
assert_eq!(0xbeef, eeprom.read(2).unwrap());
assert_eq!(true, eeprom.read(3).is_none());
```

## Panics
EEPROM controller will panic in the following cases:
* No free space on the page even after compaction
* active page cannot be found during `read`/`write` operation (`init` makes sure that there
  is exactly one active page.

[Full Documentation](https://docs.rs/eeprom)

## License

Licensed under either of

 * Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.