imix/
multi_timer_test.rs
1use kernel::debug;
16use kernel::hil::time::Timer;
17use kernel::static_init;
18
19use capsules_core::test::random_timer::TestRandomTimer;
20use capsules_core::virtualizers::virtual_timer::{MuxTimer, VirtualTimer};
21use sam4l::ast::Ast;
22
23pub unsafe fn run_multi_timer(mux: &'static MuxTimer<'static, Ast<'static>>) {
24 debug!("Starting multi timer test.");
25 let tests: [&'static TestRandomTimer<'static, VirtualTimer<'static, Ast<'static>>>; 3] =
26 static_init_multi_timer_test(mux);
27 tests[0].run();
28 tests[1].run();
29 tests[2].run();
30}
31
32unsafe fn static_init_multi_timer_test(
33 mux: &'static MuxTimer<'static, Ast<'static>>,
34) -> [&'static TestRandomTimer<'static, VirtualTimer<'static, Ast<'static>>>; 3] {
35 let virtual_timer1 = static_init!(VirtualTimer<'static, Ast<'static>>, VirtualTimer::new(mux));
36 virtual_timer1.setup();
37
38 let test1 = static_init!(
39 TestRandomTimer<'static, VirtualTimer<'static, Ast<'static>>>,
40 TestRandomTimer::new(virtual_timer1, 19, 'A')
41 );
42 virtual_timer1.set_timer_client(test1);
43
44 let virtual_timer2 = static_init!(VirtualTimer<'static, Ast<'static>>, VirtualTimer::new(mux));
45 virtual_timer2.setup();
46
47 let test2 = static_init!(
48 TestRandomTimer<'static, VirtualTimer<'static, Ast<'static>>>,
49 TestRandomTimer::new(virtual_timer2, 37, 'B')
50 );
51 virtual_timer2.set_timer_client(test2);
52
53 let virtual_timer3 = static_init!(VirtualTimer<'static, Ast<'static>>, VirtualTimer::new(mux));
54 virtual_timer3.setup();
55
56 let test3 = static_init!(
57 TestRandomTimer<'static, VirtualTimer<'static, Ast<'static>>>,
58 TestRandomTimer::new(virtual_timer3, 89, 'C')
59 );
60 virtual_timer3.set_timer_client(test3);
61 [&*test1, &*test2, &*test3]
62}