summaryrefslogtreecommitdiff
path: root/src/app.rs
diff options
context:
space:
mode:
authorXavier Del Campo <xavi92psx@gmail.com>2018-12-31 00:28:46 +0100
committerXavier Del Campo <xavi92psx@gmail.com>2018-12-31 00:28:46 +0100
commit42f2476aeebc5eb5a9366a6a366c9678eba6eb1b (patch)
tree2098f4cdd976edae82d841f56298a6030512a792 /src/app.rs
parentb47361f283777f266970f9c082782ebac6c04aef (diff)
downloadrspsxserial-42f2476aeebc5eb5a9366a6a366c9678eba6eb1b.tar.gz
Some more work, but it still does not compile
Diffstat (limited to 'src/app.rs')
-rw-r--r--src/app.rs22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/app.rs b/src/app.rs
index 360cbe4..c766576 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -53,7 +53,19 @@ fn setup_tcp(tcp_addr : &String) -> io::Result<()> {
}
fn serial_comm(addr : Option<&String>, port_name : &String, baud_rate : Option<&String>) -> io::Result<()> {
- let port = serial_init(addr, port_name, baud_rate).unwrap();
+ use transfer;
+ use transfer::TransferState;
+
+ let mut port = serial_init(addr, port_name, baud_rate).unwrap();
+
+ let mut state = TransferState::FirstContact;
+
+ loop {
+ state = match state {
+ TransferState::FirstContact => transfer::first_contact(&mut port),
+ _ => TransferState::Finished
+ }
+ }
Ok(())
}
@@ -67,13 +79,19 @@ fn serial_init(addr : Option<&String>, port_name : &String, baud_rate : Option<&
// a SystemPort instance will be returned.
let port = serial::open(port_name);
+ // This variable will be bound to a SystemPort
+ // instance if everything could be configured successfully.
let mut port_unwrapped;
let baud = match baud_rate {
- None => serial::Baud4800,
+ // Assign default baud rate if no
+ // option was specified.
+ None => serial::Baud115200,
Some(b) => {
match b.parse() {
+ // Parse user-specific baud rate.
Ok(s) => serial::BaudRate::from_speed(s),
+ // Could not parse input baud rate.
Err(_) => return Err(io::Error::new(io::ErrorKind::Other, "Invalid baudrate")),
}
}