Skip to content

Poll ISO 14443A in addition to ISO 15693 (groundwork for other tag types) #93

Open

Description

@76cb

Background

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.

Blocks #94, #95, #96, #97.

Part of the tag-support roadmap in the README.


Generated by Claude Code

Activity

  1. added 2 commits that reference this issue on Oct 21, 2026
  2. 76cb commented on Oct 21, 2026

    @76cb
    OwnerAuthor

    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.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions