use rust_stdf::{stdf_file::*, stdf_record_type::*, StdfRecord};
use std::env;
use std::time::Instant;
fn main() {
let stdf_path: String;
if let Some(fpath) = env::args().nth(1) {
stdf_path = fpath;
println!("Input path: {}\n", stdf_path);
} else {
println!("no path\n");
return;
};
let ptr_test_name = env::args()
.nth(2)
.unwrap_or_else(|| "contiuity test".to_string());
let mut reader = match StdfReader::new(&stdf_path) {
Ok(r) => r,
Err(e) => {
println!("{}", e);
return;
}
};
let start_time = Instant::now();
let mut dut_count: u64 = 0;
let mut continuity_rlt = vec![];
let rec_types = REC_PIR | REC_PTR | REC_MPR;
for rec in reader
.get_record_iter()
.map(|x| x.unwrap())
.filter(|x| x.is_type(rec_types))
{
match rec {
StdfRecord::PIR(_) => {
dut_count += 1;
}
StdfRecord::PTR(ref ptr_rec) => {
if ptr_rec.test_txt == ptr_test_name {
continuity_rlt.push(ptr_rec.result);
}
}
StdfRecord::MPR(ref mpr_rec) => {
if mpr_rec.res_scal.is_none() {
println!("{:?}", mpr_rec);
}
}
_ => {}
}
}
let elapsed = start_time.elapsed().as_millis();
println!(
"Total duts {} \n {} result {:?}\n elapsed time {} ms",
dut_count, ptr_test_name, continuity_rlt, elapsed
);
}