Format code a bit
This commit is contained in:
		
							parent
							
								
									c524d089ad
								
							
						
					
					
						commit
						bf3192ec65
					
				
					 7 changed files with 141 additions and 30 deletions
				
			
		
							
								
								
									
										117
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										117
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -55,7 +55,7 @@ dependencies = [
 | 
				
			||||||
 "actix-service",
 | 
					 "actix-service",
 | 
				
			||||||
 "actix-utils",
 | 
					 "actix-utils",
 | 
				
			||||||
 "ahash",
 | 
					 "ahash",
 | 
				
			||||||
 "base64",
 | 
					 "base64 0.21.7",
 | 
				
			||||||
 "bitflags 2.5.0",
 | 
					 "bitflags 2.5.0",
 | 
				
			||||||
 "brotli",
 | 
					 "brotli",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
| 
						 | 
					@ -355,6 +355,12 @@ version = "0.21.7"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 | 
					checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "base64"
 | 
				
			||||||
 | 
					version = "0.22.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "base64ct"
 | 
					name = "base64ct"
 | 
				
			||||||
version = "1.6.0"
 | 
					version = "1.6.0"
 | 
				
			||||||
| 
						 | 
					@ -626,6 +632,41 @@ dependencies = [
 | 
				
			||||||
 "typenum",
 | 
					 "typenum",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "darling"
 | 
				
			||||||
 | 
					version = "0.20.9"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "darling_core",
 | 
				
			||||||
 | 
					 "darling_macro",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "darling_core"
 | 
				
			||||||
 | 
					version = "0.20.9"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "fnv",
 | 
				
			||||||
 | 
					 "ident_case",
 | 
				
			||||||
 | 
					 "proc-macro2",
 | 
				
			||||||
 | 
					 "quote",
 | 
				
			||||||
 | 
					 "strsim",
 | 
				
			||||||
 | 
					 "syn 2.0.61",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "darling_macro"
 | 
				
			||||||
 | 
					version = "0.20.9"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "darling_core",
 | 
				
			||||||
 | 
					 "quote",
 | 
				
			||||||
 | 
					 "syn 2.0.61",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "data-encoding"
 | 
					name = "data-encoding"
 | 
				
			||||||
version = "2.6.0"
 | 
					version = "2.6.0"
 | 
				
			||||||
| 
						 | 
					@ -650,6 +691,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
 | 
					checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "powerfmt",
 | 
					 "powerfmt",
 | 
				
			||||||
 | 
					 "serde",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
| 
						 | 
					@ -717,6 +759,7 @@ dependencies = [
 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
 "serde_derive",
 | 
					 "serde_derive",
 | 
				
			||||||
 "serde_json",
 | 
					 "serde_json",
 | 
				
			||||||
 | 
					 "serde_with",
 | 
				
			||||||
 "simple_logger",
 | 
					 "simple_logger",
 | 
				
			||||||
 "sqlx",
 | 
					 "sqlx",
 | 
				
			||||||
 "uuid",
 | 
					 "uuid",
 | 
				
			||||||
| 
						 | 
					@ -973,13 +1016,19 @@ dependencies = [
 | 
				
			||||||
 "futures-sink",
 | 
					 "futures-sink",
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 "http 0.2.12",
 | 
					 "http 0.2.12",
 | 
				
			||||||
 "indexmap",
 | 
					 "indexmap 2.2.6",
 | 
				
			||||||
 "slab",
 | 
					 "slab",
 | 
				
			||||||
 "tokio",
 | 
					 "tokio",
 | 
				
			||||||
 "tokio-util",
 | 
					 "tokio-util",
 | 
				
			||||||
 "tracing",
 | 
					 "tracing",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "hashbrown"
 | 
				
			||||||
 | 
					version = "0.12.3"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "hashbrown"
 | 
					name = "hashbrown"
 | 
				
			||||||
version = "0.13.2"
 | 
					version = "0.13.2"
 | 
				
			||||||
| 
						 | 
					@ -1110,6 +1159,12 @@ dependencies = [
 | 
				
			||||||
 "cc",
 | 
					 "cc",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "ident_case"
 | 
				
			||||||
 | 
					version = "1.0.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "idna"
 | 
					name = "idna"
 | 
				
			||||||
version = "0.5.0"
 | 
					version = "0.5.0"
 | 
				
			||||||
| 
						 | 
					@ -1120,6 +1175,17 @@ dependencies = [
 | 
				
			||||||
 "unicode-normalization",
 | 
					 "unicode-normalization",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "indexmap"
 | 
				
			||||||
 | 
					version = "1.9.3"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "autocfg",
 | 
				
			||||||
 | 
					 "hashbrown 0.12.3",
 | 
				
			||||||
 | 
					 "serde",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "indexmap"
 | 
					name = "indexmap"
 | 
				
			||||||
version = "2.2.6"
 | 
					version = "2.2.6"
 | 
				
			||||||
| 
						 | 
					@ -1128,6 +1194,7 @@ checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "equivalent",
 | 
					 "equivalent",
 | 
				
			||||||
 "hashbrown 0.14.5",
 | 
					 "hashbrown 0.14.5",
 | 
				
			||||||
 | 
					 "serde",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
| 
						 | 
					@ -1660,7 +1727,7 @@ version = "0.8.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
 | 
					checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "base64",
 | 
					 "base64 0.21.7",
 | 
				
			||||||
 "bitflags 2.5.0",
 | 
					 "bitflags 2.5.0",
 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
 "serde_derive",
 | 
					 "serde_derive",
 | 
				
			||||||
| 
						 | 
					@ -1836,6 +1903,36 @@ dependencies = [
 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "serde_with"
 | 
				
			||||||
 | 
					version = "3.8.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "base64 0.22.1",
 | 
				
			||||||
 | 
					 "chrono",
 | 
				
			||||||
 | 
					 "hex",
 | 
				
			||||||
 | 
					 "indexmap 1.9.3",
 | 
				
			||||||
 | 
					 "indexmap 2.2.6",
 | 
				
			||||||
 | 
					 "serde",
 | 
				
			||||||
 | 
					 "serde_derive",
 | 
				
			||||||
 | 
					 "serde_json",
 | 
				
			||||||
 | 
					 "serde_with_macros",
 | 
				
			||||||
 | 
					 "time",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "serde_with_macros"
 | 
				
			||||||
 | 
					version = "3.8.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "darling",
 | 
				
			||||||
 | 
					 "proc-macro2",
 | 
				
			||||||
 | 
					 "quote",
 | 
				
			||||||
 | 
					 "syn 2.0.61",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "sha1"
 | 
					name = "sha1"
 | 
				
			||||||
version = "0.10.6"
 | 
					version = "0.10.6"
 | 
				
			||||||
| 
						 | 
					@ -1984,7 +2081,7 @@ dependencies = [
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 "hashlink",
 | 
					 "hashlink",
 | 
				
			||||||
 "hex",
 | 
					 "hex",
 | 
				
			||||||
 "indexmap",
 | 
					 "indexmap 2.2.6",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
 "memchr",
 | 
					 "memchr",
 | 
				
			||||||
 "once_cell",
 | 
					 "once_cell",
 | 
				
			||||||
| 
						 | 
					@ -2047,7 +2144,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418"
 | 
					checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "atoi",
 | 
					 "atoi",
 | 
				
			||||||
 "base64",
 | 
					 "base64 0.21.7",
 | 
				
			||||||
 "bitflags 2.5.0",
 | 
					 "bitflags 2.5.0",
 | 
				
			||||||
 "byteorder",
 | 
					 "byteorder",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
| 
						 | 
					@ -2089,7 +2186,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e"
 | 
					checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "atoi",
 | 
					 "atoi",
 | 
				
			||||||
 "base64",
 | 
					 "base64 0.21.7",
 | 
				
			||||||
 "bitflags 2.5.0",
 | 
					 "bitflags 2.5.0",
 | 
				
			||||||
 "byteorder",
 | 
					 "byteorder",
 | 
				
			||||||
 "crc",
 | 
					 "crc",
 | 
				
			||||||
| 
						 | 
					@ -2154,6 +2251,12 @@ dependencies = [
 | 
				
			||||||
 "unicode-normalization",
 | 
					 "unicode-normalization",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "strsim"
 | 
				
			||||||
 | 
					version = "0.11.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "subtle"
 | 
					name = "subtle"
 | 
				
			||||||
version = "2.5.0"
 | 
					version = "2.5.0"
 | 
				
			||||||
| 
						 | 
					@ -2364,7 +2467,7 @@ version = "0.22.12"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef"
 | 
					checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "indexmap",
 | 
					 "indexmap 2.2.6",
 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
 "serde_spanned",
 | 
					 "serde_spanned",
 | 
				
			||||||
 "toml_datetime",
 | 
					 "toml_datetime",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@ pub use gpio::GpioDriver;
 | 
				
			||||||
pub use null::NullDriver;
 | 
					pub use null::NullDriver;
 | 
				
			||||||
pub use piface::PiFaceDriver;
 | 
					pub use piface::PiFaceDriver;
 | 
				
			||||||
use serde::{Deserialize, Deserializer};
 | 
					use serde::{Deserialize, Deserializer};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::errors::EmgauwaControllerError;
 | 
					use crate::errors::EmgauwaControllerError;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mod gpio;
 | 
					mod gpio;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,9 +11,11 @@ pub struct PiFaceDriver {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl PiFaceDriver {
 | 
					impl PiFaceDriver {
 | 
				
			||||||
	pub fn new(pin: u8, pfd: &Option<PiFaceDigital>) -> Result<Self, EmgauwaControllerError> {
 | 
						pub fn new(pin: u8, pfd: &Option<PiFaceDigital>) -> Result<Self, EmgauwaControllerError> {
 | 
				
			||||||
		let pfd = pfd.as_ref().ok_or(EmgauwaControllerError::Hardware(String::from(
 | 
							let pfd = pfd
 | 
				
			||||||
			"PiFaceDigital not initialized",
 | 
								.as_ref()
 | 
				
			||||||
		)))?;
 | 
								.ok_or(EmgauwaControllerError::Hardware(String::from(
 | 
				
			||||||
 | 
									"PiFaceDigital not initialized",
 | 
				
			||||||
 | 
								)))?;
 | 
				
			||||||
		let pfd_pin = pfd.get_output_pin(pin)?;
 | 
							let pfd_pin = pfd.get_output_pin(pin)?;
 | 
				
			||||||
		Ok(Self { pfd_pin })
 | 
							Ok(Self { pfd_pin })
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +1,10 @@
 | 
				
			||||||
use std::fmt::{Display, Formatter};
 | 
					use std::fmt::{Display, Formatter};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use emgauwa_common::errors::EmgauwaError;
 | 
				
			||||||
use rppal::gpio;
 | 
					use rppal::gpio;
 | 
				
			||||||
use rppal_mcp23s17::Mcp23s17Error;
 | 
					use rppal_mcp23s17::Mcp23s17Error;
 | 
				
			||||||
use rppal_pfd::PiFaceDigitalError;
 | 
					use rppal_pfd::PiFaceDigitalError;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use emgauwa_common::errors::EmgauwaError;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[derive(Debug)]
 | 
					#[derive(Debug)]
 | 
				
			||||||
pub enum EmgauwaControllerError {
 | 
					pub enum EmgauwaControllerError {
 | 
				
			||||||
	Hardware(String),
 | 
						Hardware(String),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										20
									
								
								src/main.rs
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								src/main.rs
									
										
									
									
									
								
							| 
						 | 
					@ -15,11 +15,11 @@ use crate::ws::run_ws_loop;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mod app_state;
 | 
					mod app_state;
 | 
				
			||||||
mod drivers;
 | 
					mod drivers;
 | 
				
			||||||
 | 
					mod errors;
 | 
				
			||||||
mod relay_loop;
 | 
					mod relay_loop;
 | 
				
			||||||
mod settings;
 | 
					mod settings;
 | 
				
			||||||
mod utils;
 | 
					mod utils;
 | 
				
			||||||
mod ws;
 | 
					mod ws;
 | 
				
			||||||
mod errors;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
async fn create_this_controller(
 | 
					async fn create_this_controller(
 | 
				
			||||||
	conn: &mut PoolConnection<Sqlite>,
 | 
						conn: &mut PoolConnection<Sqlite>,
 | 
				
			||||||
| 
						 | 
					@ -80,14 +80,10 @@ async fn main() -> Result<(), std::io::Error> {
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for relay in &settings.relays {
 | 
						for relay in &settings.relays {
 | 
				
			||||||
		if DbRelay::get_by_controller_and_num(
 | 
							if DbRelay::get_by_controller_and_num(&mut conn, &db_controller, relay.number)
 | 
				
			||||||
			&mut conn,
 | 
								.await
 | 
				
			||||||
			&db_controller,
 | 
								.map_err(EmgauwaError::from)?
 | 
				
			||||||
			relay.number,
 | 
								.is_none()
 | 
				
			||||||
		)
 | 
					 | 
				
			||||||
		.await
 | 
					 | 
				
			||||||
		.map_err(EmgauwaError::from)?
 | 
					 | 
				
			||||||
		.is_none()
 | 
					 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			create_this_relay(&mut conn, &db_controller, relay)
 | 
								create_this_relay(&mut conn, &db_controller, relay)
 | 
				
			||||||
				.await
 | 
									.await
 | 
				
			||||||
| 
						 | 
					@ -103,7 +99,11 @@ async fn main() -> Result<(), std::io::Error> {
 | 
				
			||||||
	let this = Controller::from_db_model(&mut conn, db_controller).map_err(EmgauwaError::from)?;
 | 
						let this = Controller::from_db_model(&mut conn, db_controller).map_err(EmgauwaError::from)?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	let now = chrono::Local::now().time();
 | 
						let now = chrono::Local::now().time();
 | 
				
			||||||
	let initial_states: Vec<bool> = this.relays.iter().map(|r| r.active_schedule.is_on(&now)).collect();
 | 
						let initial_states: Vec<bool> = this
 | 
				
			||||||
 | 
							.relays
 | 
				
			||||||
 | 
							.iter()
 | 
				
			||||||
 | 
							.map(|r| r.active_schedule.is_on(&now))
 | 
				
			||||||
 | 
							.collect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	let mut pfd: Option<PiFaceDigital> = None;
 | 
						let mut pfd: Option<PiFaceDigital> = None;
 | 
				
			||||||
	let drivers = settings.relays_make_drivers(&mut pfd, initial_states)?;
 | 
						let drivers = settings.relays_make_drivers(&mut pfd, initial_states)?;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@ use emgauwa_common::errors::EmgauwaError;
 | 
				
			||||||
use emgauwa_common::settings;
 | 
					use emgauwa_common::settings;
 | 
				
			||||||
use rppal_pfd::PiFaceDigital;
 | 
					use rppal_pfd::PiFaceDigital;
 | 
				
			||||||
use serde_derive::Deserialize;
 | 
					use serde_derive::Deserialize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::drivers;
 | 
					use crate::drivers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Clone, Debug, Deserialize)]
 | 
					#[derive(Clone, Debug, Deserialize)]
 | 
				
			||||||
| 
						 | 
					@ -69,13 +70,17 @@ impl Settings {
 | 
				
			||||||
		&self,
 | 
							&self,
 | 
				
			||||||
		pfd: &mut Option<PiFaceDigital>,
 | 
							pfd: &mut Option<PiFaceDigital>,
 | 
				
			||||||
		initial_states: Vec<bool>,
 | 
							initial_states: Vec<bool>,
 | 
				
			||||||
    ) -> Result<Vec<Box<dyn drivers::RelayDriver>>, EmgauwaError> {
 | 
						) -> Result<Vec<Box<dyn drivers::RelayDriver>>, EmgauwaError> {
 | 
				
			||||||
		let mut drivers = Vec::new();
 | 
							let mut drivers = Vec::new();
 | 
				
			||||||
		let result: Result<(), EmgauwaError> = self.relays.iter().zip(initial_states).try_for_each(|(relay, state)| {
 | 
							let result: Result<(), EmgauwaError> =
 | 
				
			||||||
			let driver = relay.make_driver(pfd, state)?;
 | 
								self.relays
 | 
				
			||||||
			drivers.push(driver);
 | 
									.iter()
 | 
				
			||||||
			Ok(())
 | 
									.zip(initial_states)
 | 
				
			||||||
		});
 | 
									.try_for_each(|(relay, state)| {
 | 
				
			||||||
 | 
										let driver = relay.make_driver(pfd, state)?;
 | 
				
			||||||
 | 
										drivers.push(driver);
 | 
				
			||||||
 | 
										Ok(())
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
		result?;
 | 
							result?;
 | 
				
			||||||
		Ok(drivers)
 | 
							Ok(drivers)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,8 +7,8 @@ use emgauwa_common::types::ControllerWsAction;
 | 
				
			||||||
use futures::{future, pin_mut, SinkExt, StreamExt};
 | 
					use futures::{future, pin_mut, SinkExt, StreamExt};
 | 
				
			||||||
use sqlx::{Pool, Sqlite};
 | 
					use sqlx::{Pool, Sqlite};
 | 
				
			||||||
use tokio::time;
 | 
					use tokio::time;
 | 
				
			||||||
use tokio_tungstenite::tungstenite::Message;
 | 
					 | 
				
			||||||
use tokio_tungstenite::connect_async;
 | 
					use tokio_tungstenite::connect_async;
 | 
				
			||||||
 | 
					use tokio_tungstenite::tungstenite::Message;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::app_state::AppState;
 | 
					use crate::app_state::AppState;
 | 
				
			||||||
use crate::utils::{app_state_get_relay_notifier, app_state_get_this};
 | 
					use crate::utils::{app_state_get_relay_notifier, app_state_get_this};
 | 
				
			||||||
| 
						 | 
					@ -89,4 +89,4 @@ async fn read_app_state(
 | 
				
			||||||
				))
 | 
									))
 | 
				
			||||||
			})?;
 | 
								})?;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue