This application provides a set of demos with X-NUCLEO-NFC01A1 expansion board.

Dependencies:   NDefLib X_NUCLEO_NFC01A1 mbed

Fork of X-MBED-NFC1 by Giovanni Visentini

This application provides a set of demos with X-NUCLEO-NFC01A1 expansion board.

The available demos are:

  • SAMPLE_WRITE_URL: write a tag with the ST home page URL
  • SAMPLE_COUNT_CLICK: create a custom tag to count and report the user button clicks.
  • SAMPLE_WRITE_AND_CHANGE_ALL: write a tag with all the supported records and update the tag contents when the user button is pressed.
  • SAMPLE_LOCK_TAG_CONTENT: use the M24SR component API to set the NFC tag as read-only.

To enable the different demos comment/uncomment the SAMPLE_* macros provided in main.cpp .

Revision:
11:283df715f241
Parent:
9:9742acd0c015
Child:
12:c4a778f52d8a
--- a/Samples/Sample_countClick.cpp	Mon Jan 11 13:53:53 2016 +0000
+++ b/Samples/Sample_countClick.cpp	Mon Jan 11 16:10:12 2016 +0000
@@ -40,13 +40,18 @@
 #include "NDefLib/NDefNfcTag.h"
 #include "NDefLib/RecordType/RecordText.h"
 
-
+/**
+ * castom record that map an integer in a text record
+ */
 class MyRecord : public NDefLib::RecordText{
     
 private:
-    char nClickStringBuffer[12];
-    uint32_t nClick;
+    char nClickStringBuffer[12]; ///buffer used for print the number
+    uint32_t nClick; /// number to show
     
+    /**
+     * convert the number in char and update the tag content
+     */
     void syncTextValue(){
         sprintf(nClickStringBuffer,"%d",nClick);
         setText(nClickStringBuffer);
@@ -58,6 +63,9 @@
         syncTextValue();
     }
     
+    /**
+     * increment the stored number and update the racord content
+     */
     void incrementClick(){
         nClick++;
         syncTextValue();
@@ -65,6 +73,10 @@
 
 };
 
+/* write a nfc message into a tag
+ * @param nfcNucleo board where write the data
+ * @param msg message to write
+ */
 static void writeMessage(X_NUCLEO_NFC01A1 *nfcNucleo,NDefLib::Message &msg){
     NDefLib::NDefNfcTag& tag = nfcNucleo->getM24SR().getNDefTag();
     //open the i2c session with the nfc chip
@@ -83,19 +95,28 @@
 }//writeMessage
 
 
-static volatile bool buttonPress=false;
+static volatile bool buttonPress=false; /// true when the user press the message
 
+/**
+ * call back called when the user press the button
+ */
 static void setButtonPress(){
     buttonPress=true;
 }//if buttonPress
 
+/**
+ * Write a castum record that count how many times the user press the button
+ */
 void sample_countClick() {
+    
+    //instance the board with the default paramiters
     I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN);
-
     X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel);
+    
     //get the wrapper for use the NdefLib
     NDefLib::NDefNfcTag& tag = nfcNucleo->getM24SR().getNDefTag();
     
+    //set the button interrupt
     InterruptIn userButton(USER_BUTTON);    
     userButton.fall(setButtonPress);
     
@@ -109,8 +130,11 @@
     while(true){
         
         if(buttonPress){
+            //change the record content
             rClickCount.incrementClick();
-            writeMessage(nfcNucleo,msg);            
+            //write the new record content
+            writeMessage(nfcNucleo,msg);  
+            //wait a new button press          
             buttonPress=false;
         }//if
         //wait next event