Yihui Xiong
/
PN532_P2P
Use Seeeduino Arch(or Arch Pro) + NFC Shield to exchange NDEF messages with Android 4.0+
main.cpp@1:f228fdc41598, 2013-11-21 (annotated)
- 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?
User | Revision | Line number | New 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 | } |