X_NUCLEO_NFC02A1 library for M24LR

Dependencies:   ST_INTERFACES

Dependents:   HelloWorld_NFC02A1_mbedOS HelloWorld_NFC02A1laatste HelloWorld_NFC02A1

Fork of X_NUCLEO_NFC02A1 by ST Expansion SW Team

X-NUCLEO-NFC02A1 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-NFC02A1 Dynamic NFC Tag Expansion Board based on M24LR.

Firmware Library

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

Example application

Hello World is a simple application to program and read an URI from the NFC tag.

Committer:
Davidroid
Date:
Tue Jul 11 15:23:56 2017 +0000
Revision:
7:b876cdcf095a
Parent:
6:8c1eca41b3a9
Child:
8:7c4cf671960b
Updating with the new mbed library.

Who changed what in which revision?

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