sphinx-key: timeout sntp setup and restart

This commit is contained in:
irriden
2023-07-27 16:13:57 +00:00
parent 864f58c53b
commit 41e74d30ef
2 changed files with 13 additions and 4 deletions

View File

@@ -1,16 +1,21 @@
use anyhow::{anyhow, Result};
use esp_idf_svc::sntp::EspSntp; use esp_idf_svc::sntp::EspSntp;
use esp_idf_svc::sntp::SyncStatus::Completed; use esp_idf_svc::sntp::SyncStatus::Completed;
use std::thread; use std::thread;
use std::time::Duration; use std::time::Duration;
pub fn sync_time() { pub fn sync_time_timeout() -> Result<()> {
let sntp = EspSntp::new_default().unwrap(); let mut counter = 0;
let sntp = EspSntp::new_default()?;
loop { loop {
let status = sntp.get_sync_status(); let status = sntp.get_sync_status();
println!("SNTP status {:?}", status); println!("SNTP status {:?}", status);
if status == Completed { if status == Completed {
break; break Ok(());
} else if counter == 30 {
break Err(anyhow!("SNTP setup timed out"));
} }
counter = counter + 1;
thread::sleep(Duration::from_secs(1)); thread::sleep(Duration::from_secs(1));
} }
} }

View File

@@ -87,7 +87,11 @@ fn main() -> Result<()> {
}; };
led_tx.send(Status::SyncingTime).unwrap(); led_tx.send(Status::SyncingTime).unwrap();
conn::sntp::sync_time(); if let Err(e) = conn::sntp::sync_time_timeout() {
log::error!("Could not setup sntp: {}", e);
log::info!("Restarting esp!");
unsafe { esp_idf_sys::esp_restart() };
}
let now = SystemTime::now() let now = SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH) .duration_since(SystemTime::UNIX_EPOCH)
.unwrap(); .unwrap();