events: rewrite some event buses to use multi-consumer pubsub instead of single-consumer channels

This commit is contained in:
2025-10-17 14:37:23 +02:00
parent aa5c86b4a7
commit d957615d4e
5 changed files with 45 additions and 44 deletions

View File

@@ -1,18 +1,20 @@
use embassy_sync::channel::DynamicSender;
use embassy_sync::{channel::DynamicSender, pubsub::DynPublisher};
use embassy_time::Timer;
use crate::events::{Notification, Scene};
#[embassy_executor::task]
pub async fn demo_task(ui: DynamicSender<'static, Notification>) {
pub async fn demo_task(ui: DynPublisher<'static, Notification>) {
Timer::after_secs(10).await;
ui.send(Notification::SceneChange(Scene::Idle)).await;
ui.publish(Notification::SceneChange(Scene::Idle)).await;
ui.publish(Notification::SetBrakelight(true)).await;
ui.publish(Notification::SetHeadlight(true)).await;
Timer::after_secs(10).await;
loop {
for scene in [Scene::Accelerating, Scene::Ready, Scene::Decelerating, Scene::Ready] {
Timer::after_secs(8).await;
ui.send(Notification::SceneChange(scene)).await
ui.publish(Notification::SceneChange(scene)).await
};
}
}