An example writing URI info to NUCLEO-NFC01A1 board

Dependencies:   NUCLEO-NFC01A1 lib_NFC_M24SR lib_NFC_NDEF mbed

Fork of Nucleo_NFC_Example by Enrico Gregoratto

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "lib_TagType4.h"
00003 #include "lib_NDEF_URI.h"
00004 
00005 #define BLINK_LED_CYCLES 50 // M24SR command attempts before LED toggle
00006 
00007 //------------------------------------
00008 // Hyperterminal configuration
00009 // 9600 bauds, 8-bit data, no parity
00010 //------------------------------------
00011 Serial pc(SERIAL_TX, SERIAL_RX);
00012 
00013 // LED1
00014 DigitalOut myled(LED1);
00015 
00016 // Config LEDs on NUCLEO-NFC01A1
00017 DigitalOut nfcled1(D5);
00018 DigitalOut nfcled2(D4);
00019 DigitalOut nfcled3(D2);
00020 
00021 int main() {
00022     sURI_Info URIout;
00023     sURI_Info URIin;
00024     int BlinkLEDCounter = 0;
00025   
00026     memset(&URIin, 0x00, sizeof(URIin));
00027   
00028     // All LEDs on NFC shield off
00029     nfcled1 = 0;
00030     nfcled2 = 0;
00031     nfcled3 = 0;
00032   
00033     pc.printf("NFC Example\n");
00034 
00035     // Prepare URI NDEF message content
00036     pc.printf("Prepare URI NDEF message content\n");
00037     strcpy(URIout.protocol,URI_ID_0x01_STRING);
00038     strcpy(URIout.URI_Message,"st.com");
00039     strcpy(URIout.Information,"\0");
00040     pc.printf("Done\n\n");
00041     
00042     pc.printf("URIout contents:\n");
00043     pc.printf("URIout.protocol=%s\n", URIout.protocol);
00044     pc.printf("URIout Type: %d\n", getUriType(URIout.protocol));
00045     pc.printf("URIout.URI_Message=%s\n\n", URIout.URI_Message);
00046   
00047     pc.printf("Initializing Tag Type 4 Access ... ");
00048     // LED1 (green) on NCF shield indicates progress
00049     // blinking = initialization in progress
00050     // solid = init successfull
00051     BlinkLEDCounter = 0;
00052     while(TT4_Init()!=SUCCESS)
00053     {
00054         if(BlinkLEDCounter < BLINK_LED_CYCLES)
00055         {
00056             BlinkLEDCounter++;
00057         }
00058         else
00059         {
00060             BlinkLEDCounter=0;
00061             nfcled1 = !nfcled1;
00062         }
00063     }
00064     // success
00065     nfcled1 = 1;
00066     pc.printf("SUCCESS\n\n");
00067 
00068     // Write URI
00069     // LED2 (blue) on NCF shield indicates progress
00070     // blinking = write URI in progress
00071     // solid = write URI successfull
00072     pc.printf("Writing URI ... ");
00073     BlinkLEDCounter = 0;
00074     while (TT4_WriteURI(&URIout) != SUCCESS)
00075     {
00076         if(BlinkLEDCounter < BLINK_LED_CYCLES)
00077         {
00078             BlinkLEDCounter++;
00079         }
00080         else
00081         {
00082             BlinkLEDCounter=0;
00083             nfcled2 = !nfcled2;
00084         }
00085     }
00086     // success
00087     nfcled2 = 1;
00088     pc.printf("SUCCESS\n\n");
00089   
00090     // Read URI
00091     // LED3 (orange) on NCF shield indicates progress
00092     // blinking = read URI in progress
00093     // solid = read URI successfull
00094     pc.printf("Reading back URI ... ");
00095     BlinkLEDCounter = 0;
00096     while(TT4_ReadURI(&URIin) != SUCCESS)
00097     {
00098         if(BlinkLEDCounter < BLINK_LED_CYCLES)
00099         {
00100             BlinkLEDCounter++;
00101         }
00102         else
00103         {
00104             BlinkLEDCounter=0;
00105             nfcled3 = !nfcled3;
00106         } 
00107     }
00108     // success
00109     nfcled3 = 1;
00110     pc.printf("SUCCESS\n\n");
00111     
00112     // Display contents read back
00113     pc.printf("URIin contents:\n");
00114     pc.printf("URIin.protocol=%s\n", URIin.protocol);
00115     pc.printf("URIin Type: %d\n", getUriType(URIin.protocol));
00116     pc.printf("URIin.URI_Message=%s\n\n", URIin.URI_Message);
00117   
00118     // loop forever
00119     pc.printf("Done\n\n");
00120     while(1)
00121     {
00122         // blink LED on Nucleo board when done
00123         wait(0.5);
00124         myled = !myled;
00125     }
00126 }