use blackmagic_camera_control::command::{Command, Metadata, Video};
use blackmagic_camera_control::{BluetoothCamera, Operation};
use std::error::Error;
use std::time::Duration;
use tokio::time;
const CAMERA_NAME: &'static str = "A:4BE2529F";
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let mut camera = BluetoothCamera::new(CAMERA_NAME).await.unwrap();
camera.connect(Duration::from_secs(10)).await.unwrap();
camera
.write(255, Operation::AssignValue, Command::Video(Video::Iso(320)))
.await
.unwrap();
let mut updates = camera.updates().await;
tokio::spawn(async move {
loop {
let update = updates.recv().await;
match update {
Ok(v) => {
println!("{:?}", v);
}
Err(_) => {}
}
}
});
time::sleep(Duration::from_secs(5)).await;
camera
.write(255, Operation::AssignValue, Command::Video(Video::Iso(640)))
.await
.unwrap();
time::sleep(Duration::from_secs(1)).await;
let info = camera
.get(Command::Metadata(Metadata::LensDistance("".to_string())))
.await;
dbg!(info);
Ok(())
}