LEER TAG

Dependents:   NFC_HTM_READ EMULAR_TAGS Escribir_tag NFC_HTM_READ-WRITE

Committer:
mauroar211
Date:
Fri Apr 24 18:17:09 2015 +0000
Revision:
0:b805b487fbef
Child:
1:a549ef8b142a
LEER TAG

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mauroar211 0:b805b487fbef 1 #include <NfcTag.h>
mauroar211 0:b805b487fbef 2 #include <string.h>
mauroar211 0:b805b487fbef 3 #include <PN532_debug.h>
mauroar211 0:b805b487fbef 4
mauroar211 0:b805b487fbef 5 NfcTag::NfcTag()
mauroar211 0:b805b487fbef 6 {
mauroar211 0:b805b487fbef 7 _uid = 0;
mauroar211 0:b805b487fbef 8 _uidLength = 0;
mauroar211 0:b805b487fbef 9 _tagType = "Unknown";
mauroar211 0:b805b487fbef 10 _ndefMessage = (NdefMessage*)NULL;
mauroar211 0:b805b487fbef 11 }
mauroar211 0:b805b487fbef 12
mauroar211 0:b805b487fbef 13 NfcTag::NfcTag(uint8_t *uid, unsigned int uidLength)
mauroar211 0:b805b487fbef 14 {
mauroar211 0:b805b487fbef 15 _uid = uid;
mauroar211 0:b805b487fbef 16 _uidLength = uidLength;
mauroar211 0:b805b487fbef 17 _tagType = "Unknown";
mauroar211 0:b805b487fbef 18 _ndefMessage = (NdefMessage*)NULL;
mauroar211 0:b805b487fbef 19 }
mauroar211 0:b805b487fbef 20
mauroar211 0:b805b487fbef 21 NfcTag::NfcTag(uint8_t *uid, unsigned int uidLength, string tagType)
mauroar211 0:b805b487fbef 22 {
mauroar211 0:b805b487fbef 23 _uid = uid;
mauroar211 0:b805b487fbef 24 _uidLength = uidLength;
mauroar211 0:b805b487fbef 25 _tagType = tagType;
mauroar211 0:b805b487fbef 26 _ndefMessage = (NdefMessage*)NULL;
mauroar211 0:b805b487fbef 27 }
mauroar211 0:b805b487fbef 28
mauroar211 0:b805b487fbef 29 NfcTag::NfcTag(uint8_t *uid, unsigned int uidLength, string tagType, NdefMessage& ndefMessage)
mauroar211 0:b805b487fbef 30 {
mauroar211 0:b805b487fbef 31 _uid = uid;
mauroar211 0:b805b487fbef 32 _uidLength = uidLength;
mauroar211 0:b805b487fbef 33 _tagType = tagType;
mauroar211 0:b805b487fbef 34 _ndefMessage = new NdefMessage(ndefMessage);
mauroar211 0:b805b487fbef 35 }
mauroar211 0:b805b487fbef 36
mauroar211 0:b805b487fbef 37 // I don't like this version, but it will use less memory
mauroar211 0:b805b487fbef 38 NfcTag::NfcTag(uint8_t *uid, unsigned int uidLength, string tagType, const uint8_t *ndefData, const int ndefDataLength)
mauroar211 0:b805b487fbef 39 {
mauroar211 0:b805b487fbef 40 _uid = uid;
mauroar211 0:b805b487fbef 41 _uidLength = uidLength;
mauroar211 0:b805b487fbef 42 _tagType = tagType;
mauroar211 0:b805b487fbef 43 _ndefMessage = new NdefMessage(ndefData, ndefDataLength);
mauroar211 0:b805b487fbef 44 }
mauroar211 0:b805b487fbef 45
mauroar211 0:b805b487fbef 46 NfcTag::~NfcTag()
mauroar211 0:b805b487fbef 47 {
mauroar211 0:b805b487fbef 48 delete _ndefMessage;
mauroar211 0:b805b487fbef 49 }
mauroar211 0:b805b487fbef 50
mauroar211 0:b805b487fbef 51 NfcTag& NfcTag::operator=(const NfcTag& rhs)
mauroar211 0:b805b487fbef 52 {
mauroar211 0:b805b487fbef 53 if (this != &rhs)
mauroar211 0:b805b487fbef 54 {
mauroar211 0:b805b487fbef 55 delete _ndefMessage;
mauroar211 0:b805b487fbef 56 _uid = rhs._uid;
mauroar211 0:b805b487fbef 57 _uidLength = rhs._uidLength;
mauroar211 0:b805b487fbef 58 _tagType = rhs._tagType;
mauroar211 0:b805b487fbef 59 // TODO do I need a copy here?
mauroar211 0:b805b487fbef 60 _ndefMessage = rhs._ndefMessage;
mauroar211 0:b805b487fbef 61 }
mauroar211 0:b805b487fbef 62 return *this;
mauroar211 0:b805b487fbef 63 }
mauroar211 0:b805b487fbef 64
mauroar211 0:b805b487fbef 65 uint8_t NfcTag::getUidLength()
mauroar211 0:b805b487fbef 66 {
mauroar211 0:b805b487fbef 67 return _uidLength;
mauroar211 0:b805b487fbef 68 }
mauroar211 0:b805b487fbef 69
mauroar211 0:b805b487fbef 70 void NfcTag::getUid(uint8_t *uid, unsigned int uidLength)
mauroar211 0:b805b487fbef 71 {
mauroar211 0:b805b487fbef 72 memcpy(_uid, uid, uidLength);
mauroar211 0:b805b487fbef 73 }
mauroar211 0:b805b487fbef 74
mauroar211 0:b805b487fbef 75 string NfcTag::getUidString()
mauroar211 0:b805b487fbef 76 {
mauroar211 0:b805b487fbef 77 unsigned int un, dec;
mauroar211 0:b805b487fbef 78 string uidString = "";
mauroar211 0:b805b487fbef 79
mauroar211 0:b805b487fbef 80 for (int i = 0; i < _uidLength; i++)
mauroar211 0:b805b487fbef 81 {
mauroar211 0:b805b487fbef 82 if (i > 0)
mauroar211 0:b805b487fbef 83 {
mauroar211 0:b805b487fbef 84 uidString += " ";
mauroar211 0:b805b487fbef 85 }
mauroar211 0:b805b487fbef 86
mauroar211 0:b805b487fbef 87
mauroar211 0:b805b487fbef 88 un=_uid[i]%16;
mauroar211 0:b805b487fbef 89 dec=_uid[i]/16;
mauroar211 0:b805b487fbef 90
mauroar211 0:b805b487fbef 91 if(dec > 9){
mauroar211 0:b805b487fbef 92 uidString += dec + 0x37;
mauroar211 0:b805b487fbef 93 }
mauroar211 0:b805b487fbef 94 else{
mauroar211 0:b805b487fbef 95 uidString += dec + 0x30;
mauroar211 0:b805b487fbef 96 }
mauroar211 0:b805b487fbef 97
mauroar211 0:b805b487fbef 98 if(un > 9){
mauroar211 0:b805b487fbef 99 uidString += un + 0x37;
mauroar211 0:b805b487fbef 100 }
mauroar211 0:b805b487fbef 101 else{
mauroar211 0:b805b487fbef 102 uidString += un + 0x30;
mauroar211 0:b805b487fbef 103 }
mauroar211 0:b805b487fbef 104
mauroar211 0:b805b487fbef 105 }
mauroar211 0:b805b487fbef 106 return uidString;
mauroar211 0:b805b487fbef 107 }
mauroar211 0:b805b487fbef 108
mauroar211 0:b805b487fbef 109 string NfcTag::getTagType()
mauroar211 0:b805b487fbef 110 {
mauroar211 0:b805b487fbef 111 return _tagType;
mauroar211 0:b805b487fbef 112 }
mauroar211 0:b805b487fbef 113
mauroar211 0:b805b487fbef 114 bool NfcTag::hasNdefMessage()
mauroar211 0:b805b487fbef 115 {
mauroar211 0:b805b487fbef 116 return (_ndefMessage != NULL);
mauroar211 0:b805b487fbef 117 }
mauroar211 0:b805b487fbef 118
mauroar211 0:b805b487fbef 119 NdefMessage NfcTag::getNdefMessage()
mauroar211 0:b805b487fbef 120 {
mauroar211 0:b805b487fbef 121 return *_ndefMessage;
mauroar211 0:b805b487fbef 122 }
mauroar211 0:b805b487fbef 123
mauroar211 0:b805b487fbef 124 void NfcTag::print()
mauroar211 0:b805b487fbef 125 {
mauroar211 0:b805b487fbef 126 DMSG("NFC Tag - ");
mauroar211 0:b805b487fbef 127 DMSG_INT(_tagType);
mauroar211 0:b805b487fbef 128 DMSG("UID - ");
mauroar211 0:b805b487fbef 129 DMSG(getUidString().c_str());
mauroar211 0:b805b487fbef 130 if (_ndefMessage == NULL)
mauroar211 0:b805b487fbef 131 {
mauroar211 0:b805b487fbef 132 DMSG("\nNo NDEF Message");
mauroar211 0:b805b487fbef 133 }
mauroar211 0:b805b487fbef 134 else
mauroar211 0:b805b487fbef 135 {
mauroar211 0:b805b487fbef 136 _ndefMessage->print();
mauroar211 0:b805b487fbef 137 }
mauroar211 0:b805b487fbef 138 }