Send config to laser on connect
This commit is contained in:
parent
b4a1bf1597
commit
966632c490
1 changed files with 24 additions and 26 deletions
50
src/main.rs
50
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);
|
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<LaserModel>) {
|
||||||
|
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) {
|
fn update(_app: &App, model: &mut GuiModel, update: Update) {
|
||||||
// First, check for new laser DACs.
|
// First, check for new laser DACs.
|
||||||
for dac in model.dac_rx.try_recv() {
|
for dac in model.dac_rx.try_recv() {
|
||||||
|
@ -473,6 +493,7 @@ fn update(_app: &App, model: &mut GuiModel, update: Update) {
|
||||||
.build()
|
.build()
|
||||||
.expect("failed to establish stream with newly detected DAC");
|
.expect("failed to establish stream with newly detected DAC");
|
||||||
// dbg!(stream.enable_draw_reorder());
|
// dbg!(stream.enable_draw_reorder());
|
||||||
|
double_send_settings_at_connect(&model.laser_settings, &stream);
|
||||||
model.laser_streams.insert(dac.id(), stream);
|
model.laser_streams.insert(dac.id(), stream);
|
||||||
|
|
||||||
// match save_config_file("./config.json", model.per_laser_config.clone().into()) {
|
// 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),
|
Err(err) => eprintln!("failed to restart stream: {}", err),
|
||||||
Ok(stream) => {
|
Ok(stream) => {
|
||||||
println!("Reinsert stream. {:?}", dac_id);
|
println!("Reinsert stream. {:?}", dac_id);
|
||||||
|
double_send_settings_at_connect(&model.laser_settings, &stream);
|
||||||
model.laser_streams.insert(dac_id, 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.
|
// check if new messages have arrived. Update the model with new data.
|
||||||
zmq_receive(model);
|
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
|
if ui
|
||||||
.add(egui::Slider::new(&mut selected_config.filters.dim.intensity, 0.0..=1.).text("Dimming"))
|
.add(egui::Slider::new(&mut selected_config.filters.dim.intensity, 0.0..=1.).text("Dimming"))
|
||||||
.changed()
|
.changed()
|
||||||
|
|
Loading…
Reference in a new issue