ST / X_NUCLEO_NFC01A1

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 Dec 03 13:44:06 2015 +0000
Revision:
0:969a2be49f41
Child:
1:15d4a123ef6b
move the driver files in a separate library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giovannivisentini 0:969a2be49f41 1 /**
giovannivisentini 0:969a2be49f41 2 ******************************************************************************
giovannivisentini 0:969a2be49f41 3 * @file m24sr_class.h
giovannivisentini 0:969a2be49f41 4 * @author MMY Application Team
giovannivisentini 0:969a2be49f41 5 * @version V1.2.0
giovannivisentini 0:969a2be49f41 6 * @date 20-October-2014
giovannivisentini 0:969a2be49f41 7 * @brief This file provides a set of functions to interface with the M24SR
giovannivisentini 0:969a2be49f41 8 * device.
giovannivisentini 0:969a2be49f41 9 ******************************************************************************
giovannivisentini 0:969a2be49f41 10 * @attention
giovannivisentini 0:969a2be49f41 11 *
giovannivisentini 0:969a2be49f41 12 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
giovannivisentini 0:969a2be49f41 13 *
giovannivisentini 0:969a2be49f41 14 * Redistribution and use in source and binary forms, with or without modification,
giovannivisentini 0:969a2be49f41 15 * are permitted provided that the following conditions are met:
giovannivisentini 0:969a2be49f41 16 * 1. Redistributions of source code must retain the above copyright notice,
giovannivisentini 0:969a2be49f41 17 * this list of conditions and the following disclaimer.
giovannivisentini 0:969a2be49f41 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
giovannivisentini 0:969a2be49f41 19 * this list of conditions and the following disclaimer in the documentation
giovannivisentini 0:969a2be49f41 20 * and/or other materials provided with the distribution.
giovannivisentini 0:969a2be49f41 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
giovannivisentini 0:969a2be49f41 22 * may be used to endorse or promote products derived from this software
giovannivisentini 0:969a2be49f41 23 * without specific prior written permission.
giovannivisentini 0:969a2be49f41 24 *
giovannivisentini 0:969a2be49f41 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
giovannivisentini 0:969a2be49f41 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
giovannivisentini 0:969a2be49f41 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
giovannivisentini 0:969a2be49f41 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
giovannivisentini 0:969a2be49f41 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
giovannivisentini 0:969a2be49f41 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
giovannivisentini 0:969a2be49f41 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
giovannivisentini 0:969a2be49f41 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
giovannivisentini 0:969a2be49f41 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
giovannivisentini 0:969a2be49f41 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
giovannivisentini 0:969a2be49f41 35 *
giovannivisentini 0:969a2be49f41 36 ******************************************************************************
giovannivisentini 0:969a2be49f41 37 */
giovannivisentini 0:969a2be49f41 38
giovannivisentini 0:969a2be49f41 39 /* Revision ------------------------------------------------------------------*/
giovannivisentini 0:969a2be49f41 40 /*
giovannivisentini 0:969a2be49f41 41 Based on: X-CUBE-MEMS1/trunk/Drivers/BSP/Components/m24sr/m24sr.h
giovannivisentini 0:969a2be49f41 42 Revision: M24SR Driver V1.0.0
giovannivisentini 0:969a2be49f41 43 */
giovannivisentini 0:969a2be49f41 44
giovannivisentini 0:969a2be49f41 45 /* Define to prevent recursive inclusion -------------------------------------*/
giovannivisentini 0:969a2be49f41 46
giovannivisentini 0:969a2be49f41 47 #ifndef __M24SR_CLASS_H
giovannivisentini 0:969a2be49f41 48 #define __M24SR_CLASS_H
giovannivisentini 0:969a2be49f41 49
giovannivisentini 0:969a2be49f41 50 /* Includes ------------------------------------------------------------------*/
giovannivisentini 0:969a2be49f41 51
giovannivisentini 0:969a2be49f41 52 #include "mbed.h"
giovannivisentini 0:969a2be49f41 53 #include "I2C.h"
giovannivisentini 0:969a2be49f41 54
giovannivisentini 0:969a2be49f41 55 #include "m24sr.h"
giovannivisentini 0:969a2be49f41 56 #include "Interfaces/Nfc_class.h"
giovannivisentini 0:969a2be49f41 57
giovannivisentini 0:969a2be49f41 58 /* Classes -------------------------------------------------------------------*/
giovannivisentini 0:969a2be49f41 59
giovannivisentini 0:969a2be49f41 60 /** Class representing a M24SR component.
giovannivisentini 0:969a2be49f41 61 */
giovannivisentini 0:969a2be49f41 62 class M24SR: public Nfc {
giovannivisentini 0:969a2be49f41 63
giovannivisentini 0:969a2be49f41 64 public:
giovannivisentini 0:969a2be49f41 65
giovannivisentini 0:969a2be49f41 66 static const uint8_t DEFAULT_PASSWORD[16];
giovannivisentini 0:969a2be49f41 67 /*** Constructor and Destructor Methods ***/
giovannivisentini 0:969a2be49f41 68
giovannivisentini 0:969a2be49f41 69 /**
giovannivisentini 0:969a2be49f41 70 * @brief Constructor.
giovannivisentini 0:969a2be49f41 71 * @param address I2C address of the component.
giovannivisentini 0:969a2be49f41 72 * @param i2c I2C device to be used for communication.
giovannivisentini 0:969a2be49f41 73 */
giovannivisentini 0:969a2be49f41 74 M24SR(const uint8_t address, I2C &i2c, const PinName& GPOPinName,
giovannivisentini 0:969a2be49f41 75 const PinName& RFDISPinName) :
giovannivisentini 0:969a2be49f41 76 Nfc(), address(address), dev_i2c(i2c), GPOPin(GPOPinName), RFDisablePin(
giovannivisentini 0:969a2be49f41 77 RFDISPinName), answerReadyInterrupt(GPOPinName), interruptIsFired(
giovannivisentini 0:969a2be49f41 78 false) {
giovannivisentini 0:969a2be49f41 79
giovannivisentini 0:969a2be49f41 80 memset(uM24SRbuffer, 0, 0xFF * sizeof(int8_t));
giovannivisentini 0:969a2be49f41 81 syncMode = M24SR_WAITINGTIME_POLLING;
giovannivisentini 0:969a2be49f41 82 uDIDbyte = 0;
giovannivisentini 0:969a2be49f41 83 RFDisablePin = 0;
giovannivisentini 0:969a2be49f41 84 GPOPin.mode(PullNone);
giovannivisentini 0:969a2be49f41 85 answerReadyInterrupt.disable_irq();
giovannivisentini 0:969a2be49f41 86 answerReadyInterrupt.fall(this,
giovannivisentini 0:969a2be49f41 87 &M24SR::M24SR_AnswerReadyInterruptCallback);
giovannivisentini 0:969a2be49f41 88 answerReadyInterrupt.mode(PullUp);
giovannivisentini 0:969a2be49f41 89
giovannivisentini 0:969a2be49f41 90 }
giovannivisentini 0:969a2be49f41 91
giovannivisentini 0:969a2be49f41 92 /**
giovannivisentini 0:969a2be49f41 93 * @brief Destructor.
giovannivisentini 0:969a2be49f41 94 */
giovannivisentini 0:969a2be49f41 95 virtual ~M24SR(void) {
giovannivisentini 0:969a2be49f41 96 }
giovannivisentini 0:969a2be49f41 97
giovannivisentini 0:969a2be49f41 98 /*** Public Component Related Methods ***/
giovannivisentini 0:969a2be49f41 99 virtual int Init(void *ptr) {
giovannivisentini 0:969a2be49f41 100 return (NFC_StatusTypeDef) M24SR_Init((NFC_InitTypeDef*)ptr);
giovannivisentini 0:969a2be49f41 101 }
giovannivisentini 0:969a2be49f41 102
giovannivisentini 0:969a2be49f41 103 virtual int ReadID(uint8_t *id) {
giovannivisentini 0:969a2be49f41 104 return (NFC_StatusTypeDef) M24SR_ReadID((uint8_t *) id);
giovannivisentini 0:969a2be49f41 105 }
giovannivisentini 0:969a2be49f41 106
giovannivisentini 0:969a2be49f41 107 /** lock the tag channel */
giovannivisentini 0:969a2be49f41 108 virtual NFC_StatusTypeDef GetSession(void) {
giovannivisentini 0:969a2be49f41 109 return (NFC_StatusTypeDef) M24SR_GetSession();
giovannivisentini 0:969a2be49f41 110 }
giovannivisentini 0:969a2be49f41 111
giovannivisentini 0:969a2be49f41 112 virtual NFC_StatusTypeDef KillSession(void) {
giovannivisentini 0:969a2be49f41 113 return (NFC_StatusTypeDef) M24SR_KillSession();
giovannivisentini 0:969a2be49f41 114 }
giovannivisentini 0:969a2be49f41 115
giovannivisentini 0:969a2be49f41 116 virtual NFC_StatusTypeDef Deselect(void) {
giovannivisentini 0:969a2be49f41 117 return (NFC_StatusTypeDef) M24SR_Deselect();
giovannivisentini 0:969a2be49f41 118 }
giovannivisentini 0:969a2be49f41 119
giovannivisentini 0:969a2be49f41 120 /** tag4 command */
giovannivisentini 0:969a2be49f41 121 virtual NFC_StatusTypeDef SelectApplication(void) {
giovannivisentini 0:969a2be49f41 122 return (NFC_StatusTypeDef) M24SR_SelectApplication();
giovannivisentini 0:969a2be49f41 123 }
giovannivisentini 0:969a2be49f41 124
giovannivisentini 0:969a2be49f41 125 virtual NFC_StatusTypeDef SelectCCfile(void) {
giovannivisentini 0:969a2be49f41 126 return (NFC_StatusTypeDef) M24SR_SelectCCfile();
giovannivisentini 0:969a2be49f41 127 }
giovannivisentini 0:969a2be49f41 128
giovannivisentini 0:969a2be49f41 129 virtual NFC_StatusTypeDef SelectNDEFfile(uint16_t NDEFfileId) {
giovannivisentini 0:969a2be49f41 130 return (NFC_StatusTypeDef) M24SR_SelectNDEFfile((uint16_t) NDEFfileId);
giovannivisentini 0:969a2be49f41 131 }
giovannivisentini 0:969a2be49f41 132
giovannivisentini 0:969a2be49f41 133 virtual NFC_StatusTypeDef SelectSystemfile(void) {
giovannivisentini 0:969a2be49f41 134 return (NFC_StatusTypeDef) M24SR_SelectSystemfile();
giovannivisentini 0:969a2be49f41 135 }
giovannivisentini 0:969a2be49f41 136
giovannivisentini 0:969a2be49f41 137 virtual NFC_StatusTypeDef ReadBinary(uint16_t Offset, uint8_t NbByteToRead,
giovannivisentini 0:969a2be49f41 138 uint8_t *pBufferRead) {
giovannivisentini 0:969a2be49f41 139 return (NFC_StatusTypeDef) M24SR_ReadBinary((uint16_t) Offset,
giovannivisentini 0:969a2be49f41 140 (uint8_t) NbByteToRead, (uint8_t *) pBufferRead);
giovannivisentini 0:969a2be49f41 141 }
giovannivisentini 0:969a2be49f41 142
giovannivisentini 0:969a2be49f41 143 virtual NFC_StatusTypeDef UpdateBinary(uint16_t Offset,
giovannivisentini 0:969a2be49f41 144 uint8_t NbByteToWrite, uint8_t *pDataToWrite) {
giovannivisentini 0:969a2be49f41 145 return (NFC_StatusTypeDef) M24SR_UpdateBinary((uint16_t) Offset,
giovannivisentini 0:969a2be49f41 146 (uint8_t) NbByteToWrite, (uint8_t *) pDataToWrite);
giovannivisentini 0:969a2be49f41 147 }
giovannivisentini 0:969a2be49f41 148
giovannivisentini 0:969a2be49f41 149 /** iso 7816-4 commands */
giovannivisentini 0:969a2be49f41 150 virtual NFC_StatusTypeDef Verify(PasswordType_t pwdId, uint8_t NbPwdByte,
giovannivisentini 0:969a2be49f41 151 const uint8_t *pPwd) {
giovannivisentini 0:969a2be49f41 152 return (NFC_StatusTypeDef) M24SR_Verify((uint16_t) pwdId,
giovannivisentini 0:969a2be49f41 153 (uint8_t) NbPwdByte, pPwd);
giovannivisentini 0:969a2be49f41 154 }
giovannivisentini 0:969a2be49f41 155
giovannivisentini 0:969a2be49f41 156 virtual NFC_StatusTypeDef ChangeReferenceData(PasswordType_t pwdId,
giovannivisentini 0:969a2be49f41 157 const uint8_t *pPwd) {
giovannivisentini 0:969a2be49f41 158 return (NFC_StatusTypeDef) M24SR_ChangeReferenceData((uint16_t) pwdId,
giovannivisentini 0:969a2be49f41 159 (uint8_t *) pPwd);
giovannivisentini 0:969a2be49f41 160 }
giovannivisentini 0:969a2be49f41 161
giovannivisentini 0:969a2be49f41 162 virtual NFC_StatusTypeDef EnableVerificationRequirement(
giovannivisentini 0:969a2be49f41 163 PasswordType_t uReadOrWrite) {
giovannivisentini 0:969a2be49f41 164 return (NFC_StatusTypeDef) M24SR_EnableVerificationRequirement(
giovannivisentini 0:969a2be49f41 165 (uint16_t) uReadOrWrite);
giovannivisentini 0:969a2be49f41 166 }
giovannivisentini 0:969a2be49f41 167
giovannivisentini 0:969a2be49f41 168 virtual NFC_StatusTypeDef DisableVerificationRequirement(
giovannivisentini 0:969a2be49f41 169 PasswordType_t uReadOrWrite) {
giovannivisentini 0:969a2be49f41 170 return (NFC_StatusTypeDef) M24SR_DisableVerificationRequirement(
giovannivisentini 0:969a2be49f41 171 (uint16_t) uReadOrWrite);
giovannivisentini 0:969a2be49f41 172 }
giovannivisentini 0:969a2be49f41 173
giovannivisentini 0:969a2be49f41 174 /** st proprietary */
giovannivisentini 0:969a2be49f41 175 virtual NFC_StatusTypeDef STReadBinary(uint16_t Offset,
giovannivisentini 0:969a2be49f41 176 uint8_t NbByteToRead, uint8_t *pBufferRead) {
giovannivisentini 0:969a2be49f41 177 return (NFC_StatusTypeDef) M24SR_STReadBinary((uint16_t) Offset,
giovannivisentini 0:969a2be49f41 178 (uint8_t) NbByteToRead, (uint8_t *) pBufferRead);
giovannivisentini 0:969a2be49f41 179 }
giovannivisentini 0:969a2be49f41 180
giovannivisentini 0:969a2be49f41 181 virtual NFC_StatusTypeDef EnablePermanentState(PasswordType_t uReadOrWrite) {
giovannivisentini 0:969a2be49f41 182 return (NFC_StatusTypeDef) M24SR_EnablePermanentState(
giovannivisentini 0:969a2be49f41 183 (uint16_t) uReadOrWrite);
giovannivisentini 0:969a2be49f41 184 }
giovannivisentini 0:969a2be49f41 185
giovannivisentini 0:969a2be49f41 186 virtual NFC_StatusTypeDef DisablePermanentState(PasswordType_t uReadOrWrite) {
giovannivisentini 0:969a2be49f41 187 return (NFC_StatusTypeDef) M24SR_DisablePermanentState(
giovannivisentini 0:969a2be49f41 188 (uint16_t) uReadOrWrite);
giovannivisentini 0:969a2be49f41 189 }
giovannivisentini 0:969a2be49f41 190
giovannivisentini 0:969a2be49f41 191 /** chip configuration */
giovannivisentini 0:969a2be49f41 192 virtual NFC_StatusTypeDef StateControl(uint8_t uSetOrReset) {
giovannivisentini 0:969a2be49f41 193 return (NFC_StatusTypeDef) M24SR_StateControl((uint8_t) uSetOrReset);
giovannivisentini 0:969a2be49f41 194 }
giovannivisentini 0:969a2be49f41 195
giovannivisentini 0:969a2be49f41 196 virtual NFC_StatusTypeDef ManageI2CGPO(uint8_t GPO_I2Cconfig) {
giovannivisentini 0:969a2be49f41 197 return (NFC_StatusTypeDef) M24SR_ManageI2CGPO(
giovannivisentini 0:969a2be49f41 198 (M24SR_GPO_MGMT) GPO_I2Cconfig);
giovannivisentini 0:969a2be49f41 199 }
giovannivisentini 0:969a2be49f41 200
giovannivisentini 0:969a2be49f41 201 virtual NFC_StatusTypeDef ManageRFGPO(uint8_t GPO_RFconfig) {
giovannivisentini 0:969a2be49f41 202 return (NFC_StatusTypeDef) M24SR_ManageRFGPO(
giovannivisentini 0:969a2be49f41 203 (M24SR_GPO_MGMT) GPO_RFconfig);
giovannivisentini 0:969a2be49f41 204 }
giovannivisentini 0:969a2be49f41 205
giovannivisentini 0:969a2be49f41 206 virtual NFC_StatusTypeDef RFConfig(uint8_t OnOffChoice) {
giovannivisentini 0:969a2be49f41 207 return (NFC_StatusTypeDef) M24SR_RFConfig((uint8_t) OnOffChoice);
giovannivisentini 0:969a2be49f41 208 }
giovannivisentini 0:969a2be49f41 209
giovannivisentini 0:969a2be49f41 210 /*** Public Interrupt Related Methods ***/
giovannivisentini 0:969a2be49f41 211 virtual NFC_StatusTypeDef SendInterrupt(void) {
giovannivisentini 0:969a2be49f41 212 return (NFC_StatusTypeDef) M24SR_SendInterrupt();
giovannivisentini 0:969a2be49f41 213 }
giovannivisentini 0:969a2be49f41 214
giovannivisentini 0:969a2be49f41 215 protected:
giovannivisentini 0:969a2be49f41 216
giovannivisentini 0:969a2be49f41 217 /*** Protected Component Related Methods ***/
giovannivisentini 0:969a2be49f41 218
giovannivisentini 0:969a2be49f41 219 NFC_StatusTypeDef M24SR_Init(NFC_InitTypeDef *);
giovannivisentini 0:969a2be49f41 220 NFC_StatusTypeDef M24SR_ReadID(uint8_t *nfc_id);
giovannivisentini 0:969a2be49f41 221 NFC_StatusTypeDef M24SR_GetSession(void);
giovannivisentini 0:969a2be49f41 222 NFC_StatusTypeDef M24SR_KillSession(void);
giovannivisentini 0:969a2be49f41 223 NFC_StatusTypeDef M24SR_Deselect(void);
giovannivisentini 0:969a2be49f41 224 NFC_StatusTypeDef M24SR_SelectApplication(void);
giovannivisentini 0:969a2be49f41 225 NFC_StatusTypeDef M24SR_SelectCCfile(void);
giovannivisentini 0:969a2be49f41 226 NFC_StatusTypeDef M24SR_SelectNDEFfile(uint16_t NDEFfileId);
giovannivisentini 0:969a2be49f41 227 NFC_StatusTypeDef M24SR_SelectSystemfile(void);
giovannivisentini 0:969a2be49f41 228 NFC_StatusTypeDef M24SR_ReadBinary(uint16_t Offset, uint8_t NbByteToRead,
giovannivisentini 0:969a2be49f41 229 uint8_t *pBufferRead);
giovannivisentini 0:969a2be49f41 230 NFC_StatusTypeDef M24SR_STReadBinary(uint16_t Offset, uint8_t NbByteToRead,
giovannivisentini 0:969a2be49f41 231 uint8_t *pBufferRead);
giovannivisentini 0:969a2be49f41 232 NFC_StatusTypeDef M24SR_UpdateBinary(uint16_t Offset, uint8_t NbByteToWrite,
giovannivisentini 0:969a2be49f41 233 uint8_t *pDataToWrite);
giovannivisentini 0:969a2be49f41 234 NFC_StatusTypeDef M24SR_Verify(uint16_t uPwdId, uint8_t NbPwdByte,
giovannivisentini 0:969a2be49f41 235 const uint8_t *pPwd);
giovannivisentini 0:969a2be49f41 236 NFC_StatusTypeDef M24SR_ChangeReferenceData(uint16_t uPwdId, uint8_t *pPwd);
giovannivisentini 0:969a2be49f41 237 NFC_StatusTypeDef M24SR_EnableVerificationRequirement(
giovannivisentini 0:969a2be49f41 238 uint16_t uReadOrWrite);
giovannivisentini 0:969a2be49f41 239 NFC_StatusTypeDef M24SR_DisableVerificationRequirement(
giovannivisentini 0:969a2be49f41 240 uint16_t uReadOrWrite);
giovannivisentini 0:969a2be49f41 241 NFC_StatusTypeDef M24SR_EnablePermanentState(uint16_t uReadOrWrite);
giovannivisentini 0:969a2be49f41 242 NFC_StatusTypeDef M24SR_DisablePermanentState(uint16_t uReadOrWrite);
giovannivisentini 0:969a2be49f41 243 NFC_StatusTypeDef M24SR_SendInterrupt(void);
giovannivisentini 0:969a2be49f41 244 NFC_StatusTypeDef M24SR_StateControl(uint8_t uSetOrReset);
giovannivisentini 0:969a2be49f41 245 NFC_StatusTypeDef M24SR_ManageI2CGPO(M24SR_GPO_MGMT GPO_I2Cconfig);
giovannivisentini 0:969a2be49f41 246 NFC_StatusTypeDef M24SR_ManageRFGPO(M24SR_GPO_MGMT GPO_RFconfig);
giovannivisentini 0:969a2be49f41 247 NFC_StatusTypeDef M24SR_RFConfig(uint8_t OnOffChoice);
giovannivisentini 0:969a2be49f41 248 NFC_StatusTypeDef M24SR_FWTExtension(uint8_t FWTbyte);
giovannivisentini 0:969a2be49f41 249
giovannivisentini 0:969a2be49f41 250
giovannivisentini 0:969a2be49f41 251 // platform specific IO method
giovannivisentini 0:969a2be49f41 252 NFC_StatusTypeDef M24SR_IO_IsAnswerReady(void);
giovannivisentini 0:969a2be49f41 253 NFC_StatusTypeDef M24SR_IO_SendI2Ccommand(uint8_t NbByte, uint8_t *pBuffer);
giovannivisentini 0:969a2be49f41 254 NFC_StatusTypeDef M24SR_IO_ReceiveI2Cresponse(uint8_t NbByte,
giovannivisentini 0:969a2be49f41 255 uint8_t *pBuffer);
giovannivisentini 0:969a2be49f41 256
giovannivisentini 0:969a2be49f41 257 NFC_StatusTypeDef M24SR_IO_PollI2C(void);
giovannivisentini 0:969a2be49f41 258
giovannivisentini 0:969a2be49f41 259 void M24SR_IO_GPO_ReadPin(GPIO_PinState *pPinState) {
giovannivisentini 0:969a2be49f41 260 if (GPOPin == 0)
giovannivisentini 0:969a2be49f41 261 (*pPinState) = GPIO_PIN_RESET;
giovannivisentini 0:969a2be49f41 262 else
giovannivisentini 0:969a2be49f41 263 (*pPinState) = GPIO_PIN_SET;
giovannivisentini 0:969a2be49f41 264 }
giovannivisentini 0:969a2be49f41 265
giovannivisentini 0:969a2be49f41 266 void M24SR_IO_RFDIS_WritePin(GPIO_PinState PinState) {
giovannivisentini 0:969a2be49f41 267 if (PinState == GPIO_PIN_RESET)
giovannivisentini 0:969a2be49f41 268 RFDisablePin = 0;
giovannivisentini 0:969a2be49f41 269 else
giovannivisentini 0:969a2be49f41 270 RFDisablePin = 1;
giovannivisentini 0:969a2be49f41 271 }
giovannivisentini 0:969a2be49f41 272
giovannivisentini 0:969a2be49f41 273 void M24SR_IO_SetI2CSynchroMode(M24SR_WAITINGTIME_MGMT mode) {
giovannivisentini 0:969a2be49f41 274 syncMode = mode;
giovannivisentini 0:969a2be49f41 275 }
giovannivisentini 0:969a2be49f41 276
giovannivisentini 0:969a2be49f41 277 /**
giovannivisentini 0:969a2be49f41 278 * callback trigger when the chip finish to do a command
giovannivisentini 0:969a2be49f41 279 */
giovannivisentini 0:969a2be49f41 280 void M24SR_AnswerReadyInterruptCallback() {
giovannivisentini 0:969a2be49f41 281 interruptIsFired = true;
giovannivisentini 0:969a2be49f41 282 answerReadyInterrupt.disable_irq();
giovannivisentini 0:969a2be49f41 283 }
giovannivisentini 0:969a2be49f41 284
giovannivisentini 0:969a2be49f41 285 /*** Component's Instance Variables ***/
giovannivisentini 0:969a2be49f41 286
giovannivisentini 0:969a2be49f41 287 /* Identity */
giovannivisentini 0:969a2be49f41 288 uint8_t who_am_i;
giovannivisentini 0:969a2be49f41 289
giovannivisentini 0:969a2be49f41 290 /* Type. */
giovannivisentini 0:969a2be49f41 291 uint8_t type;
giovannivisentini 0:969a2be49f41 292
giovannivisentini 0:969a2be49f41 293 /* I2C address */
giovannivisentini 0:969a2be49f41 294 uint8_t address;
giovannivisentini 0:969a2be49f41 295
giovannivisentini 0:969a2be49f41 296 /* IO Device. */
giovannivisentini 0:969a2be49f41 297 I2C &dev_i2c;
giovannivisentini 0:969a2be49f41 298
giovannivisentini 0:969a2be49f41 299 /* GPIO */
giovannivisentini 0:969a2be49f41 300 DigitalIn GPOPin;
giovannivisentini 0:969a2be49f41 301
giovannivisentini 0:969a2be49f41 302 /**
giovannivisentini 0:969a2be49f41 303 * pin used for disable the rf chip functionality
giovannivisentini 0:969a2be49f41 304 */
giovannivisentini 0:969a2be49f41 305 DigitalOut RFDisablePin;
giovannivisentini 0:969a2be49f41 306
giovannivisentini 0:969a2be49f41 307 /**
giovannivisentini 0:969a2be49f41 308 * pin used as interrupt
giovannivisentini 0:969a2be49f41 309 */
giovannivisentini 0:969a2be49f41 310 InterruptIn answerReadyInterrupt;
giovannivisentini 0:969a2be49f41 311
giovannivisentini 0:969a2be49f41 312 /**
giovannivisentini 0:969a2be49f41 313 * method used for wait the chip response
giovannivisentini 0:969a2be49f41 314 */
giovannivisentini 0:969a2be49f41 315 M24SR_WAITINGTIME_MGMT syncMode;
giovannivisentini 0:969a2be49f41 316
giovannivisentini 0:969a2be49f41 317 /**
giovannivisentini 0:969a2be49f41 318 * buffer used for build the command to send to the chip
giovannivisentini 0:969a2be49f41 319 */
giovannivisentini 0:969a2be49f41 320 uint8_t uM24SRbuffer[0xFF];
giovannivisentini 0:969a2be49f41 321
giovannivisentini 0:969a2be49f41 322 /**
giovannivisentini 0:969a2be49f41 323 * ???
giovannivisentini 0:969a2be49f41 324 */
giovannivisentini 0:969a2be49f41 325 uint8_t uDIDbyte;
giovannivisentini 0:969a2be49f41 326
giovannivisentini 0:969a2be49f41 327 /**
giovannivisentini 0:969a2be49f41 328 * state variable change when the interrupt is fired
giovannivisentini 0:969a2be49f41 329 */
giovannivisentini 0:969a2be49f41 330 volatile bool interruptIsFired;
giovannivisentini 0:969a2be49f41 331 };
giovannivisentini 0:969a2be49f41 332
giovannivisentini 0:969a2be49f41 333 #endif // __M24SR_CLASS_H
giovannivisentini 0:969a2be49f41 334
giovannivisentini 0:969a2be49f41 335 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/