1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//! Serial code that is generic to both the TM4C123 and TM4C129, such as the pin traits.

/// TX pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait TxPin<UART> {}

/// RX pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait RxPin<UART> {}

/// CTS pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait CtsPin<UART> {
    /// Enables the CTS functionality if a valid pin is given (not `()`).
    fn enable(&mut self, _uart: &mut UART);
}

/// DCD pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait DcdPin<UART> {
    /// Enables the DCD functionality if a valid pin is given (not `()`).
    fn enable(&mut self, _uart: &mut UART);
}

/// DSR pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait DsrPin<UART> {
    /// Enables the DSR functionality if a valid pin is given (not `()`).
    fn enable(&mut self, _uart: &mut UART);
}

/// DTR pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait DtrPin<UART> {
    /// Enables the DTR functionality if a valid pin is given (not `()`).
    fn enable(&mut self, _uart: &mut UART);
}

/// RI pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait RiPin<UART> {
    /// Enables the RI functionality if a valid pin is given (not `()`).
    fn enable(&mut self, _uart: &mut UART);
}

/// RTS pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait RtsPin<UART> {
    /// Enables the RTS functionality if a valid pin is given (not `()`).
    fn enable(&mut self, _uart: &mut UART);
}

unsafe impl<U> TxPin<U> for () {}

unsafe impl<U> RxPin<U> for () {}

unsafe impl<U> CtsPin<U> for () {
    fn enable(&mut self, _uart: &mut U) {
        // Do nothing
    }
}
unsafe impl<U> DcdPin<U> for () {
    fn enable(&mut self, _uart: &mut U) {
        // Do nothing
    }
}
unsafe impl<U> DsrPin<U> for () {
    fn enable(&mut self, _uart: &mut U) {
        // Do nothing
    }
}
unsafe impl<U> DtrPin<U> for () {
    fn enable(&mut self, _uart: &mut U) {
        // Do nothing
    }
}
unsafe impl<U> RiPin<U> for () {
    fn enable(&mut self, _uart: &mut U) {
        // Do nothing
    }
}
unsafe impl<U> RtsPin<U> for () {
    fn enable(&mut self, _uart: &mut U) {
        // Do nothing
    }
}

/// writeln!() emits LF chars, so this is useful
/// if you're writing text with your UART
#[derive(PartialEq, Clone, Copy)]
pub enum NewlineMode {
    /// Emit octets as received
    Binary,
    /// Emit an extra CR before every LF
    SwapLFtoCRLF,
}