autd3_driver/firmware/driver/
parallel_mode.rs1#[repr(u8)]
3#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
4pub enum ParallelMode {
5 #[default]
9 Auto = 0,
10 On = 1,
12 Off = 2,
14}
15
16impl ParallelMode {
17 #[must_use]
18 pub(crate) const fn is_parallel(self, num_devices: usize, parallel_threshold: usize) -> bool {
19 match self {
20 ParallelMode::On => true,
21 ParallelMode::Off => false,
22 ParallelMode::Auto => num_devices > parallel_threshold,
23 }
24 }
25}
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30
31 #[rstest::rstest]
32 #[case(true, ParallelMode::On, 1, 1)]
33 #[case(true, ParallelMode::On, 2, 1)]
34 #[case(true, ParallelMode::On, 1, 2)]
35 #[case(false, ParallelMode::Off, 1, 1)]
36 #[case(false, ParallelMode::Off, 2, 1)]
37 #[case(false, ParallelMode::Off, 1, 2)]
38 #[case(false, ParallelMode::Auto, 1, 1)]
39 #[case(true, ParallelMode::Auto, 2, 1)]
40 #[case(false, ParallelMode::Auto, 1, 2)]
41 #[test]
42 fn parallel_mode(
43 #[case] expect: bool,
44 #[case] mode: ParallelMode,
45 #[case] num_devices: usize,
46 #[case] threshold: usize,
47 ) {
48 assert_eq!(expect, mode.is_parallel(num_devices, threshold));
49 }
50}