Test of the µNFC stack with the Adafruit PN532 board
Dependencies: AppNearMe_MuNFC_PN532 mbed-rtos mbed
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 }
Generated on Fri Jul 15 2022 20:51:36 by 1.7.2