nvme/ds/
mod.rs

1use std::time::Duration;
2
3pub mod cmd;
4pub mod controller;
5pub mod identify;
6pub mod namespace;
7pub mod queue;
8pub mod sgl;
9pub mod status;
10pub mod uuid;
11
12pub type Address = u64;
13
14pub type InterruptVector = u16;
15
16#[derive(Default, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
17pub struct OneHundredMilliseconds(u16);
18
19impl From<OneHundredMilliseconds> for Duration {
20    fn from(o: OneHundredMilliseconds) -> Self {
21        Duration::from_millis(o.0 as u64 * 100)
22    }
23}
24
25#[derive(Default, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
26pub struct Microseconds(u32);
27
28impl From<Microseconds> for Duration {
29    fn from(m: Microseconds) -> Self {
30        Duration::from_micros(m.0 as u64)
31    }
32}
33
34#[derive(Default, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
35pub struct Minutes(u16);
36
37impl From<Minutes> for Duration {
38    fn from(m: Minutes) -> Self {
39        Duration::from_millis(m.0 as u64 * 1000 * 60)
40    }
41}
42
43#[derive(Default, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
44pub struct Seconds(u8);
45
46impl From<Seconds> for Duration {
47    fn from(m: Seconds) -> Self {
48        Duration::from_millis(m.0 as u64 * 1000)
49    }
50}
51
52use modular_bitfield::prelude::*;
53
54#[bitfield]
55#[derive(BitfieldSpecifier, Default, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
56pub struct HalfSeconds(u8);
57
58impl From<HalfSeconds> for Duration {
59    fn from(m: HalfSeconds) -> Self {
60        Duration::from_millis(m.get_0() as u64 * 500)
61    }
62}