From 1f8f63018ae8b156294626aff7be100f3cf5f2e6 Mon Sep 17 00:00:00 2001 From: Ryan Summers Date: Tue, 4 May 2021 13:50:17 +0200 Subject: [PATCH] Cleaning up API --- src/net/mqtt_interface.rs | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/net/mqtt_interface.rs b/src/net/mqtt_interface.rs index dabcbe8..cef26dd 100644 --- a/src/net/mqtt_interface.rs +++ b/src/net/mqtt_interface.rs @@ -2,8 +2,6 @@ use crate::hardware::{ design_parameters::MQTT_BROKER, CycleCounter, EthernetPhy, NetworkStack, }; -use core::fmt::Write; - use heapless::{consts, String}; use super::{Action, MqttMessage, SettingsResponse}; @@ -46,13 +44,11 @@ where minimq::MqttClient::new(MQTT_BROKER.into(), client_id, stack) .unwrap(); - let mut response_topic: String = String::new(); - write!(&mut response_topic, "{}/log", prefix).unwrap(); + let mut response_topic: String = String::from(prefix); + response_topic.push_str("/log").unwrap(); - let mut settings_prefix: String = String::new(); - write!(&mut settings_prefix, "{}/settings", prefix).unwrap(); - - // Ensure we have two remaining spaces + let mut settings_prefix: String = String::from(prefix); + settings_prefix.push_str("/settings").unwrap(); Self { mqtt, @@ -83,16 +79,17 @@ where // If the PHY indicates there's no more ethernet link, reset the DHCP server in the network // stack. - if self.phy.poll_link() == false { + match self.phy.poll_link() { + true => self.network_was_reset = false, + // Only reset the network stack once per link reconnection. This prevents us from // sending an excessive number of DHCP requests. - if !self.network_was_reset { + false if !self.network_was_reset => { self.network_was_reset = true; self.mqtt.network_stack.handle_link_reset(); } - } else { - self.network_was_reset = false; - } + _ => {}, + }; let mqtt_connected = match self.mqtt.is_connected() { Ok(connected) => connected, @@ -160,6 +157,8 @@ where .publish( response.topic, &response.message, + // TODO: When Minimq supports more QoS levels, this should be increased to + // ensure that the client has received it at least once. minimq::QoS::AtMostOnce, &response.properties, )