Skip to main content

calibration_auth/
calibration_auth.rs

1use std::time::Duration;
2
3use km003c_lib::{Attribute, AttributeSet, DeviceConfig, GraphSampleRate, KM003C};
4
5#[tokio::main]
6async fn main() -> Result<(), Box<dyn std::error::Error>> {
7    let mut device = KM003C::new(DeviceConfig::vendor().skip_reset()).await?;
8    let initial_level = device.state().map(|state| state.auth_level).unwrap_or(0);
9    println!("Initial authentication level: {initial_level}");
10
11    let result = device.authenticate_calibration().await?;
12    println!(
13        "Calibration authentication level: {} (attribute 0x{:04x})",
14        result.auth_level, result.attribute
15    );
16
17    device.start_graph_mode(GraphSampleRate::Sps50).await?;
18    tokio::time::sleep(Duration::from_millis(200)).await;
19    let response = device.request_data(AttributeSet::single(Attribute::AdcQueue)).await;
20    device.stop_graph_mode().await?;
21
22    let response = response?;
23    let samples = response.get_adc_queue().map(|queue| queue.samples.len()).unwrap_or(0);
24    println!("AdcQueue samples received after level-2 auth: {samples}");
25
26    Ok(())
27}