Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: AppNearMe_MuNFC_PN532 mbed-rtos mbed
Fork of AppNearMe_MuNFC_PN532_Test by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos/rtos.h" 00003 #include <string> 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 Serial arduino(p9, p10); // tx, rx 00014 00015 #define DEFAULT_PACKET 1 00016 00017 char messageFromNFC[300]; 00018 char c; 00019 string messageFromArduino; 00020 string messageToNFC; 00021 00022 //Encode callback 00023 void encode_cb(TLVList* tlv, void *) 00024 { 00025 static uint32_t counter = 0; 00026 counter++; 00027 tlv->putUInt8( DEFAULT_PACKET ); //First uint8_t is packet type 00028 tlv->putString((char*)messageToNFC.c_str()); 00029 tlv->putUInt32( counter ); 00030 } 00031 00032 //Decode callback 00033 void decode_cb(TLVList* tlv, void *) 00034 { 00035 if(tlv->getNext() != UINT8) 00036 { 00037 return; 00038 } 00039 if(tlv->getUInt8() == DEFAULT_PACKET) //First uint8_t is packet type 00040 { 00041 if(tlv->getNext() != STRING) 00042 { 00043 return; 00044 } 00045 tlv->getString(messageFromNFC, 299); 00046 printf("Message received from NFC: %s\n",messageFromNFC); 00047 } 00048 s.release(); 00049 } 00050 00051 //NFC event 00052 void event_cb(NFCEvent event, void*) 00053 { 00054 switch(event) 00055 { 00056 case NFC_TRANSACTION_STARTED: 00057 led_progress=1; 00058 led_ok=0; 00059 led_failed=0; 00060 break; 00061 case NFC_TRANSACTION_SUCCESSFUL: 00062 led_progress=0; 00063 led_ok=1; 00064 led_failed=0; 00065 break; 00066 case NFC_TRANSACTION_FAILED: 00067 led_progress=0; 00068 led_ok=0; 00069 led_failed=1; 00070 break; 00071 } 00072 } 00073 00074 int main() { 00075 nfc.encode(encode_cb, NULL); 00076 nfc.decode(decode_cb, NULL); 00077 nfc.event(event_cb, NULL); 00078 s.wait(); 00079 00080 bool ret = nfc.init(); 00081 if(ret) 00082 { 00083 //printf("MuNFC stack initialized\n"); 00084 00085 } 00086 else 00087 { 00088 //printf("Could not initialize stack\n"); 00089 } 00090 00091 messageFromNFC[0] = '\0'; 00092 //messageToNFC = "pay_666_EUR_202_123456789101112131"; 00093 messageToNFC = "cancel"; 00094 nfc.run(); //Start thread 00095 00096 00097 00098 while(1) { 00099 led_alive = 1; 00100 00101 00102 // read messages from arduino 00103 while(arduino.readable()){ 00104 00105 c = arduino.getc(); 00106 if (c != '\n'){ 00107 messageFromArduino += c; 00108 } else { 00109 if (messageFromArduino.length() > 1){ 00110 00111 //blink a bit 00112 led_alive = 0; 00113 wait(0.05); 00114 led_alive = 1; 00115 wait(0.05); 00116 led_alive = 0; 00117 00118 messageToNFC = messageFromArduino; 00119 //printf("Set message to: %s\n",messageToNFC); 00120 } 00121 messageFromArduino = ""; 00122 } 00123 } 00124 00125 if (messageFromNFC[0] != '\0'){ 00126 arduino.printf("%s\n",messageFromNFC); 00127 messageFromNFC[0] = '\0'; 00128 } 00129 00130 /* 00131 if(s.wait(200) > 0) 00132 { 00133 printf("Got: %s\n",messageFromNFC); 00134 }*/ 00135 } 00136 }
Generated on Sun Jul 17 2022 02:54:26 by
1.7.2
