Prints Entire memory on EEPROM of Nucleo NFC01A1
Dependencies: mbed NUCLEO-NFC01A1 lib_NFC_M24SR lib_NFC_NDEF
main.cpp@0:a109b219decf, 2015-08-11 (annotated)
- 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?
User | Revision | Line number | New 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 | } |