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..
This commit is contained in:
finga 2021-02-11 00:08:21 +01:00
commit 556d43654b
4 changed files with 175 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/target

134
Cargo.lock generated Normal file
View file

@ -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"

10
Cargo.toml Normal file
View file

@ -0,0 +1,10 @@
[package]
name = "spidrs"
version = "0.1.0"
authors = ["finga <finga@onders.org>"]
edition = "2018"
[dependencies]
anyhow = "1.0"
serial-embedded-hal = "0.1"
spidriver = "0.1"

30
src/main.rs Normal file
View file

@ -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(())
}