The scan only sees NFC data. It cannot sense whether a label's display
listens for infrared or radio, so the messages now say what was found
instead of naming a vendor or a transport as fact.
- "VUSION tag / SES-imagotag uses radio, not IR" becomes "Likely radio
tag / Link: nfc.imagotag.com / TagTinker is IR-only".
- Match an http:// or https:// link whose host is nfc.imagotag.com
(case-insensitive), as prefix code 0x03/0x04 or inline after 0x00,
instead of the substring "imagotag" anywhere in the URL. A "://"
inside a path, query or fragment is not taken as the scheme.
- "Not a Pricer tag" becomes "Unrecognized tag / No ID TagTinker can
decode"; "Unsupported chip" becomes "Unreadable chip / Chip answered
but no data was read".
- Move the decision into tagtinker_nfc_classify() so it can be tested
off-device.
- De-duplicate on UID and result together. The firmware reports a read
that stops partway as a success with fewer pages, so a UID-only check
could keep a tag stuck on "Unrecognized tag" after a partial first
read.
- Announce an unreadable chip once until the field is empty. Those reads
carry no UID, so UID de-duplication never applied and the message
repeated on every poll.
- Bring the prompt back from the scene tick instead of a popup callback.
A popup with a callback consumes every short press, so Back only
dismissed the message and a second Back was needed to leave.
- Stop the scanner on the Back event rather than waiting for on_exit, so
the poll loop is already winding down when the scene is popped and the
join there is as short as possible. On device, leaving from a message
takes exactly one Back.
- Move custom event ids to 200+. NfcScanEventSuccess was 100, the same
id as the target menu's "+ Type Barcode" item.
- Stop the scan LED when "Target list full" ends scanning.
- README: add "Which tags work", with vendor-documented radio examples
and a table of what each scan message means.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Add "+ Scan NFC" option in the Targeted Payloads menu.
Scans Mifare Ultralight NDEF tags, decodes the encoded
ESL ID, and auto-creates the target — no manual barcode
entry needed. Cyan LED blinks during scan. Loops until
a tag is found or the user presses Back.
New files:
- nfc/tagtinker_nfc.c/.h — NDEF URI decoder module
- scenes/tagtinker_scene_nfc_scan.c — NFC scan scene
Version bumped to 2.1, NFC credit added to About screen.