123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- #ifndef PN532_H
- #define PN532_H
- #include <stdint.h>
- #include <stdbool.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define PN532_PREAMBLE (0x00)
- #define PN532_STARTCODE1 (0x00)
- #define PN532_STARTCODE2 (0xFF)
- #define PN532_POSTAMBLE (0x00)
- #define PN532_HOSTTOPN532 (0xD4)
- #define PN532_PN532TOHOST (0xD5)
- #define PN532_COMMAND_DIAGNOSE (0x00)
- #define PN532_COMMAND_GETFIRMWAREVERSION (0x02)
- #define PN532_COMMAND_GETGENERALSTATUS (0x04)
- #define PN532_COMMAND_READREGISTER (0x06)
- #define PN532_COMMAND_WRITEREGISTER (0x08)
- #define PN532_COMMAND_READGPIO (0x0C)
- #define PN532_COMMAND_WRITEGPIO (0x0E)
- #define PN532_COMMAND_SETSERIALBAUDRATE (0x10)
- #define PN532_COMMAND_SETPARAMETERS (0x12)
- #define PN532_COMMAND_SAMCONFIGURATION (0x14)
- #define PN532_COMMAND_POWERDOWN (0x16)
- #define PN532_COMMAND_RFCONFIGURATION (0x32)
- #define PN532_COMMAND_RFREGULATIONTEST (0x58)
- #define PN532_COMMAND_INJUMPFORDEP (0x56)
- #define PN532_COMMAND_INJUMPFORPSL (0x46)
- #define PN532_COMMAND_INLISTPASSIVETARGET (0x4A)
- #define PN532_COMMAND_INATR (0x50)
- #define PN532_COMMAND_INPSL (0x4E)
- #define PN532_COMMAND_INDATAEXCHANGE (0x40)
- #define PN532_COMMAND_INCOMMUNICATETHRU (0x42)
- #define PN532_COMMAND_INDESELECT (0x44)
- #define PN532_COMMAND_INRELEASE (0x52)
- #define PN532_COMMAND_INSELECT (0x54)
- #define PN532_COMMAND_INAUTOPOLL (0x60)
- #define PN532_COMMAND_TGINITASTARGET (0x8C)
- #define PN532_COMMAND_TGSETGENERALBYTES (0x92)
- #define PN532_COMMAND_TGGETDATA (0x86)
- #define PN532_COMMAND_TGSETDATA (0x8E)
- #define PN532_COMMAND_TGSETMETADATA (0x94)
- #define PN532_COMMAND_TGGETINITIATORCOMMAND (0x88)
- #define PN532_COMMAND_TGRESPONSETOINITIATOR (0x90)
- #define PN532_COMMAND_TGGETTARGETSTATUS (0x8A)
- #define PN532_RESPONSE_INDATAEXCHANGE (0x41)
- #define PN532_RESPONSE_INLISTPASSIVETARGET (0x4B)
- #define PN532_WAKEUP (0x55)
- #define PN532_SPI_STATREAD (0x02)
- #define PN532_SPI_DATAWRITE (0x01)
- #define PN532_SPI_DATAREAD (0x03)
- #define PN532_SPI_READY (0x01)
- #define PN532_I2C_ADDRESS (0x48 >> 1)
- #define PN532_I2C_READBIT (0x01)
- #define PN532_I2C_BUSY (0x00)
- #define PN532_I2C_READY (0x01)
- #define PN532_I2C_READYTIMEOUT (20)
- #define PN532_MIFARE_ISO14443A (0x00)
- #define MIFARE_CMD_AUTH_A (0x60)
- #define MIFARE_CMD_AUTH_B (0x61)
- #define MIFARE_CMD_READ (0x30)
- #define MIFARE_CMD_WRITE (0xA0)
- #define MIFARE_CMD_TRANSFER (0xB0)
- #define MIFARE_CMD_DECREMENT (0xC0)
- #define MIFARE_CMD_INCREMENT (0xC1)
- #define MIFARE_CMD_STORE (0xC2)
- #define MIFARE_ULTRALIGHT_CMD_WRITE (0xA2)
- #define MIFARE_UID_MAX_LENGTH MIFARE_UID_TRIPLE_LENGTH
- #define MIFARE_UID_SINGLE_LENGTH (4)
- #define MIFARE_UID_DOUBLE_LENGTH (7)
- #define MIFARE_UID_TRIPLE_LENGTH (10)
- #define MIFARE_KEY_LENGTH (6)
- #define MIFARE_BLOCK_LENGTH (16)
- #define NTAG2XX_BLOCK_LENGTH (4)
- #define NDEF_URIPREFIX_NONE (0x00)
- #define NDEF_URIPREFIX_HTTP_WWWDOT (0x01)
- #define NDEF_URIPREFIX_HTTPS_WWWDOT (0x02)
- #define NDEF_URIPREFIX_HTTP (0x03)
- #define NDEF_URIPREFIX_HTTPS (0x04)
- #define NDEF_URIPREFIX_TEL (0x05)
- #define NDEF_URIPREFIX_MAILTO (0x06)
- #define NDEF_URIPREFIX_FTP_ANONAT (0x07)
- #define NDEF_URIPREFIX_FTP_FTPDOT (0x08)
- #define NDEF_URIPREFIX_FTPS (0x09)
- #define NDEF_URIPREFIX_SFTP (0x0A)
- #define NDEF_URIPREFIX_SMB (0x0B)
- #define NDEF_URIPREFIX_NFS (0x0C)
- #define NDEF_URIPREFIX_FTP (0x0D)
- #define NDEF_URIPREFIX_DAV (0x0E)
- #define NDEF_URIPREFIX_NEWS (0x0F)
- #define NDEF_URIPREFIX_TELNET (0x10)
- #define NDEF_URIPREFIX_IMAP (0x11)
- #define NDEF_URIPREFIX_RTSP (0x12)
- #define NDEF_URIPREFIX_URN (0x13)
- #define NDEF_URIPREFIX_POP (0x14)
- #define NDEF_URIPREFIX_SIP (0x15)
- #define NDEF_URIPREFIX_SIPS (0x16)
- #define NDEF_URIPREFIX_TFTP (0x17)
- #define NDEF_URIPREFIX_BTSPP (0x18)
- #define NDEF_URIPREFIX_BTL2CAP (0x19)
- #define NDEF_URIPREFIX_BTGOEP (0x1A)
- #define NDEF_URIPREFIX_TCPOBEX (0x1B)
- #define NDEF_URIPREFIX_IRDAOBEX (0x1C)
- #define NDEF_URIPREFIX_FILE (0x1D)
- #define NDEF_URIPREFIX_URN_EPC_ID (0x1E)
- #define NDEF_URIPREFIX_URN_EPC_TAG (0x1F)
- #define NDEF_URIPREFIX_URN_EPC_PAT (0x20)
- #define NDEF_URIPREFIX_URN_EPC_RAW (0x21)
- #define NDEF_URIPREFIX_URN_EPC (0x22)
- #define NDEF_URIPREFIX_URN_NFC (0x23)
- #define PN532_GPIO_VALIDATIONBIT (0x80)
- #define PN532_ERROR_NONE (0x00)
- #define PN532_ERROR_TIMEOUT (0x01)
- #define PN532_ERROR_CRC (0x02)
- #define PN532_ERROR_PARITY (0x03)
- #define PN532_ERROR_COLLISION_BITCOUNT (0x04)
- #define PN532_ERROR_MIFARE_FRAMING (0x05)
- #define PN532_ERROR_COLLISION_BITCOLLISION (0x06)
- #define PN532_ERROR_NOBUFS (0x07)
- #define PN532_ERROR_RFNOBUFS (0x09)
- #define PN532_ERROR_ACTIVE_TOOSLOW (0x0a)
- #define PN532_ERROR_RFPROTO (0x0b)
- #define PN532_ERROR_TOOHOT (0x0d)
- #define PN532_ERROR_INTERNAL_NOBUFS (0x0e)
- #define PN532_ERROR_INVAL (0x10)
- #define PN532_ERROR_DEP_INVALID_COMMAND (0x12)
- #define PN532_ERROR_DEP_BADDATA (0x13)
- #define PN532_ERROR_MIFARE_AUTH (0x14)
- #define PN532_ERROR_NOSECURE (0x18)
- #define PN532_ERROR_I2CBUSY (0x19)
- #define PN532_ERROR_UIDCHECKSUM (0x23)
- #define PN532_ERROR_DEPSTATE (0x25)
- #define PN532_ERROR_HCIINVAL (0x26)
- #define PN532_ERROR_CONTEXT (0x27)
- #define PN532_ERROR_RELEASED (0x29)
- #define PN532_ERROR_CARDSWAPPED (0x2a)
- #define PN532_ERROR_NOCARD (0x2b)
- #define PN532_ERROR_MISMATCH (0x2c)
- #define PN532_ERROR_OVERCURRENT (0x2d)
- #define PN532_ERROR_NONAD (0x2e)
- #define PN532_STATUS_ERROR (-1)
- #define PN532_STATUS_OK (0)
- typedef struct _PN532 {
- int (*reset)(void);
- int (*read_data)(uint8_t* data, uint16_t count);
- int (*write_data)(uint8_t *data, uint16_t count);
- bool (*wait_ready)(uint32_t timeout);
- int (*wakeup)(void);
- void (*log)(const char* log);
- } PN532;
- int PN532_WriteFrame(PN532* pn532, uint8_t* data, uint16_t length);
- int PN532_ReadFrame(PN532* pn532, uint8_t* buff, uint16_t length);
- int PN532_CallFunction(PN532* pn532, uint8_t command, uint8_t* response, uint16_t response_length, uint8_t* params, uint16_t params_length, uint32_t timeout);
- int PN532_GetFirmwareVersion(PN532* pn532, uint8_t* version);
- int PN532_SamConfiguration(PN532* pn532);
- int PN532_ReadPassiveTarget(PN532* pn532, uint8_t* response, uint8_t card_baud, uint32_t timeout);
- int PN532_MifareClassicAuthenticateBlock(PN532* pn532, uint8_t* uid, uint8_t uid_length, uint16_t block_number, uint16_t key_number, uint8_t* key);
- int PN532_MifareClassicReadBlock(PN532* pn532, uint8_t* response, uint16_t block_number);
- int PN532_MifareClassicWriteBlock(PN532* pn532, uint8_t* data, uint16_t block_number);
- int PN532_Ntag2xxReadBlock(PN532* pn532, uint8_t* response, uint16_t block_number);
- int PN532_Ntag2xxWriteBlock(PN532* pn532, uint8_t* data, uint16_t block_number);
- int PN532_ReadGpio(PN532* pn532, uint8_t* pins_state);
- bool PN532_ReadGpioP(PN532* pn532, uint8_t pin_number);
- bool PN532_ReadGpioI(PN532* pn532, uint8_t pin_number);
- int PN532_WriteGpio(PN532* pn532, uint8_t* pins_state);
- int PN532_WriteGpioP(PN532* pn532, uint8_t pin_number, bool pin_state);
- #ifdef __cplusplus
- }
- #endif
- #endif
|