Compare commits
1
Commits
main
...
82f81d1cd0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
82f81d1cd0
|
@@ -0,0 +1 @@
|
|||||||
|
pub mod nfc;
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#[embassy_executor::task]
|
||||||
|
#[allow(
|
||||||
|
clippy::large_stack_frames,
|
||||||
|
reason = "ignoring this for now because it still works"
|
||||||
|
)]
|
||||||
|
async fn nfc_driver_task(
|
||||||
|
mut nfc_driver: NfcPn532Driver<AtomicDevice<'static, I2c<'static, Blocking>>>,
|
||||||
|
) {
|
||||||
|
loop {
|
||||||
|
while CARD_DATA.lock().await.is_none() {
|
||||||
|
let start = Instant::now();
|
||||||
|
match nfc_driver.read_card_data().await {
|
||||||
|
Ok(card_data) => {
|
||||||
|
let Some(split_data) = split_nfc_hex(&card_data) else {
|
||||||
|
log::error!("Failed to split NFC card data");
|
||||||
|
continue;
|
||||||
|
};
|
||||||
|
CARD_DATA
|
||||||
|
.lock()
|
||||||
|
.await
|
||||||
|
.replace(Card::try_from(split_data).unwrap());
|
||||||
|
let elapsed_ms = start.elapsed().as_millis();
|
||||||
|
log::info!(
|
||||||
|
"NFC read duration: {} ms, card data length: {}",
|
||||||
|
elapsed_ms,
|
||||||
|
card_data.len()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
log::error!("NFC read failed: {e}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
embassy_time::Timer::after(embassy_time::Duration::from_millis(1000)).await;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -138,43 +138,6 @@ async fn main(spawner: Spawner) {
|
|||||||
spawner.spawn(nfc_driver_task(nfc_driver).expect("nfc driver task failed"));
|
spawner.spawn(nfc_driver_task(nfc_driver).expect("nfc driver task failed"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[embassy_executor::task]
|
|
||||||
#[allow(
|
|
||||||
clippy::large_stack_frames,
|
|
||||||
reason = "ignoring this for now because it still works"
|
|
||||||
)]
|
|
||||||
async fn nfc_driver_task(
|
|
||||||
mut nfc_driver: NfcPn532Driver<AtomicDevice<'static, I2c<'static, Blocking>>>,
|
|
||||||
) {
|
|
||||||
loop {
|
|
||||||
while CARD_DATA.lock().await.is_none() {
|
|
||||||
let start = Instant::now();
|
|
||||||
match nfc_driver.read_card_data().await {
|
|
||||||
Ok(card_data) => {
|
|
||||||
let Some(split_data) = split_nfc_hex(&card_data) else {
|
|
||||||
log::error!("Failed to split NFC card data");
|
|
||||||
continue;
|
|
||||||
};
|
|
||||||
CARD_DATA
|
|
||||||
.lock()
|
|
||||||
.await
|
|
||||||
.replace(Card::try_from(split_data).unwrap());
|
|
||||||
let elapsed_ms = start.elapsed().as_millis();
|
|
||||||
log::info!(
|
|
||||||
"NFC read duration: {} ms, card data length: {}",
|
|
||||||
elapsed_ms,
|
|
||||||
card_data.len()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
log::error!("NFC read failed: {e}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
embassy_time::Timer::after(embassy_time::Duration::from_millis(1000)).await;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn display_shit(oled: &mut SecondaryDisplay<'static>, text: &str) {
|
fn display_shit(oled: &mut SecondaryDisplay<'static>, text: &str) {
|
||||||
oled.clear().unwrap();
|
oled.clear().unwrap();
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
extern crate alloc;
|
extern crate alloc;
|
||||||
|
|
||||||
|
pub mod background_tasks;
|
||||||
pub mod card;
|
pub mod card;
|
||||||
pub mod display;
|
pub mod display;
|
||||||
pub mod drivers;
|
pub mod drivers;
|
||||||
|
|||||||
Reference in New Issue
Block a user