Utility library to read and write Ndef messages from/to a Type4 NFC tag
Dependents: NFC M2M_2016_STM32 MyongjiElec_capstone1 IDW01M1_Cloud_IBM ... more
Fork of NDefLib by
NDEF NFC library
This library provides an abstract API to create NDEF formatted messages and records and to read/write them from/to a Type4 NFC Tag.
Implementations
At the moment, the NDEF API is implemented by X_NUCLEO_NFC01A1 and X_NUCLEO_NFC02A1 Dynamic NFC Tag libraries respectively driving the X-NUCLEO-NFC01A1 and X-NUCLEO-NFC02A1 boards.
Message.cpp
- Committer:
- giovannivisentini
- Date:
- 2015-11-19
- Revision:
- 0:04b82ae7aa43
- Child:
- 1:a0eeb478a45a
File content as of revision 0:04b82ae7aa43:
/* * Message.cpp * * Created on: Nov 6, 2015 * Author: giovanni visentini */ #include <cstdlib> #include "NDefLib/Message.h" #include "RecordType/EmptyRecord.h" #include "RecordType/RecordText.h" namespace NDefLib { uint16_t Message::getByteLenght()const{ uint16_t lenght=2; //length size if(mRecords.size()==0) return lenght+EmptyRecord().getByteLenght(); std::vector<Record*>::const_iterator it = mRecords.begin(); const std::vector<Record*>::const_iterator end = mRecords.end(); for(;it!=end;++it){ lenght+= (*it)->getByteLenght(); }//for return lenght; }//getByteLenght uint16_t Message::write(uint8_t *buffer){ const uint16_t length =getByteLenght()-2; uint16_t offset=0; buffer[offset++]=(uint8_t)((length & 0xFF00)>>8); buffer[offset++]=(uint8_t)((length & 0x00FF)); const uint32_t nRecord = mRecords.size(); if(mRecords.size()==0){ offset += EmptyRecord().write(buffer+offset); return offset; }//else for(uint32_t i=0;i<nRecord; i++){ Record *r = mRecords[i]; r->setAsMiddleRecord(); if(i==0) r->setAsFirstRecord(); if(i==nRecord-1) r->setAsLastRecord(); offset+= r->write(buffer+offset); }//for return offset; }//write void Message::parseMessage(uint8_t *rawNdefFile,std::vector<Record*> *parsedRecords){ //const uint16_t length = (rawNdefFile[0]<<8 | rawNdefFile[1]); //skip the message length info uint16_t offset=2; Record *r; do{ r = RecordText::parse(rawNdefFile+offset); if(r==NULL){ }//else offset += r->getByteLenght(); parsedRecords->push_back(r); }while(!r->isLastRecord()); } } /* namespace NDefLib */