pyupm_pn532 module

class pyupm_pn532.PN532(*args)[source]

Bases: object

API for the PN532 based NFC/RFID reader/writer.

ID: pn532

Name: NFC/RFID Reader/Writer

Category: rfid

Manufacturer: adafruit

Link:http://www.adafruit.com/products/364

Connection: i2c Identify a card and print out basic infoAdd a URI to an already NDEF formatted ultralight or NTAG2XX tag

C++ includes: pn532.hpp

BAUD_MIFARE_ISO14443A = 0
CMD_DIAGNOSE = 0
CMD_GETFIRMWAREVERSION = 2
CMD_GETGENERALSTATUS = 4
CMD_INATR = 80
CMD_INAUTOPOLL = 96
CMD_INCOMMUNICATETHRU = 66
CMD_INDATAEXCHANGE = 64
CMD_INDESELECT = 68
CMD_INJUMPFORDEP = 86
CMD_INJUMPFORPSL = 70
CMD_INLISTPASSIVETARGET = 74
CMD_INPSL = 78
CMD_INRELEASE = 82
CMD_INSELECT = 84
CMD_POWERDOWN = 22
CMD_READGPIO = 12
CMD_READREGISTER = 6
CMD_RFCONFIGURATION = 50
CMD_RFREGULATIONTEST = 88
CMD_SAMCONFIGURATION = 20
CMD_SETPARAMETERS = 18
CMD_SETSERIALBAUDRATE = 16
CMD_TGGETDATA = 134
CMD_TGGETINITIATORCOMMAND = 136
CMD_TGGETTARGETSTATUS = 138
CMD_TGINITASTARGET = 140
CMD_TGRESPONSETOINITIATOR = 144
CMD_TGSETDATA = 142
CMD_TGSETGENERALBYTES = 146
CMD_TGSETMETADATA = 148
CMD_WRITEGPIO = 14
CMD_WRITEREGISTER = 8
MIFARE_CMD_AUTH_A = 96
MIFARE_CMD_AUTH_B = 97
MIFARE_CMD_DECREMENT = 192
MIFARE_CMD_INCREMENT = 193
MIFARE_CMD_READ = 48
MIFARE_CMD_STORE = 194
MIFARE_CMD_TRANSFER = 176
MIFARE_CMD_WRITE = 160
MIFARE_ULTRALIGHT_CMD_WRITE = 162
NDEF_URIPREFIX_BTGOEP = 26
NDEF_URIPREFIX_BTL2CAP = 25
NDEF_URIPREFIX_BTSPP = 24
NDEF_URIPREFIX_DAV = 14
NDEF_URIPREFIX_FILE = 29
NDEF_URIPREFIX_FTP = 13
NDEF_URIPREFIX_FTPS = 9
NDEF_URIPREFIX_FTP_ANONAT = 7
NDEF_URIPREFIX_FTP_FTPDOT = 8
NDEF_URIPREFIX_HTTP = 3
NDEF_URIPREFIX_HTTPS = 4
NDEF_URIPREFIX_HTTPS_WWWDOT = 2
NDEF_URIPREFIX_HTTP_WWWDOT = 1
NDEF_URIPREFIX_IMAP = 17
NDEF_URIPREFIX_IRDAOBEX = 28
NDEF_URIPREFIX_MAILTO = 6
NDEF_URIPREFIX_NEWS = 15
NDEF_URIPREFIX_NFS = 12
NDEF_URIPREFIX_NONE = 0
NDEF_URIPREFIX_POP = 20
NDEF_URIPREFIX_RTSP = 18
NDEF_URIPREFIX_SFTP = 10
NDEF_URIPREFIX_SIP = 21
NDEF_URIPREFIX_SIPS = 22
NDEF_URIPREFIX_SMB = 11
NDEF_URIPREFIX_TCPOBEX = 27
NDEF_URIPREFIX_TEL = 5
NDEF_URIPREFIX_TELNET = 16
NDEF_URIPREFIX_TFTP = 23
NDEF_URIPREFIX_URN = 19
NDEF_URIPREFIX_URN_EPC = 34
NDEF_URIPREFIX_URN_EPC_ID = 30
NDEF_URIPREFIX_URN_EPC_PAT = 32
NDEF_URIPREFIX_URN_EPC_RAW = 33
NDEF_URIPREFIX_URN_EPC_TAG = 31
NDEF_URIPREFIX_URN_NFC = 35
RSP_INDATAEXCHANGE = 65
RSP_INLISTPASSIVETARGET = 75
SAMConfig()[source]

