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 .

Committer:
giovannivisentini
Date:
Tue Dec 01 08:30:54 2015 +0000
Revision:
2:0648c1561eb2
Parent:
1:6d202b62ed68
Child:
3:f7f818ee694e
change the tag content when the user press the button

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giovannivisentini 0:674813bd5ec9 1 /*
giovannivisentini 0:674813bd5ec9 2 * X_NUCLEO_NFC01A1.h
giovannivisentini 0:674813bd5ec9 3 *
giovannivisentini 0:674813bd5ec9 4 * Created on: Nov 5, 2015
giovannivisentini 0:674813bd5ec9 5 * Author: giovanni visentini
giovannivisentini 0:674813bd5ec9 6 */
giovannivisentini 0:674813bd5ec9 7
giovannivisentini 0:674813bd5ec9 8 #ifndef X_NUCLEO_NFC01A1_H_
giovannivisentini 0:674813bd5ec9 9 #define X_NUCLEO_NFC01A1_H_
giovannivisentini 2:0648c1561eb2 10 #include <stdint.h>
giovannivisentini 0:674813bd5ec9 11
giovannivisentini 0:674813bd5ec9 12 #include "mbed.h"
giovannivisentini 0:674813bd5ec9 13
giovannivisentini 0:674813bd5ec9 14 #include "m24sr/m24sr_class.h"
giovannivisentini 0:674813bd5ec9 15
giovannivisentini 2:0648c1561eb2 16 /**
giovannivisentini 2:0648c1561eb2 17 * singleton class that controls all the electronics inside the X_NUCLEO_NFC01A1 expansion board
giovannivisentini 2:0648c1561eb2 18 */
giovannivisentini 0:674813bd5ec9 19 class X_NUCLEO_NFC01A1 {
giovannivisentini 0:674813bd5ec9 20
giovannivisentini 0:674813bd5ec9 21 private:
giovannivisentini 2:0648c1561eb2 22 /**
giovannivisentini 2:0648c1561eb2 23 * ponter to the singleton instance, NULL if we did't build one
giovannivisentini 2:0648c1561eb2 24 */
giovannivisentini 1:6d202b62ed68 25 static X_NUCLEO_NFC01A1 *mInstance;
giovannivisentini 2:0648c1561eb2 26 /**
giovannivisentini 2:0648c1561eb2 27 * i2c address of the m24sr chip
giovannivisentini 2:0648c1561eb2 28 */
giovannivisentini 2:0648c1561eb2 29 static const uint8_t M24SR_ADDR;
giovannivisentini 0:674813bd5ec9 30
giovannivisentini 2:0648c1561eb2 31 /**
giovannivisentini 2:0648c1561eb2 32 * constructor
giovannivisentini 2:0648c1561eb2 33 * @param devI2C i2c channel used for communicate with the board
giovannivisentini 2:0648c1561eb2 34 * @param gpoName pin of the gpio pin of the M24SR chip
giovannivisentini 2:0648c1561eb2 35 * @param RFDisableName pin for disable the rf antenna
giovannivisentini 2:0648c1561eb2 36 * @param led1Name pin for control the led1 status
giovannivisentini 2:0648c1561eb2 37 * @param led2Name pin for control the led1 status
giovannivisentini 2:0648c1561eb2 38 * @param led3Name pin for control the led1 status
giovannivisentini 2:0648c1561eb2 39 */
giovannivisentini 2:0648c1561eb2 40 //TODO FIX all this the pin name?
giovannivisentini 1:6d202b62ed68 41 X_NUCLEO_NFC01A1(I2C &devI2C, const PinName &gpoName,
giovannivisentini 1:6d202b62ed68 42 const PinName &RFDisableName, const PinName &led1Name,
giovannivisentini 1:6d202b62ed68 43 const PinName &led2Name, const PinName &led3Name) :
giovannivisentini 1:6d202b62ed68 44 mM24SR(M24SR_ADDR, devI2C, gpoName, RFDisableName), mNfcLed1(
giovannivisentini 1:6d202b62ed68 45 led1Name), mNfcLed2(led2Name), mNfcLed3(led3Name) {
giovannivisentini 0:674813bd5ec9 46
giovannivisentini 0:674813bd5ec9 47 }
giovannivisentini 0:674813bd5ec9 48
giovannivisentini 0:674813bd5ec9 49 public:
giovannivisentini 2:0648c1561eb2 50 //TODO FIX all this the pin name?
giovannivisentini 1:6d202b62ed68 51 static X_NUCLEO_NFC01A1* Instance(I2C &devI2C, const PinName &gpoName = D12,
giovannivisentini 1:6d202b62ed68 52 const PinName &RFDisableName = D11, const PinName &led1Name = D5,
giovannivisentini 1:6d202b62ed68 53 const PinName &led2Name = D4, const PinName &led3Name = D2);
giovannivisentini 0:674813bd5ec9 54
giovannivisentini 2:0648c1561eb2 55 /**
giovannivisentini 2:0648c1561eb2 56 * @return board led1
giovannivisentini 2:0648c1561eb2 57 */
giovannivisentini 1:6d202b62ed68 58 DigitalOut& getLed1() {
giovannivisentini 1:6d202b62ed68 59 return mNfcLed1;
giovannivisentini 1:6d202b62ed68 60 }
giovannivisentini 2:0648c1561eb2 61
giovannivisentini 2:0648c1561eb2 62 /**
giovannivisentini 2:0648c1561eb2 63 * @return board led2
giovannivisentini 2:0648c1561eb2 64 */
giovannivisentini 1:6d202b62ed68 65 DigitalOut& getLed2() {
giovannivisentini 1:6d202b62ed68 66 return mNfcLed2;
giovannivisentini 1:6d202b62ed68 67 }
giovannivisentini 2:0648c1561eb2 68
giovannivisentini 2:0648c1561eb2 69 /**
giovannivisentini 2:0648c1561eb2 70 * @return board led3
giovannivisentini 2:0648c1561eb2 71 */
giovannivisentini 1:6d202b62ed68 72 DigitalOut& getLed3() {
giovannivisentini 1:6d202b62ed68 73 return mNfcLed3;
giovannivisentini 1:6d202b62ed68 74 }
giovannivisentini 0:674813bd5ec9 75
giovannivisentini 2:0648c1561eb2 76 /**
giovannivisentini 2:0648c1561eb2 77 * @return NFC Chip
giovannivisentini 2:0648c1561eb2 78 */
giovannivisentini 1:6d202b62ed68 79 M24SR& getM24SR() {
giovannivisentini 1:6d202b62ed68 80 return mM24SR;
giovannivisentini 1:6d202b62ed68 81 }
giovannivisentini 0:674813bd5ec9 82
giovannivisentini 1:6d202b62ed68 83 virtual ~X_NUCLEO_NFC01A1() {
giovannivisentini 1:6d202b62ed68 84 }
giovannivisentini 0:674813bd5ec9 85
giovannivisentini 0:674813bd5ec9 86 private:
giovannivisentini 0:674813bd5ec9 87
giovannivisentini 0:674813bd5ec9 88 M24SR mM24SR;
giovannivisentini 0:674813bd5ec9 89 DigitalOut mNfcLed1;
giovannivisentini 0:674813bd5ec9 90 DigitalOut mNfcLed2;
giovannivisentini 0:674813bd5ec9 91 DigitalOut mNfcLed3;
giovannivisentini 0:674813bd5ec9 92
giovannivisentini 0:674813bd5ec9 93 };
giovannivisentini 0:674813bd5ec9 94
giovannivisentini 0:674813bd5ec9 95 #endif /* X_NUCLEO_NFC01A1_H_ */