1
- use std:: io:: { BufRead , BufReader } ;
1
+ use std:: io:: { BufRead , BufReader , Write } ;
2
2
use std:: sync:: mpsc:: { Receiver , Sender } ;
3
3
use std:: sync:: { Arc , RwLock } ;
4
4
use std:: time:: { Duration , Instant } ;
5
5
6
6
use preferences:: Preferences ;
7
7
use serde:: { Deserialize , Serialize } ;
8
- use serialport:: { DataBits , FlowControl , Parity , SerialPort , StopBits } ;
8
+ use serialport:: { DataBits , FlowControl , Parity , StopBits } ;
9
9
10
10
use crate :: data:: { get_epoch_ms, SerialDirection } ;
11
- use crate :: { print_to_console, stdio, Packet , Print , APP_INFO , PREFS_KEY_SERIAL } ;
11
+ use crate :: data_source:: DataSource ;
12
+ use crate :: { print_to_console, Packet , Print , APP_INFO , PREFS_KEY_SERIAL } ;
12
13
13
14
#[ derive( Debug , Clone , Serialize , Deserialize ) ]
14
15
pub struct SerialDevices {
@@ -74,16 +75,13 @@ impl Default for Device {
74
75
}
75
76
}
76
77
77
- fn serial_write (
78
- port : & mut BufReader < Box < dyn SerialPort > > ,
79
- cmd : & [ u8 ] ,
80
- ) -> Result < usize , std:: io:: Error > {
78
+ fn serial_write ( port : & mut BufReader < DataSource > , cmd : & [ u8 ] ) -> Result < usize , std:: io:: Error > {
81
79
let write_port = port. get_mut ( ) ;
82
80
write_port. write ( cmd)
83
81
}
84
82
85
83
fn serial_read (
86
- port : & mut BufReader < Box < dyn SerialPort > > ,
84
+ port : & mut BufReader < DataSource > ,
87
85
serial_buf : & mut String ,
88
86
) -> Result < usize , std:: io:: Error > {
89
87
port. read_line ( serial_buf)
@@ -118,7 +116,7 @@ pub fn serial_thread(
118
116
}
119
117
print_to_console ( & print_lock, Print :: Ok ( format ! ( "Connected to stdio" ) ) ) ;
120
118
121
- BufReader :: new ( Box :: new ( stdio :: Stdio ) as _ )
119
+ BufReader :: new ( DataSource :: Stdio )
122
120
} else {
123
121
match serialport:: new ( & device. name , device. baud_rate )
124
122
. timeout ( Duration :: from_millis ( 100 ) )
@@ -135,7 +133,7 @@ pub fn serial_thread(
135
133
device. name, device. baud_rate
136
134
) ) ,
137
135
) ;
138
- BufReader :: new ( p )
136
+ BufReader :: new ( DataSource :: SerialPort ( p ) )
139
137
}
140
138
Err ( err) => {
141
139
if let Ok ( mut write_guard) = device_lock. write ( ) {
@@ -238,7 +236,7 @@ fn disconnected(
238
236
}
239
237
240
238
fn perform_writes (
241
- port : & mut BufReader < Box < dyn SerialPort > > ,
239
+ port : & mut BufReader < DataSource > ,
242
240
send_rx : & Receiver < String > ,
243
241
raw_data_tx : & Sender < Packet > ,
244
242
t_zero : Instant ,
@@ -261,11 +259,7 @@ fn perform_writes(
261
259
}
262
260
}
263
261
264
- fn perform_reads (
265
- port : & mut BufReader < Box < dyn SerialPort > > ,
266
- raw_data_tx : & Sender < Packet > ,
267
- t_zero : Instant ,
268
- ) {
262
+ fn perform_reads ( port : & mut BufReader < DataSource > , raw_data_tx : & Sender < Packet > , t_zero : Instant ) {
269
263
let mut buf = "" . to_string ( ) ;
270
264
match serial_read ( port, & mut buf) {
271
265
Ok ( _) => {
0 commit comments