bool SAMConfig(void)

Configures the SAM (Secure Access Module)

configures the SAM (Secure Access Module)

true if successfully configured

TAG_TYPE_MIFARE_CLASSIC = 1
TAG_TYPE_NFC2 = 2
TAG_TYPE_UNKNOWN = 0
getATQA()[source]

uint16_t getATQA()

return the ATQA (Answer to Request Acknowledge) value. This value is only valid after a successful call to readPassiveTargetID()

ATQA value

getFirmwareVersion()[source]

uint32_t getFirmwareVersion()

Checks the firmware version of the PN5xx chip.

Checks the firmware version of the PN5xx chip

the chip’s firmware version and ID

The chip’s firmware version and ID

getSAK()[source]

uint8_t getSAK()

return the SAK (Select Acknowledge) value. This value is only valid after a successful call to readPassiveTargetID()

SAK value

i2cContext()[source]

mraa::I2c& i2cContext()

provide public access to the class’s MRAA i2C context for direct user access

a reference to the class i2c context

inDataExchange(send, sendLength, response, responseLength)[source]

bool inDataExchange(uint8_t *send, uint8_t sendLength, uint8_t *response, uint8_t *responseLength)

Exchanges an APDU with the currently inlisted peer.

exchanges an APDU (Application Protocol Data Unit) with the currently inlisted peer

send: Pointer to data to send

sendLength: Length of the data to send

response: Pointer to response data

responseLength: Pointer to the response data length

true if everything executed properly, false for an error

send: Pointer to data to send

sendLength: Length of the data to send

response: Pointer to response data

responseLength: Pointer to the response data length

inListPassiveTarget()[source]

bool inListPassiveTarget()

‘InLists’ a passive target. PN532 acting as reader/initiator, peer acting as card/responder.

‘InLists’ a passive target. PN532 acting as reader/initiator, peer acting as card/responder.

true if everything executed properly, false for an error

init()[source]

bool init()

set up initial values and start operation

true if successful

mifareDebug(enable)[source]

void mifareDebug(bool enable)

enable or disable debugging output for mifare related operations

enable: true to enabloe debug output, false to disable

mifareclassic_AuthenticateBlock(uid, uidLen, blockNumber, keyNumber, keyData)[source]

bool mifareclassic_AuthenticateBlock(uint8_t *uid, uint8_t uidLen, uint32_t blockNumber, uint8_t keyNumber, uint8_t *keyData)

tries to authenticate a block of memory on a MIFARE card using the INDATAEXCHANGE command. See section 7.3.8 of the PN532 User Manual for more information on sending MIFARE and other commands.

uid: Pointer to a byte array containing the card UID

uidLen: The length (in bytes) of the card’s UID (Should be 4 for MIFARE Classic)

blockNumber: The block number to authenticate. (0..63 for 1KB cards, and 0..255 for 4KB cards).

keyNumber: Which key type to use during authentication (0 = MIFARE_CMD_AUTH_A, 1 = MIFARE_CMD_AUTH_B)

keyData: Pointer to a byte array containing the 6 byte key value

true if everything executed properly, false for an error Tries to authenticate a block of memory on a MIFARE card using the INDATAEXCHANGE command. See section 7.3.8 of the PN532 User Manual for more information on sending MIFARE and other commands.

uid: Pointer to a byte array containing the card UID

uidLen: The length (in bytes) of the card’s UID (Should be 4 for MIFARE Classic)

blockNumber: The block number to authenticate. (0..63 for 1KB cards, and 0..255 for 4KB cards).

keyNumber: Which key type to use during authentication (0 = MIFARE_CMD_AUTH_A, 1 = MIFARE_CMD_AUTH_B)

