aboutsummaryrefslogtreecommitdiff
path: root/src/libs/Adafruit_PN532.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/Adafruit_PN532.h')
-rw-r--r--src/libs/Adafruit_PN532.h168
1 files changed, 85 insertions, 83 deletions
diff --git a/src/libs/Adafruit_PN532.h b/src/libs/Adafruit_PN532.h
index f59e576..c33db5c 100644
--- a/src/libs/Adafruit_PN532.h
+++ b/src/libs/Adafruit_PN532.h
@@ -70,13 +70,13 @@
#define PN532_SPI_DATAREAD (0x03) ///< Data read
#define PN532_SPI_READY (0x01) ///< Ready
-//#define PN532_I2C_ADDRESS (0x48 >> 1) ///< Default I2C address
-// My fucking clone board for some goddamn reason uses the address 0x28
+// #define PN532_I2C_ADDRESS (0x48 >> 1) ///< Default I2C address
+// My fucking clone board for some goddamn reason uses the address 0x28
#define PN532_I2C_ADDRESS (0x28)
-#define PN532_I2C_READBIT (0x01) ///< Read bit
-#define PN532_I2C_BUSY (0x00) ///< Busy
-#define PN532_I2C_READY (0x01) ///< Ready
-#define PN532_I2C_READYTIMEOUT (20) ///< Ready timeout
+#define PN532_I2C_READBIT (0x01) ///< Read bit
+#define PN532_I2C_BUSY (0x00) ///< Busy
+#define PN532_I2C_READY (0x01) ///< Ready
+#define PN532_I2C_READYTIMEOUT (20) ///< Ready timeout
#define PN532_MIFARE_ISO14443A (0x00) ///< MiFare
@@ -141,83 +141,85 @@
* @brief Class for working with Adafruit PN532 NFC/RFID breakout boards.
*/
class Adafruit_PN532 {
-public:
- Adafruit_PN532(uint8_t clk, uint8_t miso, uint8_t mosi,
- uint8_t ss); // Software SPI
- Adafruit_PN532(uint8_t ss, SPIClass *theSPI = &SPI); // Hardware SPI
- Adafruit_PN532(uint8_t irq, uint8_t reset,
- TwoWire *theWire = &Wire); // Hardware I2C
- Adafruit_PN532(uint8_t reset, HardwareSerial *theSer); // Hardware UART
- bool begin(void);
-
- void reset(void);
- void wakeup(void);
-
- // Generic PN532 functions
- bool SAMConfig(void);
- uint32_t getFirmwareVersion(void);
- bool sendCommandCheckAck(uint8_t *cmd, uint8_t cmdlen,
- uint16_t timeout = 100);
- bool writeGPIO(uint8_t pinstate);
- uint8_t readGPIO(void);
- bool setPassiveActivationRetries(uint8_t maxRetries);
-
- // ISO14443A functions
- bool readPassiveTargetID(
- uint8_t cardbaudrate, uint8_t *uid, uint8_t *uidLength,
- uint16_t timeout = 0); // timeout 0 means no timeout - will block forever.
- bool startPassiveTargetIDDetection(uint8_t cardbaudrate);
- bool readDetectedPassiveTargetID(uint8_t *uid, uint8_t *uidLength);
- bool inDataExchange(uint8_t *send, uint8_t sendLength, uint8_t *response,
- uint8_t *responseLength);
- bool inListPassiveTarget();
- uint8_t AsTarget();
- uint8_t getDataTarget(uint8_t *cmd, uint8_t *cmdlen);
- uint8_t setDataTarget(uint8_t *cmd, uint8_t cmdlen);
-
- // Mifare Classic functions
- bool mifareclassic_IsFirstBlock(uint32_t uiBlock);
- bool mifareclassic_IsTrailerBlock(uint32_t uiBlock);
- uint8_t mifareclassic_AuthenticateBlock(uint8_t *uid, uint8_t uidLen,
- uint32_t blockNumber,
- uint8_t keyNumber, uint8_t *keyData);
- uint8_t mifareclassic_ReadDataBlock(uint8_t blockNumber, uint8_t *data);
- uint8_t mifareclassic_WriteDataBlock(uint8_t blockNumber, uint8_t *data);
- uint8_t mifareclassic_FormatNDEF(void);
- uint8_t mifareclassic_WriteNDEFURI(uint8_t sectorNumber,
- uint8_t uriIdentifier, const char *url);
-
- // Mifare Ultralight functions
- uint8_t mifareultralight_ReadPage(uint8_t page, uint8_t *buffer);
- uint8_t mifareultralight_WritePage(uint8_t page, uint8_t *data);
-
- // NTAG2xx functions
- uint8_t ntag2xx_ReadPage(uint8_t page, uint8_t *buffer);
- uint8_t ntag2xx_WritePage(uint8_t page, uint8_t *data);
- uint8_t ntag2xx_WriteNDEFURI(uint8_t uriIdentifier, char *url,
- uint8_t dataLen);
-
- // Help functions to display formatted text
- static void PrintHex(const byte *data, const uint32_t numBytes);
- static void PrintHexChar(const byte *pbtData, const uint32_t numBytes);
-
-private:
- int8_t _irq = -1, _reset = -1, _cs = -1;
- int8_t _uid[7]; // ISO14443A uid
- int8_t _uidLen; // uid len
- int8_t _key[6]; // Mifare Classic key
- int8_t _inListedTag; // Tg number of inlisted tag.
-
- // Low level communication functions that handle both SPI and I2C.
- void readdata(uint8_t *buff, uint8_t n);
- void writecommand(uint8_t *cmd, uint8_t cmdlen);
- bool isready();
- bool waitready(uint16_t timeout);
- bool readack();
-
- Adafruit_SPIDevice *spi_dev = NULL;
- Adafruit_I2CDevice *i2c_dev = NULL;
- HardwareSerial *ser_dev = NULL;
+ public:
+ Adafruit_PN532(uint8_t clk, uint8_t miso, uint8_t mosi,
+ uint8_t ss); // Software SPI
+ Adafruit_PN532(uint8_t ss, SPIClass *theSPI = &SPI); // Hardware SPI
+ Adafruit_PN532(uint8_t irq, uint8_t reset,
+ TwoWire *theWire = &Wire); // Hardware I2C
+ Adafruit_PN532(uint8_t reset, HardwareSerial *theSer); // Hardware UART
+ bool begin(void);
+
+ void reset(void);
+ void wakeup(void);
+
+ // Generic PN532 functions
+ bool SAMConfig(void);
+ uint32_t getFirmwareVersion(void);
+ bool sendCommandCheckAck(uint8_t *cmd, uint8_t cmdlen,
+ uint16_t timeout = 100);
+ bool writeGPIO(uint8_t pinstate);
+ uint8_t readGPIO(void);
+ bool setPassiveActivationRetries(uint8_t maxRetries);
+
+ // ISO14443A functions
+ bool readPassiveTargetID(
+ uint8_t cardbaudrate, uint8_t *uid, uint8_t *uidLength,
+ uint16_t timeout =
+ 0); // timeout 0 means no timeout - will block forever.
+ bool startPassiveTargetIDDetection(uint8_t cardbaudrate);
+ bool readDetectedPassiveTargetID(uint8_t *uid, uint8_t *uidLength);
+ bool inDataExchange(uint8_t *send, uint8_t sendLength, uint8_t *response,
+ uint8_t *responseLength);
+ bool inListPassiveTarget();
+ uint8_t AsTarget();
+ uint8_t getDataTarget(uint8_t *cmd, uint8_t *cmdlen);
+ uint8_t setDataTarget(uint8_t *cmd, uint8_t cmdlen);
+
+ // Mifare Classic functions
+ bool mifareclassic_IsFirstBlock(uint32_t uiBlock);
+ bool mifareclassic_IsTrailerBlock(uint32_t uiBlock);
+ uint8_t mifareclassic_AuthenticateBlock(uint8_t *uid, uint8_t uidLen,
+ uint32_t blockNumber,
+ uint8_t keyNumber,
+ uint8_t *keyData);
+ uint8_t mifareclassic_ReadDataBlock(uint8_t blockNumber, uint8_t *data);
+ uint8_t mifareclassic_WriteDataBlock(uint8_t blockNumber, uint8_t *data);
+ uint8_t mifareclassic_FormatNDEF(void);
+ uint8_t mifareclassic_WriteNDEFURI(uint8_t sectorNumber,
+ uint8_t uriIdentifier, const char *url);
+
+ // Mifare Ultralight functions
+ uint8_t mifareultralight_ReadPage(uint8_t page, uint8_t *buffer);
+ uint8_t mifareultralight_WritePage(uint8_t page, uint8_t *data);
+
+ // NTAG2xx functions
+ uint8_t ntag2xx_ReadPage(uint8_t page, uint8_t *buffer);
+ uint8_t ntag2xx_WritePage(uint8_t page, uint8_t *data);
+ uint8_t ntag2xx_WriteNDEFURI(uint8_t uriIdentifier, char *url,
+ uint8_t dataLen);
+
+ // Help functions to display formatted text
+ static void PrintHex(const byte *data, const uint32_t numBytes);
+ static void PrintHexChar(const byte *pbtData, const uint32_t numBytes);
+
+ private:
+ int8_t _irq = -1, _reset = -1, _cs = -1;
+ int8_t _uid[7]; // ISO14443A uid
+ int8_t _uidLen; // uid len
+ int8_t _key[6]; // Mifare Classic key
+ int8_t _inListedTag; // Tg number of inlisted tag.
+
+ // Low level communication functions that handle both SPI and I2C.
+ void readdata(uint8_t *buff, uint8_t n);
+ void writecommand(uint8_t *cmd, uint8_t cmdlen);
+ bool isready();
+ bool waitready(uint16_t timeout);
+ bool readack();
+
+ Adafruit_SPIDevice *spi_dev = NULL;
+ Adafruit_I2CDevice *i2c_dev = NULL;
+ HardwareSerial *ser_dev = NULL;
};
#endif