6
6
use core:: fmt:: Write ;
7
7
use libtock:: console:: Console ;
8
8
use libtock:: result:: TockResult ;
9
- use libtock:: timer;
9
+ use libtock:: timer:: DriverContext ;
10
10
use libtock:: timer:: Duration ;
11
+ use libtock:: Drivers ;
11
12
12
13
const DELAY_MS : usize = 500 ;
13
14
14
15
#[ libtock:: main]
15
16
async fn main ( ) -> TockResult < ( ) > {
16
- let mut console = Console :: new ( ) ;
17
+ let Drivers {
18
+ mut timer_context,
19
+ console_driver,
20
+ ..
21
+ } = libtock:: retrieve_drivers ( ) ?;
22
+ let mut console = console_driver. create_console ( ) ;
23
+
17
24
let mut previous_ticks = None ;
18
25
19
26
for i in 0 .. {
20
- print_now ( & mut console, & mut previous_ticks, i) ?;
21
- timer:: sleep ( Duration :: from_ms ( DELAY_MS as isize ) ) . await ?;
27
+ print_now ( & mut console, & mut timer_context, & mut previous_ticks, i) ?;
28
+ let mut driver = timer_context. create_timer_driver ( ) ;
29
+ let timer_driver = driver. activate ( ) ?;
30
+
31
+ timer_driver. sleep ( Duration :: from_ms ( DELAY_MS ) ) . await ?;
22
32
}
23
33
24
34
Ok ( ( ) )
25
35
}
26
36
27
37
fn print_now (
28
38
console : & mut Console ,
39
+ timer_context : & mut DriverContext ,
29
40
previous_ticks : & mut Option < isize > ,
30
41
i : usize ,
31
42
) -> TockResult < ( ) > {
32
- let mut timer_with_callback = timer :: with_callback ( |_, _| { } ) ;
43
+ let mut timer_with_callback = timer_context . with_callback ( |_, _| { } ) ;
33
44
let timer = timer_with_callback. init ( ) ?;
34
45
let current_clock = timer. get_current_clock ( ) ?;
35
46
let ticks = current_clock. num_ticks ( ) ;
36
47
let frequency = timer. clock_frequency ( ) . hz ( ) ;
37
48
writeln ! (
38
- console,
39
- "[{}] Waited roughly {:? }. Now is {:? } = {:#010x} ticks ({:?} ticks since last time at {} Hz)" ,
40
- i,
41
- PrettyTime :: from_ms( i * DELAY_MS ) ,
42
- PrettyTime :: from_ms( current_clock. ms_f64( ) as usize ) ,
43
- ticks,
44
- previous_ticks. map( |previous| ticks - previous) ,
45
- frequency
46
- ) ?;
49
+ console,
50
+ "[{}] Waited roughly {}. Now is {} = {:#010x} ticks ({:?} ticks since last time at {} Hz)" ,
51
+ i,
52
+ PrettyTime :: from_ms( i * DELAY_MS ) ,
53
+ PrettyTime :: from_ms( current_clock. ms_f64( ) as usize ) ,
54
+ ticks,
55
+ previous_ticks. map( |previous| ticks - previous) ,
56
+ frequency
57
+ ) ?;
47
58
* previous_ticks = Some ( ticks) ;
48
59
Ok ( ( ) )
49
60
}
@@ -64,7 +75,7 @@ impl PrettyTime {
64
75
}
65
76
}
66
77
67
- impl core:: fmt:: Debug for PrettyTime {
78
+ impl core:: fmt:: Display for PrettyTime {
68
79
fn fmt ( & self , f : & mut core:: fmt:: Formatter < ' _ > ) -> core:: fmt:: Result {
69
80
if self . mins != 0 {
70
81
write ! ( f, "{}m" , self . mins) ?
0 commit comments