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
Warning: Deprecated!
Supported drivers and applications can be found at this link.
main.cpp@5:21d2f93e32ee, 2014-12-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |