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:
9:9742acd0c015
Parent:
8:a9ecd7687de7
Child:
11:283df715f241
--- a/Samples/sample_lockWriteTag.cpp	Mon Dec 21 13:01:41 2015 +0000
+++ b/Samples/sample_lockWriteTag.cpp	Tue Dec 22 16:22:03 2015 +0000
@@ -1,7 +1,8 @@
 /**
   ******************************************************************************
   * @file       Sample_lockWriteTag.cpp
-  * @date       03/12/2015
+  * @author     ST / Central Labs
+  * @date       03 Dic 2015
   * @brief      This demo define a lock/unlock the tag content when the user press
   *  the user button
   ******************************************************************************
@@ -36,8 +37,6 @@
 #include "mbed.h"
 
 #include "X_NUCLEO_NFC01A1.h"
-#include "Type4NfcTagM24SR.h"
-#include "NDefLib/RecordType/RecordText.h"
 
 static volatile bool buttonPress=false;
 
@@ -66,12 +65,11 @@
 /**
  * set the tag as read only and switch the led on
  * @param nfcNucleo board where the lead lives
- * @param tag helper class for manage the nfc tag
  * @return true if the change has effect
  */
-bool enableReadOnly( X_NUCLEO_NFC01A1 *nfcNucleo,Type4NfcTagM24SR &tag){
+bool enableReadOnly( X_NUCLEO_NFC01A1 *nfcNucleo){
 
-	if(tag.enableReadOnly()){
+	if(nfcNucleo->getM24SR().enableReadOnly()==NFC_SUCCESS){
 		getReadOnlyLed(nfcNucleo)=true;
 		getWriteableLed(nfcNucleo)=false;
 		return true;
@@ -82,12 +80,11 @@
 /**
  * set the tag as read/write and switch the led on
  * @param nfcNucleo board where the lead lives
- * @param tag helper class for manage the nfc tag
  * @return true if the change has effect
  */
-bool disableReadOnly( X_NUCLEO_NFC01A1 *nfcNucleo,Type4NfcTagM24SR &tag){
+bool disableReadOnly( X_NUCLEO_NFC01A1 *nfcNucleo){
 
-	if(tag.disableReadOnly()){
+	if(nfcNucleo->getM24SR().disableReadOnly()==NFC_SUCCESS){
 		getReadOnlyLed(nfcNucleo)=false;
 		getWriteableLed(nfcNucleo)=true;
 		return true;
@@ -101,16 +98,16 @@
     I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN);
 
     X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel);
-    //create the wrapper for use the NdefLib
-    Type4NfcTagM24SR tag(nfcNucleo->getM24SR());
+	
+	NDefLib::NDefNfcTag& tag = nfcNucleo->getM24SR().getNDefTag();
 
     //when the user press the button set buttonPress to true
     InterruptIn userButton(USER_BUTTON);
     userButton.fall(setButtonPress);
-
+    
     //restore the board as read/write
     tag.openSession(true);
-    nfcNucleo->getLed1()=tag.disableAllPassword();
+    nfcNucleo->getLed1()=nfcNucleo->getM24SR().disableAllPassword()==NFC_SUCCESS;
     tag.closeSession();
     getReadOnlyLed(nfcNucleo)=false;
     getWriteableLed(nfcNucleo)=true;
@@ -124,9 +121,9 @@
         		bool changeStatusResult;
 
 				if(tagIsLock)
-					changeStatusResult=enableReadOnly(nfcNucleo,tag);
+					changeStatusResult=enableReadOnly(nfcNucleo);
 				else
-					changeStatusResult=disableReadOnly(nfcNucleo,tag);
+					changeStatusResult=disableReadOnly(nfcNucleo);
 
 				if(changeStatusResult)
 					tagIsLock=!tagIsLock;