Skip to content

Commit 6cbac75

Browse files
gendxtorfmaster
authored andcommitted
Move print_now to a standalone function, to make sure the timer driver is dropped before being used again.
1 parent a521439 commit 6cbac75

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

examples/now.rs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,32 @@ use libtock::result::TockResult;
99
use libtock::timer;
1010
use libtock::timer::Duration;
1111

12+
const DELAY_MS: usize = 500;
13+
1214
#[libtock::main]
1315
async fn main() -> TockResult<()> {
14-
const DELAY_MS: usize = 500;
15-
1616
let mut console = Console::new();
1717
let mut previous_ticks = None;
1818

1919
for i in 0.. {
20-
let mut timer_with_callback = timer::with_callback(|_, _| {});
21-
let timer = timer_with_callback.init()?;
22-
let current_clock = timer.get_current_clock()?;
23-
let ticks = current_clock.num_ticks();
24-
let frequency = timer.clock_frequency().hz();
25-
writeln!(
20+
print_now(&mut console, &mut previous_ticks, i)?;
21+
timer::sleep(Duration::from_ms(DELAY_MS as isize)).await?;
22+
}
23+
24+
Ok(())
25+
}
26+
27+
fn print_now(
28+
console: &mut Console,
29+
previous_ticks: &mut Option<isize>,
30+
i: usize,
31+
) -> TockResult<()> {
32+
let mut timer_with_callback = timer::with_callback(|_, _| {});
33+
let timer = timer_with_callback.init()?;
34+
let current_clock = timer.get_current_clock()?;
35+
let ticks = current_clock.num_ticks();
36+
let frequency = timer.clock_frequency().hz();
37+
writeln!(
2638
console,
2739
"[{}] Waited roughly {:?}. Now is {:?} = {:#010x} ticks ({:?} ticks since last time at {} Hz)",
2840
i,
@@ -32,10 +44,7 @@ async fn main() -> TockResult<()> {
3244
previous_ticks.map(|previous| ticks - previous),
3345
frequency
3446
)?;
35-
previous_ticks = Some(ticks);
36-
timer::sleep(Duration::from_ms(DELAY_MS as isize)).await?;
37-
}
38-
47+
*previous_ticks = Some(ticks);
3948
Ok(())
4049
}
4150

0 commit comments

Comments
 (0)