From 556d43654b4e73605802ff564dc9898a130cde62 Mon Sep 17 00:00:00 2001 From: finga Date: Thu, 11 Feb 2021 00:08:21 +0100 Subject: [PATCH] Minimal working prototype Device path and further parameters are hardcoded and stdin is read in a loop. At least data is already sent to the spidriver.. --- .gitignore | 1 + Cargo.lock | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 10 ++++ src/main.rs | 30 ++++++++++++ 4 files changed, 175 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..d7b25d7 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,134 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "anyhow" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1" + +[[package]] +name = "embedded-hal" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa998ce59ec9765d15216393af37a58961ddcefb14c753b4816ba2191d865fcb" +dependencies = [ + "nb 0.1.3", + "void", +] + +[[package]] +name = "ioctl-rs" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7970510895cee30b3e9128319f2cefd4bde883a39f38baa279567ba3a7eb97d" +dependencies = [ + "libc", +] + +[[package]] +name = "libc" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" + +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.0.0", +] + +[[package]] +name = "nb" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae" + +[[package]] +name = "serial" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1237a96570fc377c13baa1b88c7589ab66edced652e43ffb17088f003db3e86" +dependencies = [ + "serial-core", + "serial-unix", + "serial-windows", +] + +[[package]] +name = "serial-core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f46209b345401737ae2125fe5b19a77acce90cd53e1658cda928e4fe9a64581" +dependencies = [ + "libc", +] + +[[package]] +name = "serial-embedded-hal" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7cadc3875ff6a2a8aa4262aa47878f4039b1c42d8db91cd9fa6f352e93b1cc" +dependencies = [ + "embedded-hal", + "nb 0.1.3", + "serial", +] + +[[package]] +name = "serial-unix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f03fbca4c9d866e24a459cbca71283f545a37f8e3e002ad8c70593871453cab7" +dependencies = [ + "ioctl-rs", + "libc", + "serial-core", + "termios", +] + +[[package]] +name = "serial-windows" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c6d3b776267a75d31bbdfd5d36c0ca051251caafc285827052bc53bcdc8162" +dependencies = [ + "libc", + "serial-core", +] + +[[package]] +name = "spidriver" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa901f863b84f3d4cad347bdce67aaf068c1cac1c1070ccbb39e191b2b0f9c3" +dependencies = [ + "embedded-hal", + "nb 0.1.3", +] + +[[package]] +name = "spidrs" +version = "0.1.0" +dependencies = [ + "anyhow", + "serial-embedded-hal", + "spidriver", +] + +[[package]] +name = "termios" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5d9cf598a6d7ce700a4e6a9199da127e6819a61e64b68609683cc9a01b5683a" +dependencies = [ + "libc", +] + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..db5be7d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "spidrs" +version = "0.1.0" +authors = ["finga "] +edition = "2018" + +[dependencies] +anyhow = "1.0" +serial-embedded-hal = "0.1" +spidriver = "0.1" diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..1585007 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,30 @@ +use anyhow::Result; +use serial_embedded_hal::{PortSettings, Serial}; +use spidriver::SPIDriver; + +use std::io; + +fn main() -> Result<()> { + let port = Serial::new( + "/dev/ttyUSB0", + &PortSettings { + baud_rate: serial_embedded_hal::BaudRate::BaudOther(460800), + char_size: serial_embedded_hal::CharSize::Bits8, + parity: serial_embedded_hal::Parity::ParityNone, + stop_bits: serial_embedded_hal::StopBits::Stop1, + flow_control: serial_embedded_hal::FlowControl::FlowNone, + }, + )?; + + let (tx, rx) = port.split(); + let mut spidriver = SPIDriver::new(tx, rx); + loop { + let mut input = String::new(); + io::stdin().read_line(&mut input)?; + + let mut data = input.into_bytes(); + spidriver.transfer(&mut data); + } + + Ok(()) +}