Reader drivers

From Zaparoo Wiki

Revision as of 12:23, 9 July 2024 by Wizzo (talk | contribs)

Reader drivers are ways for TapTo to communicate with different types of reader hardware. This mostly includes NFC Readers, but can be other types of hardware or virtual devices.

Some reader drivers have autodetection, and will attempt to scan and connect to devices connected to the host. It's also possible to manually configure a reader in the tapto.ini file, by adding the line reader=<device string> into the [tapto] section of the file. A device string is in the format of <reader driver id>:<path to device>, where the path is generally an absolute path to a file on the host, though this can vary depending on the driver and host operating system. Multiple readers can be set in the tapto.ini by adding additional reader=... lines.

libnfc

A passthrough to the libnfc library. It supports many types of wired connections for common NFC readers available. It has autodetection for ACR122U NFC readers and PN532 modules connected over USB. Handles driver IDs: acr122_usb, pn532_uart and pn532_i2c.

acr122_usb

Supports the ACR122U USB NFC reader. This driver does not take a file path as an argument, it takes a device name. This is a little tricky to find at the moment, but autodetection works well and is generally how you should use it.

pn532_uart

Supports PN532 modules that are connected via USB through a USB serial chip and with the DIP switches set to UART. This is the driver used for all the currently available TapTo USB-C Readers and TapTo DIY Readers. The device path is something like /dev/ttyUSB0 on Linux. This driver supports autodetection.

pn532_i2c

Supports PN532 modules connected directly like, for example, a GPIO with the DIP switches set to I2C. The device path is something like /dev/i2c-0. This driver does not currently support auto-detection.

Simple Serial

A lightweight custom serial protocol that allows a microcontroller to act as a reader using its own hardware and custom logic. The device only needs to offer a read-only serial connection to the attached host. It handles the driver ID simple_serial and takes a path to a serial device, it does not currently support autodetection. A baud rate of 115200 is required for the serial connection, though this may be configurable in the future.

The driver accepts one command payload from the connected device:

SCAN\tremovable=yes\tuid=123457890\ttext=NeoGeo/mslug\n

That is, a string starting with SCAN, 3 named arguments separated by a tab, and ending with a newline. The device should send this string constantly, as long as it wants the token to be considered active. If a token hasn't been sent for 1 second, it will be considered removed. The intention is that a device can simply spam this text at TapTo if something is being read, and TapTo will handle the rest to make it act like a standard reader.

All 3 arguments are optional. Sending SCAN by itself will explicitly set the token as removed in TapTo.

  • removable is a boolean (yes/no) value that specifies if the reader is itself capable of telling when a token has been "removed" from it. Setting this to no will inform TapTo not to clear the token as active when it stops receiving the payload, and make sure it works correctly when insert mode is active. This can be useful, for example, with a barcode scanner which would only scan a barcode once and doesn't make sense to "remove" it later. This option defaults to yes and can be left out in most cases.
  • uid is a string that sets the UID value on the resulting token. This is just an extra piece of metadata that can be attached to a token. It is used for comparing tokens and can be used in a mapping. The option defaults to an empty string and is optional.
  • text is a string which contains the token commands which will be run.

If the payload only contains one argument without any name, the entire argument will be used as the token text.

File

A virtual reader which allows treating a file on disk as an input source of tokens. Handles driver ID file and takes an absolute path to a file on disk. If this file doesn't exist on first startup, TapTo will create an empty file.

The contents of the file is used as the token text. No other token metadata can be set with this reader. When a file is first written to the token will be "inserted", when the contents of the file is cleared it will be "removed".