diff options
| -rw-r--r-- | examples/nrf/src/bin/rng.rs | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/examples/nrf/src/bin/rng.rs b/examples/nrf/src/bin/rng.rs index a4c204c2e..6aa43d0db 100644 --- a/examples/nrf/src/bin/rng.rs +++ b/examples/nrf/src/bin/rng.rs | |||
| @@ -10,15 +10,15 @@ mod example_common; | |||
| 10 | 10 | ||
| 11 | use defmt::panic; | 11 | use defmt::panic; |
| 12 | use embassy::executor::Spawner; | 12 | use embassy::executor::Spawner; |
| 13 | use embassy_nrf::Peripherals; | ||
| 14 | use embassy_nrf::rng::Rng; | ||
| 15 | use embassy_nrf::interrupt; | ||
| 16 | use embassy::traits::rng::Rng as _; | 13 | use embassy::traits::rng::Rng as _; |
| 14 | use embassy_nrf::interrupt; | ||
| 15 | use embassy_nrf::rng::Rng; | ||
| 16 | use embassy_nrf::Peripherals; | ||
| 17 | use rand::Rng as _; | 17 | use rand::Rng as _; |
| 18 | 18 | ||
| 19 | #[embassy::main] | 19 | #[embassy::main] |
| 20 | async fn main(_spawner: Spawner, p: Peripherals) { | 20 | async fn main(_spawner: Spawner, p: Peripherals) { |
| 21 | let mut rng = Rng::new(p.RNG, interrupt::take!(RNG)); | 21 | let mut rng = unsafe { Rng::new(p.RNG, interrupt::take!(RNG)) }; |
| 22 | 22 | ||
| 23 | // Async API | 23 | // Async API |
| 24 | let mut bytes = [0; 4]; | 24 | let mut bytes = [0; 4]; |
| @@ -27,4 +27,17 @@ async fn main(_spawner: Spawner, p: Peripherals) { | |||
| 27 | 27 | ||
| 28 | // Sync API with `rand` | 28 | // Sync API with `rand` |
| 29 | defmt::info!("A random number from 1 to 10: {:?}", rng.gen_range(1..=10)); | 29 | defmt::info!("A random number from 1 to 10: {:?}", rng.gen_range(1..=10)); |
| 30 | |||
| 31 | let mut bytes = [0; 1024]; | ||
| 32 | rng.fill_bytes(&mut bytes).await.unwrap(); | ||
| 33 | let zero_count: u32 = bytes.iter().fold(0, |acc, val| acc + val.count_zeros()); | ||
| 34 | let one_count: u32 = bytes.iter().fold(0, |acc, val| acc + val.count_ones()); | ||
| 35 | defmt::info!( | ||
| 36 | "Chance of zero: {}%", | ||
| 37 | zero_count * 100 / (bytes.len() as u32 * 8) | ||
| 38 | ); | ||
| 39 | defmt::info!( | ||
| 40 | "Chance of one: {}%", | ||
| 41 | one_count * 100 / (bytes.len() as u32 * 8) | ||
| 42 | ); | ||
| 30 | } | 43 | } |
