Test of the µNFC stack with the Adafruit PN532 board

Dependencies:   AppNearMe_MuNFC_PN532 mbed-rtos mbed

Committer:
AppNearMe
Date:
Fri Sep 14 09:53:26 2012 +0000
Revision:
1:777d124a6d04
Parent:
0:170d2659e354
Updated libraries

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AppNearMe 0:170d2659e354 1 #include "mbed.h"
AppNearMe 0:170d2659e354 2 #include "rtos/rtos.h"
AppNearMe 0:170d2659e354 3
AppNearMe 0:170d2659e354 4 #include "MuNFC.h"
AppNearMe 0:170d2659e354 5
AppNearMe 0:170d2659e354 6 DigitalOut led_alive(LED1);
AppNearMe 0:170d2659e354 7 DigitalOut led_progress(LED2);
AppNearMe 0:170d2659e354 8 DigitalOut led_ok(LED3);
AppNearMe 0:170d2659e354 9 DigitalOut led_failed(LED4);
AppNearMe 0:170d2659e354 10 Semaphore s(1);
AppNearMe 0:170d2659e354 11
AppNearMe 0:170d2659e354 12 MuNFC nfc("00000003RdfgT390", 1, p11, p12, p13, p19, p18);
AppNearMe 0:170d2659e354 13
AppNearMe 0:170d2659e354 14 #define DEFAULT_PACKET 1
AppNearMe 0:170d2659e354 15
AppNearMe 0:170d2659e354 16 char inputText[24];
AppNearMe 0:170d2659e354 17
AppNearMe 0:170d2659e354 18
AppNearMe 0:170d2659e354 19 //Encode callback
AppNearMe 0:170d2659e354 20 void encode_cb(TLVList* tlv, void *)
AppNearMe 0:170d2659e354 21 {
AppNearMe 0:170d2659e354 22 static uint32_t counter = 0;
AppNearMe 0:170d2659e354 23 counter++;
AppNearMe 0:170d2659e354 24 tlv->putUInt8( DEFAULT_PACKET ); //First uint8_t is packet type
AppNearMe 0:170d2659e354 25 tlv->putString("Hello from mbed!");
AppNearMe 0:170d2659e354 26 tlv->putUInt32( counter );
AppNearMe 0:170d2659e354 27 }
AppNearMe 0:170d2659e354 28
AppNearMe 0:170d2659e354 29 //Decode callback
AppNearMe 0:170d2659e354 30 void decode_cb(TLVList* tlv, void *)
AppNearMe 0:170d2659e354 31 {
AppNearMe 0:170d2659e354 32 if(tlv->getNext() != UINT8)
AppNearMe 0:170d2659e354 33 {
AppNearMe 0:170d2659e354 34 return;
AppNearMe 0:170d2659e354 35 }
AppNearMe 0:170d2659e354 36 if(tlv->getUInt8() == DEFAULT_PACKET) //First uint8_t is packet type
AppNearMe 0:170d2659e354 37 {
AppNearMe 0:170d2659e354 38 if(tlv->getNext() != STRING)
AppNearMe 0:170d2659e354 39 {
AppNearMe 0:170d2659e354 40 return;
AppNearMe 0:170d2659e354 41 }
AppNearMe 0:170d2659e354 42 tlv->getString(inputText, 23);
AppNearMe 0:170d2659e354 43 }
AppNearMe 0:170d2659e354 44 s.release();
AppNearMe 0:170d2659e354 45 }
AppNearMe 0:170d2659e354 46
AppNearMe 0:170d2659e354 47 //NFC event
AppNearMe 0:170d2659e354 48 void event_cb(NFCEvent event, void*)
AppNearMe 0:170d2659e354 49 {
AppNearMe 0:170d2659e354 50 switch(event)
AppNearMe 0:170d2659e354 51 {
AppNearMe 0:170d2659e354 52 case NFC_TRANSACTION_STARTED:
AppNearMe 0:170d2659e354 53 led_progress=1;
AppNearMe 0:170d2659e354 54 led_ok=0;
AppNearMe 0:170d2659e354 55 led_failed=0;
AppNearMe 0:170d2659e354 56 break;
AppNearMe 0:170d2659e354 57 case NFC_TRANSACTION_SUCCESSFUL:
AppNearMe 0:170d2659e354 58 led_progress=0;
AppNearMe 0:170d2659e354 59 led_ok=1;
AppNearMe 0:170d2659e354 60 led_failed=0;
AppNearMe 0:170d2659e354 61 break;
AppNearMe 0:170d2659e354 62 case NFC_TRANSACTION_FAILED:
AppNearMe 0:170d2659e354 63 led_progress=0;
AppNearMe 0:170d2659e354 64 led_ok=0;
AppNearMe 0:170d2659e354 65 led_failed=1;
AppNearMe 0:170d2659e354 66 break;
AppNearMe 0:170d2659e354 67 }
AppNearMe 0:170d2659e354 68 }
AppNearMe 0:170d2659e354 69
AppNearMe 0:170d2659e354 70 int main() {
AppNearMe 0:170d2659e354 71 nfc.encode(encode_cb, NULL);
AppNearMe 0:170d2659e354 72 nfc.decode(decode_cb, NULL);
AppNearMe 0:170d2659e354 73 nfc.event(event_cb, NULL);
AppNearMe 0:170d2659e354 74 s.wait();
AppNearMe 0:170d2659e354 75
AppNearMe 0:170d2659e354 76 bool ret = nfc.init();
AppNearMe 0:170d2659e354 77 if(ret)
AppNearMe 0:170d2659e354 78 {
AppNearMe 0:170d2659e354 79 printf("\nAppNearMe/MuNFC stack initialized\n");
AppNearMe 0:170d2659e354 80
AppNearMe 0:170d2659e354 81 }
AppNearMe 0:170d2659e354 82 else
AppNearMe 0:170d2659e354 83 {
AppNearMe 0:170d2659e354 84 printf("Could not initialize stack\n");
AppNearMe 0:170d2659e354 85 }
AppNearMe 0:170d2659e354 86
AppNearMe 0:170d2659e354 87 nfc.run(); //Start thread
AppNearMe 0:170d2659e354 88
AppNearMe 0:170d2659e354 89 while(1) {
AppNearMe 0:170d2659e354 90 led_alive = !led_alive;
AppNearMe 0:170d2659e354 91 if(s.wait(200) > 0)
AppNearMe 0:170d2659e354 92 {
AppNearMe 0:170d2659e354 93 printf("Got: %s\n",inputText);
AppNearMe 0:170d2659e354 94 }
AppNearMe 0:170d2659e354 95 }
AppNearMe 0:170d2659e354 96 }