+ shell.update(&mut logger);
+
+ if pta12.has_been_held_for_ms(1500) {
+ is_recording = !is_recording;
+
+ if is_recording {
+ logger.start_recording(&prev_tap);
+
+ model.reset();
+
+ view = View::Distance;
+ } else {
+ logger.stop_recording(&prev_tap);
+
+ view = View::Time;
+ }
+ }
+
+ let new_view = if pte24.has_been_held_for_ms(250) {
+ previous_view(view)
+ } else if pta01.has_been_held_for_ms(250) {
+ next_view(view)
+ } else {
+ view
+ };
+
+ if view != new_view {
+ view = new_view;
+
+ match view {
+ View::Time => time_view.invalidate(),
+ View::Distance => distance_view.invalidate(),
+ }
+ }