pair-tag

xod-dev/pn532-nfc/pair-tag

Pairs module with an NFC tag and reads the UID
pair-tag
@/pair-tag
Pairs module with an NFC tag and reads the UID
DEV@/pn532-device
PAIRpulse
Triggers pairing with an NFC tag
pair-tag
UID
OK
NA
DEV
PAIR
NApulse
Fires if there is no NFC tag
OKpulse
Fires on successful pairing
UID@/nfc-uid
The UID of the paired NFC tag
To use the node in your project you should have the xod-dev/pn532-nfc library installed. Use the “File → Add Library” menu item in XOD IDE if you don’t have it yet. See Using libraries for more info.

C++ implementation

#pragma XOD evaluate_on_pin disable
#pragma XOD evaluate_on_pin enable input_PAIR

struct State {
};

// clang-format off
{{ GENERATED_CODE }}
// clang-format on

void evaluate(Context ctx) {
    if (!isInputDirty<input_PAIR>(ctx))
        return;

    auto nfc = getValue<input_DEV>(ctx);

    uint8_t uidLength;
    uint8_t readedUid[12];
    bool res = nfc->readPassiveTargetID(PN532_MIFARE_ISO14443A, readedUid, &uidLength);

    if (res) {
        ValueType<output_UID>::T uid;
        memset(readedUid + uidLength, 0, 12 - uidLength);
        memcpy(uid.items, readedUid, 7);
        emitValue<output_UID>(ctx, uid);
        emitValue<output_OK>(ctx, 1);
    } else {
        emitValue<output_UID>(ctx, ValueType<output_UID>::T::empty());
        emitValue<output_NA>(ctx, 1);
    }
}