avr_tester/
duration_ext.rs

1use crate::AvrTester;
2use avr_simulator::AvrDuration;
3
4pub trait AvrDurationExt {
5    /// Creates a duration of zero cycles, using clock frequency from given
6    /// [`AvrTester`].
7    ///
8    /// See also: [`AvrDuration::new()`].
9    ///
10    /// # Examples
11    ///
12    /// ```no_run
13    /// # use avr_simulator::AvrDuration;
14    /// # use avr_tester::AvrDurationExt;
15    /// # let avr = panic!();
16    /// #
17    /// let duration = AvrDuration::zero(&avr).with_millis(150);
18    /// ```
19    fn zero(avr: &AvrTester) -> Self;
20
21    /// Creates a duration of `n` microseconds, using clock frequency from given
22    /// [`AvrTester`].
23    ///
24    /// # Examples
25    ///
26    /// ```no_run
27    /// # use avr_simulator::AvrDuration;
28    /// # use avr_tester::AvrDurationExt;
29    /// # let avr = panic!();
30    /// #
31    /// let duration = AvrDuration::micros(&avr, 15);
32    /// ```
33    fn micros(avr: &AvrTester, n: u64) -> Self;
34
35    /// Creates a duration of `n` milliseconds, using clock frequency from given
36    /// [`AvrTester`].
37    ///
38    /// # Examples
39    ///
40    /// ```no_run
41    /// # use avr_simulator::AvrDuration;
42    /// # use avr_tester::AvrDurationExt;
43    /// # let avr = panic!();
44    /// #
45    /// let duration = AvrDuration::millis(&avr, 15);
46    /// ```
47    fn millis(avr: &AvrTester, n: u64) -> Self;
48
49    /// Creates a duration of `n` seconds, using clock frequency from given
50    /// [`AvrTester`].
51    ///
52    /// # Examples
53    ///
54    /// ```no_run
55    /// # use avr_simulator::AvrDuration;
56    /// # use avr_tester::AvrDurationExt;
57    /// # let avr = panic!();
58    /// #
59    /// let duration = AvrDuration::secs(&avr, 15);
60    /// ```
61    fn secs(avr: &AvrTester, n: u64) -> Self;
62}
63
64impl AvrDurationExt for AvrDuration {
65    fn zero(avr: &AvrTester) -> Self {
66        Self::new(avr.clock_frequency, 0)
67    }
68
69    fn micros(avr: &AvrTester, n: u64) -> Self {
70        Self::zero(avr).add_micros(n)
71    }
72
73    fn millis(avr: &AvrTester, n: u64) -> Self {
74        Self::zero(avr).add_millis(n)
75    }
76
77    fn secs(avr: &AvrTester, n: u64) -> Self {
78        Self::zero(avr).add_secs(n)
79    }
80}