diff options
Diffstat (limited to 'src/libs/Adafruit_PN532.h')
| -rw-r--r-- | src/libs/Adafruit_PN532.h | 168 |
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 |
