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
change the tag content when the user press the button

Who changed what in which revision?

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