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:
17:d8d3d2088cac
Parent:
15:94c98d2aa235
Child:
18:d596eb3f575f
diff -r 02611ca49f48 -r d8d3d2088cac Samples/SampleSync_lockWriteTag.cpp
--- a/Samples/SampleSync_lockWriteTag.cpp	Wed Aug 31 15:14:08 2016 +0000
+++ b/Samples/SampleSync_lockWriteTag.cpp	Thu Jul 13 09:41:01 2017 +0000
@@ -36,11 +36,12 @@
 
 #include "mbed.h"
 
-#include "X_NUCLEO_NFC01A1.h"
+#include "XNucleoNFC01A1.h"
 
 static volatile bool buttonPress=false;
 
 static void setButtonPress(){
+    printf("button\r\n");
     buttonPress=true;
 }//if buttonPress
 
@@ -49,8 +50,8 @@
  * @param nfcNucleo board where the lead lives
  * @return let to switch on if the tag is read only
  */
-static inline DigitalOut& getReadOnlyLed(X_NUCLEO_NFC01A1 *nfcNucleo){
-	return nfcNucleo->getLed2();
+static inline DigitalOut& getReadOnlyLed(XNucleoNFC01A1 *nfcNucleo){
+	return nfcNucleo->get_led2();
 }
 
 /**
@@ -58,8 +59,8 @@
  * @param nfcNucleo board where the lead lives
  * @return let to switch on if the tag is write only
  */
-static inline DigitalOut& getWriteableLed(X_NUCLEO_NFC01A1 *nfcNucleo){
-	return nfcNucleo->getLed3();
+static inline DigitalOut& getWriteableLed(XNucleoNFC01A1 *nfcNucleo){
+	return nfcNucleo->get_led3();
 }
 
 /**
@@ -68,15 +69,16 @@
  * @param tag helper class to manage the nfc tag
  * @return true if the change has effect
  */
-bool enableReadOnly( X_NUCLEO_NFC01A1 *nfcNucleo){
-
-	if(nfcNucleo->getM24SR().EnableReadOnly(M24SR::DEFAULT_PASSWORD)){
+bool enableReadOnly( XNucleoNFC01A1 *nfcNucleo){
+	if(nfcNucleo->get_M24SR().enable_read_only(M24SR::DEFAULT_PASSWORD) == M24SR::M24SR_SUCCESS){
 		printf("Enable Read Only\r\n");
 		getReadOnlyLed(nfcNucleo)=true;
 		getWriteableLed(nfcNucleo)=false;
 		return true;
-	}else
+	}else{
+		printf("Error: enabling Read Only\r\n");
 		return false;
+	}
 }
 
 /**
@@ -85,50 +87,67 @@
  * @param tag helper class to manage the nfc tag
  * @return true if the change has effect
  */
-bool disableReadOnly( X_NUCLEO_NFC01A1 *nfcNucleo){
+bool disableReadOnly( XNucleoNFC01A1 *nfcNucleo){
 
-	if(nfcNucleo->getM24SR().DisableReadOnly(M24SR::DEFAULT_PASSWORD)){
+	if(nfcNucleo->get_M24SR().disable_read_only(M24SR::DEFAULT_PASSWORD)== M24SR::M24SR_SUCCESS){
 		printf("Disable Read Only\r\n");
 		getReadOnlyLed(nfcNucleo)=false;
 		getWriteableLed(nfcNucleo)=true;
 		return true;
-	}else
+	}else{
+		printf("Error: Disabling Read Only\r\n");
 		return false;
+	}
 }
 
 void sampleSync_lockTagContent() {
-	Serial console(SERIAL_TX, SERIAL_RX);
+
+    I2C i2cChannel(XNucleoNFC01A1::DEFAULT_SDA_PIN,XNucleoNFC01A1::DEFAULT_SDL_PIN);
 
-    I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN);
-    i2cChannel.frequency(400000);
-
-    X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel);
+    XNucleoNFC01A1 *nfcNucleo = XNucleoNFC01A1::instance(i2cChannel);
     
-    NDefLib::NDefNfcTag &tag = nfcNucleo->getM24SR().getNDefTag();
+    NDefLib::NDefNfcTag &tag = nfcNucleo->get_M24SR().get_NDef_tag();
 
     //when the user press the button set buttonPress to true
-    InterruptIn userButton(USER_BUTTON);
+    
+	#if defined(TARGET_STM)
+        InterruptIn userButton(USER_BUTTON);
+    #else
+        InterruptIn userButton(SW2);
+    #endif
+        
     userButton.fall(setButtonPress);
 	
 	printf("Init Done\r\n");
 	
     //restore the board as read/write
-    tag.openSession(true);
-    nfcNucleo->getM24SR().DisableAllPassword(M24SR::DEFAULT_PASSWORD);
-    tag.closeSession();
+    if(!tag.open_session(true)){
+    	printf("Error open session\r\n");
+    	return;
+    }
+    if(nfcNucleo->get_M24SR().disable_all_password(M24SR::DEFAULT_PASSWORD)!= M24SR::M24SR_SUCCESS){
+    	printf("Error disable_all_password\r\n");
+    	return;
+    }
+    if(!tag.close_session()){
+    	printf("Error close session\r\n");
+    	return;
+    }
+    
     getReadOnlyLed(nfcNucleo)=false;
     getWriteableLed(nfcNucleo)=true;
     bool tagIsLock=false;
 	
 	printf("All Protection removed\r\n");
 	
-	nfcNucleo->getLed1()=true;
+	nfcNucleo->get_led1()=true;
     while(true){
 
         if(buttonPress){
-        	if(tag.openSession()){
+        		printf("button pressed\r\n");
+        	if(tag.open_session()){
         		bool changeStatusResult;
-
+				printf("session open\r\n");
 				if(!tagIsLock)
 					changeStatusResult=enableReadOnly(nfcNucleo);
 				else
@@ -137,10 +156,10 @@
 				if(changeStatusResult)
 					tagIsLock=!tagIsLock;
 				else
-					console.printf("Error change the tag status");
-				tag.closeSession();
+					printf("Error change the tag status\r\n");
+				tag.close_session();
         	}else{
-        		console.printf("Error opening the session, tag is in use");
+        		printf("Error opening the session, tag is in use\r\n");
         	}
         	buttonPress=false;
         }//if
@@ -149,4 +168,4 @@
         __WFE();
     }//while
 
-}//sample_countClick
\ No newline at end of file
+}//sample_countClick