Prints Entire memory on EEPROM of Nucleo NFC01A1

Dependencies:   mbed NUCLEO-NFC01A1 lib_NFC_M24SR lib_NFC_NDEF

Committer:
jbriede
Date:
Tue Aug 11 13:00:08 2015 +0000
Revision:
0:a109b219decf
This program prints the entire contents of the EEPROM on the Nucleo NFC01A1.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jbriede 0:a109b219decf 1 // header
jbriede 0:a109b219decf 2 #include "mbed.h"
jbriede 0:a109b219decf 3 #include "lib_TagType4.h"
jbriede 0:a109b219decf 4 #include "lib_NDEF.h"
jbriede 0:a109b219decf 5 #include "I2C.h"
jbriede 0:a109b219decf 6 #define MAXMEMORY 8190 //Max Memory of NFC01A1
jbriede 0:a109b219decf 7 #define BITSIZE MAXMEMORY
jbriede 0:a109b219decf 8
jbriede 0:a109b219decf 9
jbriede 0:a109b219decf 10 Serial pc(SERIAL_TX, SERIAL_RX); // define serial bus
jbriede 0:a109b219decf 11
jbriede 0:a109b219decf 12 DigitalOut myled(LED1);
jbriede 0:a109b219decf 13 //various LEDs on NFC Shield
jbriede 0:a109b219decf 14 DigitalOut nfcled1(D5);
jbriede 0:a109b219decf 15 DigitalOut nfcled2(D4);
jbriede 0:a109b219decf 16 DigitalOut nfcled3(D2);
jbriede 0:a109b219decf 17 //acknowledgement pins
jbriede 0:a109b219decf 18
jbriede 0:a109b219decf 19 DigitalIn NFC_Written(D12);
jbriede 0:a109b219decf 20
jbriede 0:a109b219decf 21 int main() {
jbriede 0:a109b219decf 22 // Create NDEF buffer
jbriede 0:a109b219decf 23 uint8_t NDEF_Buffer[BITSIZE], Zero_Buffer[MAXMEMORY];
jbriede 0:a109b219decf 24 memset(NDEF_Buffer, 0, sizeof(NDEF_Buffer));
jbriede 0:a109b219decf 25 memset(Zero_Buffer, 0, sizeof(Zero_Buffer)); // will not change
jbriede 0:a109b219decf 26
jbriede 0:a109b219decf 27 // start up info... the following code is necessary to read the NFC shield
jbriede 0:a109b219decf 28 sCCFileInfo CCFileStruct;
jbriede 0:a109b219decf 29 sCCFileInfo *pCCFile;
jbriede 0:a109b219decf 30 pCCFile = &CCFileStruct;
jbriede 0:a109b219decf 31
jbriede 0:a109b219decf 32 uint16_t status = SUCCESS;
jbriede 0:a109b219decf 33 uint8_t CCBuffer[15];
jbriede 0:a109b219decf 34
jbriede 0:a109b219decf 35 status = TagT4Init( CCBuffer, sizeof(CCBuffer));
jbriede 0:a109b219decf 36
jbriede 0:a109b219decf 37 if( status == SUCCESS)
jbriede 0:a109b219decf 38 {
jbriede 0:a109b219decf 39 pCCFile->NumberCCByte = (uint16_t) ((CCBuffer[0x00]<<8) | CCBuffer[0x01]);
jbriede 0:a109b219decf 40 pCCFile->Version = CCBuffer[0x02];
jbriede 0:a109b219decf 41 pCCFile->MaxReadByte = (uint16_t) ((CCBuffer[0x03]<<8) | CCBuffer[0x04]);
jbriede 0:a109b219decf 42 pCCFile->MaxWriteByte = (uint16_t) ((CCBuffer[0x05]<<8) | CCBuffer[0x06]);
jbriede 0:a109b219decf 43 pCCFile->TField = CCBuffer[0x07];
jbriede 0:a109b219decf 44 pCCFile->LField = CCBuffer[0x08];
jbriede 0:a109b219decf 45 pCCFile->FileID = (uint16_t) ((CCBuffer[0x09]<<8) | CCBuffer[0x0A]);
jbriede 0:a109b219decf 46 pCCFile->NDEFFileMaxSize = (uint16_t) ((CCBuffer[0x0B]<<8) | CCBuffer[0x0C]);
jbriede 0:a109b219decf 47 pCCFile->ReadAccess = CCBuffer[0x0D];
jbriede 0:a109b219decf 48 pCCFile->WriteAccess = CCBuffer[0x0E];
jbriede 0:a109b219decf 49 }
jbriede 0:a109b219decf 50
jbriede 0:a109b219decf 51 // open NDEF session
jbriede 0:a109b219decf 52 OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION);
jbriede 0:a109b219decf 53
jbriede 0:a109b219decf 54 // write all zeros to NDEF memory
jbriede 0:a109b219decf 55 NDEF_WriteNDEF(Zero_Buffer);
jbriede 0:a109b219decf 56
jbriede 0:a109b219decf 57 // close NDEF session
jbriede 0:a109b219decf 58 CloseNDEFSession(pCCFile->FileID);
jbriede 0:a109b219decf 59
jbriede 0:a109b219decf 60 // creat while loop
jbriede 0:a109b219decf 61
jbriede 0:a109b219decf 62 pc.printf("init \n");
jbriede 0:a109b219decf 63 while(1) {
jbriede 0:a109b219decf 64 if (NFC_Written==0) {
jbriede 0:a109b219decf 65 pc.printf("session\n");
jbriede 0:a109b219decf 66 wait(4);
jbriede 0:a109b219decf 67 //open NDEF session
jbriede 0:a109b219decf 68 OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION);
jbriede 0:a109b219decf 69
jbriede 0:a109b219decf 70 // read NDEF
jbriede 0:a109b219decf 71 NDEF_ReadNDEF(NDEF_Buffer);
jbriede 0:a109b219decf 72
jbriede 0:a109b219decf 73 // close NDEF session
jbriede 0:a109b219decf 74 CloseNDEFSession(pCCFile->FileID);
jbriede 0:a109b219decf 75
jbriede 0:a109b219decf 76
jbriede 0:a109b219decf 77 // if NDEF is not all 0s, take the store memory in variable
jbriede 0:a109b219decf 78 if ((memcmp(Zero_Buffer, NDEF_Buffer, sizeof(NDEF_Buffer)))!=0){
jbriede 0:a109b219decf 79
jbriede 0:a109b219decf 80 pc.printf("Tag Identified...\nContents: \n");
jbriede 0:a109b219decf 81
jbriede 0:a109b219decf 82
jbriede 0:a109b219decf 83 //for loop to print memory...
jbriede 0:a109b219decf 84 for (int c=0; c<BITSIZE; c++)
jbriede 0:a109b219decf 85 pc.printf("%c",NDEF_Buffer[c]);
jbriede 0:a109b219decf 86
jbriede 0:a109b219decf 87 // write all 0s to the NFC memory
jbriede 0:a109b219decf 88 OpenNDEFSession(pCCFile->FileID, ASK_FOR_SESSION);
jbriede 0:a109b219decf 89 NDEF_WriteNDEF(Zero_Buffer);
jbriede 0:a109b219decf 90 CloseNDEFSession(pCCFile->FileID);
jbriede 0:a109b219decf 91 memset(NDEF_Buffer, 0, sizeof(NDEF_Buffer));
jbriede 0:a109b219decf 92 }
jbriede 0:a109b219decf 93 }
jbriede 0:a109b219decf 94 }
jbriede 0:a109b219decf 95 }