|
1 | | -// puse crate::legacy::errors::TockLoaderError; |
2 | 1 | pub mod errors; |
3 | 2 |
|
| 3 | +use crate::legacy::errors::TockloaderError; |
4 | 4 | use bytes::{Buf, BufMut, BytesMut}; |
5 | | -use clap::{Arg, Command}; |
6 | 5 | use console::Term; |
7 | 6 | use futures::stream::{SplitSink, SplitStream}; |
8 | | -use futures::{select, SinkExt, StreamExt}; |
9 | | -use inquire::Text; |
10 | | -use ratatui::text::Line; |
11 | | -use tokio::task::JoinHandle; |
12 | | -// use tokio_stream::StreamExt; |
13 | | -use crossterm::{ |
14 | | - cursor::{MoveTo, MoveToColumn, MoveUp, RestorePosition, SavePosition}, |
15 | | - terminal::{Clear, ClearType}, |
16 | | - ExecutableCommand, |
17 | | -}; |
18 | | -// use std::io::{stdout, Write}; |
19 | | -use tokio::sync::{mpsc, watch}; |
20 | | - |
21 | | -use crate::legacy::errors::TockloaderError; |
22 | | -use std::io::{self, stdin, stdout, Write}; |
23 | | -use std::ptr::write_volatile; |
24 | | -use std::sync::Arc; |
25 | | -use std::time::Duration; |
26 | | -use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader}; |
| 7 | +use futures::{SinkExt, StreamExt}; |
| 8 | +use std::io::{self, Write}; |
27 | 9 | use tokio::signal; |
28 | | -use tokio::time::timeout; |
29 | 10 | use tokio_serial::{SerialPortBuilderExt, SerialStream}; |
30 | | -use tokio_util::codec::LinesCodec; |
31 | 11 | use tokio_util::codec::{Decoder, Encoder, Framed}; |
32 | 12 |
|
33 | | -// pub mod errors; |
34 | 13 | #[derive(Debug)] |
35 | 14 | struct TerminalCodec; |
36 | 15 |
|
37 | 16 | pub async fn run() { |
38 | 17 | println!("Connecting to board... (press Ctrl+C to stop)"); |
39 | 18 |
|
40 | | - let stream = tokio_serial::new("/dev/ttyACM0", 115_200) |
41 | | - .open_native_async() |
42 | | - .unwrap(); |
| 19 | + let stream = tokio_serial::new("/dev/ttyACM0", 115_200).open_native_async(); |
43 | 20 |
|
44 | | - let (writer, reader) = Framed::new(stream, TerminalCodec).split(); |
| 21 | + match stream { |
| 22 | + Ok(stream) => { |
| 23 | + let (writer, reader) = Framed::new(stream, TerminalCodec).split(); |
45 | 24 |
|
46 | | - let reader_handle = tokio::spawn(listen_serial(reader)); |
47 | | - let writer_handle = tokio::spawn(write_serial(writer)); |
| 25 | + let reader_handle = tokio::spawn(listen_serial(reader)); |
| 26 | + let writer_handle = tokio::spawn(write_serial(writer)); |
48 | 27 |
|
49 | | - let _ = tokio::join!(reader_handle, writer_handle); |
| 28 | + let _ = tokio::join!(reader_handle, writer_handle); |
| 29 | + } |
| 30 | + Err(e) => { |
| 31 | + println!("{:?}", e); |
| 32 | + } |
| 33 | + } |
50 | 34 | } |
51 | 35 |
|
52 | 36 | async fn listen_serial( |
@@ -109,9 +93,7 @@ async fn write_serial( |
109 | 93 | }; |
110 | 94 |
|
111 | 95 | tokio::select! { |
112 | | - _ = ctrl_c => { |
113 | | - println!("Writer interrupted."); |
114 | | - } |
| 96 | + _ = ctrl_c => {} |
115 | 97 | res = write_task => { |
116 | 98 | res?; |
117 | 99 | } |
|
0 commit comments