diff --git a/Cargo.lock b/Cargo.lock index 9ccd996..2d0b357 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -125,6 +125,7 @@ dependencies = [ "esp-rtos", "ili9341", "log", + "ndef", "pn532", "smoltcp", ] @@ -255,6 +256,26 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "digest" version = "0.10.7" @@ -1186,6 +1207,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" +[[package]] +name = "ndef" +version = "0.5.0" +dependencies = [ + "derive_more", + "heapless 0.8.0", + "rustversion", +] + [[package]] name = "num-derive" version = "0.4.2" diff --git a/Cargo.toml b/Cargo.toml index d9d4185..c568e9c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,6 +52,7 @@ embedded-hal-bus = "0.3.0" embedded-graphics = "0.8.2" embedded-graphics-core = "0.4.1" pn532 = "0.5.0" +ndef = { version = "0.5.0", path = "./ndef-rs" } # For fine tuning these settings, please refer to https://doc.rust-lang.org/cargo/reference/profiles.html diff --git a/src/bin/main.rs b/src/bin/main.rs index c1d509a..68a704a 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -166,7 +166,7 @@ fn main() -> ! { ) { Ok(uid) => { info!("uid = {uid:?}"); - for i in (0x0b..=230) { + for i in (0x04..=230) { let mut parse_result = Err(()); while parse_result.is_err() { let Ok(result) = pn532.process(&Request::ntag_read(i), 17, ms_1000) else { @@ -178,6 +178,10 @@ fn main() -> ! { data.extend(bytes); } info!("Full data: {data:02x?}"); + match ndef::Message::try_from(&data[4..4 + 883]) { + Ok(m) => info!("Parsed: {m:02x?}"), + Err(e) => info!("Failed to parse: {e:?}"), + } data.clear(); } Err(e) => {