Skip to main content

device_lock_and_operation_mode/
device_lock_and_operation_mode.rs

1// Switch a device between its operation modes and lock it against changes.
2
3use opendaq::{Instance, OperationModeType};
4
5fn main() -> opendaq::Result<()> {
6    let instance = Instance::new()?;
7    let device = instance
8        .add_device("daqref://device0")?
9        .expect("reference device");
10
11    let modes: Vec<String> = device
12        .available_operation_modes()?
13        .into_iter()
14        .filter_map(|mode| OperationModeType::from_raw(mode as u32))
15        .map(|mode| format!("{mode:?}"))
16        .collect();
17    println!("Available operation modes: {}", modes.join(", "));
18    println!("Current operation mode:    {:?}", device.operation_mode()?);
19
20    device.set_operation_mode(OperationModeType::Operation)?;
21    device.lock()?;
22    println!("After setting Operation:   {:?}", device.operation_mode()?);
23    println!("Device locked: {}", device.is_locked()?);
24
25    device.unlock()?;
26    device.set_operation_mode(OperationModeType::SafeOperation)?;
27    println!();
28    println!("Device locked: {}", device.is_locked()?);
29    println!("Final operation mode:      {:?}", device.operation_mode()?);
30    Ok(())
31}