You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Poll ISO 14443A in addition to ISO 15693 (groundwork for other tag types) #93
The 1.0 firmware only looks for ISO 15693 (NFC-V) tags. The reader chip and the vendored ELECHOUSE library also support ISO 14443A, which is what MIFARE Classic and NTAG tags use. This issue is the shared groundwork for the tag-type issues linked below.
Scope
Add a polling cycle that alternates technologies on the existing NFC worker, without changing how ISO 15693 tags are read or written today.
Report which technology a tag was found with in the NFC snapshot, so the UIs can say "tag found, not supported yet" instead of staying on PLACE A TAG.
Keep the NFC worker as the only owner of the I2C bus and of NFC state.
Things to settle first
NFC polling shares one task with backend HTTP calls (backend_worker.cpp). Measure how much a second technology slows tag detection and removal detection.
How the weighing and tag-removal logic should behave when two technologies are polled in turn.
The writer's source and ELF allow-list checks (tools/check_production_nfc.py) must still hold. Polling is read-only and should not widen the write path.
Acceptance
ISO 15693 behaviour is unchanged, shown by the existing tests plus a new test for the polling scheduler.
A tag from another technology is reported as found and unsupported on the touchscreen and in the browser.
Hardware check: detection and removal timing with an OpenPrintTag tag, before and after, recorded in the PR.
Status on main at f2f880c (1.0.1-beta.5, pre-release, PR #103):
Polling: NFC-V first on every 500 ms cycle as before; an ISO 14443A detection (mode switch, REQA, anticollision) runs in the same field window only when NFC-V found nothing and tracks nothing (src/nfc/poll_schedule.hpp). Host tests cover the ordering, the one tolerated missed poll, two tags, and NFC-V winning over a tracked NFC-A tag.
Snapshot and API report the technology; an NFC-A tag is unsupported_technology with NFCID1, SAK, ATQA and a kind from the SAK. Touchscreen and browser say "Tag type not supported yet". Nothing is read from it and the workflow ignores it.
The NFC owner is unchanged: still the backend task, still the only I2C/RFAL caller. tools/check_production_nfc.py permits exactly the three detection calls and forbids T2T, ISO-DEP and NFC-DEP routines in the ELF (both passed in CI).
Flash +8456 B, static RAM +56 B against beta.4.
Not done, so not closing: the hardware check (detection and removal timing with an OpenPrintTag before and after, and NTAG / MIFARE Classic detection on a station). The steps are in PR #103's description; please record the numbers here.
Activity
Detect ISO 14443A tags next to ISO 15693 (#93, 1.0.1-beta.5)
Merge pull request #103 from 76cb/claude/inspiring-allen-yra5xq
76cb commentedon Oct 21, 2026
Status on
mainat f2f880c (1.0.1-beta.5, pre-release, PR #103):src/nfc/poll_schedule.hpp). Host tests cover the ordering, the one tolerated missed poll, two tags, and NFC-V winning over a tracked NFC-A tag.unsupported_technologywith NFCID1, SAK, ATQA and a kind from the SAK. Touchscreen and browser say "Tag type not supported yet". Nothing is read from it and the workflow ignores it.tools/check_production_nfc.pypermits exactly the three detection calls and forbids T2T, ISO-DEP and NFC-DEP routines in the ELF (both passed in CI).Not done, so not closing: the hardware check (detection and removal timing with an OpenPrintTag before and after, and NTAG / MIFARE Classic detection on a station). The steps are in PR #103's description; please record the numbers here.
Generated by Claude Code