Firmware library for the X-NUCLEO-NFC01A1 Dynamic NFC Tag board.

Dependencies:   M24SR

Dependents:   NFC M2M_2016_STM32 MyongjiElec_capstone1 IDW01M1_Cloud_IBM ... more

Fork of X_NUCLEO_NFC01A1 by ST Expansion SW Team

X-NUCLEO-NFC01A1 Dynamic NFC Tag Expansion Board Firmware Package

Introduction

This firmware package includes Components Device Drivers, Board Support Package and example applications for STMicroelectronics X-NUCLEO-NFC01A1 Dynamic NFC Tag Expansion Board based on M24SR.

Firmware Library

Class X_NUCLEO_NFC01A1 is intended to represent the Dynamic NFC Tag Expansion Board with the same name.
It provides an API to access to the M24SR component and to the three onboard LEDs.
It is intentionally implemented as a singleton because only one X_NUCLEO_NFC01A1 at a time might be deployed in a HW component stack.
The library also provides an implementation of the NDEF library API for M24SR, providing an simple way to read/write NDEF formatted messages from/to the M24SR dynamic NFC tag.

Example applications

1. Hello World
2. Asynchronous Hello World

Committer:
giovannivisentini
Date:
Thu Jan 28 16:38:30 2016 +0000
Revision:
20:aad5727cb8c6
Parent:
19:0b65a5813059
Child:
27:3881985097bb
fix reading and password managment

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giovannivisentini 1:15d4a123ef6b 1 /**
giovannivisentini 1:15d4a123ef6b 2 ******************************************************************************
giovannivisentini 1:15d4a123ef6b 3 * @file X_NUCLEO_NFC01A1.h
giovannivisentini 6:96389fb79676 4 * @author ST Central Labs
giovannivisentini 6:96389fb79676 5 * @date 05 Nov 2015
giovannivisentini 9:9f2e2e68d695 6 * @brief Singleton class that controls all the electronics inside the
giovannivisentini 1:15d4a123ef6b 7 * X_NUCLEO_NFC01A1 expansion board
giovannivisentini 1:15d4a123ef6b 8 ******************************************************************************
giovannivisentini 1:15d4a123ef6b 9 *
giovannivisentini 1:15d4a123ef6b 10 * COPYRIGHT(c) 2015 STMicroelectronics
giovannivisentini 1:15d4a123ef6b 11 *
giovannivisentini 1:15d4a123ef6b 12 * Redistribution and use in source and binary forms, with or without modification,
giovannivisentini 1:15d4a123ef6b 13 * are permitted provided that the following conditions are met:
giovannivisentini 1:15d4a123ef6b 14 * 1. Redistributions of source code must retain the above copyright notice,
giovannivisentini 1:15d4a123ef6b 15 * this list of conditions and the following disclaimer.
giovannivisentini 1:15d4a123ef6b 16 * 2. Redistributions in binary form must reproduce the above copyright notice,
giovannivisentini 1:15d4a123ef6b 17 * this list of conditions and the following disclaimer in the documentation
giovannivisentini 1:15d4a123ef6b 18 * and/or other materials provided with the distribution.
giovannivisentini 1:15d4a123ef6b 19 * 3. Neither the name of STMicroelectronics nor the names of its contributors
giovannivisentini 1:15d4a123ef6b 20 * may be used to endorse or promote products derived from this software
giovannivisentini 1:15d4a123ef6b 21 * without specific prior written permission.
giovannivisentini 1:15d4a123ef6b 22 *
giovannivisentini 1:15d4a123ef6b 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
giovannivisentini 1:15d4a123ef6b 24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
giovannivisentini 1:15d4a123ef6b 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
giovannivisentini 1:15d4a123ef6b 26 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
giovannivisentini 1:15d4a123ef6b 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
giovannivisentini 1:15d4a123ef6b 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
giovannivisentini 1:15d4a123ef6b 29 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
giovannivisentini 1:15d4a123ef6b 30 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
giovannivisentini 1:15d4a123ef6b 31 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
giovannivisentini 1:15d4a123ef6b 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
giovannivisentini 1:15d4a123ef6b 33 *
giovannivisentini 1:15d4a123ef6b 34 ******************************************************************************
giovannivisentini 1:15d4a123ef6b 35 */
giovannivisentini 0:969a2be49f41 36
giovannivisentini 0:969a2be49f41 37 #include <X_NUCLEO_NFC01A1.h>
giovannivisentini 0:969a2be49f41 38
giovannivisentini 0:969a2be49f41 39 const uint8_t X_NUCLEO_NFC01A1::M24SR_ADDR=0xAC;
giovannivisentini 0:969a2be49f41 40 const PinName X_NUCLEO_NFC01A1::DEFAULT_SDA_PIN=D14;
giovannivisentini 0:969a2be49f41 41 const PinName X_NUCLEO_NFC01A1::DEFAULT_SDL_PIN=D15;
giovannivisentini 0:969a2be49f41 42
giovannivisentini 0:969a2be49f41 43
giovannivisentini 3:fa914de381ae 44 const PinName X_NUCLEO_NFC01A1::DEFAULT_GPO_PIN=D12;
giovannivisentini 3:fa914de381ae 45 const PinName X_NUCLEO_NFC01A1::DEFAULT_RF_DISABLE_PIN=D11;
giovannivisentini 3:fa914de381ae 46 const PinName X_NUCLEO_NFC01A1::DEFAULT_LED1_PIN=D5;
giovannivisentini 3:fa914de381ae 47 const PinName X_NUCLEO_NFC01A1::DEFAULT_LED2_PIN=D4;
giovannivisentini 3:fa914de381ae 48 const PinName X_NUCLEO_NFC01A1::DEFAULT_LED3_PIN=D2;
giovannivisentini 0:969a2be49f41 49
giovannivisentini 0:969a2be49f41 50 X_NUCLEO_NFC01A1 *X_NUCLEO_NFC01A1::mInstance = NULL;
giovannivisentini 0:969a2be49f41 51
giovannivisentini 19:0b65a5813059 52 X_NUCLEO_NFC01A1* X_NUCLEO_NFC01A1::Instance(I2C &devI2C,
giovannivisentini 20:aad5727cb8c6 53 Nfc::gpoEventCallback gpoEventCallback,
giovannivisentini 20:aad5727cb8c6 54 const PinName &gpoName,
giovannivisentini 19:0b65a5813059 55 const PinName &RFDisableName, const PinName &led1Name,
giovannivisentini 19:0b65a5813059 56 const PinName &led2Name, const PinName &led3Name) {
giovannivisentini 0:969a2be49f41 57 if (mInstance == NULL) { // the first time
giovannivisentini 19:0b65a5813059 58 mInstance = new X_NUCLEO_NFC01A1(devI2C,gpoEventCallback,gpoName,
giovannivisentini 19:0b65a5813059 59 RFDisableName,led1Name,led2Name,led3Name);
giovannivisentini 0:969a2be49f41 60 if (mInstance != NULL) { //allocation ok
giovannivisentini 0:969a2be49f41 61 const int status = mInstance->mM24SR.Init(NULL);
giovannivisentini 0:969a2be49f41 62 if (status != NFC_SUCCESS) { //initialization failed
giovannivisentini 0:969a2be49f41 63 delete mInstance;
giovannivisentini 0:969a2be49f41 64 error(
giovannivisentini 0:969a2be49f41 65 "Failed to init X_NUCLEO_NFC01A1 expansion board!\r\nError:0x%X\r\n",
giovannivisentini 0:969a2be49f41 66 status);
giovannivisentini 0:969a2be49f41 67 } //if init
giovannivisentini 0:969a2be49f41 68 } //if instance !=NULL
giovannivisentini 0:969a2be49f41 69 } //if instance
giovannivisentini 0:969a2be49f41 70 return mInstance;
giovannivisentini 0:969a2be49f41 71 }