@@ -9,10 +9,11 @@ use nucleo_wl55jc_bsp::hal::{
99 flash:: { self , AlignedAddr , Error , Flash , Page , flash_range} ,
1010 pac:: { self , DWT } ,
1111 rcc,
12- rng:: { self , Rng , rand_core:: RngCore } ,
12+ rng:: { self , Rng , rand_core:: SeedableRng as _ , rand_core :: TryRngCore as _ } ,
1313} ;
1414use panic_probe as _;
15- use rand:: Rng as RngTrait ;
15+ use rand:: Rng as _;
16+ use rand_chacha:: ChaCha20Rng ;
1617use static_assertions as sa;
1718
1819const FREQ : u32 = 48_000_000 ;
@@ -53,7 +54,7 @@ mod tests {
5354 // address to use for testing
5455 // incremented by the test after the address is programmed
5556 addr : usize ,
56- rng : Rng ,
57+ rng : ChaCha20Rng ,
5758 }
5859
5960 #[ init]
@@ -71,9 +72,13 @@ mod tests {
7172
7273 let mut rng: Rng = Rng :: new ( dp. RNG , rng:: Clk :: Msi , & mut dp. RCC ) ;
7374
75+ let mut seed: [ u8 ; 32 ] = [ 0 ; 32 ] ;
76+ unwrap ! ( rng. try_fill_u8( & mut seed) ) ;
77+ let mut cha20: ChaCha20Rng = ChaCha20Rng :: from_seed ( seed) ;
78+
7479 // flash only gets 20k program cycles
7580 // change the location each time to prevent wearout of CI boards
76- let page: u8 = rng . gen_range ( 64 ..127 ) ;
81+ let page: u8 = cha20 . random_range ( 64 ..127 ) ;
7782 let page: Page = unwrap ! ( Page :: from_index( page) ) ;
7883
7984 defmt:: info!(
@@ -86,7 +91,7 @@ mod tests {
8691 flash : dp. FLASH ,
8792 page,
8893 addr : page. addr ( ) ,
89- rng,
94+ rng : cha20 ,
9095 }
9196 }
9297
@@ -134,7 +139,7 @@ mod tests {
134139 #[ allow( static_mut_refs) ]
135140 unsafe {
136141 BUF . iter_mut ( )
137- . for_each ( |word| * word = ta. rng . gen_range ( 1 ..u64:: MAX - 1 ) )
142+ . for_each ( |word| * word = ta. rng . random_range ( 1 ..u64:: MAX - 1 ) )
138143 } ;
139144
140145 let mut flash: Flash = Flash :: unlock ( & mut ta. flash ) ;
@@ -160,7 +165,7 @@ mod tests {
160165
161166 #[ test]
162167 fn standard_program ( ta : & mut TestArgs ) {
163- let data: u64 = ta. rng . gen_range ( 1 ..u64:: MAX - 1 ) ;
168+ let data: u64 = ta. rng . random_range ( 1 ..u64:: MAX - 1 ) ;
164169 defmt:: assert_ne!( data, u64 :: MAX ) ;
165170 defmt:: assert_ne!( data, 0 ) ;
166171
@@ -208,7 +213,7 @@ mod tests {
208213 #[ test]
209214 fn program_bytes ( ta : & mut TestArgs ) {
210215 let mut data: [ u8 ; 17 ] = [ 0 ; 17 ] ;
211- ta. rng . fill_bytes ( & mut data) ;
216+ unwrap ! ( ta. rng. try_fill_bytes ( & mut data) ) ;
212217
213218 defmt:: trace!( "data={}" , data) ;
214219
0 commit comments