diff --git a/fan-controller/src/main.rs b/fan-controller/src/main.rs index bdd7c3c..3202516 100644 --- a/fan-controller/src/main.rs +++ b/fan-controller/src/main.rs @@ -45,17 +45,17 @@ use self::mqtt::packet; use self::mqtt::packet::Packet; use crate::async_callback::AsyncCallback; use crate::mqtt::client::runner::State; -use crate::mqtt::connect::Connect; -use crate::mqtt::connect_acknowledgement::ConnectReasonCode; +use crate::mqtt::packet::connect::Connect; +use crate::mqtt::packet::connect_acknowledgement::ConnectReasonCode; +use crate::mqtt::packet::ping_request::PingRequest; +use crate::mqtt::packet::ping_response::PingResponse; +use crate::mqtt::packet::publish::Publish; +use crate::mqtt::packet::subscribe::{Subscribe, Subscription}; +use crate::mqtt::packet::subscribe_acknowledgement::SubscribeAcknowledgement; +use crate::mqtt::packet::{connect, publish, subscribe}; use crate::mqtt::packet::{get_parts, FromPublish, FromSubscribeAcknowledgement}; -use crate::mqtt::ping_request::PingRequest; -use crate::mqtt::ping_response::PingResponse; -use crate::mqtt::publish::Publish; -use crate::mqtt::subscribe::{Subscribe, Subscription}; -use crate::mqtt::subscribe_acknowledgement::SubscribeAcknowledgement; use crate::mqtt::task::{send, Encode}; use crate::mqtt::QualityOfService; -use crate::mqtt::{connect, publish, subscribe}; mod async_callback; mod configuration; @@ -478,20 +478,20 @@ async fn mqtt_task( const SUBSCRIPTIONS: [Subscription; 2] = [ Subscription { topic_filter: "testfan/on/set", - options: mqtt::subscribe::Options::new( + options: mqtt::packet::subscribe::Options::new( QualityOfService::AtMostOnceDelivery, false, false, - mqtt::subscribe::RetainHandling::DoNotSend, + mqtt::packet::subscribe::RetainHandling::DoNotSend, ), }, Subscription { topic_filter: "testfan/speed/percentage", - options: mqtt::subscribe::Options::new( + options: mqtt::packet::subscribe::Options::new( QualityOfService::AtMostOnceDelivery, false, false, - mqtt::subscribe::RetainHandling::DoNotSend, + mqtt::packet::subscribe::RetainHandling::DoNotSend, ), }, ]; diff --git a/fan-controller/src/mqtt/client.rs b/fan-controller/src/mqtt/client.rs index 9659daf..2eb3cad 100644 --- a/fan-controller/src/mqtt/client.rs +++ b/fan-controller/src/mqtt/client.rs @@ -1,8 +1,8 @@ use crate::mqtt::packet::{FromPublish, FromSubscribeAcknowledgement, Packet}; -use super::{ - connect, connect_acknowledgement::ConnectReasonCode, packet, Connect, ConnectErrorReasonCode, -}; +use super::packet::{connect, connect_acknowledgement::ConnectReasonCode}; +use crate::mqtt::packet::connect::Connect; +use crate::mqtt::ConnectErrorReasonCode; use core::marker::PhantomData; use embassy_net::tcp::{self, TcpReader, TcpSocket, TcpWriter}; use embassy_time::{with_timeout, Duration, TimeoutError}; @@ -16,7 +16,7 @@ pub(crate) enum ConnectError { TcpWriteError(tcp::Error), TcpFlushError(tcp::Error), ReadError(ReadError), - DecodePacketError(packet::ReadError), + DecodePacketError(crate::mqtt::packet::ReadError), /// Received invalid packet type. The server had to respond with a Connect Acknowledgement (CONNACK) packet but send another one instead InvalidPacket(u8), /// Received a connect acknowledgement with an error code @@ -150,7 +150,7 @@ pub(crate) struct MqttSender<'a> { #[derive(Debug)] pub(crate) enum ReceiveError { ReadError(ReadError), - DecodePacketError(packet::ReadError), + DecodePacketError(crate::mqtt::packet::ReadError), } pub(crate) struct MqttReceiver<'a> { @@ -186,12 +186,14 @@ impl<'a> MqttReceiver<'a> { } pub(crate) mod runner { - use crate::mqtt::connect::Connect; - use crate::mqtt::connect_acknowledgement::{ConnectAcknowledgement, ConnectReasonCode}; + use crate::mqtt; + use crate::mqtt::packet::connect::Connect; + use crate::mqtt::packet::connect_acknowledgement::{ConnectAcknowledgement, ConnectReasonCode}; + use crate::mqtt::packet::subscribe::{Subscribe, Subscription}; + use crate::mqtt::packet::subscribe_acknowledgement::SubscribeErrorReasonCode; + use crate::mqtt::packet::{connect, subscribe}; use crate::mqtt::packet::{FromPublish, FromSubscribeAcknowledgement, Packet}; - use crate::mqtt::subscribe::{Subscribe, Subscription}; - use crate::mqtt::subscribe_acknowledgement::SubscribeErrorReasonCode; - use crate::mqtt::{connect, packet, subscribe, ConnectErrorReasonCode}; + use crate::mqtt::ConnectErrorReasonCode; use defmt::{warn, Format}; use embassy_futures::select::{select, Either}; use embassy_net::tcp; @@ -201,9 +203,9 @@ pub(crate) mod runner { use embassy_time::{with_deadline, with_timeout, Duration, Instant, TimeoutError}; mod message { - use crate::mqtt::connect_acknowledgement::ConnectReasonCode; + use crate::mqtt::packet::connect_acknowledgement::ConnectReasonCode; + use crate::mqtt::packet::subscribe::Subscription; use crate::mqtt::packet::{FromPublish, FromSubscribeAcknowledgement}; - use crate::mqtt::subscribe::Subscription; pub(super) enum Outgoing<'a> { Connect { @@ -259,7 +261,7 @@ pub(crate) mod runner { #[derive(Clone, Debug, Format)] enum ReceiveError { ReadError(ReadError), - DecodePacketError(packet::ReadError), + DecodePacketError(mqtt::packet::ReadError), } struct MqttRunner<'socket, 'state, T, S> diff --git a/fan-controller/src/mqtt/mod.rs b/fan-controller/src/mqtt/mod.rs index 83c5c11..4b34c17 100644 --- a/fan-controller/src/mqtt/mod.rs +++ b/fan-controller/src/mqtt/mod.rs @@ -4,20 +4,13 @@ use defmt::Format; use embedded_io_async::Write; -use crate::mqtt::connect::Connect; +use crate::mqtt::packet::connect::Connect; use crate::mqtt::variable_byte_integer::VariableByteIntegerDecodeError; pub(crate) mod client; -pub(crate) mod connect; -pub(crate) mod connect_acknowledgement; pub(crate) mod packet; -pub(crate) mod ping_request; -pub(crate) mod publish; -pub(crate) mod subscribe; -pub(crate) mod subscribe_acknowledgement; -mod variable_byte_integer; pub(crate) mod task; -pub(crate) mod ping_response; +pub(crate) mod variable_byte_integer; #[derive(Debug, Format, Clone)] pub(super) enum ConnectErrorReasonCode { diff --git a/fan-controller/src/mqtt/connect.rs b/fan-controller/src/mqtt/packet/connect.rs similarity index 100% rename from fan-controller/src/mqtt/connect.rs rename to fan-controller/src/mqtt/packet/connect.rs diff --git a/fan-controller/src/mqtt/packet/disconnect.rs b/fan-controller/src/mqtt/packet/disconnect.rs new file mode 100644 index 0000000..f2f9477 --- /dev/null +++ b/fan-controller/src/mqtt/packet/disconnect.rs @@ -0,0 +1 @@ +pub(crate) struct Disconnect {} diff --git a/fan-controller/src/mqtt/packet.rs b/fan-controller/src/mqtt/packet/mod.rs similarity index 88% rename from fan-controller/src/mqtt/packet.rs rename to fan-controller/src/mqtt/packet/mod.rs index 631c422..07568af 100644 --- a/fan-controller/src/mqtt/packet.rs +++ b/fan-controller/src/mqtt/packet/mod.rs @@ -1,14 +1,24 @@ -use crate::mqtt::connect::Connect; -use crate::mqtt::connect_acknowledgement::ConnectAcknowledgement; -use crate::mqtt::publish::Publish; -use crate::mqtt::subscribe::Subscribe; -use crate::mqtt::subscribe_acknowledgement::{ +use crate::mqtt::packet::connect::Connect; +use crate::mqtt::packet::connect_acknowledgement::ConnectAcknowledgement; +use crate::mqtt::packet::publish::Publish; +use crate::mqtt::packet::subscribe::Subscribe; +use crate::mqtt::packet::subscribe_acknowledgement::{ SubscribeAcknowledgement, SubscribeAcknowledgementError, }; +use crate::mqtt::variable_byte_integer; use crate::mqtt::variable_byte_integer::VariableByteIntegerDecodeError; -use crate::mqtt::{publish, variable_byte_integer, ReadConnectAcknowledgementError}; +use crate::mqtt::ReadConnectAcknowledgementError; use defmt::Format; +pub(crate) mod connect; +pub(crate) mod connect_acknowledgement; +pub(crate) mod disconnect; +pub(crate) mod ping_request; +pub(crate) mod ping_response; +pub(crate) mod publish; +pub(crate) mod subscribe; +pub(crate) mod subscribe_acknowledgement; + #[derive(Clone, Format, Debug)] pub(crate) enum GetPartsError { InvalidRemainingLength(VariableByteIntegerDecodeError), diff --git a/fan-controller/src/mqtt/ping_request.rs b/fan-controller/src/mqtt/packet/ping_request.rs similarity index 100% rename from fan-controller/src/mqtt/ping_request.rs rename to fan-controller/src/mqtt/packet/ping_request.rs diff --git a/fan-controller/src/mqtt/ping_response.rs b/fan-controller/src/mqtt/packet/ping_response.rs similarity index 100% rename from fan-controller/src/mqtt/ping_response.rs rename to fan-controller/src/mqtt/packet/ping_response.rs diff --git a/fan-controller/src/mqtt/publish.rs b/fan-controller/src/mqtt/packet/publish.rs similarity index 100% rename from fan-controller/src/mqtt/publish.rs rename to fan-controller/src/mqtt/packet/publish.rs diff --git a/fan-controller/src/mqtt/subscribe.rs b/fan-controller/src/mqtt/packet/subscribe.rs similarity index 100% rename from fan-controller/src/mqtt/subscribe.rs rename to fan-controller/src/mqtt/packet/subscribe.rs diff --git a/fan-controller/src/mqtt/subscribe_acknowledgement.rs b/fan-controller/src/mqtt/packet/subscribe_acknowledgement.rs similarity index 100% rename from fan-controller/src/mqtt/subscribe_acknowledgement.rs rename to fan-controller/src/mqtt/packet/subscribe_acknowledgement.rs diff --git a/fan-controller/src/mqtt/task.rs b/fan-controller/src/mqtt/task.rs index 2f1719c..9930c96 100644 --- a/fan-controller/src/mqtt/task.rs +++ b/fan-controller/src/mqtt/task.rs @@ -1,5 +1,5 @@ -use crate::mqtt::connect::{Connect, EncodeError}; -use crate::mqtt::connect_acknowledgement::{ConnectAcknowledgement, ConnectReasonCode}; +use crate::mqtt::packet::connect::{Connect, EncodeError}; +use crate::mqtt::packet::connect_acknowledgement::{ConnectAcknowledgement, ConnectReasonCode}; use crate::mqtt::packet::GetPartsError; use crate::mqtt::{packet, ConnectErrorReasonCode, ReadConnectAcknowledgementError}; use defmt::{warn, Format};