keyData: Pointer to a byte array containing the 6 byte key value

1 if everything executed properly, 0 for an error

mifareclassic_FormatNDEF()[source]

bool mifareclassic_FormatNDEF(void)

formats a Mifare Classic card to store NDEF Records

true if everything executed properly, false for an error Formats a Mifare Classic card to store NDEF Records

1 if everything executed properly, 0 for an error

mifareclassic_IsFirstBlock(uiBlock)[source]

bool mifareclassic_IsFirstBlock(uint32_t uiBlock)

Indicates whether the specified block number is the first block in the sector (block 0 relative to the current sector)

true if it’s the first block, false otherwise Indicates whether the specified block number is the first block in the sector (block 0 relative to the current sector)

mifareclassic_IsTrailerBlock(uiBlock)[source]

bool mifareclassic_IsTrailerBlock(uint32_t uiBlock)

indicates whether the specified block number is the sector trailer

true if it’s the trailer block, false otherwise Indicates whether the specified block number is the sector trailer

mifareclassic_ReadDataBlock(blockNumber, data)[source]

bool mifareclassic_ReadDataBlock(uint8_t blockNumber, uint8_t *data)

tries to read an entire 16-byte data block at the specified block address.

blockNumber: The block number to read (0..63 for 1KB cards, and 0..255 for 4KB cards).

data: Pointer to the byte array that will hold the retrieved data (if any)

true if everything executed properly, false for an error Tries to read an entire 16-byte data block at the specified block address.

blockNumber: The block number to authenticate. (0..63 for 1KB cards, and 0..255 for 4KB cards).

data: Pointer to the byte array that will hold the retrieved data (if any)

1 if everything executed properly, 0 for an error

mifareclassic_WriteDataBlock(blockNumber, data)[source]

bool mifareclassic_WriteDataBlock(uint8_t blockNumber, uint8_t *data)

tries to write an entire 16-byte data block at the specified block address.

blockNumber: The block number to write. (0..63 for 1KB cards, and 0..255 for 4KB cards).

data: The byte array that contains the data to write.

true if everything executed properly, false for an error Tries to write an entire 16-byte data block at the specified block address.

blockNumber: The block number to authenticate. (0..63 for 1KB cards, and 0..255 for 4KB cards).

data: The byte array that contains the data to write.

1 if everything executed properly, 0 for an error

mifareclassic_WriteNDEFURI(sectorNumber, uriIdentifier, url)[source]

bool mifareclassic_WriteNDEFURI(uint8_t sectorNumber, NDEF_URI_T uriIdentifier, const char *url)

writes an NDEF URI Record to the specified sector (1..15)

Note that this function assumes that the Mifare Classic card is already formatted to work as an “NFC Forum Tag” and uses a MAD1 file system. You can use the NXP TagWriter app on Android to properly format cards for this.

sectorNumber: The sector that the URI record should be written to (can be 1..15 for a 1K card)

