Use Seeeduino Arch(or Arch Pro) + NFC Shield to exchange NDEF messages with Android 4.0+

Dependencies:   PN532 mbed

Committer:
yihui
Date:
Thu Nov 21 08:27:37 2013 +0000
Revision:
1:f228fdc41598
Parent:
0:21ac4fe1ccf8
communicate with android 4.0+

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yihui 0:21ac4fe1ccf8 1 #include "mbed.h"
yihui 1:f228fdc41598 2 #include "PN532_SPI.h"
yihui 1:f228fdc41598 3 #include "snep.h"
yihui 1:f228fdc41598 4 #include "NdefMessage.h"
yihui 0:21ac4fe1ccf8 5
yihui 1:f228fdc41598 6 #if 1 // Using Seeeduino Arch
yihui 0:21ac4fe1ccf8 7 #define LOG(args...)
yihui 1:f228fdc41598 8 SPI spi(P1_22, P1_21, P1_20); // SPI(mosi, miso, clk)
yihui 1:f228fdc41598 9 PN532_SPI pn532spi(spi, P0_2);
yihui 0:21ac4fe1ccf8 10
yihui 1:f228fdc41598 11 #else // Using Arch Pro
yihui 0:21ac4fe1ccf8 12 #define LOG(args...) pc.printf(args)
yihui 1:f228fdc41598 13 Serial pc(USBTX, USBRX);
yihui 1:f228fdc41598 14 SPI spi(P0_18, P0_17, P0_15);
yihui 1:f228fdc41598 15 PN532_SPI pn532spi(spi, P0_6);
yihui 0:21ac4fe1ccf8 16 #endif
yihui 0:21ac4fe1ccf8 17
yihui 1:f228fdc41598 18 DigitalOut led(LED1);
yihui 1:f228fdc41598 19 SNEP nfc(pn532spi);
yihui 1:f228fdc41598 20 uint8_t ndefBuf[128];
yihui 0:21ac4fe1ccf8 21
yihui 0:21ac4fe1ccf8 22 int main()
yihui 0:21ac4fe1ccf8 23 {
yihui 0:21ac4fe1ccf8 24 while (1) {
yihui 1:f228fdc41598 25 #if 1
yihui 1:f228fdc41598 26 LOG("Send a message to Android");
yihui 1:f228fdc41598 27 NdefMessage message = NdefMessage();
yihui 1:f228fdc41598 28 message.addUriRecord("http://www.seeedstudio.com");
yihui 1:f228fdc41598 29 int messageSize = message.getEncodedSize();
yihui 1:f228fdc41598 30 if (messageSize > sizeof(ndefBuf)) {
yihui 1:f228fdc41598 31 LOG("ndefBuf is too small");
yihui 1:f228fdc41598 32 while (1) {
yihui 0:21ac4fe1ccf8 33 }
yihui 1:f228fdc41598 34 }
yihui 1:f228fdc41598 35 message.encode(ndefBuf);
yihui 1:f228fdc41598 36 if (0 >= nfc.write(ndefBuf, messageSize)) {
yihui 1:f228fdc41598 37 LOG("Failed\n");
yihui 0:21ac4fe1ccf8 38 } else {
yihui 1:f228fdc41598 39 LOG("Success\n");
yihui 0:21ac4fe1ccf8 40 }
yihui 1:f228fdc41598 41 #else
yihui 1:f228fdc41598 42 LOG("Get a message from Android");
yihui 1:f228fdc41598 43 int msgSize = nfc.read(ndefBuf, sizeof(ndefBuf));
yihui 1:f228fdc41598 44 if (msgSize > 0) {
yihui 1:f228fdc41598 45 NdefMessage msg = NdefMessage(ndefBuf, msgSize);
yihui 1:f228fdc41598 46 msg.print();
yihui 1:f228fdc41598 47 LOG("\nSuccess");
yihui 1:f228fdc41598 48 } else {
yihui 1:f228fdc41598 49 LOG("failed");
yihui 1:f228fdc41598 50 }
yihui 1:f228fdc41598 51 #endif
yihui 1:f228fdc41598 52 wait(5);
yihui 0:21ac4fe1ccf8 53 }
yihui 1:f228fdc41598 54 }