@@ -5,17 +5,13 @@ use miette::{Context, Result};
5
5
use rppal:: gpio:: { Gpio , OutputPin } ;
6
6
use serialport:: { FlowControl , SerialPort , SerialPortInfo } ;
7
7
8
- use crate :: {
9
- cli:: { config:: Config , ConnectArgs } ,
10
- error:: Error ,
11
- } ;
8
+ use crate :: error:: Error ;
12
9
13
10
#[ derive( thiserror:: Error , Debug ) ]
14
11
pub enum SerialConfigError {
15
12
#[ cfg( feature = "raspberry" ) ]
16
13
#[ error( "You need to specify both DTR and RTS pins when using an internal UART peripheral" ) ]
17
14
MissingDtrRtsForInternalUart ,
18
-
19
15
#[ cfg( feature = "raspberry" ) ]
20
16
#[ error( "GPIO {0} is not available" ) ]
21
17
GpioUnavailable ( u8 ) ,
@@ -55,22 +51,19 @@ impl Interface {
55
51
#[ cfg( feature = "raspberry" ) ]
56
52
pub ( crate ) fn new (
57
53
port_info : & SerialPortInfo ,
58
- args : & ConnectArgs ,
59
- config : & Config ,
54
+ dtr : Option < u8 > ,
55
+ rts : Option < u8 > ,
60
56
) -> Result < Self > {
61
- let rts_gpio = args. rts . or ( config. connection . rts ) ;
62
- let dtr_gpio = args. dtr . or ( config. connection . dtr ) ;
63
-
64
57
if port_info. port_type == serialport:: SerialPortType :: Unknown
65
- && ( dtr_gpio . is_none ( ) || rts_gpio . is_none ( ) )
58
+ && ( dtr . is_none ( ) || rts . is_none ( ) )
66
59
{
67
60
// Assume internal UART, which has no DTR pin and usually no RTS either.
68
61
return Err ( Error :: from ( SerialConfigError :: MissingDtrRtsForInternalUart ) . into ( ) ) ;
69
62
}
70
63
71
64
let gpios = Gpio :: new ( ) . unwrap ( ) ;
72
65
73
- let rts = if let Some ( gpio) = rts_gpio {
66
+ let rts = if let Some ( gpio) = rts {
74
67
match gpios. get ( gpio) {
75
68
Ok ( pin) => Some ( pin. into_output ( ) ) ,
76
69
Err ( _) => return Err ( Error :: from ( SerialConfigError :: GpioUnavailable ( gpio) ) . into ( ) ) ,
@@ -79,7 +72,7 @@ impl Interface {
79
72
None
80
73
} ;
81
74
82
- let dtr = if let Some ( gpio) = dtr_gpio {
75
+ let dtr = if let Some ( gpio) = dtr {
83
76
match gpios. get ( gpio) {
84
77
Ok ( pin) => Some ( pin. into_output ( ) ) ,
85
78
Err ( _) => return Err ( Error :: from ( SerialConfigError :: GpioUnavailable ( gpio) ) . into ( ) ) ,
@@ -98,8 +91,8 @@ impl Interface {
98
91
#[ cfg( not( feature = "raspberry" ) ) ]
99
92
pub ( crate ) fn new (
100
93
port_info : & SerialPortInfo ,
101
- _args : & ConnectArgs ,
102
- _config : & Config ,
94
+ _dtr : Option < u8 > ,
95
+ _rts : Option < u8 > ,
103
96
) -> Result < Self > {
104
97
Ok ( Self {
105
98
serial_port : open_port ( port_info) ?,
0 commit comments