From dc919c236d7ec7fe443b41cbaf3ad267fcacb7ca Mon Sep 17 00:00:00 2001 From: Bob McWhirter Date: Mon, 26 Apr 2021 09:43:19 -0400 Subject: [PATCH] Add an RNG trait. --- embassy-traits/src/lib.rs | 1 + embassy-traits/src/rng.rs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 embassy-traits/src/rng.rs diff --git a/embassy-traits/src/lib.rs b/embassy-traits/src/lib.rs index ea59444c1..1ce5dbe7e 100644 --- a/embassy-traits/src/lib.rs +++ b/embassy-traits/src/lib.rs @@ -14,3 +14,4 @@ pub mod gpio; pub mod i2c; pub mod spi; pub mod uart; +pub mod rng; diff --git a/embassy-traits/src/rng.rs b/embassy-traits/src/rng.rs new file mode 100644 index 000000000..af786bd4a --- /dev/null +++ b/embassy-traits/src/rng.rs @@ -0,0 +1,17 @@ +use core::future::Future; + +/// Random-number Generator +pub trait Rng { + type Error; + + type RngFuture<'a>: Future> + 'a + where + Self: 'a; + + /// Completely fill the provided buffer with random bytes. + /// + /// May result in delays if entropy is exhausted prior to completely + /// filling the buffer. Upon completion, the buffer will be completely + /// filled or an error will have been reported. + fn fill<'a>(&'a mut self, dest: &'a mut [u8]) -> Self::RngFuture<'a>; +}