1use pps_time::{pps, PpsDevice};
2use std::path::PathBuf;
3
4fn main() {
8 let args: Vec<String> = std::env::args().collect();
9 if args.len() < 2 {
10 println!("Example usage:");
11 println!("$ sudo ./target/debug/examples/blocking /dev/pps0");
12 return;
13 }
14
15 let path = PathBuf::from(&args[1]); println!("Opening PPS device {}", path.display());
18 let pps = PpsDevice::new(path).expect("Could not open file!");
19
20 let capabilities = pps.get_cap().expect("Could not get capabilities!");
21 println!("Capabilities: {:#x}", capabilities);
22
23 let mut params = pps.get_params().expect("Could not get params!");
24 println!("{:?}", params);
25
26 if capabilities & pps::PPS_CAPTUREASSERT != 0 {
28 params.mode |= pps::PPS_CAPTUREASSERT as i32;
29 } else {
30 println!("Cannot CAPTUREASSERT");
31 }
32 if capabilities & pps::PPS_CAPTURECLEAR != 0 {
34 params.mode |= pps::PPS_CAPTURECLEAR as i32;
35 } else {
36 println!("Cannot CAPTURECLEAR");
37 }
38
39 pps.set_params(&mut params).expect("Could not set params!");
40
41 if capabilities & pps::PPS_CANWAIT == 0 {
42 println!("Cannot CANWAIT");
43 return;
44 }
45
46 loop {
47 let data = pps.fetch_blocking().expect("Could not fetch!");
48 println!("{:#?}", data);
49 }
50}