Can create a relay
This commit is contained in:
@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user