diff --git a/workspace/__lib__/xod-dev/pn532-nfc/equal(nfc-uid)/patch.cpp b/workspace/__lib__/xod-dev/pn532-nfc/equal(nfc-uid)/patch.cpp index 6ee8ec41..b2282c10 100644 --- a/workspace/__lib__/xod-dev/pn532-nfc/equal(nfc-uid)/patch.cpp +++ b/workspace/__lib__/xod-dev/pn532-nfc/equal(nfc-uid)/patch.cpp @@ -1,13 +1,8 @@ -struct State { -}; - -// clang-format off -{{ GENERATED_CODE }} -// clang-format on - -void evaluate(Context ctx) { - auto uidA = getValue(ctx); - auto uidB = getValue(ctx); - bool eq = memcmp(uidA.items, uidB.items, sizeof(uidA.items)) == 0; - emitValue(ctx, eq); +node { + void evaluate(Context ctx) { + auto uidA = getValue(ctx); + auto uidB = getValue(ctx); + bool eq = memcmp(uidA.items, uidB.items, sizeof(uidA.items)) == 0; + emitValue(ctx, eq); + } } diff --git a/workspace/__lib__/xod-dev/pn532-nfc/nfc-uid/patch.cpp b/workspace/__lib__/xod-dev/pn532-nfc/nfc-uid/patch.cpp index 97c513ae..3e66e57a 100644 --- a/workspace/__lib__/xod-dev/pn532-nfc/nfc-uid/patch.cpp +++ b/workspace/__lib__/xod-dev/pn532-nfc/nfc-uid/patch.cpp @@ -1,32 +1,27 @@ -struct State { -}; +node { + meta { + struct Type { + uint8_t items[7]; -struct TagUID { - uint8_t items[7]; + static Type empty() { + Type emptyUid; + memset(emptyUid.items, 0, 7); + return emptyUid; + }; - static TagUID empty() { - TagUID emptyUid; - memset(emptyUid.items, 0, 7); - return emptyUid; - }; + }; + } -}; + void evaluate(Context ctx) { + Type uid; + uid.items[0] = (uint8_t)getValue(ctx); + uid.items[1] = (uint8_t)getValue(ctx); + uid.items[2] = (uint8_t)getValue(ctx); + uid.items[3] = (uint8_t)getValue(ctx); + uid.items[4] = (uint8_t)getValue(ctx); + uid.items[5] = (uint8_t)getValue(ctx); + uid.items[6] = (uint8_t)getValue(ctx); -using Type = TagUID; - -// clang-format off -{{ GENERATED_CODE }} -// clang-format on - -void evaluate(Context ctx) { - TagUID uid; - uid.items[0] = (uint8_t)getValue(ctx); - uid.items[1] = (uint8_t)getValue(ctx); - uid.items[2] = (uint8_t)getValue(ctx); - uid.items[3] = (uint8_t)getValue(ctx); - uid.items[4] = (uint8_t)getValue(ctx); - uid.items[5] = (uint8_t)getValue(ctx); - uid.items[6] = (uint8_t)getValue(ctx); - - emitValue(ctx, uid); + emitValue(ctx, uid); + } } diff --git a/workspace/__lib__/xod-dev/pn532-nfc/pair-tag/patch.cpp b/workspace/__lib__/xod-dev/pn532-nfc/pair-tag/patch.cpp index 88906521..65b4ae35 100644 --- a/workspace/__lib__/xod-dev/pn532-nfc/pair-tag/patch.cpp +++ b/workspace/__lib__/xod-dev/pn532-nfc/pair-tag/patch.cpp @@ -1,31 +1,26 @@ #pragma XOD evaluate_on_pin disable #pragma XOD evaluate_on_pin enable input_PAIR -struct State { -}; +node { + void evaluate(Context ctx) { + if (!isInputDirty(ctx)) + return; -// clang-format off -{{ GENERATED_CODE }} -// clang-format on + auto nfc = getValue(ctx); -void evaluate(Context ctx) { - if (!isInputDirty(ctx)) - return; + uint8_t uidLength; + uint8_t readedUid[12]; + bool res = nfc->readPassiveTargetID(PN532_MIFARE_ISO14443A, readedUid, &uidLength); - auto nfc = getValue(ctx); - - uint8_t uidLength; - uint8_t readedUid[12]; - bool res = nfc->readPassiveTargetID(PN532_MIFARE_ISO14443A, readedUid, &uidLength); - - if (res) { - ValueType::T uid; - memset(readedUid + uidLength, 0, 12 - uidLength); - memcpy(uid.items, readedUid, 7); - emitValue(ctx, uid); - emitValue(ctx, 1); - } else { - emitValue(ctx, ValueType::T::empty()); - emitValue(ctx, 1); + if (res) { + typeof_UID uid; + memset(readedUid + uidLength, 0, 12 - uidLength); + memcpy(uid.items, readedUid, 7); + emitValue(ctx, uid); + emitValue(ctx, 1); + } else { + emitValue(ctx, remove_pointer::type::empty()); + emitValue(ctx, 1); + } } } diff --git a/workspace/__lib__/xod-dev/pn532-nfc/pn532-device/patch.cpp b/workspace/__lib__/xod-dev/pn532-nfc/pn532-device/patch.cpp index a2b4600b..c61d1229 100644 --- a/workspace/__lib__/xod-dev/pn532-nfc/pn532-device/patch.cpp +++ b/workspace/__lib__/xod-dev/pn532-nfc/pn532-device/patch.cpp @@ -1,41 +1,32 @@ #pragma XOD require "https://github.com/adafruit/Adafruit_BusIO" #pragma XOD require "https://github.com/adafruit/Adafruit-PN532" -// clang-format off -{{#global}} #include -{{/global}} -// clang-format on -struct State { - uint8_t mem[sizeof(Adafruit_PN532)]; -}; - -using Type = Adafruit_PN532*; - -// clang-format off -{{ GENERATED_CODE }} -// clang-format on - -void evaluate(Context ctx) { - if (!isSettingUp()) return; - - auto state = getState(ctx); - auto irq = getValue(ctx); - - Type nfc = new (state->mem) Adafruit_PN532(irq, NOT_A_PORT); - - // Initialize the device - nfc->begin(); - // Ensure the device is working - uint32_t versiondata = nfc->getFirmwareVersion(); - if (!versiondata) { - raiseError(ctx); - return; +node { + meta { + using Type = Adafruit_PN532*; } - // Configure the device - nfc->setPassiveActivationRetries(0x01); - nfc->SAMConfig(); - emitValue(ctx, nfc); + static_assert(isValidDigitalPort(constant_input_IRQ), "must be a valid digital port"); + + Adafruit_PN532 nfc = Adafruit_PN532(constant_input_IRQ, NOT_A_PORT); + + void evaluate(Context ctx) { + if (!isSettingUp()) return; + + // Initialize the device + nfc.begin(); + // Ensure the device is working + uint32_t versiondata = nfc.getFirmwareVersion(); + if (!versiondata) { + raiseError(ctx); + return; + } + // Configure the device + nfc.setPassiveActivationRetries(0x01); + nfc.SAMConfig(); + + emitValue(ctx, &nfc); + } } diff --git a/workspace/__lib__/xod-dev/pn532-nfc/read-page/patch.cpp b/workspace/__lib__/xod-dev/pn532-nfc/read-page/patch.cpp index 0ad786b7..763d79db 100644 --- a/workspace/__lib__/xod-dev/pn532-nfc/read-page/patch.cpp +++ b/workspace/__lib__/xod-dev/pn532-nfc/read-page/patch.cpp @@ -2,30 +2,25 @@ #pragma XOD evaluate_on_pin enable input_READ #pragma XOD error_raise enable -struct State { -}; +node { + void evaluate(Context ctx) { + if (!isInputDirty(ctx)) + return; -// clang-format off -{{ GENERATED_CODE }} -// clang-format on + auto nfc = getValue(ctx); + uint8_t page = (uint8_t)getValue(ctx); -void evaluate(Context ctx) { - if (!isInputDirty(ctx)) - return; + uint8_t data[4]; + uint8_t success = nfc->mifareultralight_ReadPage(page, data); - auto nfc = getValue(ctx); - uint8_t page = (uint8_t)getValue(ctx); - - uint8_t data[4]; - uint8_t success = nfc->mifareultralight_ReadPage(page, data); - - if (success) { - emitValue(ctx, data[0]); - emitValue(ctx, data[1]); - emitValue(ctx, data[2]); - emitValue(ctx, data[3]); - emitValue(ctx, 1); - } else { - raiseError(ctx); + if (success) { + emitValue(ctx, data[0]); + emitValue(ctx, data[1]); + emitValue(ctx, data[2]); + emitValue(ctx, data[3]); + emitValue(ctx, 1); + } else { + raiseError(ctx); + } } } diff --git a/workspace/__lib__/xod-dev/pn532-nfc/unpack-nfc-uid/patch.cpp b/workspace/__lib__/xod-dev/pn532-nfc/unpack-nfc-uid/patch.cpp index c38f00ae..b50dd12d 100644 --- a/workspace/__lib__/xod-dev/pn532-nfc/unpack-nfc-uid/patch.cpp +++ b/workspace/__lib__/xod-dev/pn532-nfc/unpack-nfc-uid/patch.cpp @@ -1,18 +1,13 @@ -struct State { -}; +node { + void evaluate(Context ctx) { + auto uid = getValue(ctx); -// clang-format off -{{ GENERATED_CODE }} -// clang-format on - -void evaluate(Context ctx) { - auto uid = getValue(ctx); - - emitValue(ctx, uid.items[0]); - emitValue(ctx, uid.items[1]); - emitValue(ctx, uid.items[2]); - emitValue(ctx, uid.items[3]); - emitValue(ctx, uid.items[4]); - emitValue(ctx, uid.items[5]); - emitValue(ctx, uid.items[6]); + emitValue(ctx, uid.items[0]); + emitValue(ctx, uid.items[1]); + emitValue(ctx, uid.items[2]); + emitValue(ctx, uid.items[3]); + emitValue(ctx, uid.items[4]); + emitValue(ctx, uid.items[5]); + emitValue(ctx, uid.items[6]); + } } diff --git a/workspace/__lib__/xod-dev/pn532-nfc/write-page/patch.cpp b/workspace/__lib__/xod-dev/pn532-nfc/write-page/patch.cpp index b8ac0829..7591a003 100644 --- a/workspace/__lib__/xod-dev/pn532-nfc/write-page/patch.cpp +++ b/workspace/__lib__/xod-dev/pn532-nfc/write-page/patch.cpp @@ -2,30 +2,25 @@ #pragma XOD evaluate_on_pin enable input_UPD #pragma XOD error_raise enable -struct State { -}; +node { + void evaluate(Context ctx) { + if (!isInputDirty(ctx)) + return; -// clang-format off -{{ GENERATED_CODE }} -// clang-format on + auto nfc = getValue(ctx); + uint8_t page = (uint8_t)getValue(ctx); + uint8_t data[4] = { + getValue(ctx), + getValue(ctx), + getValue(ctx), + getValue(ctx) + }; + uint8_t success = nfc->mifareultralight_WritePage(page, data); -void evaluate(Context ctx) { - if (!isInputDirty(ctx)) - return; - - auto nfc = getValue(ctx); - uint8_t page = (uint8_t)getValue(ctx); - uint8_t data[4] = { - getValue(ctx), - getValue(ctx), - getValue(ctx), - getValue(ctx) - }; - uint8_t success = nfc->mifareultralight_WritePage(page, data); - - if (success) { - emitValue(ctx, 1); - } else { - raiseError(ctx); + if (success) { + emitValue(ctx, 1); + } else { + raiseError(ctx); + } } }