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:
4:f40b3505070c
Parent:
3:f7f818ee694e
Child:
5:3b300c8235b7
--- a/Type4NfcTagSTM24SR.h	Tue Dec 01 16:01:24 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,225 +0,0 @@
-/*
- * Type4NfcTagSTM24SR.h
- *
- *  Created on: Nov 5, 2015
- *      Author: giovanni visentini
- */
-
-#ifndef TYPE4NFCTAGSTM24SR_H_
-#define TYPE4NFCTAGSTM24SR_H_
-#include <stdint.h>
-#include "m24sr/m24sr_class.h"
-
-#include "NDefLib/Type4NfcTag.h"
-
-/**
- * implement the abstract method for use the NDefLib
- */
-class Type4NfcTagSTM24SR: public NDefLib::Type4NfcTag {
-
-public:
-	/**
-	 *
-	 * @param device device where write the Ndef tags
-	 */
-	Type4NfcTagSTM24SR(M24SR &device) :
-			mDevice(device), mMaxReadBytes(0xFF), mMaxWriteBytes(
-					0xFF) {
-	}
-
-
-	virtual bool openSession(bool force = false);
-	virtual bool closeSession();
-
-	/**
-	 * close the open session
-	 */
-	virtual ~Type4NfcTagSTM24SR() {
-		if(isSessionOpen())
-			closeSession();
-	}//~Type4NfcTagSTM24SR
-
-	bool enableReadPassword(const uint8_t* pCurrentWritePassword,
-			const uint8_t* pNewPassword) {
-		if (!isSessionOpen())
-			return false;
-
-		if (mDevice.Verify(M24SR::WritePwd, 0x10, pCurrentWritePassword)
-				== NFC_SUCCESS) {
-			/* Set new password */
-			if (mDevice.ChangeReferenceData(M24SR::ReadPwd, pNewPassword)
-					== NFC_SUCCESS)
-				return mDevice.EnableVerificationRequirement(M24SR::ReadPwd)
-						== NFC_SUCCESS;
-		} //else
-		/* M24SR already lock but password not known */
-		return false;
-
-	}
-
-	bool disableReadPassword(const uint8_t* pCurrentWritePassword) {
-		if (!isSessionOpen())
-			return false;
-
-		if (mDevice.Verify(M24SR::WritePwd, 0x10, pCurrentWritePassword)
-				== NFC_SUCCESS) {
-			/* Set new password */
-			return mDevice.DisableVerificationRequirement(M24SR::ReadPwd)
-					== NFC_SUCCESS;
-		} else {
-			/* M24SR already lock but password not known */
-			return false;
-		}
-	}
-
-	bool enableWritePassword(const uint8_t* pCurrentWritePassword,
-			uint8_t* pNewPassword) {
-		if (!isSessionOpen())
-			return false;
-
-		/* check we have the good password */
-		if (mDevice.Verify(M24SR::WritePwd, 0x10, pCurrentWritePassword)
-				== NFC_SUCCESS) {
-			/* Set new password */
-			if (mDevice.ChangeReferenceData(M24SR::WritePwd, pNewPassword)
-					== NFC_SUCCESS)
-			return mDevice.EnableVerificationRequirement(M24SR::WritePwd)
-					== NFC_SUCCESS;
-		}
-		return false;
-	}
-
-	bool disableWritePassword(const uint8_t* pCurrentWritePassword) {
-		if (!isSessionOpen())
-			return false;
-
-		if (mDevice.Verify(M24SR::WritePwd, 0x10, pCurrentWritePassword)
-				== NFC_SUCCESS)
-			return mDevice.DisableVerificationRequirement(M24SR::WritePwd)
-					== NFC_SUCCESS;
-		return false;
-	}
-
-	/**
-	 * @brief  This fonction desactivate the need of read and write password for next access
-	 * @param	pSuperUserPassword : I2C super user password to overwrite read and write password
-	 * @retval SUCCESS : M24SR access is now free (no password needed)
-	 * @retval ERROR : operation does not complete
-	 */
-	bool disableAllPassword(const uint8_t* pSuperUserPassword) {
-		if (!isSessionOpen())
-			return false;
-
-		if (mDevice.Verify(M24SR::WritePwd, 0x10, pSuperUserPassword)
-				== NFC_SUCCESS) {
-			mDevice.DisablePermanentState(M24SR::ReadPwd);
-			mDevice.DisablePermanentState(M24SR::WritePwd);
-
-			mDevice.DisableVerificationRequirement(M24SR::ReadPwd);
-			mDevice.DisableVerificationRequirement(M24SR::WritePwd);
-
-			/* reset password */
-			mDevice.ChangeReferenceData(M24SR::ReadPwd, pSuperUserPassword);
-			mDevice.ChangeReferenceData(M24SR::WritePwd, pSuperUserPassword);
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * @brief  This fonction enable read only mode
-	 * @param	pCurrentWritePassword : Write password is needed to have right to enable read only mode
-	 * @retval SUCCESS : M24SR access is now forbidden in write mode
-	 * @retval ERROR : operation does not complete
-	 */
-	bool enableReadOnly(const uint8_t* pCurrentWritePassword) {
-		if (!isSessionOpen())
-			return false;
-
-		if (mDevice.Verify(M24SR::WritePwd, 0x10, pCurrentWritePassword)
-				== NFC_SUCCESS) {
-			/* lock write to have read only */
-			return mDevice.EnablePermanentState(M24SR::WritePwd) == NFC_SUCCESS;
-		}
-		return false;
-	}
-
-	/**
-	 * @brief  This fonction disable read only mode
-	 * @param	pCurrentWritePassword : Write password is needed to have right to disable read only mode
-	 * @retval SUCCESS : M24SR write access is now allowed
-	 * @retval ERROR : operation does not complete
-	 */
-	bool disableReadOnly() {
-		if (!isSessionOpen())
-			return false;
-
-		if (mDevice.Verify(M24SR::I2CPwd, 0x10, M24SR::DEFAULT_PASSWORD)
-				== NFC_SUCCESS) {
-			/* disable write protection to disable read only mode */
-			if (mDevice.DisablePermanentState(M24SR::WritePwd) == NFC_SUCCESS)
-				return mDevice.DisableVerificationRequirement(M24SR::WritePwd)
-						== NFC_SUCCESS;
-		} //if
-		return false;
-	}
-
-	/**
-	 * @brief  This fonction enable write only mode
-	 * @param	pCurrentWritePassword : Write password is needed to have right to enable write only mode
-	 * @retval SUCCESS : M24SR access is now forbidden in read mode
-	 * @retval ERROR : operation does not complete
-	 */
-	bool enableWriteOnly(const uint8_t* pCurrentWritePassword) {
-		if (!isSessionOpen())
-			return false;
-
-		if (mDevice.Verify(M24SR::WritePwd, 0x10, pCurrentWritePassword)
-				== NFC_SUCCESS) {
-			/* disable read access and keep write */
-			return mDevice.EnablePermanentState(M24SR::ReadPwd) == NFC_SUCCESS;
-		}
-		return false;
-	}
-
-	/**
-	 * @brief  This fonction disable write only mode
-	 * @param	pCurrentWritePassword : Write password is needed to have right to disable write only mode
-	 * @retval SUCCESS : M24SR read access is now allowed
-	 * @retval ERROR : operation does not complete
-	 */
-	bool disableWriteOnly() {
-		if (!isSessionOpen())
-			return false;
-
-		if (mDevice.Verify(M24SR::I2CPwd, 0x10, M24SR::DEFAULT_PASSWORD)
-				== NFC_SUCCESS) {
-			/* disable write only -> enable write acces */
-			if (mDevice.DisablePermanentState(M24SR::ReadPwd) == NFC_SUCCESS)
-				return mDevice.DisableVerificationRequirement(M24SR::ReadPwd)
-						== NFC_SUCCESS;
-		}
-		return false;
-	}
-
-protected:
-	virtual bool writeByte(const uint8_t *buffer, const uint16_t length, uint16_t offset);
-	virtual bool readByte(const uint16_t byteOffset, const uint16_t byteLength,
-			uint8_t *buffer);
-
-private:
-
-	M24SR &mDevice;
-
-	/**
-	 * max length for a read operation
-	 */
-	uint16_t mMaxReadBytes;
-
-	/**
-	 * max length for a write operation
-	 */
-	uint16_t mMaxWriteBytes;
-};
-
-#endif /* TYPE4NFCTAGSTM24SR_H_ */