use crate::lib_enum;
use crate::result::{Error, Result};
lib_enum! {
AccessTimeValue: u8 {
default: Value10,
error: Error,
Value10 = 0x1,
Value12 = 0x2,
Value13 = 0x3,
Value15 = 0x4,
Value20 = 0x5,
Value25 = 0x6,
Value30 = 0x7,
Value35 = 0x8,
Value40 = 0x9,
Value45 = 0xa,
Value50 = 0xb,
Value55 = 0xc,
Value60 = 0xd,
Value70 = 0xe,
Value80 = 0xf,
}
}
impl AccessTimeValue {
pub const fn value(&self) -> f32 {
match self {
Self::Value10 => 1.0,
Self::Value12 => 1.2,
Self::Value13 => 1.3,
Self::Value15 => 1.5,
Self::Value20 => 2.0,
Self::Value25 => 2.5,
Self::Value30 => 3.0,
Self::Value35 => 3.5,
Self::Value40 => 4.0,
Self::Value45 => 4.5,
Self::Value50 => 5.0,
Self::Value55 => 5.5,
Self::Value60 => 6.0,
Self::Value70 => 7.0,
Self::Value80 => 8.0,
}
}
pub const fn value_int(&self) -> u32 {
match self {
Self::Value10 => 10,
Self::Value12 => 12,
Self::Value13 => 13,
Self::Value15 => 15,
Self::Value20 => 20,
Self::Value25 => 25,
Self::Value30 => 30,
Self::Value35 => 35,
Self::Value40 => 40,
Self::Value45 => 45,
Self::Value50 => 50,
Self::Value55 => 55,
Self::Value60 => 60,
Self::Value70 => 70,
Self::Value80 => 80,
}
}
pub const fn try_from_inner(val: u8) -> Result<Self> {
Self::from_raw(val)
}
pub const fn into_inner(self) -> u8 {
self.into_raw()
}
}