From 09f74bf289405cdb873595ed5343449e45f5e8a6 Mon Sep 17 00:00:00 2001 From: Sofia Date: Mon, 1 Jun 2026 19:48:10 +0300 Subject: [PATCH] Improve states a bit --- src/states.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/states.rs b/src/states.rs index 6815595..bf4a7b3 100644 --- a/src/states.rs +++ b/src/states.rs @@ -11,7 +11,7 @@ use esp_hal::time::{Duration, Instant}; use crate::{ async_io::{ATPromise, KeypadButton}, at_commands::{ - ATCommand, ATInformationCommand, ATParseError, ATResponse, CheckPinCommand, CheckPinResult, + ATCommand, ATInformationCommand, ATParseError, CheckPinCommand, CheckPinResult, EnterPinCommand, EnterPinResult, SMSFormat, SelectSMSFormatCommand, SendSMSCommand, SendSMSResponse, SetTECharsetCommand, SimpleATResponse, TECharset, }, @@ -20,7 +20,7 @@ use crate::{ state::{ATCommandHelper, State, StateData, TextSettings}, }; -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct DotsMessage { message: String, dots: u8, @@ -123,7 +123,7 @@ pub struct InitATState { check_pin: ATCommandHelper, sms_charset: ATCommandHelper, te_charset: ATCommandHelper, - message: String, + message: DotsMessage, } impl Default for InitATState { @@ -134,17 +134,20 @@ impl Default for InitATState { check_pin: ATCommandHelper::new(CheckPinCommand), sms_charset: ATCommandHelper::new(SelectSMSFormatCommand(SMSFormat::TextMode)), te_charset: ATCommandHelper::new(SetTECharsetCommand(TECharset::IRA)), - message: "Initializing".to_owned(), + message: DotsMessage::default(), } } } impl State for InitATState { fn update(&mut self, data: &mut StateData) -> Option> { + // Update dots + self.message.poll(); + if let Some(resp) = self.ati.poll(&mut data.io) { resp.unwrap() } else { - self.message = "Checking ATI".to_owned(); + self.message.message = "Checking ATI".to_owned(); return None; }; @@ -165,7 +168,7 @@ impl State for InitATState { } } } else { - self.message = "Entering PIN".to_owned(); + self.message.message = "Entering PIN".to_owned(); return None; }; @@ -188,7 +191,7 @@ impl State for InitATState { } } } else { - self.message = "Checking PIN".to_owned(); + self.message.message = "Checking PIN".to_owned(); return None; }; @@ -203,7 +206,7 @@ impl State for InitATState { } } } else { - self.message = "Selecting SMS\ncharset".to_owned(); + self.message.message = "Selecting SMS\ncharset".to_owned(); return None; }; @@ -218,7 +221,7 @@ impl State for InitATState { } } } else { - self.message = "Selecting TE\ncharset".to_owned(); + self.message.message = "Selecting TE\ncharset".to_owned(); return None; }; @@ -231,7 +234,7 @@ impl State for InitATState { fn draw(&self, data: &mut StateData) { data.clear_screen(Rgb565::black().as_color()); data.draw_text( - format!("{}", self.message), + self.message.render(), Position::new(0, 0), TextSettings::default(), );