From e63f611607969782765c9d1b9be2b4fbf3608083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Mon, 27 Jan 2025 11:56:27 +0100 Subject: [PATCH] smlang 0.8 --- Cargo.toml | 2 +- src/mqtt_client.rs | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 229e7b5..1d64424 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ log = {version = "0.4", optional = true} embedded-time = "0.12" varint-rs = {version = "2.2", default-features = false } serde = { version = "1", features = ["derive"], default-features = false } -smlang = "0.6.0" +smlang = "0.8.0" embedded-nal = "0.9" [features] diff --git a/src/mqtt_client.rs b/src/mqtt_client.rs index bc28a50..36e90b3 100644 --- a/src/mqtt_client.rs +++ b/src/mqtt_client.rs @@ -30,17 +30,17 @@ mod sm { transitions: { *Disconnected + TcpConnected = Restart, Restart + SentConnect = Establishing, - Establishing + Connected(ConnAck<'a>) [ handle_connack ] = Active, + Establishing + Connected(ConnAck<'a>) / handle_connack = Active, Active + SendTimeout = Disconnected, _ + ProtocolError = Disconnected, - Active + ControlPacket(ReceivedPacket<'a>) [handle_packet] = Active, - Active + SentSubscribe(u16) [handle_subscription] = Active, + Active + ControlPacket(ReceivedPacket<'a>) / handle_packet = Active, + Active + SentSubscribe(u16) / handle_subscription = Active, _ + TcpDisconnect = Disconnected }, - custom_guard_error: true, + custom_error: true, } } @@ -176,16 +176,16 @@ impl sm::StateMachineContext for ClientContext<'_, Clock> where Clock: embedded_time::Clock, { - type GuardError = MinimqError; + type Error = MinimqError; - fn handle_subscription(&mut self, id: &u16) -> Result<(), Self::GuardError> { + fn handle_subscription(&mut self, id: u16) -> Result<(), Self::Error> { self.pending_subscriptions - .push(*id) + .push(id) .map_err(|_| ProtocolError::BufferSize)?; Ok(()) } - fn handle_packet(&mut self, packet: &ReceivedPacket<'_>) -> Result<(), Self::GuardError> { + fn handle_packet(&mut self, packet: ReceivedPacket<'_>) -> Result<(), Self::Error> { match &packet { ReceivedPacket::SubAck(ack) => self.handle_suback(ack)?, ReceivedPacket::PingResp => self.register_ping_response(), @@ -204,7 +204,7 @@ where Ok(()) } - fn handle_connack(&mut self, acknowledge: &ConnAck<'_>) -> Result<(), Self::GuardError> { + fn handle_connack(&mut self, acknowledge: ConnAck<'_>) -> Result<(), Self::Error> { acknowledge.reason_code.as_result()?; // Reset the session state upon connection with a broker that doesn't have a session state @@ -253,8 +253,8 @@ where impl From> for Error { fn from(error: sm::Error) -> Self { match error { - sm::Error::GuardFailed(err) => Error::Minimq(err), - sm::Error::InvalidEvent => Error::NotReady, + sm::Error::ActionFailed(err) | sm::Error::GuardFailed(err) => Error::Minimq(err), + sm::Error::InvalidEvent | sm::Error::TransitionsFailed => Error::NotReady, } } }