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
--- a/Samples/sampleAsync_lockWriteTag.cpp	Wed Aug 31 15:14:08 2016 +0000
+++ b/Samples/sampleAsync_lockWriteTag.cpp	Thu Jul 13 09:41:01 2017 +0000
@@ -36,26 +36,26 @@
 
 #include "mbed.h"
 
-#include "X_NUCLEO_NFC01A1.h"
+#include "XNucleoNFC01A1.h"
 
 static volatile bool buttonPress=false; /// true when the user press the message
 static volatile bool nfcEvent=false; /// true when the user press the message
 
-static void setNfcEventCallback(){
+static void set_nfc_event_callback(){
 	nfcEvent=true;
 }//if buttonPress
 
 /**
  * Call back called when the user press the button.
  */
-static void setButtonPress(){
+static void set_button_press(){
     buttonPress=true;
 }//if buttonPress
 
 /**
  * Class with the command chain needed to remove all the read/write password
  */
-class RemoveAllPasswordStatusCallback : public Nfc::Callbacks {
+class RemoveAllPasswordStatusCallback : public M24SR::Callbacks {
 
 public:
 
@@ -65,7 +65,7 @@
 	 * True when the command chain finish, and the tag can now be read and write
 	 * @return true if the command chain finish
 	 */
-	bool isFinish(){
+	bool is_finish(){
 		return !mIsComamndRunning;
 	}
 
@@ -77,46 +77,46 @@
 	 * end the command chain and print an error message
 	 * @param status error code of the last command
 	 */
-	void onError(const NFC_StatusTypeDef status){
+	void on_error(const M24SR::StatusTypeDef status){
 		mIsComamndRunning=false;
 		printf("Error Code: %X \r\n",status);
 	}
 
-	virtual void onSessionOpen(Nfc *tag,NFC_StatusTypeDef status){
-		if(status!=NFC_SUCCESS)
-			return onError(status);
+	virtual void on_session_open(M24SR *tag,M24SR::StatusTypeDef status){
+		if(status!=M24SR::M24SR_SUCCESS)
+			return on_error(status);
 		mIsComamndRunning=true;
 		printf("Session Opened\r\n");
-		tag->SelectApplication();
+		tag->select_application();
 	}
 
-	virtual void onSelectedApplication(Nfc *tag,NFC_StatusTypeDef status){
-		if(status!=NFC_SUCCESS)
-			return onError(status);
+	virtual void on_selected_application(M24SR *tag,M24SR::StatusTypeDef status){
+		if(status!=M24SR::M24SR_SUCCESS)
+			return on_error(status);
 			
 		printf("Select application\r\n");
-		tag->SelectNDEFfile(0x0001);
+		tag->select_NDEF_file(0x0001);
 	}
 
-	virtual void onSelectedNDEFFile(Nfc *tag,NFC_StatusTypeDef status){
-		if(status!=NFC_SUCCESS)
-			return onError(status);
+	virtual void on_selected_NDEF_file(M24SR *tag,M24SR::StatusTypeDef status){
+		if(status!=M24SR::M24SR_SUCCESS)
+			return on_error(status);
 
 		printf("Select NDef\r\n");
-		tag->DisableAllPassword(M24SR::DEFAULT_PASSWORD);
+		tag->disable_all_password(M24SR::DEFAULT_PASSWORD);
 	}
 
-	virtual void onDisableAllPassword(Nfc *tag, NFC_StatusTypeDef status){
-		if(status!=NFC_SUCCESS)
-			return onError(status);
+	virtual void on_disable_all_password(M24SR *tag, M24SR::StatusTypeDef status){
+		if(status!=M24SR::M24SR_SUCCESS)
+			return on_error(status);
 			
 		printf("Disable all Password\r\n");
-		tag->Deselect();
+		tag->deselect();
 	}
 
-	virtual void onDeselect(Nfc *,NFC_StatusTypeDef status){
-		if(status!=NFC_SUCCESS)
-			return onError(status);
+	virtual void on_deselect(M24SR *,M24SR::StatusTypeDef status){
+		if(status!=M24SR::M24SR_SUCCESS)
+			return on_error(status);
 			
 		printf("Close Application\r\n");
 		mIsComamndRunning=false;
@@ -127,7 +127,7 @@
 /**
  * Chain of call needed to change the tag status between read only and write/read
  */
-class ChangeTagStatusCallback : public Nfc::Callbacks {
+class ChangeTagStatusCallback : public M24SR::Callbacks {
 
 	M24SR &mNfcTag; /// object to change
 	DigitalOut& mReadOnlyLed; /// led to switch on when it is in read only mode
@@ -154,11 +154,11 @@
 		/**
 		 * Change the tag status
 		 */
-		void changeStatus(){
+		void change_status(){
 			mIsReadOnly=!mIsReadOnly;
 			//if it is not running a previous command
 			if(!mIsComamndRunning){
-				mNfcTag.GetSession();
+				mNfcTag.get_session();
 			}//if
 		}//changeStatus;
 
@@ -168,68 +168,68 @@
 		 * When an error happen switch on both the led and print the error code.
 		 * @param status Error code.
 		 */
-		void onError(const NFC_StatusTypeDef status){
+		void on_error(const M24SR::StatusTypeDef status){
 			mIsComamndRunning=false;
 			mReadOnlyLed=true;
 			mReadWriteWriteLed=true;
 			printf("Error %X changing the status\r\n",status);
 		}
 
-		virtual void onSessionOpen(Nfc *,NFC_StatusTypeDef status){
-			if(status!=NFC_SUCCESS)
-				return onError(status);
+		virtual void on_session_open(M24SR *,M24SR::StatusTypeDef status){
+			if(status!=M24SR::M24SR_SUCCESS)
+				return on_error(status);
 			printf("Session Open\r\n");
-			mNfcTag.SelectApplication();
+			mNfcTag.select_application();
 		}
 
-		virtual void onSelectedApplication(Nfc *,NFC_StatusTypeDef status){
-			if(status!=NFC_SUCCESS)
-				return onError(status);
+		virtual void on_selected_application(M24SR *,M24SR::StatusTypeDef status){
+			if(status!=M24SR::M24SR_SUCCESS)
+				return on_error(status);
 	
 			printf("Select Application\r\n");
-			mNfcTag.SelectNDEFfile(0x0001);
+			mNfcTag.select_NDEF_file(0x0001);
 		}
 
-		virtual void onSelectedNDEFFile(Nfc *,NFC_StatusTypeDef status){
-			if(status!=NFC_SUCCESS)
-				return onError(status);
+		virtual void on_selected_NDEF_file(M24SR *,M24SR::StatusTypeDef status){
+			if(status!=M24SR::M24SR_SUCCESS)
+				return on_error(status);
 			printf("Select NDef file\r\n");
 			if(mIsReadOnly){
-				mNfcTag.EnableReadOnly(M24SR::DEFAULT_PASSWORD);
+				mNfcTag.enable_read_only(M24SR::DEFAULT_PASSWORD);
 			}else
-				mNfcTag.DisableReadOnly(M24SR::DEFAULT_PASSWORD);
+				mNfcTag.disable_read_only(M24SR::DEFAULT_PASSWORD);
 		}
 
 
-		virtual void onEnableReadOnly(Nfc *,NFC_StatusTypeDef status){
-			if(status!=NFC_SUCCESS)
-				return onError(status);
+		virtual void on_enable_read_only(M24SR *,M24SR::StatusTypeDef status){
+			if(status!=M24SR::M24SR_SUCCESS)
+				return on_error(status);
 			printf("Ready only Enabled\r\n");
 			if(!mIsReadOnly) //if in the meantime the status change
-				mNfcTag.DisableReadOnly(M24SR::DEFAULT_PASSWORD);
+				mNfcTag.disable_read_only(M24SR::DEFAULT_PASSWORD);
 			else{
 				mReadOnlyLed=true;
 				mReadWriteWriteLed=false;
-				mNfcTag.Deselect();
+				mNfcTag.deselect();
 			}
 		}
 
-		virtual void onDisableReadOnly(Nfc *,NFC_StatusTypeDef status){
-			if(status!=NFC_SUCCESS)
-				return onError(status);
+		virtual void on_disable_read_only(M24SR *,M24SR::StatusTypeDef status){
+			if(status!=M24SR::M24SR_SUCCESS)
+				return on_error(status);
 			printf("Ready only Disabled\r\n");
 			if(mIsReadOnly) //if in the meantime the status change
-				mNfcTag.EnableReadOnly(M24SR::DEFAULT_PASSWORD);
+				mNfcTag.enable_read_only(M24SR::DEFAULT_PASSWORD);
 			else{
 				mReadOnlyLed=false;
 				mReadWriteWriteLed=true;
-				mNfcTag.Deselect();
+				mNfcTag.deselect();
 			}
 		}
 
-		virtual void onDeselect(Nfc *,NFC_StatusTypeDef status){
-			if(status!=NFC_SUCCESS)
-				return onError(status);
+		virtual void on_deselect(M24SR *,M24SR::StatusTypeDef status){
+			if(status!=M24SR::M24SR_SUCCESS)
+				return on_error(status);
 			printf("Close Application\r\n");
 			mIsComamndRunning=false;
 		}
@@ -241,40 +241,44 @@
 void sampleAsync_lockTagContent() {
 
     //instance the board with the default parameters
-    I2C i2cChannel(X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN,X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN);
-    X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel,&setNfcEventCallback);
+    I2C i2cChannel(XNucleoNFC01A1::DEFAULT_SDA_PIN,XNucleoNFC01A1::DEFAULT_SDL_PIN);
+    XNucleoNFC01A1 *nfcNucleo = XNucleoNFC01A1::instance(i2cChannel,&set_nfc_event_callback);
 	
     //when the user press the button set buttonPress to true
-    InterruptIn userButton(USER_BUTTON);
-    userButton.fall(setButtonPress);
+	#if defined(TARGET_STM)
+        InterruptIn userButton(USER_BUTTON);
+    #else
+        InterruptIn userButton(SW2);
+    #endif
+    userButton.fall(set_button_press);
     
-    M24SR &nfcTag =nfcNucleo->getM24SR();
+    M24SR &nfcTag =nfcNucleo->get_M24SR();
 
     //set async mode
-    if(nfcTag.GetSession()!=NFC_SUCCESS)
-    	nfcTag.ManageI2CGPO(I2C_ANSWER_READY);
+    if(nfcTag.get_session()==M24SR::M24SR_SUCCESS)
+    	nfcTag.manage_I2C_GPO(M24SR::I2C_ANSWER_READY);
 
 
-    ChangeTagStatusCallback changeTagStatus(nfcTag,nfcNucleo->getLed2(),nfcNucleo->getLed3());
+    ChangeTagStatusCallback changeTagStatus(nfcTag,nfcNucleo->get_led2(),nfcNucleo->get_led3());
     RemoveAllPasswordStatusCallback removeAllPasswordStatusCallback;
 
-    nfcTag.SetCallback(&removeAllPasswordStatusCallback);
-    nfcTag.GetSession();
-    nfcNucleo->getLed1()=true;
+    nfcTag.set_callback(&removeAllPasswordStatusCallback);
+    nfcTag.get_session();
+    nfcNucleo->get_led1()=true;
 
     while(true){
 
-        if(buttonPress && removeAllPasswordStatusCallback.isFinish()){
+        if(buttonPress && removeAllPasswordStatusCallback.is_finish()){
         	buttonPress=false;
-            nfcTag.SetCallback(&changeTagStatus);
-        	changeTagStatus.changeStatus();
+            nfcTag.set_callback(&changeTagStatus);
+        	changeTagStatus.change_status();
         }//if
         if(nfcEvent){
         	nfcEvent=false;
-        	nfcTag.ManageEvent();
+        	nfcTag.manage_event();
         }
         //wait next event
         __WFE();
     }//while
 
-}//sampleAsync_lockTagContent
\ No newline at end of file
+}//sampleAsync_lockTagContent