1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use embedded_hal::blocking::rng::Read;
use esp8266::RNG;
use void::Void;
pub trait RngExt {
fn rng(self) -> Rng;
}
impl RngExt for RNG {
fn rng(self) -> Rng {
Rng { rng: self }
}
}
pub struct Rng {
rng: RNG,
}
impl Read for Rng {
type Error = Void;
fn read(&mut self, buffer: &mut [u8]) -> Result<(), Self::Error> {
for byte in buffer.iter_mut() {
*byte = self.rng.rng.read().bits() as u8;
}
Ok(())
}
}