use libcamera::camera_manager::CameraManager;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut mgr = CameraManager::new_unstarted()?;
println!("started? {}", mgr.is_started());
mgr.start()?;
println!("started after start()? {}", mgr.is_started());
let first_camera_id = {
let cameras = mgr.cameras();
println!("found {} cameras", cameras.len());
if let Some(cam) = cameras.get(0) {
println!("first camera id: {}", cam.id());
match mgr.try_stop() {
Ok(()) => println!("unexpectedly stopped with live camera"),
Err(e) => println!("try_stop() while camera alive -> {}", e),
}
Some(cam.id().to_string())
} else {
None
}
};
mgr.try_stop()?;
println!("stopped cleanly, started? {}", mgr.is_started());
mgr.restart()?;
println!("restarted, started? {}", mgr.is_started());
if let Some(id) = first_camera_id {
if let Some(cam) = mgr.get(&id) {
println!("camera {} still present after restart", cam.id());
} else {
println!("camera {} not found after restart", id);
}
}
Ok(())
}