From 2374375803b3628f24da070a3b381b499b965a34 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Fri, 17 Mar 2023 08:18:04 -0600 Subject: [PATCH] more libs --- Cargo.lock | 23 +++++++++++++++++++++++ Cargo.toml | 1 + src/engine.rs | 16 ++++++++++++++-- todo.yaml | 3 +++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index acf5035..5a5bb29 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -81,6 +81,18 @@ version = "0.2.140" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +[[package]] +name = "libusb1-sys" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d0e2afce4245f2c9a418511e5af8718bcaf2fa408aefb259504d1a9cb25f27" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-sys" version = "1.1.8" @@ -211,11 +223,22 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "rusb" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703aa035c21c589b34fb5136b12e68fc8dcf7ea46486861381361dd8ebf5cee0" +dependencies = [ + "libc", + "libusb1-sys", +] + [[package]] name = "rusty-pipe" version = "0.1.0" dependencies = [ "rdkafka", + "rusb", "serde", "serde_yaml", ] diff --git a/Cargo.toml b/Cargo.toml index 57065f3..645f6ce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,3 +9,4 @@ edition = "2021" serde = { version = "1.0.156", features = ["derive"] } serde_yaml = "0.9.19" rdkafka = "0.29.0" +rusb = "0.9.1" diff --git a/src/engine.rs b/src/engine.rs index f31d208..e786b2f 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -1,4 +1,5 @@ use crate::config::Engine; +use rusb::UsbContext; pub trait InputEngine { fn get(&mut self) -> Vec; @@ -17,7 +18,18 @@ struct InputEngineDevice { } pub fn build_input_engine_device(cfg: &Engine) -> Result, String> { - let device_cfg = cfg.device.as_ref().unwrap(); + let _device_cfg = cfg.device.as_ref().unwrap(); + + assert!(rusb::has_capability()); + let ctx = rusb::Context::new().unwrap(); + for device in ctx.devices().unwrap().iter() { + let device_desc = device.device_descriptor().unwrap(); + println!("Bus {:03} Device {:03} ID {:04x}:{:04x}", + device.bus_number(), + device.address(), + device_desc.vendor_id(), + device_desc.product_id()); + } return Err("do what".to_string()); } @@ -31,7 +43,7 @@ struct InputEngineKafka { } pub fn build_input_engine_kafka(cfg: &Engine) -> Result, String> { - let kafka_cfg = cfg.kafka.as_ref().unwrap(); + let _kafka_cfg = cfg.kafka.as_ref().unwrap(); return Err("do what".to_string()); } diff --git a/todo.yaml b/todo.yaml index dd1d8b2..490676c 100755 --- a/todo.yaml +++ b/todo.yaml @@ -1,4 +1,7 @@ todo: +- https://github.com/framp/joystick-mapper/tree/master/joystick-mapper-lib +- https://docs.rs/rusb/latest/rusb/ +- https://docs.rs/rusb/latest/rusb/ - 'to kafka_serde ' - to rdkafka for v0.10.0 scheduled: []