Skip to content

Commit 0280761

Browse files
committed
Add nonblocking RNG trait
1 parent 120ef2d commit 0280761

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ version = "1.0.2"
2020
[dependencies.nb]
2121
version = "0.1.1"
2222

23+
[dependencies.generic-array]
24+
version = "0.11.0"
25+
2326
[dev-dependencies]
2427
stm32f30x = "0.6.0"
2528
futures = "0.1.17"
@@ -28,4 +31,4 @@ futures = "0.1.17"
2831
unproven = ["nb/unstable"]
2932

3033
[package.metadata.docs.rs]
31-
features = ["unproven"]
34+
features = ["unproven"]

src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,10 +688,13 @@
688688
#[macro_use]
689689
extern crate nb;
690690
extern crate void;
691+
extern crate generic_array;
691692

692693
pub mod blocking;
693694
pub mod digital;
694695
pub mod prelude;
696+
#[cfg(feature = "unproven")]
697+
pub mod rng;
695698
pub mod serial;
696699
pub mod spi;
697700
pub mod timer;

src/prelude.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ pub use digital::InputPin as _embedded_hal_digital_InputPin;
2020
pub use digital::OutputPin as _embedded_hal_digital_OutputPin;
2121
#[cfg(feature = "unproven")]
2222
pub use digital::ToggleableOutputPin as _embedded_hal_digital_ToggleableOutputPin;
23+
#[cfg(feature = "unproven")]
24+
pub use rng::Read as _embedded_hal_rng_Read;
2325
pub use serial::Read as _embedded_hal_serial_Read;
2426
pub use serial::Write as _embedded_hal_serial_Write;
2527
pub use spi::FullDuplex as _embedded_hal_spi_FullDuplex;

src/rng.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//! Random Number Generator Interface
2+
3+
use generic_array::{ArrayLength, GenericArray};
4+
use nb;
5+
6+
/// Nonblocking stream of random bytes.
7+
#[cfg(feature = "unproven")]
8+
// reason: No implementation or users yet
9+
pub trait Read<N>
10+
where
11+
N: ArrayLength<u8>
12+
{
13+
/// An enumeration of RNG errors.
14+
///
15+
/// For infallible implementations, will be `Void`
16+
type Error;
17+
18+
/// Get a number of bytes from the RNG.
19+
fn read(&mut self) -> nb::Result<GenericArray<u8, N>, Self::Error>;
20+
}

0 commit comments

Comments
 (0)