tasks: more Fract8 update

This commit is contained in:
2026-02-28 16:54:44 +01:00
parent 935f30d968
commit 22d1b4d077
3 changed files with 22 additions and 21 deletions

View File

@@ -31,13 +31,13 @@ impl<S: Debug + Surface<Uniforms = Uniforms, CoordinateSpace = SegmentSpace, Pix
.rect(Rectangle::new_from_coordinates(0, 0, 255, 0))
.shader(Headlight::default())
.visible(false)
.opacity(0)
.opacity(Fract8::MIN)
.finish().unwrap().into(),
brakelight: SurfaceBuilder::build(surfaces)
.rect(Brakelight::rectangle())
.shader(Brakelight::default())
.visible(false)
.opacity(0)
.opacity(Fract8::MIN)
.finish().unwrap().into(),
display
};
@@ -66,22 +66,22 @@ impl<S: Debug + Surface<Uniforms = Uniforms, CoordinateSpace = SegmentSpace, Pix
info!("Turning on display");
// Turn on the display hardware
self.display.set_brightness(0);
self.display.set_brightness(Fract8::MIN);
self.display.set_on(true);
// Wait for the renderer to start running again
// FIXME: This deadlocks :(
//self.display.render_is_running.wait().await;
let fade_in = Animation::default().duration(Duration::from_secs(3)).from(0).to(255);
let fade_in = Animation::default().duration(Duration::from_secs(3)).from(Fract8::MIN).to(Fract8::MAX);
trace!("Fading in brightness with overlay={:?}", self.overlay);
self.overlay.set_opacity(255);
self.overlay.set_opacity(Fract8::MAX);
self.overlay.set_visible(true);
fade_in.apply(&mut AnimDisplay(&mut self.display)).await;
warn!("Turning on safety lights");
self.headlight.set_opacity(0);
self.headlight.set_opacity(Fract8::MIN);
self.headlight.set_visible(true);
self.brakelight.set_opacity(0);
self.brakelight.set_opacity(Fract8::MIN);
self.brakelight.set_visible(true);
embassy_futures::join::join(
fade_in.apply(&mut self.headlight),
@@ -123,8 +123,8 @@ impl<S: Debug + Surface<Uniforms = Uniforms, CoordinateSpace = SegmentSpace, Pix
}
}
const TURN_ON: Animation = Animation::new().duration(Duration::from_secs(1)).from(0).to(255);
const TURN_OFF: Animation = Animation::new().duration(Duration::from_secs(1)).from(255).to(0);
const TURN_ON: Animation<Fract8> = Animation::new().duration(Duration::from_secs(1)).from(Fract8::MIN).to(Fract8::MAX);
const TURN_OFF: Animation<Fract8> = Animation::new().duration(Duration::from_secs(1)).from(Fract8::MAX).to(Fract8::MIN);
#[embassy_executor::task]
pub async fn safety_ui_main(mut events: DynSubscriber<'static, Prediction>, mut ui: SafetyUi<<UiSurfacePool as Surfaces<SegmentSpace>>::Surface>) {