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

Warning: Deprecated!

Supported drivers and applications can be found at this link.

Committer:
EnricoG
Date:
Wed Dec 17 00:54:15 2014 +0000
Revision:
5:21d2f93e32ee
Parent:
2:f32244d8aff8
Using libs from STAmericas Team

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EnricoG 0:d0dc2034ee2a 1 #include "mbed.h"
EnricoG 0:d0dc2034ee2a 2 #include "lib_TagType4.h"
EnricoG 2:f32244d8aff8 3 #include "lib_NDEF_URI.h"
EnricoG 2:f32244d8aff8 4
EnricoG 2:f32244d8aff8 5 #define BLINK_LED_CYCLES 50 // M24SR command attempts before LED toggle
EnricoG 0:d0dc2034ee2a 6
EnricoG 0:d0dc2034ee2a 7 //------------------------------------
EnricoG 0:d0dc2034ee2a 8 // Hyperterminal configuration
EnricoG 0:d0dc2034ee2a 9 // 9600 bauds, 8-bit data, no parity
EnricoG 0:d0dc2034ee2a 10 //------------------------------------
EnricoG 0:d0dc2034ee2a 11 Serial pc(SERIAL_TX, SERIAL_RX);
EnricoG 2:f32244d8aff8 12
EnricoG 0:d0dc2034ee2a 13 // LED1
EnricoG 0:d0dc2034ee2a 14 DigitalOut myled(LED1);
EnricoG 2:f32244d8aff8 15
EnricoG 2:f32244d8aff8 16 // Config LEDs on NUCLEO-NFC01A1
EnricoG 0:d0dc2034ee2a 17 DigitalOut nfcled1(D5);
EnricoG 0:d0dc2034ee2a 18 DigitalOut nfcled2(D4);
EnricoG 0:d0dc2034ee2a 19 DigitalOut nfcled3(D2);
EnricoG 0:d0dc2034ee2a 20
EnricoG 0:d0dc2034ee2a 21 int main() {
EnricoG 2:f32244d8aff8 22 sURI_Info URIout;
EnricoG 2:f32244d8aff8 23 sURI_Info URIin;
EnricoG 2:f32244d8aff8 24 int BlinkLEDCounter = 0;
EnricoG 0:d0dc2034ee2a 25
EnricoG 2:f32244d8aff8 26 memset(&URIin, 0x00, sizeof(URIin));
EnricoG 0:d0dc2034ee2a 27
EnricoG 2:f32244d8aff8 28 // All LEDs on NFC shield off
EnricoG 2:f32244d8aff8 29 nfcled1 = 0;
EnricoG 2:f32244d8aff8 30 nfcled2 = 0;
EnricoG 2:f32244d8aff8 31 nfcled3 = 0;
EnricoG 0:d0dc2034ee2a 32
EnricoG 2:f32244d8aff8 33 pc.printf("NFC Example\n");
EnricoG 2:f32244d8aff8 34
EnricoG 2:f32244d8aff8 35 // Prepare URI NDEF message content
EnricoG 2:f32244d8aff8 36 pc.printf("Prepare URI NDEF message content\n");
EnricoG 2:f32244d8aff8 37 strcpy(URIout.protocol,URI_ID_0x01_STRING);
EnricoG 2:f32244d8aff8 38 strcpy(URIout.URI_Message,"st.com");
EnricoG 2:f32244d8aff8 39 strcpy(URIout.Information,"\0");
EnricoG 2:f32244d8aff8 40 pc.printf("Done\n\n");
EnricoG 2:f32244d8aff8 41
EnricoG 2:f32244d8aff8 42 pc.printf("URIout contents:\n");
EnricoG 2:f32244d8aff8 43 pc.printf("URIout.protocol=%s\n", URIout.protocol);
EnricoG 2:f32244d8aff8 44 pc.printf("URIout Type: %d\n", getUriType(URIout.protocol));
EnricoG 2:f32244d8aff8 45 pc.printf("URIout.URI_Message=%s\n\n", URIout.URI_Message);
EnricoG 0:d0dc2034ee2a 46
EnricoG 2:f32244d8aff8 47 pc.printf("Initializing Tag Type 4 Access ... ");
EnricoG 2:f32244d8aff8 48 // LED1 (green) on NCF shield indicates progress
EnricoG 2:f32244d8aff8 49 // blinking = initialization in progress
EnricoG 2:f32244d8aff8 50 // solid = init successfull
EnricoG 2:f32244d8aff8 51 BlinkLEDCounter = 0;
EnricoG 2:f32244d8aff8 52 while(TT4_Init()!=SUCCESS)
EnricoG 2:f32244d8aff8 53 {
EnricoG 2:f32244d8aff8 54 if(BlinkLEDCounter < BLINK_LED_CYCLES)
EnricoG 0:d0dc2034ee2a 55 {
EnricoG 2:f32244d8aff8 56 BlinkLEDCounter++;
EnricoG 0:d0dc2034ee2a 57 }
EnricoG 0:d0dc2034ee2a 58 else
EnricoG 0:d0dc2034ee2a 59 {
EnricoG 2:f32244d8aff8 60 BlinkLEDCounter=0;
EnricoG 0:d0dc2034ee2a 61 nfcled1 = !nfcled1;
EnricoG 0:d0dc2034ee2a 62 }
EnricoG 2:f32244d8aff8 63 }
EnricoG 2:f32244d8aff8 64 // success
EnricoG 2:f32244d8aff8 65 nfcled1 = 1;
EnricoG 2:f32244d8aff8 66 pc.printf("SUCCESS\n\n");
EnricoG 2:f32244d8aff8 67
EnricoG 2:f32244d8aff8 68 // Write URI
EnricoG 2:f32244d8aff8 69 // LED2 (blue) on NCF shield indicates progress
EnricoG 2:f32244d8aff8 70 // blinking = write URI in progress
EnricoG 2:f32244d8aff8 71 // solid = write URI successfull
EnricoG 2:f32244d8aff8 72 pc.printf("Writing URI ... ");
EnricoG 2:f32244d8aff8 73 BlinkLEDCounter = 0;
EnricoG 2:f32244d8aff8 74 while (TT4_WriteURI(&URIout) != SUCCESS)
EnricoG 0:d0dc2034ee2a 75 {
EnricoG 2:f32244d8aff8 76 if(BlinkLEDCounter < BLINK_LED_CYCLES)
EnricoG 2:f32244d8aff8 77 {
EnricoG 2:f32244d8aff8 78 BlinkLEDCounter++;
EnricoG 2:f32244d8aff8 79 }
EnricoG 2:f32244d8aff8 80 else
EnricoG 2:f32244d8aff8 81 {
EnricoG 2:f32244d8aff8 82 BlinkLEDCounter=0;
EnricoG 2:f32244d8aff8 83 nfcled2 = !nfcled2;
EnricoG 2:f32244d8aff8 84 }
EnricoG 0:d0dc2034ee2a 85 }
EnricoG 2:f32244d8aff8 86 // success
EnricoG 2:f32244d8aff8 87 nfcled2 = 1;
EnricoG 2:f32244d8aff8 88 pc.printf("SUCCESS\n\n");
EnricoG 0:d0dc2034ee2a 89
EnricoG 2:f32244d8aff8 90 // Read URI
EnricoG 2:f32244d8aff8 91 // LED3 (orange) on NCF shield indicates progress
EnricoG 2:f32244d8aff8 92 // blinking = read URI in progress
EnricoG 2:f32244d8aff8 93 // solid = read URI successfull
EnricoG 2:f32244d8aff8 94 pc.printf("Reading back URI ... ");
EnricoG 2:f32244d8aff8 95 BlinkLEDCounter = 0;
EnricoG 2:f32244d8aff8 96 while(TT4_ReadURI(&URIin) != SUCCESS)
EnricoG 0:d0dc2034ee2a 97 {
EnricoG 2:f32244d8aff8 98 if(BlinkLEDCounter < BLINK_LED_CYCLES)
EnricoG 2:f32244d8aff8 99 {
EnricoG 2:f32244d8aff8 100 BlinkLEDCounter++;
EnricoG 2:f32244d8aff8 101 }
EnricoG 2:f32244d8aff8 102 else
EnricoG 2:f32244d8aff8 103 {
EnricoG 2:f32244d8aff8 104 BlinkLEDCounter=0;
EnricoG 2:f32244d8aff8 105 nfcled3 = !nfcled3;
EnricoG 2:f32244d8aff8 106 }
EnricoG 2:f32244d8aff8 107 }
EnricoG 2:f32244d8aff8 108 // success
EnricoG 2:f32244d8aff8 109 nfcled3 = 1;
EnricoG 2:f32244d8aff8 110 pc.printf("SUCCESS\n\n");
EnricoG 2:f32244d8aff8 111
EnricoG 2:f32244d8aff8 112 // Display contents read back
EnricoG 2:f32244d8aff8 113 pc.printf("URIin contents:\n");
EnricoG 2:f32244d8aff8 114 pc.printf("URIin.protocol=%s\n", URIin.protocol);
EnricoG 2:f32244d8aff8 115 pc.printf("URIin Type: %d\n", getUriType(URIin.protocol));
EnricoG 2:f32244d8aff8 116 pc.printf("URIin.URI_Message=%s\n\n", URIin.URI_Message);
EnricoG 0:d0dc2034ee2a 117
EnricoG 2:f32244d8aff8 118 // loop forever
EnricoG 2:f32244d8aff8 119 pc.printf("Done\n\n");
EnricoG 2:f32244d8aff8 120 while(1)
EnricoG 2:f32244d8aff8 121 {
EnricoG 2:f32244d8aff8 122 // blink LED on Nucleo board when done
EnricoG 2:f32244d8aff8 123 wait(0.5);
EnricoG 2:f32244d8aff8 124 myled = !myled;
EnricoG 2:f32244d8aff8 125 }
EnricoG 0:d0dc2034ee2a 126 }