Complete mbed library/workspace for HelloWorld_NFC02A1

Dependencies:   NDefLib X_NUCLEO_NFC02A1 mbed

Fork of HelloWorld_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.

Example Application

This is just a simple "hello world" style program for the X-NUCLEO-NFC02A1 Dynamic NFC Tag Expansion Board. The program writes a URI link to the M24LR dynamic tag using the synchronous programming model. It then reads back the URI from the tag to display it on terminal. The URI can also be retrieved from an NFC enabled smartphone/tablet.

Committer:
rosarium
Date:
Tue Aug 30 09:18:50 2016 +0000
Revision:
1:11ae12d41082
Parent:
0:892175366555
Child:
2:6f1b1f7f8d12
NDefLib middle-ware library ported on HelloWorld_NFC02A1. Now NFC02A1 using the same middle-ware library as NFC01A1.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rosarium 1:11ae12d41082 1 /**
rosarium 1:11ae12d41082 2 ******************************************************************************
rosarium 1:11ae12d41082 3 * @file m24lr.h
rosarium 1:11ae12d41082 4 * @author AMG Central Lab
rosarium 1:11ae12d41082 5 * @version V1.0.0
rosarium 1:11ae12d41082 6 * @date 30 Aug 2016
rosarium 1:11ae12d41082 7 * @brief header file for M24LR driver .
rosarium 1:11ae12d41082 8 ******************************************************************************
rosarium 1:11ae12d41082 9 * @attention
rosarium 1:11ae12d41082 10 *
rosarium 1:11ae12d41082 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
rosarium 1:11ae12d41082 12 *
rosarium 1:11ae12d41082 13 * Redistribution and use in source and binary forms, with or without modification,
rosarium 1:11ae12d41082 14 * are permitted provided that the following conditions are met:
rosarium 1:11ae12d41082 15 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 1:11ae12d41082 16 * this list of conditions and the following disclaimer.
rosarium 1:11ae12d41082 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 1:11ae12d41082 18 * this list of conditions and the following disclaimer in the documentation
rosarium 1:11ae12d41082 19 * and/or other materials provided with the distribution.
rosarium 1:11ae12d41082 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 1:11ae12d41082 21 * may be used to endorse or promote products derived from this software
rosarium 1:11ae12d41082 22 * without specific prior written permission.
rosarium 1:11ae12d41082 23 *
rosarium 1:11ae12d41082 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 1:11ae12d41082 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 1:11ae12d41082 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 1:11ae12d41082 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 1:11ae12d41082 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 1:11ae12d41082 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 1:11ae12d41082 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 1:11ae12d41082 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 1:11ae12d41082 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 1:11ae12d41082 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 1:11ae12d41082 34 *
rosarium 1:11ae12d41082 35 ******************************************************************************
rosarium 1:11ae12d41082 36 */
rosarium 1:11ae12d41082 37
rosarium 1:11ae12d41082 38
rosarium 0:892175366555 39 #ifndef __M24LR_H
rosarium 0:892175366555 40 #define __M24LR_H
rosarium 0:892175366555 41
rosarium 0:892175366555 42 #include "common.h"
rosarium 0:892175366555 43 #include "DevI2C.h"
rosarium 1:11ae12d41082 44 #include "Nfc_class.h"
rosarium 1:11ae12d41082 45 #include "NDefNfcTag.h"
rosarium 1:11ae12d41082 46 #include "NDefNfcTagM24LR.h"
rosarium 1:11ae12d41082 47
rosarium 0:892175366555 48 //#include "lib_NDEF_URI.h"
rosarium 0:892175366555 49 /* Exported constants --------------------------------------------------------*/
rosarium 0:892175366555 50 /** @defgroup M24LR_Exported_Constants
rosarium 0:892175366555 51 * @{
rosarium 0:892175366555 52 */
rosarium 0:892175366555 53 #define I_AM_M24LR04 0x5A
rosarium 0:892175366555 54 #define I_AM_M24LR16 0x4E
rosarium 0:892175366555 55 #define I_AM_M24LR64 0x5E
rosarium 0:892175366555 56
rosarium 0:892175366555 57 #ifndef NULL
rosarium 0:892175366555 58 #define NULL (void *) 0
rosarium 0:892175366555 59 #endif
rosarium 0:892175366555 60
rosarium 0:892175366555 61 #define M24LR_PAGEWRITE_NBBYTE 4
rosarium 0:892175366555 62
rosarium 0:892175366555 63 #define M24LR_ADDR_DATA_I2C 0xA6
rosarium 0:892175366555 64 #define M24LR_ADDR_SYST_I2C 0xAE
rosarium 0:892175366555 65 #define M24LR_I2C_TIMEOUT 200 /* I2C Time out (ms), this is the maximum time needed by M24LR to complete any command */
rosarium 0:892175366555 66
rosarium 0:892175366555 67 #define M24LR_IT_BUSY_MASK 0x01
rosarium 0:892175366555 68 #define M24LR_IT_WIP_MASK 0x02
rosarium 0:892175366555 69
rosarium 0:892175366555 70 /* Registers address */
rosarium 0:892175366555 71 #define M24LR_SSS_REG 0x0000
rosarium 0:892175366555 72 #define M24LR_LOCK_REG 0x0800
rosarium 0:892175366555 73 #define M24LR_I2C_PWD_REG 0x0900
rosarium 0:892175366555 74 #define M24LR_CFG_REG 0x0910
rosarium 0:892175366555 75 #define M24LR_AFI_REG 0x0912
rosarium 0:892175366555 76 #define M24LR_DSFID_REG 0x0913
rosarium 0:892175366555 77 #define M24LR_UID_REG 0x0914
rosarium 0:892175366555 78 #define M24LR_ICREF_REG 0x091C
rosarium 0:892175366555 79 #define M24LR_MEMSIZE_REG 0x091D
rosarium 0:892175366555 80 #define M24LR_CTRL_REG 0x0920
rosarium 0:892175366555 81
rosarium 0:892175366555 82 /* Registers mask */
rosarium 0:892175366555 83 #define M24LR_SSS_LOCK_MASK 0x01
rosarium 0:892175366555 84 #define M24LR_SSS_RW_MASK 0x06
rosarium 0:892175366555 85 #define M24LR_SSS_PASSCTRL_MASK 0x18
rosarium 0:892175366555 86 #define M24LR_LOCK_MASK 0x0F
rosarium 0:892175366555 87
rosarium 0:892175366555 88 #define M24LR_CFG_EHCFG0_MASK 0x01
rosarium 0:892175366555 89 #define M24LR_CFG_EHCFG1_MASK 0x02
rosarium 0:892175366555 90 #define M24LR_CFG_EHMODE_MASK 0x04
rosarium 0:892175366555 91 #define M24LR_CFG_WIPBUSY_MASK 0x08
rosarium 0:892175366555 92
rosarium 0:892175366555 93 #define M24LR_CTRL_EHEN_MASK 0x01
rosarium 0:892175366555 94 #define M24LR_CTRL_FIELD_MASK 0x02
rosarium 0:892175366555 95 #define M24LR_CTRL_TPROG_MASK 0x80
rosarium 1:11ae12d41082 96
rosarium 1:11ae12d41082 97
rosarium 0:892175366555 98
rosarium 0:892175366555 99 /**
rosarium 0:892175366555 100 * @brief M24LR VOUT Configuration enumerator definition
rosarium 0:892175366555 101 */
rosarium 0:892175366555 102 typedef enum
rosarium 0:892175366555 103 {
rosarium 0:892175366555 104 M24LR_EH_Cfg_6MA = 0,
rosarium 0:892175366555 105 M24LR_EH_Cfg_3MA,
rosarium 0:892175366555 106 M24LR_EH_Cfg_1MA,
rosarium 0:892175366555 107 M24LR_EH_Cfg_300UA
rosarium 0:892175366555 108 } M24LR_EH_CFG_VOUT;
rosarium 0:892175366555 109
rosarium 0:892175366555 110 /**
rosarium 0:892175366555 111 * @brief M24LR FIELD status enumerator definition
rosarium 0:892175366555 112 */
rosarium 0:892175366555 113 typedef enum
rosarium 0:892175366555 114 {
rosarium 0:892175366555 115 M24LR_FIELD_OFF = 0,
rosarium 0:892175366555 116 M24LR_FIELD_ON
rosarium 0:892175366555 117 } M24LR_FIELD_STATUS;
rosarium 0:892175366555 118
rosarium 0:892175366555 119 /**
rosarium 0:892175366555 120 * @brief M24LR TT-PROG status enumerator definition
rosarium 0:892175366555 121 */
rosarium 0:892175366555 122 typedef enum
rosarium 0:892175366555 123 {
rosarium 0:892175366555 124 M24LR_T_PROG_NO = 0,
rosarium 0:892175366555 125 M24LR_T_PROG_OK
rosarium 0:892175366555 126 } M24LR_T_PROG_STATUS;
rosarium 0:892175366555 127
rosarium 0:892175366555 128 /**
rosarium 0:892175366555 129 * @brief M24LR Energy Harvesting status enumerator definition
rosarium 0:892175366555 130 */
rosarium 0:892175366555 131 typedef enum
rosarium 0:892175366555 132 {
rosarium 0:892175366555 133 M24LR_EH_DISABLE = 0,
rosarium 0:892175366555 134 M24LR_EH_ENABLE
rosarium 0:892175366555 135 } M24LR_EH_STATUS;
rosarium 0:892175366555 136
rosarium 0:892175366555 137 /**
rosarium 0:892175366555 138 * @brief M24LR Energy Harvesting mode enumerator definition
rosarium 0:892175366555 139 */
rosarium 0:892175366555 140 typedef enum
rosarium 0:892175366555 141 {
rosarium 0:892175366555 142 M24LR_EH_MODE_ENABLE = 0,
rosarium 0:892175366555 143 M24LR_EH_MODE_DISABLE
rosarium 0:892175366555 144 } M24LR_EH_MODE_STATUS;
rosarium 0:892175366555 145
rosarium 0:892175366555 146 /**
rosarium 0:892175366555 147 * @brief M24LR GPO status enumerator definition
rosarium 0:892175366555 148 */
rosarium 0:892175366555 149 typedef enum
rosarium 0:892175366555 150 {
rosarium 0:892175366555 151 M24LR_GPO_BUSY = 0,
rosarium 0:892175366555 152 M24LR_GPO_WIP
rosarium 0:892175366555 153 } M24LR_GPO_STATUS;
rosarium 0:892175366555 154
rosarium 0:892175366555 155 /**
rosarium 0:892175366555 156 * @brief M24LR Memory information structure definition
rosarium 0:892175366555 157 */
rosarium 0:892175366555 158 typedef struct
rosarium 0:892175366555 159 {
rosarium 0:892175366555 160 uint8_t BlockSize;
rosarium 0:892175366555 161 uint16_t Mem_Size;
rosarium 0:892175366555 162 } M24LR_Mem_Size;
rosarium 0:892175366555 163
rosarium 0:892175366555 164 /**
rosarium 0:892175366555 165 * @brief M24LR I2C Write Lock register structure definition
rosarium 0:892175366555 166 */
rosarium 0:892175366555 167 typedef struct
rosarium 0:892175366555 168 {
rosarium 0:892175366555 169 uint8_t sectors_7_0;
rosarium 0:892175366555 170 uint8_t sectors_15_8;
rosarium 0:892175366555 171 uint8_t sectors_23_16;
rosarium 0:892175366555 172 uint8_t sectors_31_24;
rosarium 0:892175366555 173 uint8_t sectors_39_32;
rosarium 0:892175366555 174 uint8_t sectors_47_40;
rosarium 0:892175366555 175 uint8_t sectors_55_48;
rosarium 0:892175366555 176 uint8_t sectors_63_56;
rosarium 0:892175366555 177 } M24LR_Lock_Sectors;
rosarium 0:892175366555 178
rosarium 0:892175366555 179 /**
rosarium 0:892175366555 180 * @brief M24LR UID information structure definition
rosarium 0:892175366555 181 */
rosarium 0:892175366555 182 typedef struct
rosarium 0:892175366555 183 {
rosarium 0:892175366555 184 uint32_t MSB_UID;
rosarium 0:892175366555 185 uint32_t LSB_UID;
rosarium 0:892175366555 186 } M24LR_UID;
rosarium 0:892175366555 187
rosarium 0:892175366555 188 /**
rosarium 0:892175366555 189 * @brief M24LR Sector Security register structure definition
rosarium 0:892175366555 190 */
rosarium 0:892175366555 191 typedef struct
rosarium 0:892175366555 192 {
rosarium 0:892175366555 193 uint8_t SectorLock;
rosarium 0:892175366555 194 uint8_t RW_Protection;
rosarium 0:892175366555 195 uint8_t PassCtrl;
rosarium 0:892175366555 196 } M24LR_SECTOR_SEC;
rosarium 0:892175366555 197
rosarium 0:892175366555 198
rosarium 0:892175366555 199 /**
rosarium 0:892175366555 200 * @}
rosarium 0:892175366555 201 */
rosarium 0:892175366555 202
rosarium 1:11ae12d41082 203 class M24LR : public Nfc {
rosarium 0:892175366555 204 public:
rosarium 0:892175366555 205 NFCTAG_StatusTypeDef i2c_Init( void );
rosarium 0:892175366555 206 NFCTAG_StatusTypeDef i2c_ReadID( uint8_t * const pICRef );
rosarium 0:892175366555 207 NFCTAG_StatusTypeDef i2c_IsDeviceReady( const uint32_t Trials );
rosarium 0:892175366555 208 NFCTAG_StatusTypeDef i2c_ConfigureGPO( const uint16_t ITConf );
rosarium 0:892175366555 209 NFCTAG_StatusTypeDef i2c_GetGPOStatus( uint16_t * const pGPOStatus );
rosarium 0:892175366555 210 NFCTAG_StatusTypeDef i2c_ReadData( uint8_t * const pData, const uint16_t TarAddr, const uint16_t NbByte );
rosarium 0:892175366555 211 NFCTAG_StatusTypeDef i2c_WriteData( const uint8_t * const pData, const uint16_t TarAddr, const uint16_t NbByte );
rosarium 0:892175366555 212 NFCTAG_StatusTypeDef i2c_ReadRegister( uint8_t * const pData, const uint16_t TarAddr, const uint16_t NbByte );
rosarium 0:892175366555 213 NFCTAG_StatusTypeDef i2c_WriteRegister( const uint8_t * const pData, const uint16_t TarAddr, const uint16_t NbByte );
rosarium 0:892175366555 214
rosarium 0:892175366555 215
rosarium 0:892175366555 216 /* Extended Functions */
rosarium 0:892175366555 217 NFCTAG_StatusTypeDef i2c_ReadUID( M24LR_UID * const pUid );
rosarium 0:892175366555 218 NFCTAG_StatusTypeDef i2c_ReadDSFID( uint8_t * const pDsfid );
rosarium 0:892175366555 219 NFCTAG_StatusTypeDef i2c_ReadAFI( uint8_t * const pAfi );
rosarium 0:892175366555 220 NFCTAG_StatusTypeDef i2c_ReadI2CLockSector( M24LR_Lock_Sectors * const pLock_sector );
rosarium 0:892175366555 221 NFCTAG_StatusTypeDef i2c_I2CLockSector( const uint8_t Sector );
rosarium 0:892175366555 222 NFCTAG_StatusTypeDef i2c_I2CUnlockSector( const uint8_t Sector );
rosarium 0:892175366555 223 NFCTAG_StatusTypeDef i2c_PresentI2CPassword( const uint32_t PassWord );
rosarium 0:892175366555 224 NFCTAG_StatusTypeDef i2c_WriteI2CPassword( const uint32_t PassWord );
rosarium 0:892175366555 225 NFCTAG_StatusTypeDef i2c_ReadSSSx( const uint8_t SectorNb, M24LR_SECTOR_SEC * const pData );
rosarium 0:892175366555 226 NFCTAG_StatusTypeDef i2c_WriteSSSx( const uint8_t SectorNb, const M24LR_SECTOR_SEC * const pData );
rosarium 0:892175366555 227 NFCTAG_StatusTypeDef i2c_ReadMemSize( M24LR_Mem_Size * const pSizeInfo );
rosarium 0:892175366555 228 NFCTAG_StatusTypeDef i2c_GetRF_WIP_BUSY( M24LR_GPO_STATUS * const pRf_Wip_Busy );
rosarium 0:892175366555 229 NFCTAG_StatusTypeDef i2c_SetRFBUSY( void );
rosarium 0:892175366555 230 NFCTAG_StatusTypeDef i2c_SetRFWIP( void );
rosarium 0:892175366555 231 NFCTAG_StatusTypeDef i2c_Read_EH_mode( M24LR_EH_MODE_STATUS * const pEH_mode );
rosarium 0:892175366555 232 NFCTAG_StatusTypeDef i2c_Enable_EH_mode( void );
rosarium 0:892175366555 233 NFCTAG_StatusTypeDef i2c_Disable_EH_mode( void );
rosarium 0:892175366555 234 NFCTAG_StatusTypeDef i2c_ReadEH_Cfg( M24LR_EH_CFG_VOUT * const pEH_Cfg );
rosarium 0:892175366555 235 NFCTAG_StatusTypeDef i2c_WriteEH_Cfg( const M24LR_EH_CFG_VOUT EH_Cfg );
rosarium 0:892175366555 236 NFCTAG_StatusTypeDef i2c_GetEH( M24LR_EH_STATUS * const pEH_Val );
rosarium 0:892175366555 237 NFCTAG_StatusTypeDef i2c_SetEH( void );
rosarium 0:892175366555 238 NFCTAG_StatusTypeDef i2c_ResetEH( void );
rosarium 0:892175366555 239 NFCTAG_StatusTypeDef i2c_GetRFField( M24LR_FIELD_STATUS * const pRF_Field );
rosarium 0:892175366555 240 NFCTAG_StatusTypeDef i2c_GetTProg( M24LR_T_PROG_STATUS * const pT_Prog );
rosarium 0:892175366555 241
rosarium 0:892175366555 242 void Enable_EnergyHarvesting( void );
rosarium 0:892175366555 243 NFCTAG_StatusTypeDef Initialization( void );
rosarium 0:892175366555 244
rosarium 1:11ae12d41082 245 virtual NFC_StatusTypeDef ReadBinary(uint16_t Offset, uint8_t NbByteToRead,
rosarium 1:11ae12d41082 246 uint8_t *pBufferRead) {
rosarium 1:11ae12d41082 247 return (NFC_StatusTypeDef) i2c_ReadData( pBufferRead, Offset, NbByteToRead );
rosarium 1:11ae12d41082 248
rosarium 1:11ae12d41082 249 }
rosarium 1:11ae12d41082 250
rosarium 1:11ae12d41082 251 virtual NFC_StatusTypeDef UpdateBinary(uint16_t Offset,
rosarium 1:11ae12d41082 252 uint8_t NbByteToWrite,uint8_t *pDataToWrite) {
rosarium 1:11ae12d41082 253 return (NFC_StatusTypeDef) i2c_WriteData( pDataToWrite, Offset, NbByteToWrite );
rosarium 1:11ae12d41082 254 }
rosarium 1:11ae12d41082 255
rosarium 0:892175366555 256 M24LR(uint8_t const address, uint8_t const addressData, DevI2C &devI2C ):
rosarium 1:11ae12d41082 257 NDefTagUtil(*this), i2c_address_syst(address), i2c_address_data(addressData), dev_I2C(devI2C) {}
rosarium 0:892175366555 258
rosarium 0:892175366555 259 static uint8_t NfctagInitialized;
rosarium 1:11ae12d41082 260
rosarium 1:11ae12d41082 261 friend class NDEF_URI;
rosarium 1:11ae12d41082 262
rosarium 1:11ae12d41082 263 /*
rosarium 1:11ae12d41082 264 * Object implementing the interface to use the NDefLib.
rosarium 1:11ae12d41082 265 */
rosarium 1:11ae12d41082 266 NDefNfcTagM24LR NDefTagUtil;
rosarium 1:11ae12d41082 267
rosarium 0:892175366555 268 uint8_t i2c_address_syst;
rosarium 0:892175366555 269 uint8_t i2c_address_data;
rosarium 0:892175366555 270 DevI2C dev_I2C;
rosarium 1:11ae12d41082 271
rosarium 1:11ae12d41082 272 NDefLib::NDefNfcTag& getNDefTag(){
rosarium 1:11ae12d41082 273 return NDefTagUtil;
rosarium 1:11ae12d41082 274 }
rosarium 1:11ae12d41082 275
rosarium 1:11ae12d41082 276 // Not Required from Nfc Class
rosarium 1:11ae12d41082 277 /**
rosarium 1:11ae12d41082 278 * Open a I2C connection with the tag if an RF connection isn't already open.
rosarium 1:11ae12d41082 279 * @return operation status
rosarium 1:11ae12d41082 280 */
rosarium 1:11ae12d41082 281 virtual NFC_StatusTypeDef GetSession(void){
rosarium 1:11ae12d41082 282 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 283 }
rosarium 1:11ae12d41082 284
rosarium 1:11ae12d41082 285 /**
rosarium 1:11ae12d41082 286 * Force to open an I2C connection , abort the RF connection.
rosarium 1:11ae12d41082 287 * @return NFC_SUCCESS if the session is acquired
rosarium 1:11ae12d41082 288 */
rosarium 1:11ae12d41082 289 virtual NFC_StatusTypeDef ForceGetSession(void){
rosarium 1:11ae12d41082 290 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 291 }
rosarium 1:11ae12d41082 292
rosarium 1:11ae12d41082 293 /**
rosarium 1:11ae12d41082 294 * Close an I2C connection.
rosarium 1:11ae12d41082 295 * @return NFC_SUCCESS if the session is release
rosarium 1:11ae12d41082 296 */
rosarium 1:11ae12d41082 297 virtual NFC_StatusTypeDef Deselect(void){
rosarium 1:11ae12d41082 298 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 299 }
rosarium 1:11ae12d41082 300
rosarium 1:11ae12d41082 301 /**
rosarium 1:11ae12d41082 302 * Select the application file.
rosarium 1:11ae12d41082 303 * @return NFC_SUCCESS if the application is selected
rosarium 1:11ae12d41082 304 */
rosarium 1:11ae12d41082 305 virtual NFC_StatusTypeDef SelectApplication(void){
rosarium 1:11ae12d41082 306 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 307 }
rosarium 1:11ae12d41082 308
rosarium 1:11ae12d41082 309 /**
rosarium 1:11ae12d41082 310 * Select the CC file.
rosarium 1:11ae12d41082 311 * @return NFC_SUCCESS if the CC file is selected.
rosarium 1:11ae12d41082 312 */
rosarium 1:11ae12d41082 313 virtual NFC_StatusTypeDef SelectCCfile(void){
rosarium 1:11ae12d41082 314 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 315 }
rosarium 1:11ae12d41082 316
rosarium 1:11ae12d41082 317 /**
rosarium 1:11ae12d41082 318 * Select the NDEF file.
rosarium 1:11ae12d41082 319 * @param NDEFfileId File id to open.
rosarium 1:11ae12d41082 320 * @return NFC_SUCCESS if the file is selected
rosarium 1:11ae12d41082 321 */
rosarium 1:11ae12d41082 322 virtual NFC_StatusTypeDef SelectNDEFfile(uint16_t NDEFfileId){
rosarium 1:11ae12d41082 323 (void)NDEFfileId;
rosarium 1:11ae12d41082 324 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 325 }
rosarium 1:11ae12d41082 326
rosarium 1:11ae12d41082 327 /**
rosarium 1:11ae12d41082 328 * Select the system file.
rosarium 1:11ae12d41082 329 * @return NFC_SUCCESS if the system file is selected
rosarium 1:11ae12d41082 330 */
rosarium 1:11ae12d41082 331 virtual NFC_StatusTypeDef SelectSystemfile(void){
rosarium 1:11ae12d41082 332 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 333 }
rosarium 1:11ae12d41082 334
rosarium 1:11ae12d41082 335
rosarium 1:11ae12d41082 336
rosarium 1:11ae12d41082 337
rosarium 1:11ae12d41082 338
rosarium 1:11ae12d41082 339 /**
rosarium 1:11ae12d41082 340 * Check that the password is correct.
rosarium 1:11ae12d41082 341 * @param uPwdId Password type.
rosarium 1:11ae12d41082 342 * @param NbPwdByte Password size ( must be 0x10).
rosarium 1:11ae12d41082 343 * @param pPwd Password buffer.
rosarium 1:11ae12d41082 344 * @return NFC_SUCCESS if no errors and write/read permission granted
rosarium 1:11ae12d41082 345 */
rosarium 1:11ae12d41082 346 virtual NFC_StatusTypeDef Verify(PasswordType_t uPwdId, uint8_t NbPwdByte,const uint8_t *pPwd){
rosarium 1:11ae12d41082 347 (void)uPwdId; (void)NbPwdByte; (void)pPwd;
rosarium 1:11ae12d41082 348 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 349 }
rosarium 1:11ae12d41082 350
rosarium 1:11ae12d41082 351 /**
rosarium 1:11ae12d41082 352 * Replace the read or write password.
rosarium 1:11ae12d41082 353 * @param uPwdId Password to change.
rosarium 1:11ae12d41082 354 * @param pPwd New password.
rosarium 1:11ae12d41082 355 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 356 */
rosarium 1:11ae12d41082 357 virtual NFC_StatusTypeDef ChangeReferenceData(PasswordType_t uPwdId,const uint8_t *pPwd){
rosarium 1:11ae12d41082 358 (void)uPwdId; (void)pPwd;
rosarium 1:11ae12d41082 359 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 360 }
rosarium 1:11ae12d41082 361
rosarium 1:11ae12d41082 362 /**
rosarium 1:11ae12d41082 363 * Activate NDEF file password protection.
rosarium 1:11ae12d41082 364 * When this command is successful, read or write access to the NDEF file is protected by a 128-bit password.
rosarium 1:11ae12d41082 365 * @param uReadOrWrite Read or write password.
rosarium 1:11ae12d41082 366 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 367 */
rosarium 1:11ae12d41082 368 virtual NFC_StatusTypeDef EnableVerificationRequirement(PasswordType_t uReadOrWrite){
rosarium 1:11ae12d41082 369 (void)uReadOrWrite;
rosarium 1:11ae12d41082 370 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 371 }
rosarium 1:11ae12d41082 372
rosarium 1:11ae12d41082 373 /**
rosarium 1:11ae12d41082 374 * Deactivate NDEF file password protection.
rosarium 1:11ae12d41082 375 * When this command is successful, read or write access to the NDEF file is granted.
rosarium 1:11ae12d41082 376 * with no security enforcement.
rosarium 1:11ae12d41082 377 * @param uReadOrWrite Read or write password.
rosarium 1:11ae12d41082 378 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 379 */
rosarium 1:11ae12d41082 380 virtual NFC_StatusTypeDef DisableVerificationRequirement(PasswordType_t uReadOrWrite){
rosarium 1:11ae12d41082 381 (void)uReadOrWrite;
rosarium 1:11ae12d41082 382 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 383 }
rosarium 1:11ae12d41082 384
rosarium 1:11ae12d41082 385 /**
rosarium 1:11ae12d41082 386 * Same as {@link NFC#ReadBinary}, however permitting to read more bytes than available.
rosarium 1:11ae12d41082 387 * @param Offset read offset.
rosarium 1:11ae12d41082 388 * @param NbByteToRead Number of bytes to read.
rosarium 1:11ae12d41082 389 * @param[out] pBufferRead Buffer to store the read data into.
rosarium 1:11ae12d41082 390 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 391 */
rosarium 1:11ae12d41082 392 virtual NFC_StatusTypeDef STReadBinary(uint16_t Offset, uint8_t NbByteToRead, uint8_t *pBufferRead){
rosarium 1:11ae12d41082 393 (void)Offset; (void)NbByteToRead; (void)pBufferRead;
rosarium 1:11ae12d41082 394 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 395 }
rosarium 1:11ae12d41082 396
rosarium 1:11ae12d41082 397 /**
rosarium 1:11ae12d41082 398 * Set the tag as read/write only, stored in the eeprom.
rosarium 1:11ae12d41082 399 * @param uReadOrWrite ReadPwd if write only, WritePwd if read only.
rosarium 1:11ae12d41082 400 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 401 */
rosarium 1:11ae12d41082 402 virtual NFC_StatusTypeDef EnablePermanentState(PasswordType_t uReadOrWrite){
rosarium 1:11ae12d41082 403 (void)uReadOrWrite;
rosarium 1:11ae12d41082 404 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 405 }
rosarium 1:11ae12d41082 406
rosarium 1:11ae12d41082 407 /**
rosarium 1:11ae12d41082 408 * Unset the tag as read/write only, stored in the eeprom.
rosarium 1:11ae12d41082 409 * @param uReadOrWrite ReadPwd if write only, WritePwd if read only.
rosarium 1:11ae12d41082 410 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 411 * @par Caller must have I2Csuper user permissions to call this function.
rosarium 1:11ae12d41082 412 */
rosarium 1:11ae12d41082 413 virtual NFC_StatusTypeDef DisablePermanentState(PasswordType_t uReadOrWrite){
rosarium 1:11ae12d41082 414 (void)uReadOrWrite;
rosarium 1:11ae12d41082 415 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 416 }
rosarium 1:11ae12d41082 417
rosarium 1:11ae12d41082 418 /**
rosarium 1:11ae12d41082 419 * Set the gpo output pin.
rosarium 1:11ae12d41082 420 * @param uSetOrReset New pin status.
rosarium 1:11ae12d41082 421 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 422 */
rosarium 1:11ae12d41082 423 virtual NFC_StatusTypeDef StateControl(uint8_t uSetOrReset){
rosarium 1:11ae12d41082 424 (void)uSetOrReset;
rosarium 1:11ae12d41082 425 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 426 }
rosarium 1:11ae12d41082 427
rosarium 1:11ae12d41082 428 /**
rosarium 1:11ae12d41082 429 * @brief This function configures GPO for I2C session.
rosarium 1:11ae12d41082 430 * @param GPO_I2Cconfig GPO configuration to set.
rosarium 1:11ae12d41082 431 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 432 * @par if the configuration is I2C_ANSWER_READY, the component will start to work
rosarium 1:11ae12d41082 433 * in async mode.
rosarium 1:11ae12d41082 434 */
rosarium 1:11ae12d41082 435 virtual NFC_StatusTypeDef ManageI2CGPO(NFC_GPO_MGMT GPO_I2Cconfig){
rosarium 1:11ae12d41082 436 (void)GPO_I2Cconfig;
rosarium 1:11ae12d41082 437 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 438 }
rosarium 1:11ae12d41082 439
rosarium 1:11ae12d41082 440 /**
rosarium 1:11ae12d41082 441 * @brief This function configures GPO for RF session.
rosarium 1:11ae12d41082 442 * @param GPO_RFconfig GPO configuration to set.
rosarium 1:11ae12d41082 443 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 444 */
rosarium 1:11ae12d41082 445 virtual NFC_StatusTypeDef ManageRFGPO(uint8_t GPO_RFconfig){
rosarium 1:11ae12d41082 446 (void)GPO_RFconfig;
rosarium 1:11ae12d41082 447 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 448 }
rosarium 1:11ae12d41082 449
rosarium 1:11ae12d41082 450 /**
rosarium 1:11ae12d41082 451 * @brief This function enables or disables the RF communication.
rosarium 1:11ae12d41082 452 * @param OnOffChoice GPO configuration to set.
rosarium 1:11ae12d41082 453 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 454 */
rosarium 1:11ae12d41082 455 virtual NFC_StatusTypeDef RFConfig(uint8_t OnOffChoice){
rosarium 1:11ae12d41082 456 (void)OnOffChoice;
rosarium 1:11ae12d41082 457 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 458 }
rosarium 1:11ae12d41082 459
rosarium 1:11ae12d41082 460 /**
rosarium 1:11ae12d41082 461 * Generates a negative pulse on the GPO pin.
rosarium 1:11ae12d41082 462 * Pulse starts immediately after the command is issued and ends at the end of the RF response.
rosarium 1:11ae12d41082 463 * @return NFC_SUCCESS if no errors
rosarium 1:11ae12d41082 464 */
rosarium 1:11ae12d41082 465 virtual NFC_StatusTypeDef SendInterrupt(void){
rosarium 1:11ae12d41082 466 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 467 }
rosarium 1:11ae12d41082 468
rosarium 1:11ae12d41082 469 virtual NFC_StatusTypeDef ManageEvent(){
rosarium 1:11ae12d41082 470 return(NFC_SUCCESS);
rosarium 1:11ae12d41082 471 }
rosarium 1:11ae12d41082 472
rosarium 1:11ae12d41082 473 virtual int Init(void *ptr) {
rosarium 1:11ae12d41082 474 (void)ptr;
rosarium 1:11ae12d41082 475 return (NFC_StatusTypeDef) i2c_Init();
rosarium 1:11ae12d41082 476 //return(NFC_SUCCESS);
rosarium 1:11ae12d41082 477 }
rosarium 1:11ae12d41082 478
rosarium 1:11ae12d41082 479 virtual int ReadID(uint8_t *id) {
rosarium 1:11ae12d41082 480 return (NFC_StatusTypeDef) i2c_ReadID(id);
rosarium 1:11ae12d41082 481 // return(NFC_SUCCESS);
rosarium 1:11ae12d41082 482 }
rosarium 1:11ae12d41082 483
rosarium 0:892175366555 484 };
rosarium 0:892175366555 485
rosarium 0:892175366555 486
rosarium 0:892175366555 487
rosarium 0:892175366555 488
rosarium 0:892175366555 489 #endif /* __M24LR_H */