From 90fd1a00abff1bd134e59b70b540360c1e96c089 Mon Sep 17 00:00:00 2001 From: itsscb Date: Mon, 28 Oct 2024 22:55:50 +0100 Subject: [PATCH] feat(card_reader): adds timeout between reads for smoother transition --- src/card_reader.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/card_reader.rs b/src/card_reader.rs index d371fbf..c4595c1 100644 --- a/src/card_reader.rs +++ b/src/card_reader.rs @@ -49,11 +49,16 @@ pub fn read(vid: u16, pid: u16, tx: &Sender>) -> Result<(), Error> { handle.claim_interface(0)?; let mut buf = [0; 128]; + let mut last_scan = std::time::Instant::now(); loop { match handle.read_interrupt(0x81, &mut buf, Duration::from_secs(1)) { Ok(_) => { if let Some(card_id) = extract_card_id(&buf) { + if last_scan.elapsed() < Duration::from_secs(2) { + continue; + } tx.send(Arc::from(card_id)).map_err(Error::Send)?; + last_scan = std::time::Instant::now(); } } Err(rusb::Error::Timeout) => (),