1- use std:: io:: { BufRead , BufReader } ;
1+ use std:: io:: { BufRead , BufReader , Write } ;
22use std:: sync:: mpsc:: { Receiver , Sender } ;
33use std:: sync:: { Arc , RwLock } ;
44use std:: time:: { Duration , Instant } ;
55
66use preferences:: Preferences ;
77use serde:: { Deserialize , Serialize } ;
8- use serialport:: { DataBits , FlowControl , Parity , SerialPort , StopBits } ;
8+ use serialport:: { DataBits , FlowControl , Parity , StopBits } ;
99
1010use 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 } ;
1213
1314#[ derive( Debug , Clone , Serialize , Deserialize ) ]
1415pub struct SerialDevices {
@@ -74,16 +75,13 @@ impl Default for Device {
7475 }
7576}
7677
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 > {
8179 let write_port = port. get_mut ( ) ;
8280 write_port. write ( cmd)
8381}
8482
8583fn serial_read (
86- port : & mut BufReader < Box < dyn SerialPort > > ,
84+ port : & mut BufReader < DataSource > ,
8785 serial_buf : & mut String ,
8886) -> Result < usize , std:: io:: Error > {
8987 port. read_line ( serial_buf)
@@ -118,7 +116,7 @@ pub fn serial_thread(
118116 }
119117 print_to_console ( & print_lock, Print :: Ok ( format ! ( "Connected to stdio" ) ) ) ;
120118
121- BufReader :: new ( Box :: new ( stdio :: Stdio ) as _ )
119+ BufReader :: new ( DataSource :: Stdio )
122120 } else {
123121 match serialport:: new ( & device. name , device. baud_rate )
124122 . timeout ( Duration :: from_millis ( 100 ) )
@@ -135,7 +133,7 @@ pub fn serial_thread(
135133 device. name, device. baud_rate
136134 ) ) ,
137135 ) ;
138- BufReader :: new ( p )
136+ BufReader :: new ( DataSource :: SerialPort ( p ) )
139137 }
140138 Err ( err) => {
141139 if let Ok ( mut write_guard) = device_lock. write ( ) {
@@ -238,7 +236,7 @@ fn disconnected(
238236}
239237
240238fn perform_writes (
241- port : & mut BufReader < Box < dyn SerialPort > > ,
239+ port : & mut BufReader < DataSource > ,
242240 send_rx : & Receiver < String > ,
243241 raw_data_tx : & Sender < Packet > ,
244242 t_zero : Instant ,
@@ -261,11 +259,7 @@ fn perform_writes(
261259 }
262260}
263261
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 ) {
269263 let mut buf = "" . to_string ( ) ;
270264 match serial_read ( port, & mut buf) {
271265 Ok ( _) => {
0 commit comments