use sysfs_gpio::Pin;
pub trait Device {
fn pin(&self) -> Pin ;
fn close(&self){
let pin = self.pin();
if pin.is_exported() {
pin.unexport().expect("Could not close device");
}
}
fn value(&self) -> i8;
fn is_active(&self) -> bool{
let value = self.value();
if value >= 1 { true } else {false }
}
}
pub trait EventsTrait:Device {
fn wait_for_active(&self) {
loop {
if self.is_active() == true {break;}
}
}
fn wait_for_inactive(&self) {
loop {
if self.is_active() == false {break;}
}
}
}
pub trait CompositeDevices {
fn close(&self);
}