Skip to main content

serialport_stream/
types.rs

1//! Serial port configuration types (formerly re-exported from serialport-rs).
2
3/// Number of data bits per character.
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5pub enum DataBits {
6    Five,
7    Six,
8    Seven,
9    Eight,
10}
11
12impl From<DataBits> for u8 {
13    fn from(bits: DataBits) -> u8 {
14        match bits {
15            DataBits::Five => 5,
16            DataBits::Six => 6,
17            DataBits::Seven => 7,
18            DataBits::Eight => 8,
19        }
20    }
21}
22
23impl TryFrom<u8> for DataBits {
24    type Error = ();
25
26    fn try_from(value: u8) -> Result<Self, Self::Error> {
27        match value {
28            5 => Ok(DataBits::Five),
29            6 => Ok(DataBits::Six),
30            7 => Ok(DataBits::Seven),
31            8 => Ok(DataBits::Eight),
32            _ => Err(()),
33        }
34    }
35}
36
37/// Parity checking mode.
38#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
39pub enum Parity {
40    None,
41    Odd,
42    Even,
43}
44
45/// Number of stop bits.
46#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
47pub enum StopBits {
48    One,
49    Two,
50}
51
52impl From<StopBits> for u8 {
53    fn from(bits: StopBits) -> u8 {
54        match bits {
55            StopBits::One => 1,
56            StopBits::Two => 2,
57        }
58    }
59}
60
61impl TryFrom<u8> for StopBits {
62    type Error = ();
63
64    fn try_from(value: u8) -> Result<Self, Self::Error> {
65        match value {
66            1 => Ok(StopBits::One),
67            2 => Ok(StopBits::Two),
68            _ => Err(()),
69        }
70    }
71}
72
73/// Flow control mode.
74#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
75pub enum FlowControl {
76    None,
77    Software,
78    Hardware,
79}
80
81/// Buffer(s) to clear.
82#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
83pub enum ClearBuffer {
84    All,
85    Input,
86    Output,
87}