From 228b3663205d68b3bf35d519bae49a7f80321d14 Mon Sep 17 00:00:00 2001 From: Tobias Reisinger Date: Sun, 5 May 2024 23:46:49 +0200 Subject: [PATCH] Move relay drivers from common to controller --- Cargo.lock | Bin 65053 -> 65662 bytes Cargo.toml | 6 +---- src/drivers/gpio.rs | 35 ------------------------ src/drivers/mod.rs | 19 ------------- src/drivers/null.rs | 26 ------------------ src/drivers/piface.rs | 52 ------------------------------------ src/errors/emgauwa_error.rs | 22 --------------- src/lib.rs | 1 - 8 files changed, 1 insertion(+), 160 deletions(-) delete mode 100644 src/drivers/gpio.rs delete mode 100644 src/drivers/mod.rs delete mode 100644 src/drivers/null.rs delete mode 100644 src/drivers/piface.rs diff --git a/Cargo.lock b/Cargo.lock index 97554c4beee0241be701e925b375e132234343c8..18d357b90c022e29bfdfbe1da842f26f22088dad 100644 GIT binary patch delta 2365 zcmaJ@ZD`$B8Rw>Hmo}EAvq{>9u4ybQj3s@}`#H|`-s1e?U~4i)6=mZ&Zy2`RbWL;) z6;{9aNpL$L_`#uwPTWhyKa{b-=0GR-VXi3di=Zp}qWR)L5kqR2YQt05Upj1S3DTpXY%7o?QDcKrx4%*pB?c~aAw{`q{ zuiH9t`e09wYC0u-lw^X7MkT3@t`tQO!AVNeB&Sp$gKcDVcoj05LLvM{3ngP|%dgF} zR~K);Bdrg=P%dvin$XESE!idNezv&Mo7>o2yv)PAzP4}x*Ed$zhx2FW7idW=iFW?* zavvp0cv*|nk*u}SWvik$H5)^mWC%XvO3dEITC#SIiHlAyIiXBw%MZ^?tq=dR%i{v`pnVx)zd5elF(qJ#Ih=reN6)Os?wx` z_ciLsmb!P(ynEZ;&kxh*o@#%c<-TJtG8b|_ z6%K|;Xa-v{h*XkRA#WeP#Nv(SknM;+Y;3vW8DjhH)g#@D?zue^pi3_i#P`N8j(4l~ zezw@&Aw9}pcglJrGW(WWMoi;FH-n^O|eG~SrqyG=nm z{=4~Zc=o=r?*0Ca**0}`WuO(SB$Pti84t>!nJOTNx%v`yl%iCFx*pPFZ#Y^j1f(EE zHUf}C$?c_!N81aZda--t)4b3#?TN7m`$Ee=N;8lpC*c)xro<>?3dK8Do@wtq@u7C<%NKfKRB=E~FWY4LRFTq3bx)|kk@-bPIi=?aus%$}+@J_1xNQeoS15%>cQ7$;ItCl{bpdsVw_UCWy8{0{tcB4Pn?)|}RxBs~-yF@60MxmnDzp)WV(DNDPg1ovU!K{Q zE{~$1z4?*3?k~T*d%T_e`GrA%w4-)WIS0`MPR>B00ZC?MH9$^BPu?TSI9VzlRBF(r z1PdQ(*+K61i<9l`U!7}PZy&v5?eSX}^6k=ZR|W;P6-JxlCHbh?aD|aV9E~NNAj43Y zeB}thiA{nS6C-tm(@HU`ZHC_OPu;aEgV7A!Twil7M*uwO5F|qN|7REqD2fMmCw!81< zEzL_g>b{>9hGy0kR&`{eWQ`z4C}!iyc$1Ok7AaK&xb!Sx7=;nXuE2dcmr=@0tPXSe z;u>FSzwb|<`u`|AxjG!KKRKEz-Tv!0?wZ;8e#_Bpd*|vh@-HINOaU(r4Z$)osw$u` z8kxkfkg~*}jFTmeFc38gqmk4w3x^>fY delta 2096 zcmZuyTZrDp73bS*lkJwo2+3X&313#K1>+R9$zMAD(fSFz6{h1h6i$ht_FiY*^iK*_B(J#j~Ts_jA*|@ZR zgl5~t$%T3LfJ8+l7uZ`e%9mmj+Te`iP)#U+Ffs)&O2MKzXgIZzpHAw#~b5 zYF};H+%CanH?d`UtUYq~;-Es!Atoa0JbLR*ElyRVN@DPY(Sb3Ra$(tLIi;O}Tmlqh zJSOhW-n75h{&o3*fiDm(J5458Qra6=3q{I~y>p0}V<9N=Hl|vX&juVNZ!3Ye>`Ut{ zO?9I?ez~z{8k}03Gi11cw4f6?GzClYNQ|l`bSAoB2|`WT6f!pEnhIrQ5(POE+F3Q( zzPN33w`td}dTmNgwWZyE?l!<@2bMoi=2Ffuf9jJO;P*X(|fKzsc z5n`Ly;jebYLOe>l zE{O;-ctwO5OAw5M(*m0f7O0(56J7u5_eR<;9$MU+QYLi85Qxfw0FqWYJCQIr(XYX3 z6GxF?vc`H9NavEXHA7u_-F7}P*p6)?Ii8ry9MnIA9i6c;kbE zVk0@0yKr%_SQim|(TY(k(Ljz~%PM*e(rF~E*;E)d+RmR`|I;D2X2@;p9pBQ-V>`F5 z(K$2z`?9inc=_@ETz^K6v^ySL95@hl1g(pFN^#KWoTVf>7JFG8iNvvJvJ$RK6#*tu zwJ|BNVX1kGWh_k9DK+}n>Ga3fQG)2XhZp2R;63>u@-sq}5eAdkP`jdxSFB>@Y@$!Z zQXxwanIz645(z{|wcQvd+NI-TZR7E=oBK0M%a4BVhas+b)ib|4ba=I_tSmS9di(S> zx8&;}RxSKz-#oBFk6e_>k~eHUh)^k!7OnXZux3%9QXyCrhy{)!kc+6uDQnc4Yqqxg z{yz4-aj!LT9U#M~{$XF;S0|44dg3}skLt3m8jVw0#8h1&pA&1(hB8XNC6ZpOEmFCV zRhcC8z*tlSHt5_w%aiTtyT-d+uWlaecD(WF=m^dpJ0_7JL4z)F@=9CCDA~qQbL1e3 ztuM%(Az_HNT( zxAuksac%UpJ*TIyp1J?@y(8CcZCanMynp&{+eWTEpFi{Fc(?z9TSlAx)55$RHfC@* ze|(8fZk%Lpa3s%?0Bp%es-l$?qsS!agc2ZN3B8!UfE9)G+wSvw+uZog?WGH&?T_bg z=-Kw#p2hi!RbI`aFsmdEO|S+M${>;?KpRDvTor2YnVIB|OhKnp#vn5WwZXOFH@Gm? z4tzM(z4+0^Te|zc9_h8C2N(7dX3Ubck_@JbGknlCurpMXjx|(my%pPtTMaTSPd+P}wfrHrf9D-+P9i8u%mw5X8z^$TPtk4IokIheTE{4T|fTEl9#yN76NkOS}y0 Vpg8N$&YhZQ%OCIU`j;PG_br@)bA|u_ diff --git a/Cargo.toml b/Cargo.toml index d8778b5..30ed02a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,8 +25,4 @@ sqlx = { version = "0.7", features = ["sqlite", "runtime-tokio", "macros"] } libsqlite3-sys = { version = "*", features = ["bundled"] } uuid = { version = "1.8", features = ["v4"] } futures = "0.3" -libc = "0.2" - -rppal = "0.17" -rppal-pfd = "0.0.5" -rppal-mcp23s17 = "0.0.3" +libc = "0.2" \ No newline at end of file diff --git a/src/drivers/gpio.rs b/src/drivers/gpio.rs deleted file mode 100644 index 7847d43..0000000 --- a/src/drivers/gpio.rs +++ /dev/null @@ -1,35 +0,0 @@ -use rppal::gpio::{Gpio, OutputPin}; - -use crate::drivers::RelayDriver; -use crate::errors::EmgauwaError; - -pub struct GpioDriver { - pub gpio: OutputPin, - pub inverted: bool, -} - -impl GpioDriver { - pub fn new(pin: u8, inverted: bool) -> Result { - let gpio = Gpio::new()?.get(pin)?.into_output(); - Ok(Self { gpio, inverted }) - } -} - -impl RelayDriver for GpioDriver { - fn set(&mut self, value: bool) -> Result<(), EmgauwaError> { - if self.get_high(value) { - self.gpio.set_high(); - } else { - self.gpio.set_low(); - } - Ok(()) - } - - fn get_pin(&self) -> u8 { - self.gpio.pin() - } - - fn get_inverted(&self) -> bool { - self.inverted - } -} diff --git a/src/drivers/mod.rs b/src/drivers/mod.rs deleted file mode 100644 index abae75a..0000000 --- a/src/drivers/mod.rs +++ /dev/null @@ -1,19 +0,0 @@ -mod gpio; -mod null; -mod piface; - -pub use gpio::GpioDriver; -pub use null::NullDriver; -pub use piface::PiFaceDriver; - -use crate::errors::EmgauwaError; - -pub trait RelayDriver { - fn get_high(&self, value: bool) -> bool { - value ^ self.get_inverted() - } - - fn set(&mut self, value: bool) -> Result<(), EmgauwaError>; - fn get_pin(&self) -> u8; - fn get_inverted(&self) -> bool; -} diff --git a/src/drivers/null.rs b/src/drivers/null.rs deleted file mode 100644 index be4e8b9..0000000 --- a/src/drivers/null.rs +++ /dev/null @@ -1,26 +0,0 @@ -use crate::drivers::RelayDriver; -use crate::errors::EmgauwaError; - -pub struct NullDriver { - pub pin: u8, -} - -impl NullDriver { - pub fn new(pin: u8) -> Self { - Self { pin } - } -} - -impl RelayDriver for NullDriver { - fn set(&mut self, _value: bool) -> Result<(), EmgauwaError> { - Ok(()) - } - - fn get_pin(&self) -> u8 { - self.pin - } - - fn get_inverted(&self) -> bool { - false - } -} diff --git a/src/drivers/piface.rs b/src/drivers/piface.rs deleted file mode 100644 index 7bc20da..0000000 --- a/src/drivers/piface.rs +++ /dev/null @@ -1,52 +0,0 @@ -use rppal_pfd::{ - ChipSelect, HardwareAddress, OutputPin, PiFaceDigital, PiFaceDigitalError, SpiBus, SpiMode, -}; - -use crate::drivers::RelayDriver; -use crate::errors::EmgauwaError; - -pub struct PiFaceDriver { - pub pfd_pin: OutputPin, -} - -impl PiFaceDriver { - pub fn new(pin: u8, pfd: &Option) -> Result { - let pfd = pfd.as_ref().ok_or(EmgauwaError::Hardware(String::from( - "PiFaceDigital not initialized", - )))?; - let pfd_pin = pfd.get_output_pin(pin)?; - Ok(Self { pfd_pin }) - } - - pub fn init_piface() -> Result { - let mut pfd = PiFaceDigital::new( - HardwareAddress::new(0)?, - SpiBus::Spi0, - ChipSelect::Cs0, - 100_000, - SpiMode::Mode0, - )?; - pfd.init()?; - - Ok(pfd) - } -} - -impl RelayDriver for PiFaceDriver { - fn set(&mut self, value: bool) -> Result<(), EmgauwaError> { - if self.get_high(value) { - self.pfd_pin.set_high().map_err(PiFaceDigitalError::from)?; - } else { - self.pfd_pin.set_low().map_err(PiFaceDigitalError::from)?; - } - Ok(()) - } - - fn get_pin(&self) -> u8 { - self.pfd_pin.get_pin_number() - } - - fn get_inverted(&self) -> bool { - false - } -} diff --git a/src/errors/emgauwa_error.rs b/src/errors/emgauwa_error.rs index ba7825a..bd7f04e 100644 --- a/src/errors/emgauwa_error.rs +++ b/src/errors/emgauwa_error.rs @@ -6,9 +6,6 @@ use actix::MailboxError; use actix_web::http::StatusCode; use actix_web::HttpResponse; use config::ConfigError; -use rppal::gpio; -use rppal_mcp23s17::Mcp23s17Error; -use rppal_pfd::PiFaceDigitalError; use serde::ser::SerializeStruct; use serde::{Serialize, Serializer}; @@ -99,25 +96,6 @@ impl From for EmgauwaError { } } -impl From for EmgauwaError { - fn from(value: gpio::Error) -> Self { - Self::Hardware(value.to_string()) - } -} - -impl From for EmgauwaError { - fn from(value: PiFaceDigitalError) -> Self { - match value { - PiFaceDigitalError::Mcp23s17Error { source } => match source { - Mcp23s17Error::SpiError { source } => Self::Hardware(source.to_string()), - _ => Self::Hardware(source.to_string()), - }, - PiFaceDigitalError::GpioError { source } => Self::Hardware(source.to_string()), - _ => Self::Hardware(value.to_string()), - } - } -} - impl From<&EmgauwaError> for HttpResponse { fn from(err: &EmgauwaError) -> Self { HttpResponse::build(err.get_code()).json(err) diff --git a/src/lib.rs b/src/lib.rs index 14609b9..f939d0c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,5 @@ pub mod constants; pub mod db; -pub mod drivers; pub mod errors; pub mod models; pub mod settings;