Skip to main content

android_usb_serial/
config.rs

1//! Line configuration types (no plugin dependency).
2
3/// ASCII XON (DC1).
4pub const CHAR_XON: u8 = 17;
5/// ASCII XOFF (DC3).
6pub const CHAR_XOFF: u8 = 19;
7
8/// Number of data bits in the serial frame.
9#[derive(Debug, Clone, Copy, PartialEq, Eq)]
10pub enum DataBits {
11    Five,
12    Six,
13    Seven,
14    Eight,
15}
16
17/// Parity bit mode.
18#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19pub enum Parity {
20    None,
21    Odd,
22    Even,
23    Mark,
24    Space,
25}
26
27/// Stop bits.
28#[derive(Debug, Clone, Copy, PartialEq, Eq)]
29pub enum StopBits {
30    One,
31    OnePointFive,
32    Two,
33}
34
35/// Hardware / software flow control.
36#[derive(Debug, Clone, Copy, PartialEq, Eq)]
37pub enum FlowControl {
38    None,
39    RtsCts,
40    DtrDsr,
41    /// Host software XON/XOFF (CP21xx).
42    XonXoff,
43    /// Inline filter on RX (FTDI, PL2303).
44    XonXoffInline,
45}
46
47/// Which UART buffers to purge.
48#[derive(Debug, Clone, Copy, PartialEq, Eq)]
49pub enum PurgeKind {
50    Rx,
51    Tx,
52    Both,
53}
54
55/// Baud rate and framing for [`crate::SerialPortHandle::set_line_config`].
56#[derive(Debug, Clone, Copy, PartialEq, Eq)]
57pub struct LineConfig {
58    pub baud_rate: u32,
59    pub data_bits: DataBits,
60    pub parity: Parity,
61    pub stop_bits: StopBits,
62}
63
64impl Default for LineConfig {
65    fn default() -> Self {
66        Self {
67            baud_rate: 115_200,
68            data_bits: DataBits::Eight,
69            parity: Parity::None,
70            stop_bits: StopBits::One,
71        }
72    }
73}