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 .

Files at this revision

API Documentation at this revision

Comitter:
giovannivisentini
Date:
Tue Dec 22 16:22:03 2015 +0000
Parent:
8:a9ecd7687de7
Child:
10:ca6f3293ecfb
Commit message:
use the new library api

Changed in this revision

NDefLib.lib Show annotated file Show diff for this revision Revisions of this file
NDefLib_M24SR.lib Show diff for this revision Revisions of this file
Samples/Sample_countClick.cpp Show annotated file Show diff for this revision Revisions of this file
Samples/Sample_writeAndChangeAll.cpp Show annotated file Show diff for this revision Revisions of this file
Samples/Sample_writeUrl.cpp Show annotated file Show diff for this revision Revisions of this file
Samples/sample_lockWriteTag.cpp Show annotated file Show diff for this revision Revisions of this file
X_NUCLEO_NFC01A1.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NDefLib.lib	Tue Dec 22 16:22:03 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/giovannivisentini/code/NDefLib/#473f6e0b03df
--- a/NDefLib_M24SR.lib	Mon Dec 21 13:01:41 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/users/giovannivisentini/code/NDefLib_M24SR/#4418dfd45460
--- a/Samples/Sample_countClick.cpp	Mon Dec 21 13:01:41 2015 +0000
+++ b/Samples/Sample_countClick.cpp	Tue Dec 22 16:22:03 2015 +0000
@@ -1,7 +1,8 @@
 /**
   ******************************************************************************
   * @file       Sample_countClick.cpp
-  * @date       03/12/2015
+  * @author     ST / Central Labs
+  * @date       03 Dic 2015
   * @brief      This demo define a custom record that contains the number of time the user
   *             press the user button
   ******************************************************************************
@@ -36,7 +37,7 @@
 #include "mbed.h"
 
 #include "X_NUCLEO_NFC01A1.h"
-#include "Type4NfcTagM24SR.h"
+#include "NDefLib/NDefNfcTag.h"
 #include "NDefLib/RecordType/RecordText.h"
 
 
@@ -65,7 +66,7 @@
 };
 
 static void writeMessage(X_NUCLEO_NFC01A1 *nfcNucleo,NDefLib::Message &msg){
-    Type4NfcTagM24SR tag(nfcNucleo->getM24SR());
+    NDefLib::NDefNfcTag& tag = nfcNucleo->getM24SR().getNDefTag();
     //open the i2c session with the nfc chip
     if(tag.openSession()){
         nfcNucleo->getLed1()=! nfcNucleo->getLed1();
@@ -92,8 +93,8 @@
     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());
+    //get the wrapper for use the NdefLib
+    NDefLib::NDefNfcTag& tag = nfcNucleo->getM24SR().getNDefTag();
     
     InterruptIn userButton(USER_BUTTON);    
     userButton.fall(setButtonPress);
--- a/Samples/Sample_writeAndChangeAll.cpp	Mon Dec 21 13:01:41 2015 +0000
+++ b/Samples/Sample_writeAndChangeAll.cpp	Tue Dec 22 16:22:03 2015 +0000
@@ -1,7 +1,8 @@
 /**
   ******************************************************************************
   * @file       Sample_writeAndChangeAll.cpp
-  * @date       03/12/2015
+  * @author     ST / Central Labs
+  * @date       03 Dic 2015
   * @brief      This demo write an ndef message different records, when the user press the buttun
   *             read the tag, change some data and write it again
   ******************************************************************************
@@ -35,7 +36,7 @@
   
 #include "mbed.h"
 
-#include "Type4NfcTagM24SR.h"
+#include "NDefLib/NDefNfcTag.h"
 
 #include "NDefLib/RecordType/RecordAAR.h"
 #include "NDefLib/RecordType/RecordSMS.h"
@@ -59,7 +60,7 @@
     led3=prevLed2;
 }
 
-static void setNFCTag(NDefLib::Type4NfcTag &tag){
+static void setNFCTag(NDefLib::NDefNfcTag &tag){
 
     bool writeStatus,closeStatus;
     if(tag.openSession()){
@@ -223,7 +224,7 @@
     }//switch
 }
 
-static void readNfcTag(NDefLib::Type4NfcTag &tag){
+static void readNfcTag(NDefLib::NDefNfcTag &tag){
     using namespace NDefLib;
 
     if(tag.openSession()){
@@ -248,11 +249,12 @@
 }
 
 
-static void changeNfcTag(NDefLib::Type4NfcTag &tag){
-    using namespace NDefLib;
+static void changeNfcTag(NDefLib::NDefNfcTag &tag){
+    using NDefLib::Record;
+    using NDefLib::Message;
 
     if(tag.openSession()){
-        NDefLib::Message readMsg;
+        Message readMsg;
 
         tag.read(&readMsg);
 
@@ -284,7 +286,7 @@
     DigitalOut nucleoLed(LED1);
 
     X_NUCLEO_NFC01A1 *nfcNucleo = X_NUCLEO_NFC01A1::Instance(i2cChannel);
-    Type4NfcTagM24SR tag(nfcNucleo->getM24SR());
+    NDefLib::NDefNfcTag& tag = nfcNucleo->getM24SR().getNDefTag();
     InterruptIn mybutton(USER_BUTTON);
     
     nfcNucleo->getLed1()=1;
--- a/Samples/Sample_writeUrl.cpp	Mon Dec 21 13:01:41 2015 +0000
+++ b/Samples/Sample_writeUrl.cpp	Tue Dec 22 16:22:03 2015 +0000
@@ -1,7 +1,8 @@
 /**
   ******************************************************************************
   * @file       Sample_writeUrl.cpp
-  * @date       03/12/2015
+  * @author     ST / Central Labs
+  * @date       03 Dic 2015
   * @brief      This demo write an ndef message with an url inside
   ******************************************************************************
   *
@@ -35,7 +36,7 @@
 #include "mbed.h"
 
 #include "X_NUCLEO_NFC01A1.h"
-#include "Type4NfcTagM24SR.h"
+#include "NDefLib/NDefNfcTag.h"
 #include "NDefLib/RecordType/RecordURI.h"
 
 /**
@@ -49,7 +50,7 @@
     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();
     pc.printf("System Init done: !\n\r");
     //open the i2c session with the nfc chip
     if(tag.openSession()){
--- 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;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/X_NUCLEO_NFC01A1.lib	Tue Dec 22 16:22:03 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/giovannivisentini/code/X_NUCLEO_NFC01A1/#96389fb79676
--- a/main.cpp	Mon Dec 21 13:01:41 2015 +0000
+++ b/main.cpp	Tue Dec 22 16:22:03 2015 +0000
@@ -33,7 +33,7 @@
 
 #include "Samples/Samples.h"
  
- //#define SAMPLE_WRITE_URL
+//#define SAMPLE_WRITE_URL
 //#define SAMPLE_COUNT_CLICK
 //#define SAMPLE_WRITE_AND_CHANGE_ALL
 #define SAMPLE_LOCK_TAG_CONTENT