Can create a relay

This commit is contained in:
2024-08-27 22:32:22 +02:00
parent f46a7dbc94
commit 87fb3360fb
6 changed files with 89 additions and 11 deletions

View File

@ -13,7 +13,7 @@ pub struct DeviceInfo {
/// Device firmware / software version
version: semver::Version,
/// Maximum number of relay that the device can support
max_relays: usize,
pub max_relays: usize,
}
impl DeviceInfo {
@ -90,7 +90,7 @@ impl Default for DeviceRelayID {
pub struct DeviceRelay {
/// Device relay id. Should be unique across the whole application
#[serde(default)]
id: DeviceRelayID,
pub id: DeviceRelayID,
/// Human-readable name for the relay
name: String,
/// Whether this relay can be turned on or not
@ -165,7 +165,7 @@ impl DeviceRelay {
}
}
let mut relays_map = list.iter().map(|r| (r.id, r)).collect::<HashMap<_, _>>();
let relays_map = list.iter().map(|r| (r.id, r)).collect::<HashMap<_, _>>();
if self.depends_on.iter().any(|d| !relays_map.contains_key(d)) {
return Some("A specified dependent relay does not exists!");
@ -212,12 +212,12 @@ impl DeviceRelay {
clone.insert(self.id);
for d in &self.depends_on {
if visited.contains(&d) {
if visited.contains(d) {
return true;
}
if list
.get(&d)
.get(d)
.expect("Missing a relay!")
.check_for_loop_in_dependencies(&clone, list)
{
@ -235,7 +235,7 @@ impl DeviceRelay {
list: &HashMap<DeviceRelayID, &Self>,
) {
for d in &self.depends_on {
let dependency = list.get(&d).expect("Missing a relay!");
let dependency = list.get(d).expect("Missing a relay!");
deps_out.insert(dependency.id);