PN532 Driver library This library provides an abstract API to drive the pn532 nfc chip, with I2C/HSU/SPI interface. Its based on the Seeed Studio's Arduino version.
Dependents: PN532_ReadUid Nfctest2
Diff: PN532/examples/android_hce/android_hce.ino
- Revision:
- 1:b5922b3b3257
- Parent:
- 0:db8030e71f55
diff -r db8030e71f55 -r b5922b3b3257 PN532/examples/android_hce/android_hce.ino --- a/PN532/examples/android_hce/android_hce.ino Tue Sep 13 06:01:19 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -#include <SPI.h> -#include <PN532_SPI.h> -#include <PN532Interface.h> -#include <PN532.h> - -PN532_SPI pn532spi(SPI, 10); -PN532 nfc(pn532spi); - - -void setup() -{ - Serial.begin(115200); - Serial.println("-------Peer to Peer HCE--------"); - - nfc.begin(); - - uint32_t versiondata = nfc.getFirmwareVersion(); - if (! versiondata) { - Serial.print("Didn't find PN53x board"); - while (1); // halt - } - - // Got ok data, print it out! - Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); - Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); - Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC); - - // Set the max number of retry attempts to read from a card - // This prevents us from waiting forever for a card, which is - // the default behaviour of the PN532. - //nfc.setPassiveActivationRetries(0xFF); - - // configure board to read RFID tags - nfc.SAMConfig(); -} - -void loop() -{ - bool success; - - uint8_t responseLength = 32; - - Serial.println("Waiting for an ISO14443A card"); - - // set shield to inListPassiveTarget - success = nfc.inListPassiveTarget(); - - if(success) { - - Serial.println("Found something!"); - - uint8_t selectApdu[] = { 0x00, /* CLA */ - 0xA4, /* INS */ - 0x04, /* P1 */ - 0x00, /* P2 */ - 0x07, /* Length of AID */ - 0xF0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, /* AID defined on Android App */ - 0x00 /* Le */ }; - - uint8_t response[32]; - - success = nfc.inDataExchange(selectApdu, sizeof(selectApdu), response, &responseLength); - - if(success) { - - Serial.print("responseLength: "); Serial.println(responseLength); - - nfc.PrintHexChar(response, responseLength); - - do { - uint8_t apdu[] = "Hello from Arduino"; - uint8_t back[32]; - uint8_t length = 32; - - success = nfc.inDataExchange(apdu, sizeof(apdu), back, &length); - - if(success) { - - Serial.print("responseLength: "); Serial.println(length); - - nfc.PrintHexChar(back, length); - } - else { - - Serial.println("Broken connection?"); - } - } - while(success); - } - else { - - Serial.println("Failed sending SELECT AID"); - } - } - else { - - Serial.println("Didn't find anything!"); - } - - delay(1000); -} - -void printResponse(uint8_t *response, uint8_t responseLength) { - - String respBuffer; - - for (int i = 0; i < responseLength; i++) { - - if (response[i] < 0x10) - respBuffer = respBuffer + "0"; //Adds leading zeros if hex value is smaller than 0x10 - - respBuffer = respBuffer + String(response[i], HEX) + " "; - } - - Serial.print("response: "); Serial.println(respBuffer); -} - -void setupNFC() { - - nfc.begin(); - - uint32_t versiondata = nfc.getFirmwareVersion(); - if (! versiondata) { - Serial.print("Didn't find PN53x board"); - while (1); // halt - } - - // Got ok data, print it out! - Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); - Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); - Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC); - - // configure board to read RFID tags - nfc.SAMConfig(); -}