1#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
5pub enum DriveSpeed {
6 BD1x,
7 BD2x,
8 BD4x,
9 BD6x,
10 BD8x,
11 BD10x,
12 BD12x,
13 DVD1x,
14 DVD2x,
15 DVD4x,
16 DVD8x,
17 DVD16x,
18 Max,
19}
20
21impl DriveSpeed {
22 pub fn to_kbps(self) -> u16 {
23 match self {
24 DriveSpeed::BD1x => 4_500,
25 DriveSpeed::BD2x => 9_000,
26 DriveSpeed::BD4x => 18_000,
27 DriveSpeed::BD6x => 27_000,
28 DriveSpeed::BD8x => 36_000,
29 DriveSpeed::BD10x => 45_000,
30 DriveSpeed::BD12x => 54_000,
31 DriveSpeed::DVD1x => 1_385,
32 DriveSpeed::DVD2x => 2_770,
33 DriveSpeed::DVD4x => 5_540,
34 DriveSpeed::DVD8x => 11_080,
35 DriveSpeed::DVD16x => 22_160,
36 DriveSpeed::Max => 0xFFFF,
37 }
38 }
39}
40
41impl std::fmt::Display for DriveSpeed {
42 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43 write!(f, "{:?} ({} KB/s)", self, self.to_kbps())
44 }
45}