libfreemkv 0.7.0

Open source raw disc access library for optical drives
Documentation
//! Drive speed constants.

/// Common optical drive speeds with KB/s values for SET_CD_SPEED.
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum DriveSpeed {
    BD1x, BD2x, BD4x, BD6x, BD8x, BD10x, BD12x,
    DVD1x, DVD2x, DVD4x, DVD8x, DVD16x,
    Max,
}

impl DriveSpeed {
    pub fn to_kbps(self) -> u16 {
        match self {
            DriveSpeed::BD1x   => 4_500,
            DriveSpeed::BD2x   => 9_000,
            DriveSpeed::BD4x   => 18_000,
            DriveSpeed::BD6x   => 27_000,
            DriveSpeed::BD8x   => 36_000,
            DriveSpeed::BD10x  => 45_000,
            DriveSpeed::BD12x  => 54_000,
            DriveSpeed::DVD1x  => 1_385,
            DriveSpeed::DVD2x  => 2_770,
            DriveSpeed::DVD4x  => 5_540,
            DriveSpeed::DVD8x  => 11_080,
            DriveSpeed::DVD16x => 22_160,
            DriveSpeed::Max    => 0xFFFF,
        }
    }
}

impl std::fmt::Display for DriveSpeed {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{:?} ({} KB/s)", self, self.to_kbps())
    }
}