From c3fe4759adfd558b32a7b1c5685f53aa33c7dabd Mon Sep 17 00:00:00 2001 From: rhetenor Date: Wed, 26 Aug 2026 20:54:03 +0000 Subject: [PATCH] nfc read: print error instead of panic on invalid data --- src/bin/main.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/bin/main.rs b/src/bin/main.rs index 23fd0e7..c7529fc 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -16,7 +16,7 @@ use creaturedex::drivers::nfc_pn532::NfcPn532Driver; use creaturedex::navigation::inputs::Inputs; use creaturedex::navigation::navigation::{self, CARD_DATA}; use creaturedex::network::wifi::setup_wifi; -use creaturedex::storage::cardstore::{CardStore, CardStoreError}; +use creaturedex::storage::cardstore::CardStore; use creaturedex::storage::store::Store; use embassy_executor::Spawner; use embassy_time::Instant; @@ -108,7 +108,7 @@ async fn main(spawner: Spawner) { let store = Store::new(peripherals.FLASH).expect("Could not initialize Flash Store"); let card_store = CardStore::new(store).expect("Could not initialize Card Store"); - let mut rtc = Rtc::new(peripherals.LPWR); + let rtc = Rtc::new(peripherals.LPWR); //setup_wifi(peripherals.WIFI, peripherals.FLASH, &spawner).await; let mut nfc_driver = NfcPn532Driver::new(AtomicDevice::new(shared_i2c)); @@ -150,10 +150,14 @@ async fn nfc_driver_task( log::error!("Failed to split NFC card data"); continue; }; - CARD_DATA - .lock() - .await - .replace(Card::try_from(split_data).expect("Invalid card data")); + let card = match Card::try_from(split_data) { + Ok(card) => card, + Err(err) => { + log::error!("Invalid card data: {err}"); + continue; + } + }; + CARD_DATA.lock().await.replace(card); match card_store.save_raw_card(split_data, rtc.current_time_us()) { Ok(()) => {}