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:
20:ba95e0dc5975
Parent:
18:d596eb3f575f
--- a/Samples/SampleAsync_writeAndChangeAll.cpp	Tue Aug 08 13:34:00 2017 +0000
+++ b/Samples/SampleAsync_writeAndChangeAll.cpp	Mon Aug 21 12:12:30 2017 +0000
@@ -270,9 +270,7 @@
 	 * Delete all the record and the message.
 	 */
 	void delete_message(){
-		for(uint32_t i=0;i<mMsg->get_N_records();i++){
-			delete (*mMsg)[i];
-		}//for
+		NDefLib::Message::remove_and_delete_all_record(*mMsg);
 		delete mMsg;
 	}//deleteMessage
 
@@ -315,8 +313,7 @@
 	/**
 	 * Delete the Message and close the session
 	 */
-	virtual void on_message_write(NDefLib::NDefNfcTag *tag,bool success,
-							const NDefLib::Message &){
+	virtual void on_message_write(NDefLib::NDefNfcTag *tag,bool success){
 		delete_message();
 		if(success){
 			printf("Message Wrote\r\n");
@@ -345,6 +342,7 @@
 class WriteMessageCallback : public NDefLib::NDefNfcTag::Callbacks{
 
 	ReadMessageCallback* mReadMessage;
+	NDefLib::Message mMsg;
 
 public:
 
@@ -366,32 +364,37 @@
 
 		printf("Session open\r\n");
 
-		//create the message
-		 NDefLib::Message msg;
+		NDefLib::RecordAAR *rAAR = 
+			new NDefLib::RecordAAR("com.st.BlueMS");
+		mMsg.add_record(rAAR);
 
-		NDefLib::RecordAAR rAAR("com.st.BlueMS");
-		msg.add_record(&rAAR);
+		NDefLib::RecordSMS *rSMS = 
+			new NDefLib::RecordSMS("123456789","st.com.BlueMS");
+		mMsg.add_record(rSMS);
 
-		NDefLib::RecordSMS rSMS("123456789","st.com.BlueMS");
-		msg.add_record(&rSMS);
+		NDefLib::RecordGeo *rGeo = 
+			new NDefLib::RecordGeo(123.123,-456.789);
+		mMsg.add_record(rGeo);
 
-		NDefLib::RecordGeo rGeo(123.123,-456.789);
-		msg.add_record(&rGeo);
+		NDefLib::RecordURI *rUri = 
+			new NDefLib::RecordURI(NDefLib::RecordURI::HTTP_WWW,"http://www.st.com");
+		mMsg.add_record(rUri);
 
-		NDefLib::RecordURI rUri(NDefLib::RecordURI::HTTP_WWW,"http://www.st.com");
-		msg.add_record(&rUri);
+		NDefLib::RecordMail *rMail = 
+			new NDefLib::RecordMail("mail@st.com","ciao","da nfc tag");
+		mMsg.add_record(rMail);
 
-		NDefLib::RecordMail rMail("mail@st.com","ciao","da nfc tag");
-		msg.add_record(&rMail);
+		NDefLib::RecordMimeType *rText1 =
+			new NDefLib::RecordMimeType("text/plain",(const uint8_t*)"Ciao",4);
+		mMsg.add_record(rText1);
 
-		NDefLib::RecordMimeType rText1("text/plain",(const uint8_t*)"Ciao",4);
-		msg.add_record(&rText1);
+		NDefLib::RecordText *rText2 =
+			new NDefLib::RecordText(NDefLib::RecordText::UTF8,"it","ciao");
+		mMsg.add_record(rText2);
 
-		NDefLib::RecordText rText3(NDefLib::RecordText::UTF8,"it","ciao");
-		msg.add_record(&rText3);
-
-		NDefLib::RecordWifiConf rWifi("OpenNetwork");
-		msg.add_record(&rWifi);
+		NDefLib::RecordWifiConf *rWifi =
+			new NDefLib::RecordWifiConf("OpenNetwork");
+		mMsg.add_record(rWifi);
 
 		NDefLib::RecordVCard::VCardInfo_t cardInfo;
 		cardInfo[NDefLib::RecordVCard::FORMATTED_NAME]="prova prova1";
@@ -411,22 +414,23 @@
 		cardInfo[NDefLib::RecordVCard::TITLE]="King";
 		cardInfo[NDefLib::RecordVCard::URL]="www.st.com";
 		cardInfo[NDefLib::RecordVCard::PHOTO_URI]="http://www.st.com/st-web-ui/static/active/en/fragment/multimedia/image/picture/customer_focus.jpg";
-		NDefLib::RecordVCard rVCard(cardInfo);
-		msg.add_record(&rVCard);
+		NDefLib::RecordVCard *rVCard = new NDefLib::RecordVCard(cardInfo);
+		mMsg.add_record(rVCard);
 
 		//write it
-		tag->write(msg);
+		tag->write(mMsg);
 	}
 
 
 	/**
 	 * Close the session
 	 */
-	virtual void on_message_write(NDefLib::NDefNfcTag *tag,bool success,
-						const NDefLib::Message &){
-		if(!success)
+	virtual void on_message_write(NDefLib::NDefNfcTag *tag,bool success){
+		NDefLib::Message::remove_and_delete_all_record(mMsg);
+		if(!success){
 			printf("Error Writing\r\n");
-
+			return;
+		}
 		printf("Message wrote\r\n");
 		tag->close_session();
 	}