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:
rosarium
Date:
Wed Sep 28 11:30:09 2016 +0000
Revision:
0:71bff5ad0a49
X_NUCLEO_NFC02A1 converted as an library

Who changed what in which revision?

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