From 27fb2d412d1e9d6a2efe6397a9765ec592918a06 Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Tue, 31 Dec 2019 12:03:50 +0100 Subject: [PATCH] application: Visualize GPS fix state using the satellite icons. As long as we are waiting for a GPS fix, we animate the satellite icons. --- src/application/main.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/application/main.rs b/src/application/main.rs index f1aaafe..7eb180c 100644 --- a/src/application/main.rs +++ b/src/application/main.rs @@ -132,9 +132,11 @@ pub unsafe extern "C" fn _start() -> ! { let mut gps_has_fix_ticks = 0; let mut heart_icon_timer = Timer::new(1000); + let mut gps_icon_timer = Timer::new(500); loop { let mut tap = gps::TimeAndPos::new(); + let old_gps_has_fix = gps_has_fix; while gps.update(&mut tap) { gps_has_fix = true; @@ -146,6 +148,30 @@ pub unsafe extern "C" fn _start() -> ! { gps_has_fix = false; } + if gps_has_fix && !old_gps_has_fix { + display.show_icon(display::Icon::SatelliteBody); + display.show_icon(display::Icon::SatelliteWave1); + display.show_icon(display::Icon::SatelliteWave2); + } else if !gps_has_fix { + gps_icon_timer.update(|state| { + if state == 1 { + display.show_icon(display::Icon::SatelliteWave1); + 2 + } else if state == 2 { + display.show_icon(display::Icon::SatelliteWave2); + 3 + } else if state == 3 { + display.hide_icon(display::Icon::SatelliteBody); + display.hide_icon(display::Icon::SatelliteWave1); + display.hide_icon(display::Icon::SatelliteWave2); + 0 + } else { + display.show_icon(display::Icon::SatelliteBody); + 1 + } + }); + } + heart_icon_timer.update(|state| { if state == 1 { display.hide_icon(display::Icon::Heart); -- 2.30.2