Add rand-core v0.9 support.
Co-Authored-By: Aurélien Jacobs <aurel@gnuage.org>
This commit is contained in:
@@ -154,6 +154,9 @@ embedded-hal-async = { version = "1.0" }
|
||||
embedded-io = { version = "0.6.0" }
|
||||
embedded-io-async = { version = "0.6.1" }
|
||||
|
||||
rand-core-06 = { package = "rand_core", version = "0.6" }
|
||||
rand-core-09 = { package = "rand_core", version = "0.9" }
|
||||
|
||||
nrf-pac = "0.1.0"
|
||||
|
||||
defmt = { version = "0.3", optional = true }
|
||||
@@ -162,7 +165,6 @@ log = { version = "0.4.14", optional = true }
|
||||
cortex-m-rt = ">=0.6.15,<0.8"
|
||||
cortex-m = "0.7.6"
|
||||
critical-section = "1.1"
|
||||
rand_core = "0.6.3"
|
||||
fixed = "1.10.0"
|
||||
embedded-storage = "0.3.1"
|
||||
embedded-storage-async = "0.4.1"
|
||||
|
||||
@@ -167,6 +167,21 @@ impl<'d, T: Instance> Rng<'d, T> {
|
||||
|
||||
self.stop();
|
||||
}
|
||||
|
||||
/// Generate a random u32
|
||||
pub fn blocking_next_u32(&mut self) -> u32 {
|
||||
let mut bytes = [0; 4];
|
||||
self.blocking_fill_bytes(&mut bytes);
|
||||
// We don't care about the endianness, so just use the native one.
|
||||
u32::from_ne_bytes(bytes)
|
||||
}
|
||||
|
||||
/// Generate a random u64
|
||||
pub fn blocking_next_u64(&mut self) -> u64 {
|
||||
let mut bytes = [0; 8];
|
||||
self.blocking_fill_bytes(&mut bytes);
|
||||
u64::from_ne_bytes(bytes)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'d, T: Instance> Drop for Rng<'d, T> {
|
||||
@@ -180,31 +195,37 @@ impl<'d, T: Instance> Drop for Rng<'d, T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'d, T: Instance> rand_core::RngCore for Rng<'d, T> {
|
||||
impl<'d, T: Instance> rand_core_06::RngCore for Rng<'d, T> {
|
||||
fn fill_bytes(&mut self, dest: &mut [u8]) {
|
||||
self.blocking_fill_bytes(dest);
|
||||
}
|
||||
|
||||
fn next_u32(&mut self) -> u32 {
|
||||
let mut bytes = [0; 4];
|
||||
self.blocking_fill_bytes(&mut bytes);
|
||||
// We don't care about the endianness, so just use the native one.
|
||||
u32::from_ne_bytes(bytes)
|
||||
self.blocking_next_u32()
|
||||
}
|
||||
|
||||
fn next_u64(&mut self) -> u64 {
|
||||
let mut bytes = [0; 8];
|
||||
self.blocking_fill_bytes(&mut bytes);
|
||||
u64::from_ne_bytes(bytes)
|
||||
self.blocking_next_u64()
|
||||
}
|
||||
|
||||
fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core::Error> {
|
||||
fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core_06::Error> {
|
||||
self.blocking_fill_bytes(dest);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl<'d, T: Instance> rand_core::CryptoRng for Rng<'d, T> {}
|
||||
impl<'d, T: Instance> rand_core_06::CryptoRng for Rng<'d, T> {}
|
||||
|
||||
impl<'d, T: Instance> rand_core_09::RngCore for Rng<'d, T> {
|
||||
fn fill_bytes(&mut self, dest: &mut [u8]) {
|
||||
self.blocking_fill_bytes(dest);
|
||||
}
|
||||
fn next_u32(&mut self) -> u32 {
|
||||
self.blocking_next_u32()
|
||||
}
|
||||
fn next_u64(&mut self) -> u64 {
|
||||
self.blocking_next_u64()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'d, T: Instance> rand_core_09::CryptoRng for Rng<'d, T> {}
|
||||
|
||||
/// Peripheral static state
|
||||
pub(crate) struct State {
|
||||
|
||||
Reference in New Issue
Block a user