Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 979803b

Browse files
committedOct 26, 2023
Add type DataSource to better handle serial port and stdio
1 parent dbb7316 commit 979803b

File tree

3 files changed

+11
-141
lines changed

3 files changed

+11
-141
lines changed
 

‎src/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ use crate::io::{save_to_csv, FileOptions};
2121
use crate::serial::{load_serial_settings, serial_thread, Device};
2222

2323
mod data;
24+
mod data_source;
2425
mod gui;
2526
mod io;
2627
mod serial;
27-
mod stdio;
2828
mod toggle;
2929

3030
const APP_INFO: AppInfo = AppInfo {

‎src/serial.rs

+10-16
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
use std::io::{BufRead, BufReader};
1+
use std::io::{BufRead, BufReader, Write};
22
use std::sync::mpsc::{Receiver, Sender};
33
use std::sync::{Arc, RwLock};
44
use std::time::{Duration, Instant};
55

66
use preferences::Preferences;
77
use serde::{Deserialize, Serialize};
8-
use serialport::{DataBits, FlowControl, Parity, SerialPort, StopBits};
8+
use serialport::{DataBits, FlowControl, Parity, StopBits};
99

1010
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};
1213

1314
#[derive(Debug, Clone, Serialize, Deserialize)]
1415
pub 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

8583
fn 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

240238
fn 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(_) => {

‎src/stdio.rs

-124
This file was deleted.

0 commit comments

Comments
 (0)