mbed OS 5 example application using X-NUCLEO-NFC02A1
Dependencies: NDefLib X_NUCLEO_NFC02A1
Fork of HelloWorld_NFC02A1 by
Diff: X_NUCLEO_NFC02A1/m24lr/m24lr.h
- Revision:
- 1:11ae12d41082
- Parent:
- 0:892175366555
- Child:
- 2:6f1b1f7f8d12
--- a/X_NUCLEO_NFC02A1/m24lr/m24lr.h Wed Jul 27 09:25:33 2016 +0000
+++ b/X_NUCLEO_NFC02A1/m24lr/m24lr.h Tue Aug 30 09:18:50 2016 +0000
@@ -1,8 +1,50 @@
+/**
+ ******************************************************************************
+ * @file m24lr.h
+ * @author AMG Central Lab
+ * @version V1.0.0
+ * @date 30 Aug 2016
+ * @brief header file for M24LR driver .
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. Neither the name of STMicroelectronics nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+
+
#ifndef __M24LR_H
#define __M24LR_H
#include "common.h"
#include "DevI2C.h"
+#include "Nfc_class.h"
+#include "NDefNfcTag.h"
+#include "NDefNfcTagM24LR.h"
+
//#include "lib_NDEF_URI.h"
/* Exported constants --------------------------------------------------------*/
/** @defgroup M24LR_Exported_Constants
@@ -51,7 +93,8 @@
#define M24LR_CTRL_EHEN_MASK 0x01
#define M24LR_CTRL_FIELD_MASK 0x02
#define M24LR_CTRL_TPROG_MASK 0x80
-
+
+
/**
* @brief M24LR VOUT Configuration enumerator definition
@@ -157,7 +200,7 @@
* @}
*/
-class M24LR {
+class M24LR : public Nfc {
public:
NFCTAG_StatusTypeDef i2c_Init( void );
NFCTAG_StatusTypeDef i2c_ReadID( uint8_t * const pICRef );
@@ -199,25 +242,248 @@
void Enable_EnergyHarvesting( void );
NFCTAG_StatusTypeDef Initialization( void );
+ virtual NFC_StatusTypeDef ReadBinary(uint16_t Offset, uint8_t NbByteToRead,
+ uint8_t *pBufferRead) {
+ return (NFC_StatusTypeDef) i2c_ReadData( pBufferRead, Offset, NbByteToRead );
+
+ }
+
+ virtual NFC_StatusTypeDef UpdateBinary(uint16_t Offset,
+ uint8_t NbByteToWrite,uint8_t *pDataToWrite) {
+ return (NFC_StatusTypeDef) i2c_WriteData( pDataToWrite, Offset, NbByteToWrite );
+ }
+
M24LR(uint8_t const address, uint8_t const addressData, DevI2C &devI2C ):
- i2c_address_syst(address), i2c_address_data(addressData), dev_I2C(devI2C) {}
+ NDefTagUtil(*this), i2c_address_syst(address), i2c_address_data(addressData), dev_I2C(devI2C) {}
static uint8_t NfctagInitialized;
- // M24LR_IO mM24LR_IO;
+
+ friend class NDEF_URI;
+
+ /*
+ * Object implementing the interface to use the NDefLib.
+ */
+ NDefNfcTagM24LR NDefTagUtil;
+
uint8_t i2c_address_syst;
-
uint8_t i2c_address_data;
DevI2C dev_I2C;
- friend class NDEF_URI;
- //NDEF_URI mM24LR_URI;
- //M24LR *ptr;
-// ReadFnDataPtr i2c_ReadData;
-// WriteFnDataPtr i2c_WriteData;
-
+
+ NDefLib::NDefNfcTag& getNDefTag(){
+ return NDefTagUtil;
+ }
+
+ // Not Required from Nfc Class
+ /**
+ * Open a I2C connection with the tag if an RF connection isn't already open.
+ * @return operation status
+ */
+ virtual NFC_StatusTypeDef GetSession(void){
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Force to open an I2C connection , abort the RF connection.
+ * @return NFC_SUCCESS if the session is acquired
+ */
+ virtual NFC_StatusTypeDef ForceGetSession(void){
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Close an I2C connection.
+ * @return NFC_SUCCESS if the session is release
+ */
+ virtual NFC_StatusTypeDef Deselect(void){
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Select the application file.
+ * @return NFC_SUCCESS if the application is selected
+ */
+ virtual NFC_StatusTypeDef SelectApplication(void){
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Select the CC file.
+ * @return NFC_SUCCESS if the CC file is selected.
+ */
+ virtual NFC_StatusTypeDef SelectCCfile(void){
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Select the NDEF file.
+ * @param NDEFfileId File id to open.
+ * @return NFC_SUCCESS if the file is selected
+ */
+ virtual NFC_StatusTypeDef SelectNDEFfile(uint16_t NDEFfileId){
+ (void)NDEFfileId;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Select the system file.
+ * @return NFC_SUCCESS if the system file is selected
+ */
+ virtual NFC_StatusTypeDef SelectSystemfile(void){
+ return(NFC_SUCCESS);
+ }
+
+
+
+
+
+ /**
+ * Check that the password is correct.
+ * @param uPwdId Password type.
+ * @param NbPwdByte Password size ( must be 0x10).
+ * @param pPwd Password buffer.
+ * @return NFC_SUCCESS if no errors and write/read permission granted
+ */
+ virtual NFC_StatusTypeDef Verify(PasswordType_t uPwdId, uint8_t NbPwdByte,const uint8_t *pPwd){
+ (void)uPwdId; (void)NbPwdByte; (void)pPwd;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Replace the read or write password.
+ * @param uPwdId Password to change.
+ * @param pPwd New password.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef ChangeReferenceData(PasswordType_t uPwdId,const uint8_t *pPwd){
+ (void)uPwdId; (void)pPwd;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Activate NDEF file password protection.
+ * When this command is successful, read or write access to the NDEF file is protected by a 128-bit password.
+ * @param uReadOrWrite Read or write password.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef EnableVerificationRequirement(PasswordType_t uReadOrWrite){
+ (void)uReadOrWrite;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Deactivate NDEF file password protection.
+ * When this command is successful, read or write access to the NDEF file is granted.
+ * with no security enforcement.
+ * @param uReadOrWrite Read or write password.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef DisableVerificationRequirement(PasswordType_t uReadOrWrite){
+ (void)uReadOrWrite;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Same as {@link NFC#ReadBinary}, however permitting to read more bytes than available.
+ * @param Offset read offset.
+ * @param NbByteToRead Number of bytes to read.
+ * @param[out] pBufferRead Buffer to store the read data into.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef STReadBinary(uint16_t Offset, uint8_t NbByteToRead, uint8_t *pBufferRead){
+ (void)Offset; (void)NbByteToRead; (void)pBufferRead;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Set the tag as read/write only, stored in the eeprom.
+ * @param uReadOrWrite ReadPwd if write only, WritePwd if read only.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef EnablePermanentState(PasswordType_t uReadOrWrite){
+ (void)uReadOrWrite;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Unset the tag as read/write only, stored in the eeprom.
+ * @param uReadOrWrite ReadPwd if write only, WritePwd if read only.
+ * @return NFC_SUCCESS if no errors
+ * @par Caller must have I2Csuper user permissions to call this function.
+ */
+ virtual NFC_StatusTypeDef DisablePermanentState(PasswordType_t uReadOrWrite){
+ (void)uReadOrWrite;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Set the gpo output pin.
+ * @param uSetOrReset New pin status.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef StateControl(uint8_t uSetOrReset){
+ (void)uSetOrReset;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * @brief This function configures GPO for I2C session.
+ * @param GPO_I2Cconfig GPO configuration to set.
+ * @return NFC_SUCCESS if no errors
+ * @par if the configuration is I2C_ANSWER_READY, the component will start to work
+ * in async mode.
+ */
+ virtual NFC_StatusTypeDef ManageI2CGPO(NFC_GPO_MGMT GPO_I2Cconfig){
+ (void)GPO_I2Cconfig;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * @brief This function configures GPO for RF session.
+ * @param GPO_RFconfig GPO configuration to set.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef ManageRFGPO(uint8_t GPO_RFconfig){
+ (void)GPO_RFconfig;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * @brief This function enables or disables the RF communication.
+ * @param OnOffChoice GPO configuration to set.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef RFConfig(uint8_t OnOffChoice){
+ (void)OnOffChoice;
+ return(NFC_SUCCESS);
+ }
+
+ /**
+ * Generates a negative pulse on the GPO pin.
+ * Pulse starts immediately after the command is issued and ends at the end of the RF response.
+ * @return NFC_SUCCESS if no errors
+ */
+ virtual NFC_StatusTypeDef SendInterrupt(void){
+ return(NFC_SUCCESS);
+ }
+
+ virtual NFC_StatusTypeDef ManageEvent(){
+ return(NFC_SUCCESS);
+ }
+
+ virtual int Init(void *ptr) {
+ (void)ptr;
+ return (NFC_StatusTypeDef) i2c_Init();
+ //return(NFC_SUCCESS);
+ }
+
+ virtual int ReadID(uint8_t *id) {
+ return (NFC_StatusTypeDef) i2c_ReadID(id);
+ // return(NFC_SUCCESS);
+ }
+
};
#endif /* __M24LR_H */
-
