pn532.h File Reference

PN532 driver. More...

Detailed Description

PN532 driver.

Author
Víctor Ariño victo.nosp@m.r.ar.nosp@m.ino@t.nosp@m.riag.nosp@m.nosys.nosp@m..com

Definition in file pn532.h.

#include "mutex.h"
#include "periph/i2c.h"
#include "periph/spi.h"
#include "periph/gpio.h"
#include <stdint.h>
+ Include dependency graph for pn532.h:

Go to the source code of this file.

Data Structures

struct  pn532_params_t
 Data structure with the configuration parameters. More...
 
struct  pn532_t
 Device descriptor for the PN532. More...
 
struct  nfc_iso14443a_t
 ISO14443A tag description. More...
 

Macros

#define CONFIG_PN532_BUFFER_LEN   (64)
 Internal buffer size. More...
 
#define PN532_ISO14443A_4_LEN_FROM_BUFFER(b)   ((b[0] << 8) | b[1])
 Obtain Tag 4 data length from buffer. More...
 

Enumerations

enum  pn532_mode_t { PN532_I2C, PN532_SPI }
 Working mode of the PN532.
 
enum  pn532_sam_conf_mode_t { PN532_SAM_NORMAL = 1, PN532_SAM_VIRTUAL, PN532_SAM_WIRED, PN532_SAM_DUAL }
 Possible SAM configurations.
 
enum  pn532_target_t {
  PN532_BR_106_ISO_14443_A = 0, PN532_BR_212_FELICA, PN532_BR_424_FELICA, PN532_BR_106_ISO_14443_B,
  PN532_BR_106_JEWEL
}
 PN532 supported targets.
 
enum  nfc_iso14443a_type_t { ISO14443A_UNKNOWN, ISO14443A_MIFARE, ISO14443A_TYPE4 }
 ISO14443A Card types.
 
enum  pn532_mifare_key_t { PN532_MIFARE_KEY_A = 0x60, PN532_MIFARE_KEY_B = 0x61 }
 Mifare keys.
 

Functions

void pn532_reset (const pn532_t *dev)
 Hard reset the chipset. More...
 
int pn532_init (pn532_t *dev, const pn532_params_t *params, pn532_mode_t mode)
 Initialize the module and peripherals. More...
 
static int pn532_init_i2c (pn532_t *dev, const pn532_params_t *params)
 Initialization of PN532 using i2c. More...
 
static int pn532_init_spi (pn532_t *dev, const pn532_params_t *params)
 Initialization of PN532 using spi. More...
 
int pn532_fw_version (pn532_t *dev, uint32_t *fw_ver)
 Get the firmware version of the pn532. More...
 
int pn532_read_reg (pn532_t *dev, char *out, unsigned addr)
 Read register of the pn532. More...
 
int pn532_write_reg (pn532_t *dev, unsigned addr, char val)
 Write register of the pn532. More...
 
int pn532_sam_configuration (pn532_t *dev, pn532_sam_conf_mode_t mode, unsigned timeout)
 Set new settings for the Security Access Module. More...
 
int pn532_get_passive_iso14443a (pn532_t *dev, nfc_iso14443a_t *out, unsigned max_retries)
 Get one ISO14443-A passive target. More...
 
int pn532_mifareclassic_authenticate (pn532_t *dev, nfc_iso14443a_t *card, pn532_mifare_key_t keyid, char *key, unsigned block)
 Authenticate a Mifare classic card. More...
 
int pn532_mifareclassic_read (pn532_t *dev, char *odata, nfc_iso14443a_t *card, unsigned block)
 Read a block of a Mifare classic card. More...
 
int pn532_mifareclassic_write (pn532_t *dev, char *idata, nfc_iso14443a_t *card, unsigned block)
 Write a block of a Mifare classic card. More...
 
int pn532_mifareulight_read (pn532_t *dev, char *odata, nfc_iso14443a_t *card, unsigned page)
 Read a block of a Mifare Ultralight card. More...
 
int pn532_iso14443a_4_activate (pn532_t *dev, nfc_iso14443a_t *card)
 Activate the NDEF file of a ISO14443-A Type 4 tag. More...
 
int pn532_iso14443a_4_read (pn532_t *dev, char *odata, nfc_iso14443a_t *card, unsigned offset, char len)
 Read data from the NDEF file of a ISO14443-A Type 4 tag. More...
 
void pn532_deselect_passive (pn532_t *dev, unsigned target_id)
 Deselect a previously selected passive card. More...
 
void pn532_release_passive (pn532_t *dev, unsigned target_id)
 Release an active passive card. More...
 

Helpers to extract firmware information from word

#define PN532_IC_VERSION(fwver)   ((fwver >> 24) & 0xff)
 
#define PN532_FW_VERSION(fwver)   ((fwver >> 16) & 0xff)
 
#define PN532_FW_REVISION(fwver)   ((fwver >> 8) & 0xff)
 
#define PN532_FW_FEATURES(fwver)   ((fwver) & 0xff)