The SKU<->EPC layout inherited from daemon.cs was WRONG. daemon.cs packs 6 bytes
of SKU + 4 bytes of release_id + an 0xEC01 marker, and flagged itself as
unverified. The shop's actual scheme -- in pliceclogs/rfid-daemon/index.js
(buildEpcPayload/parseEpcData), which is what the extension and every existing
tag use -- is a single 96-bit big-endian integer:
value = sku(14 digits) * 10^9 + releaseId
Checked against that file's own worked example: 20260321001001 + 35332 ->
20260321001001000035332. epc_decode also reproduces its guard, returning None
when value/10^9 exceeds 14 digits, so a factory tag (E28069...) can never be
reported to the operator as a real SKU.
This matters: parseEpcData rejects the EC01 layout outright, so every tag the
Windows daemon has written is invisible to the extension. ASSESSMENT.md now
carries that as a red open item against daemon.cs.
Verified end-to-end with an INDEPENDENT reader. ASSESSMENT.md sec.4 parked the
Chafon as HID-keyboard-only, but that is Windows-specific -- on macOS it exposes
a CH340 bridge and its documented serial protocol works. New chafon.py (read-only:
inventory + read EPC, CRC-16/0x8408 framing) scans the field and sees:
0000044A5600D4CDA1FAB932 -> sku=20260722180000 rel=424242 (Urovo-written)
E28069950000600625F600D3 -> factory/blank (x12, rest of roll)
126D5125FFA000067932EC01 -> factory/blank (earlier EC01 tag, now rejected)
That last line is the bug demonstrated: a tag written earlier today under the old
scheme is unrecognised, exactly as the extension would have treated it.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
15 lines
439 B
Bash
Executable File
15 lines
439 B
Bash
Executable File
#!/bin/bash
|
|
# One-time setup for the macOS daemon. Safe to re-run.
|
|
set -e
|
|
cd "$(dirname "$0")"
|
|
|
|
command -v brew >/dev/null || { echo "Homebrew required: https://brew.sh"; exit 1; }
|
|
brew list libusb >/dev/null 2>&1 || brew install libusb
|
|
|
|
python3 -m venv venv
|
|
./venv/bin/pip install --quiet --upgrade pip
|
|
./venv/bin/pip install --quiet pyusb pillow segno pyserial
|
|
|
|
echo
|
|
./venv/bin/python urovo.py && echo "OK -- run ./start-daemon.command"
|