calibration_auth/
calibration_auth.rs1use 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}