uriIdentifier: The uri identifier code (one of the NDEF_URI_T values

url: the uri text to write (max 38 characters).

true if everything executed properly, false for an error Writes an NDEF URI Record to the specified sector (1..15)

Note that this function assumes that the Mifare Classic card is already formatted to work as an “NFC Forum Tag” and uses a MAD1 file system. You can use the NXP TagWriter app on Android to properly format cards for this.

sectorNumber: The sector that the URI record should be written to (can be 1..15 for a 1K card)

uriIdentifier: The uri identifier code (0 = none, 0x01 = “http://www.”, etc.)

url: The uri text to write (max 38 characters).

1 if everything executed properly, 0 for an error

ntag2xx_ReadPage(page, buffer)[source]

bool ntag2xx_ReadPage(uint8_t page, uint8_t *buffer)

read an entire 4-byte page at the specified address

page: The page number (0..63 in most cases)

buffer: Pointer to the byte array that will hold the retrieved data (if any)

true if everything executed properly, false for an error Tries to read an entire 4-byte page at the specified address.

page: The page number (0..63 in most cases)

buffer: Pointer to the byte array that will hold the retrieved data (if any)

ntag2xx_WriteNDEFURI(uriIdentifier, url, dataLen)[source]

bool ntag2xx_WriteNDEFURI(NDEF_URI_T uriIdentifier, char *url, uint8_t dataLen)

writes an NDEF URI Record starting at the specified page (4..nn)

Note that this function assumes that the NTAG2xx card is already formatted to work as an “NFC Forum Tag”.

uriIdentifier: The uri identifier code (one of the NDEF_URI_T values

url: The uri text to write (null-terminated string).

dataLen: The size of the data area for overflow checks.

true if everything executed properly, false for an error Writes an NDEF URI Record starting at the specified page (4..nn)

Note that this function assumes that the NTAG2xx card is already formatted to work as an “NFC Forum Tag”.

uriIdentifier: The uri identifier code (0 = none, 0x01 = “http://www.”, etc.)

url: The uri text to write (null-terminated string).

dataLen: The size of the data area for overflow checks.

1 if everything executed properly, 0 for an error

ntag2xx_WritePage(page, data)[source]

bool ntag2xx_WritePage(uint8_t page, uint8_t *data)

write an entire 4-byte page at the specified block address

page: The page number to write. (0..63 for most cases)

data: The byte array that contains the data to write. Should be exactly 4 bytes long.

true if everything executed properly, false for an error Tries to write an entire 4-byte page at the specified block address.

page: The page number to write. (0..63 for most cases)

data: The byte array that contains the data to write. Should be exactly 4 bytes long.

1 if everything executed properly, 0 for an error

pn532Debug(enable)[source]

void pn532Debug(bool enable)

enable or disable debugging output for pn532 related operations

enable: true to enabloe debug output, false to disable

readPassiveTargetID(cardbaudrate, uid, uidLength, timeout)[source]

bool readPassiveTargetID(BAUD_T cardbaudrate, uint8_t *uid, uint8_t *uidLength, uint16_t timeout)

waits for an ISO14443A target to enter the field

cardbaudrate: baud rate of the card, one of the BAUD_T values

uid: Pointer to the array that will be populated with the cards UID, up to 7 bytes

uidLength: Pointer to the variable that will hold the length of the card’s UID.

timeout: the number of milliseconds to wait

true if everything executed properly, false for an error Waits for an ISO14443A target to enter the field

cardBaudRate: Baud rate of the card

uid: Pointer to the array that will be populated with the card’s UID (up to 7 bytes)

uidLength: Pointer to the variable that will hold the length of the card’s UID.

1 if everything executed properly, 0 for an error

sendCommandCheckAck(cmd, cmdlen, timeout=1000)[source]

bool sendCommandCheckAck(uint8_t *cmd, uint8_t cmdlen, uint16_t timeout=1000)

Sends a command and waits a specified period for the ACK.

sends a command and waits a specified period for the ACK

cmd: Pointer to the command buffer

cmdlen: the size of the command in bytes

timeout: timeout before giving up (in ms)

true if everything is OK, false if timeout occurred before an ACK was received

cmd: Pointer to the command buffer

cmdlen: The size of the command in bytes

timeout: timeout before giving up

1 if everything is OK, 0 if timeout occurred before an ACK was received

setPassiveActivationRetries(maxRetries)[source]

bool setPassiveActivationRetries(uint8_t maxRetries)

sets the MxRtyPassiveActivation byte of the RFConfiguration register. By default the pn532 will retry indefinitely.

maxRetries: 0xFF to wait forever, 0x00..0xFE to timeout after maxRetries. 0x00 means try once, with no retries on failure.

true if everything executed properly, false for an error Sets the MxRtyPassiveActivation byte of the RFConfiguration register

maxRetries: 0xFF to wait forever, 0x00..0xFE to timeout after mxRetries

1 if everything executed properly, 0 for an error

tagType()[source]

PN532::TAG_TYPE_T tagType()

try to determine the tag type

one of the TAG_TYPE_T values

class pyupm_pn532.uint8Array(nelements)[source]

Bases: object

cast()[source]
static frompointer()