From 09bc3056bf8ef489ecd886c2e72e878971dcc2f8 Mon Sep 17 00:00:00 2001 From: Jelmer Date: Wed, 8 Mar 2023 00:37:03 +0100 Subject: [PATCH] added support for NFC wake --- tag_fw/fw154.bin | Bin 57060 -> 57438 bytes tag_fw/fw29-uc8151.bin | Bin 55652 -> 56030 bytes tag_fw/fw29.bin | Bin 57015 -> 57393 bytes tag_fw/fw42.bin | Bin 57029 -> 57407 bytes tag_fw/i2cdevices.c | 18 ++++++++++++++++++ tag_fw/i2cdevices.h | 1 + tag_fw/main.c | 14 +++++++++----- tag_fw/powermgt.c | 31 ++++++++++++++++++++++++------- tag_fw/powermgt.h | 2 ++ tag_fw/proto.h | 1 + tag_fw/syncedproto.c | 3 --- 11 files changed, 55 insertions(+), 15 deletions(-) diff --git a/tag_fw/fw154.bin b/tag_fw/fw154.bin index 06e67fe8822a3c43e364b002151d6b7e164e4bb9..81a5668addfb0320041834a31fdce562fdda2128 100644 GIT binary patch delta 18239 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 I{a-`=4_m+w>;M1& delta 17850 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 diff --git a/tag_fw/fw29.bin b/tag_fw/fw29.bin index 342c233010a5a6182b6cdea9bd1aad97347afec6..b8331b58d86360f13cdfdb37c0a9dc81678d516e 100644 GIT binary patch delta 18209 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 delta 17848 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 diff --git a/tag_fw/fw42.bin b/tag_fw/fw42.bin index 84e3ec125f3020a6f66d14c31593e327b2f00f5c..508b008544829983e45142dac44c6d48ad06b4fa 100644 GIT binary patch delta 18365 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 diff --git a/tag_fw/i2cdevices.c b/tag_fw/i2cdevices.c index 045ff7a9..ea3dada9 100644 --- a/tag_fw/i2cdevices.c +++ b/tag_fw/i2cdevices.c @@ -23,6 +23,24 @@ extern void dump(uint8_t* __xdata a, uint16_t __xdata l); // remove me when don extern uint8_t __xdata blockXferBuffer[]; __xdata uint8_t i2cbuffer[18]; +bool supportsNFCWake() { + P1PULL |= (1 << 3); + timerDelay(33300); // wait 25 ms + uint32_t pcount = 0; + P1PULL &= ~(1 << 3); + while (P1_3 && pcount < 10000) { + pcount++; + } + if (pcount < 10000) { + // P1_3 (Field Detect) dropped to 'low' pretty fast, this means the load on this pin is high + pr("This tag currently does not support NFC wake, load on the FD pin (P1.3) is pretty high.\nOn some boards, a pull-up resistor backpowers the NFC IC. Consider removing it!\n"); + return false; + } else { + // No reason to believe this pin is currently loaded down severely + return true; + } +} + void loadRawNTag(uint16_t blocksize) { struct I2cTransaction __xdata i2ctrans; if (blocksize > 864) blocksize = 864; diff --git a/tag_fw/i2cdevices.h b/tag_fw/i2cdevices.h index abbe7a5d..3de01803 100644 --- a/tag_fw/i2cdevices.h +++ b/tag_fw/i2cdevices.h @@ -2,6 +2,7 @@ #define _I2CDEV_H_ #include +bool supportsNFCWake(); void loadURLtoNTag(); void loadRawNTag(uint16_t blocksize); bool i2cCheckDevice(uint8_t address); diff --git a/tag_fw/main.c b/tag_fw/main.c index edc0c0ee..364c4216 100644 --- a/tag_fw/main.c +++ b/tag_fw/main.c @@ -23,8 +23,6 @@ // #define DEBUG_MODE -uint8_t __xdata capabilities = 0; - void displayLoop() { powerUp(INIT_BASE | INIT_UART); @@ -180,16 +178,22 @@ void main() { } } - pr("BOOTED> %d.%d.%d%s", fwVersion / 100, (fwVersion % 100) / 10, (fwVersion % 10), fwVersionSuffix); + pr("BOOTED> %d.%d.%d%s\n", fwVersion / 100, (fwVersion % 100) / 10, (fwVersion % 10), fwVersionSuffix); #ifdef HAS_BUTTON capabilities |= CAPABILITY_HAS_WAKE_BUTTON; #endif powerUp(INIT_I2C); - if (i2cCheckDevice(0x55)){ + if (i2cCheckDevice(0x55)) { + powerDown(INIT_I2C); capabilities |= CAPABILITY_HAS_NFC; + if (supportsNFCWake()) { + pr("This board supports NFC wake!\n"); + capabilities |= CAPABILITY_NFC_WAKE; + } + } else { + powerDown(INIT_I2C); } - powerDown(INIT_I2C); pr("MAC>%02X%02X", mSelfMac[0], mSelfMac[1]); pr("%02X%02X", mSelfMac[2], mSelfMac[3]); diff --git a/tag_fw/powermgt.c b/tag_fw/powermgt.c index f09c514f..86cdcee7 100644 --- a/tag_fw/powermgt.c +++ b/tag_fw/powermgt.c @@ -39,6 +39,8 @@ bool __xdata lowBattery = false; uint16_t __xdata longDataReqCounter = 0; uint16_t __xdata voltageCheckCounter = 0; +uint8_t __xdata capabilities = 0; + bool __xdata spiActive = false; bool __xdata uartActive = false; bool __xdata eepromActive = false; @@ -130,7 +132,7 @@ static void configI2C(const bool setup) { P1FUNC |= (1 << 4) | (1 << 5); P1PULL |= (1 << 4) | (1 << 5); i2cInit(); - i2cCheckDevice(0x50); // first transaction after init fails, this makes sure everything is ready for the first transaction + i2cCheckDevice(0x50); // first transaction after init fails, this makes sure everything is ready for the first transaction } else { P1DIR |= (1 << 6); P1_6 = 0; @@ -259,13 +261,23 @@ void doSleep(const uint32_t __xdata t) { #ifdef HAS_BUTTON // Button setup on TEST pin 1.0 (input pullup) - P1FUNC &= ~(1 << 0); - P1DIR |= (1 << 0); - P1PULL |= (1 << 0); - P1LVLSEL |= (1 << 0); - P1INTEN = (1 << 0); - P1CHSTA &= ~(1 << 0); + P1FUNC &= ~(1 << 0); + P1DIR |= (1 << 0); + P1PULL |= (1 << 0); + P1LVLSEL |= (1 << 0); + P1INTEN = (1 << 0); + P1CHSTA &= ~(1 << 0); #endif + + if (capabilities & CAPABILITY_NFC_WAKE) { + P1FUNC &= ~(1 << 3); + P1DIR |= (1 << 3); + P1PULL |= (1 << 3); + P1LVLSEL |= (1 << 3); + P1INTEN = (1 << 3); + P1CHSTA &= ~(1 << 3); + } + // sleepy sleepForMsec(t); #ifdef HAS_BUTTON @@ -274,6 +286,11 @@ void doSleep(const uint32_t __xdata t) { wakeUpReason = WAKEUP_REASON_GPIO; P1CHSTA &= ~(1 << 0); } + + if (P1CHSTA && (1 << 3) && capabilities & CAPABILITY_NFC_WAKE) { + wakeUpReason = WAKEUP_REASON_NFC; + P1CHSTA &= ~(1 << 3); + } #endif } diff --git a/tag_fw/powermgt.h b/tag_fw/powermgt.h index 54f36a3e..5c6a87c2 100644 --- a/tag_fw/powermgt.h +++ b/tag_fw/powermgt.h @@ -82,6 +82,8 @@ extern void initPowerSaving(const uint16_t initialValue); extern uint8_t __xdata wakeUpReason; +extern uint8_t __xdata capabilities; + extern uint16_t __xdata nextCheckInFromAP; extern uint8_t __xdata dataReqLastAttempt; extern int8_t __xdata temperature; diff --git a/tag_fw/proto.h b/tag_fw/proto.h index a71d400e..23ba7d38 100644 --- a/tag_fw/proto.h +++ b/tag_fw/proto.h @@ -116,6 +116,7 @@ struct AvailDataReq { #define CAPABILITY_HAS_WAKE_BUTTON 0x20 #define CAPABILITY_HAS_NFC 0x40 +#define CAPABILITY_NFC_WAKE 0x80 #define DATATYPE_NOUPDATE 0 #define DATATYPE_IMG_BMP 2 diff --git a/tag_fw/syncedproto.c b/tag_fw/syncedproto.c index b30fda44..d6fb7cb0 100644 --- a/tag_fw/syncedproto.c +++ b/tag_fw/syncedproto.c @@ -50,9 +50,6 @@ uint8_t __xdata currentChannel = 0; static uint8_t __xdata inBuffer[128] = {0}; static uint8_t __xdata outBuffer[128] = {0}; -// get capabilities from main.c -extern uint8_t __xdata capabilities; - // tools static uint8_t __xdata getPacketType(const void *__xdata buffer) { const struct MacFcs *__xdata fcs = buffer;