Test of the µNFC stack with the Adafruit PN532 board

Dependencies:   AppNearMe_MuNFC_PN532 mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "rtos/rtos.h"
00003 
00004 #include "MuNFC.h"
00005 
00006 DigitalOut led_alive(LED1);
00007 DigitalOut led_progress(LED2);
00008 DigitalOut led_ok(LED3);
00009 DigitalOut led_failed(LED4);
00010 Semaphore s(1);
00011 
00012 MuNFC nfc("00000003RdfgT390", 1, p11, p12, p13, p19, p18);
00013 
00014 #define DEFAULT_PACKET 1
00015 
00016 char inputText[24];
00017 
00018 
00019 //Encode callback
00020 void encode_cb(TLVList* tlv, void *)
00021 {
00022   static uint32_t counter = 0;
00023   counter++;
00024   tlv->putUInt8( DEFAULT_PACKET ); //First uint8_t is packet type
00025   tlv->putString("Hello from mbed!");
00026   tlv->putUInt32( counter );
00027 }
00028 
00029 //Decode callback
00030 void decode_cb(TLVList* tlv, void *)
00031 {
00032   if(tlv->getNext() != UINT8)
00033   {
00034     return;
00035   }
00036   if(tlv->getUInt8() == DEFAULT_PACKET) //First uint8_t is packet type
00037   { 
00038     if(tlv->getNext() != STRING)
00039     {
00040       return;
00041     }
00042     tlv->getString(inputText, 23);
00043   }
00044   s.release();
00045 }
00046 
00047 //NFC event
00048 void event_cb(NFCEvent event, void*)
00049 {
00050     switch(event)
00051     {
00052     case NFC_TRANSACTION_STARTED:
00053         led_progress=1;
00054         led_ok=0;
00055         led_failed=0;
00056     break;
00057     case NFC_TRANSACTION_SUCCESSFUL:
00058         led_progress=0;
00059         led_ok=1;
00060         led_failed=0;
00061     break;
00062     case NFC_TRANSACTION_FAILED:
00063         led_progress=0;
00064         led_ok=0;
00065         led_failed=1;
00066     break;    
00067     }
00068 }
00069 
00070 int main() {   
00071     nfc.encode(encode_cb, NULL);
00072     nfc.decode(decode_cb, NULL);
00073     nfc.event(event_cb, NULL);
00074     s.wait();
00075     
00076     bool ret = nfc.init();
00077     if(ret)
00078     {
00079       printf("\nAppNearMe/MuNFC stack initialized\n");
00080       
00081     }
00082     else
00083     {
00084       printf("Could not initialize stack\n");
00085     }
00086     
00087     nfc.run(); //Start thread
00088     
00089     while(1) {
00090         led_alive = !led_alive;
00091         if(s.wait(200) > 0)
00092         {
00093           printf("Got: %s\n",inputText);
00094         }
00095     }
00096 }