Rev 154 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
#ifndef NFC_H#define NFC_H/* PN532 NFC Reader from Adafruit */#define PN532_PREAMBLE (0x00)#define PN532_STARTCODE1 (0x00)#define PN532_STARTCODE2 (0xFF)#define PN532_POSTAMBLE (0x00)#define PN532_HOSTTOPN532 (0xD4)// PN532 Commands#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_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)// Mifare Commands#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)// Prefixes for NDEF Records (to identify record type)#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_GPIO_P30 (0)#define PN532_GPIO_P31 (1)#define PN532_GPIO_P32 (2)#define PN532_GPIO_P33 (3)#define PN532_GPIO_P34 (4)#define PN532_GPIO_P35 (5)#define PN532_PACKBUFFSIZ 64#define PN532_TIMEOUT 1000typedef struct {unsigned char IC;unsigned char Ver;unsigned char Rev;unsigned char Support;} NFC_FIRMWARE_VERSION;typedef struct {unsigned char TG;unsigned char SENS_RES[2];unsigned char SEL_RES;unsigned char NFCID_LEN;unsigned char NFCID[7];} NFC_TargetDataMiFare;// Size can be 9 or 12 bytestypedef struct __NFC_DATA {unsigned char packetbuffer[PN532_PACKBUFFSIZ];} NFC_DATA;void NFC_Init(void);// Generic PN532 functionsunsigned char NFC_SAMConfig(void);NFC_FIRMWARE_VERSION NFC_Get_Firmware_Version(void);unsigned char NFC_Send_Command_Check_Ack(unsigned char *cmd, unsigned char cmdlen);//unsigned char NFC_writeGPIO(unsigned char pinstate);//unsigned char NFC_readGPIO(void);// ISO14443A functionsunsigned char NFC_Read_Passive_Target_ID(NFC_TargetDataMiFare *uidData);unsigned char NFC_Poll_Targets(unsigned char number, unsigned char period, NFC_TargetDataMiFare *uidData);// Mifare Classic functionsunsigned char NFC_mifareclassic_IsFirstBlock(unsigned long uiBlock);unsigned char NFC_mifareclassic_IsTrailerBlock(unsigned long uiBlock);unsigned char NFC_mifareclassic_AuthenticateBlock(unsigned char *uid, unsigned char uidLen, unsigned long blockNumber, unsigned char keyNumber, unsigned char *keyData);unsigned char NFC_mifareclassic_ReadDataBlock(unsigned char blockNumber, unsigned char *data);unsigned char NFC_mifareclassic_WriteDataBlock(unsigned char blockNumber, unsigned char *data);unsigned char NFC_mifareclassic_FormatNDEF(void);unsigned char NFC_mifareclassic_WriteNDEFURI(unsigned char sectorNumber, unsigned char uriIdentifier, const char * url);// Mifare Ultralight functions//unsigned char NFC_mifareultralight_ReadPage(unsigned char page, unsigned char * buffer);// Low level SPI functionsunsigned char NFC_I2C_Read_ACK(void);unsigned char NFC_I2C_Read_Status(void);void NFC_I2C_Read_Data(unsigned char *buffer, unsigned char length);void NFC_I2C_Write_Cmd(unsigned char *cmd, unsigned char cmdlen);#endif