aboutsummaryrefslogtreecommitdiff
path: root/embassy-rp/src/trng.rs
diff options
context:
space:
mode:
author1-rafael-1 <[email protected]>2025-09-15 20:07:18 +0200
committer1-rafael-1 <[email protected]>2025-09-15 20:07:18 +0200
commit6bb3d2c0720fa082f27d3cdb70f516058497ec87 (patch)
tree5a1e255cff999b00800f203b91a759c720c973e5 /embassy-rp/src/trng.rs
parenteb685574601d98c44faed9a3534d056199b46e20 (diff)
parent92a6fd2946f2cbb15359290f68aa360953da2ff7 (diff)
Merge branch 'main' into rp2040-rtc-alarm
Diffstat (limited to 'embassy-rp/src/trng.rs')
-rw-r--r--embassy-rp/src/trng.rs25
1 files changed, 20 insertions, 5 deletions
diff --git a/embassy-rp/src/trng.rs b/embassy-rp/src/trng.rs
index a8a0172be..a3f23c1f2 100644
--- a/embassy-rp/src/trng.rs
+++ b/embassy-rp/src/trng.rs
@@ -7,7 +7,6 @@ use core::task::Poll;
7 7
8use embassy_hal_internal::{Peri, PeripheralType}; 8use embassy_hal_internal::{Peri, PeripheralType};
9use embassy_sync::waitqueue::AtomicWaker; 9use embassy_sync::waitqueue::AtomicWaker;
10use rand_core::Error;
11 10
12use crate::interrupt::typelevel::{Binding, Interrupt}; 11use crate::interrupt::typelevel::{Binding, Interrupt};
13use crate::peripherals::TRNG; 12use crate::peripherals::TRNG;
@@ -369,7 +368,7 @@ impl<'d, T: Instance> Trng<'d, T> {
369 } 368 }
370} 369}
371 370
372impl<'d, T: Instance> rand_core::RngCore for Trng<'d, T> { 371impl<'d, T: Instance> rand_core_06::RngCore for Trng<'d, T> {
373 fn next_u32(&mut self) -> u32 { 372 fn next_u32(&mut self) -> u32 {
374 self.blocking_next_u32() 373 self.blocking_next_u32()
375 } 374 }
@@ -379,16 +378,32 @@ impl<'d, T: Instance> rand_core::RngCore for Trng<'d, T> {
379 } 378 }
380 379
381 fn fill_bytes(&mut self, dest: &mut [u8]) { 380 fn fill_bytes(&mut self, dest: &mut [u8]) {
382 self.blocking_fill_bytes(dest) 381 self.blocking_fill_bytes(dest);
383 } 382 }
384 383
385 fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { 384 fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand_core_06::Error> {
386 self.blocking_fill_bytes(dest); 385 self.blocking_fill_bytes(dest);
387 Ok(()) 386 Ok(())
388 } 387 }
389} 388}
390 389
391impl<'d, T: Instance> rand_core::CryptoRng for Trng<'d, T> {} 390impl<'d, T: Instance> rand_core_06::CryptoRng for Trng<'d, T> {}
391
392impl<'d, T: Instance> rand_core_09::RngCore for Trng<'d, T> {
393 fn next_u32(&mut self) -> u32 {
394 self.blocking_next_u32()
395 }
396
397 fn next_u64(&mut self) -> u64 {
398 self.blocking_next_u64()
399 }
400
401 fn fill_bytes(&mut self, dest: &mut [u8]) {
402 self.blocking_fill_bytes(dest);
403 }
404}
405
406impl<'d, T: Instance> rand_core_09::CryptoRng for Trng<'d, T> {}
392 407
393/// TRNG interrupt handler. 408/// TRNG interrupt handler.
394pub struct InterruptHandler<T: Instance> { 409pub struct InterruptHandler<T: Instance> {