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.
Diff: RecordType/RecordMimeType.cpp
- Revision:
- 2:760e36ba9c23
- Parent:
- 1:a0eeb478a45a
- Child:
- 4:eaf6c49a86e4
--- a/RecordType/RecordMimeType.cpp Tue Nov 24 14:33:06 2015 +0000 +++ b/RecordType/RecordMimeType.cpp Thu Nov 26 09:04:44 2015 +0000 @@ -7,18 +7,28 @@ #include <cstring> #include "RecordMimeType.h" +#include "RecordVCard.h" namespace NDefLib { +void RecordMimeType::initializeHeaderData(){ + mRecordHeader.setFNT(RecordHeader::Mime_media_type); + mRecordHeader.setTypeLength(mMimeType.size()); + mRecordHeader.setPlayloadLenght(mDataLenght); +} + RecordMimeType::RecordMimeType(const std::string &mimeType,const uint8_t *data,uint32_t nDataLenght): mMimeType(mimeType),mDataLenght(nDataLenght),mData(new uint8_t[mDataLenght]){ std::memcpy(mData,data,mDataLenght); + initializeHeaderData(); +} - mRecordHeader.setFNT(RecordHeader::Mime_media_type); - mRecordHeader.setTypeLength(mMimeType.size()); - mRecordHeader.setPlayloadLenght(mDataLenght); +RecordMimeType::RecordMimeType(const std::string &mimeType,const std::string &data): + mMimeType(mimeType),mDataLenght(data.size()),mData(new uint8_t[mDataLenght]){ + std::memcpy(mData,data.c_str(),mDataLenght); + initializeHeaderData(); } uint16_t RecordMimeType::write(uint8_t *buffer){ @@ -37,6 +47,11 @@ if(header.getFNT()!=RecordHeader::Mime_media_type){ return NULL; }//else + //check if it is a know subtype + RecordMimeType *r = RecordVCard::parse(header,buffer); + if(r!=NULL) + return r; + uint32_t dataOffset = offset+header.getTypeLenght(); return new RecordMimeType(std::string((const char*)buffer+offset, header.getTypeLenght()),buffer+dataOffset,header.getPlayloadLenght());