diff --git a/src/tasks/gps.rs b/src/tasks/gps.rs index 861404d..99275ef 100644 --- a/src/tasks/gps.rs +++ b/src/tasks/gps.rs @@ -8,14 +8,16 @@ use log::*; use nalgebra::Vector2; use nmea::Nmea; -use crate::{backoff::Backoff, events::Measurement}; +use crate::{backoff::Backoff, events::{Measurement, SensorSource, SensorState}}; // FIXME: We need a way to put the GPS to sleep when the system goes to sleep #[embassy_executor::task] pub async fn gps_task(events: DynamicSender<'static, Measurement>, mut i2c_bus: I2cDevice<'static, CriticalSectionRawMutex, I2c<'static, Async>>) { Backoff::from_secs(5).forever().attempt::<_, (), ()>(async || { + events.send(Measurement::SensorHardwareStatus(SensorSource::GPS, SensorState::Offline)).await; Backoff::from_secs(5).forever().attempt(async || { info!("Initializing GPS"); + events.send(Measurement::SensorHardwareStatus(SensorSource::GPS, SensorState::AcquiringFix)).await; // Enable a bunch of data? idk let bytes = "$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n"; i2c_bus.write(0x10, bytes.as_bytes()).await?; @@ -38,6 +40,8 @@ pub async fn gps_task(events: DynamicSender<'static, Measurement>, mut i2c_bus: let mut parser = Nmea::default(); let mut parsing = false; let mut has_lock = false; + events.send(Measurement::SensorHardwareStatus(SensorSource::GPS, SensorState::Online)).await; + events.send(Measurement::SensorHardwareStatus(SensorSource::Location, SensorState::AcquiringFix)).await; info!("GPS is ready!"); loop { let mut buf = [0; 1];