#![no_std]
#![no_main]
use core::fmt::Write;
use esp8266_hal::flash::SPI0Ext;
use esp8266_hal::prelude::*;
use esp8266_hal::target::Peripherals;
use panic_halt as _;
#[entry]
fn main() -> ! {
let dp = Peripherals::take().unwrap();
let pins = dp.GPIO.split();
let mut led = pins.gpio2.into_push_pull_output();
let (mut timer1, _) = dp.TIMER.timers();
let mut serial = dp
.UART0
.serial(pins.gpio1.into_uart(), pins.gpio3.into_uart());
led.set_high().unwrap();
let mut flash = dp.SPI0.flash();
const ADDR: u32 = 0x7E000;
timer1.delay_ms(1000);
let mut buff = [0u8; 8];
flash.read(ADDR, &mut buff).unwrap();
buff[0] += 1;
flash.erase_sectors(ADDR, 1).unwrap();
flash.write_bytes(ADDR, &buff).unwrap();
write!(serial, "\r\ncounter {}:\r\n", buff[0]).unwrap();
write!(serial, "press '0' to reset:\r\n").unwrap();
loop {
let byte = nb::block!(serial.read()).unwrap();
if byte == b'0' {
buff[0] = 0;
flash.erase_sectors(ADDR, 1).unwrap();
flash.write_bytes(ADDR, &mut buff).unwrap();
}
}
}