From 104d8a862d31914a02a62a3cd445bd475141ba64 Mon Sep 17 00:00:00 2001 From: George Kaklamanos Date: Tue, 21 Nov 2023 21:39:48 +0200 Subject: [PATCH] Use struct for passing module arguments: gpio --- labadoor-gpio/src/lib.rs | 19 +++++++++++++------ labadoor/src/main.rs | 9 ++------- labadoor/src/to_config.rs | 12 ++++++++++++ 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/labadoor-gpio/src/lib.rs b/labadoor-gpio/src/lib.rs index a638896..f129008 100644 --- a/labadoor-gpio/src/lib.rs +++ b/labadoor-gpio/src/lib.rs @@ -1,13 +1,20 @@ use gpio_cdev::{Chip, LineRequestFlags}; -pub fn gpio(device: String, pin: u8, active_low: bool, active_time: u32) { - let mut chip = Chip::new(device).unwrap(); +pub struct GPIOArgs { + pub device: String, + pub pin: u8, + pub active_low: bool, + pub active_time: u32, +} + +pub fn gpio(args: GPIOArgs) { + let mut chip = Chip::new(args.device).unwrap(); let handle = chip - .get_line(pin as u32) + .get_line(args.pin as u32) .unwrap() .request(LineRequestFlags::OUTPUT, 1, "labadoor-gpio") .unwrap(); - handle.set_value(!active_low as u8).unwrap(); - std::thread::sleep(std::time::Duration::from_millis(active_time as u64)); - handle.set_value(active_low as u8).unwrap(); + handle.set_value(!args.active_low as u8).unwrap(); + std::thread::sleep(std::time::Duration::from_millis(args.active_time as u64)); + handle.set_value(args.active_low as u8).unwrap(); } diff --git a/labadoor/src/main.rs b/labadoor/src/main.rs index 6f4e69d..9cb5f80 100644 --- a/labadoor/src/main.rs +++ b/labadoor/src/main.rs @@ -31,13 +31,8 @@ fn main() { } #[cfg(feature = "gpio")] cli::Command::GPIO(_) => { - let gpio = config.get::("gpio").unwrap(); - labadoor_gpio::gpio( - gpio.device.unwrap(), - gpio.pin.unwrap(), - gpio.active_low.unwrap(), - gpio.active_time.unwrap(), - ); + let gpio = config.get::("gpio").unwrap().to_config(); + labadoor_gpio::gpio(gpio); } } } diff --git a/labadoor/src/to_config.rs b/labadoor/src/to_config.rs index 492baec..2f9f14a 100644 --- a/labadoor/src/to_config.rs +++ b/labadoor/src/to_config.rs @@ -23,3 +23,15 @@ impl ToConfig for Matrix { } } } + +#[cfg(feature = "gpio")] +impl ToConfig for GPIO { + fn to_config(&self) -> labadoor_gpio::GPIOArgs { + labadoor_gpio::GPIOArgs { + device: self.device.clone().unwrap(), + pin: self.pin.unwrap(), + active_low: self.active_low.unwrap(), + active_time: self.active_time.unwrap(), + } + } +}