diff --git a/src/main.rs b/src/main.rs index 2357052..e49a4de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -455,6 +455,26 @@ fn raw_window_event(_app: &App, model: &mut GuiModel, event: &nannou::winit::eve model.egui.handle_raw_event(event); } +// when connecting the dac, it does not correctly send/set the pps and other settings +// so run this awkward sequence to make sure they're all set +// this probably can be done more elegantly... +fn double_send_settings_at_connect(laser_settings: &LaserSettings, stream: &laser::FrameStream) { + stream.set_point_hz(laser_settings.point_hz).ok(); + stream.set_latency_points(laser_settings.latency_points).ok(); + stream.set_frame_hz(laser_settings.frame_hz).ok(); + stream + .enable_optimisations(laser_settings.enable_optimisations) + .ok(); + stream + .enable_draw_reorder(laser_settings.enable_draw_reorder) + .ok(); + stream.set_distance_per_point(laser_settings.distance_per_point).ok(); + + stream.set_blank_delay_points(laser_settings.blank_delay_points).ok(); + + stream.set_radians_per_point(laser_settings.radians_per_point).ok(); +} + fn update(_app: &App, model: &mut GuiModel, update: Update) { // First, check for new laser DACs. for dac in model.dac_rx.try_recv() { @@ -473,6 +493,7 @@ fn update(_app: &App, model: &mut GuiModel, update: Update) { .build() .expect("failed to establish stream with newly detected DAC"); // dbg!(stream.enable_draw_reorder()); + double_send_settings_at_connect(&model.laser_settings, &stream); model.laser_streams.insert(dac.id(), stream); // match save_config_file("./config.json", model.per_laser_config.clone().into()) { @@ -522,6 +543,7 @@ fn update(_app: &App, model: &mut GuiModel, update: Update) { Err(err) => eprintln!("failed to restart stream: {}", err), Ok(stream) => { println!("Reinsert stream. {:?}", dac_id); + double_send_settings_at_connect(&model.laser_settings, &stream); model.laser_streams.insert(dac_id, stream); }, } @@ -530,6 +552,8 @@ fn update(_app: &App, model: &mut GuiModel, update: Update) { } + + // check if new messages have arrived. Update the model with new data. zmq_receive(model); @@ -760,32 +784,6 @@ fn update(_app: &App, model: &mut GuiModel, update: Update) { } }); - // if ui - // .add_enabled(laser_settings.enable_optimisations, - // egui::Checkbox::new(&mut laser_settings.enable_draw_reorder,"Reorder paths") - // ) - // // .checkbox(&mut laser_settings.enable_draw_reorder, "Reorder paths") - // .changed() - // { - // for (_dac_id, stream) in laser_streams.iter() { - // stream - // .enable_draw_reorder(laser_settings.enable_draw_reorder) - // .ok(); - // } - // } - - if ui - .add(egui::Slider::new(&mut selected_config.filters.dim.intensity, 0.0..=1.).text("Dimming")) - .changed() - { - let factor = selected_config.filters.dim.intensity; - if let Some(stream) = selected_laser_stream { - stream.send(move |laser_model: &mut LaserModel| { - laser_model.config.filters.dim.intensity = factor; - }).unwrap(); - } - } - if ui .add(egui::Slider::new(&mut selected_config.filters.dim.intensity, 0.0..=1.).text("Dimming")) .changed()