LEER TAG

Dependents:   NFC_HTM_READ EMULAR_TAGS Escribir_tag NFC_HTM_READ-WRITE

Committer:
mauroar211
Date:
Fri Apr 24 19:02:44 2015 +0000
Revision:
1:a549ef8b142a
Parent:
0:b805b487fbef
SE RESTAURARON LOS ARCHIVO DE LA LIBRER?A;

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 1:a549ef8b142a 106
mauroar211 1:a549ef8b142a 107
mauroar211 0:b805b487fbef 108 return uidString;
mauroar211 0:b805b487fbef 109 }
mauroar211 0:b805b487fbef 110
mauroar211 0:b805b487fbef 111 string NfcTag::getTagType()
mauroar211 0:b805b487fbef 112 {
mauroar211 0:b805b487fbef 113 return _tagType;
mauroar211 0:b805b487fbef 114 }
mauroar211 0:b805b487fbef 115
mauroar211 0:b805b487fbef 116 bool NfcTag::hasNdefMessage()
mauroar211 0:b805b487fbef 117 {
mauroar211 0:b805b487fbef 118 return (_ndefMessage != NULL);
mauroar211 0:b805b487fbef 119 }
mauroar211 0:b805b487fbef 120
mauroar211 0:b805b487fbef 121 NdefMessage NfcTag::getNdefMessage()
mauroar211 0:b805b487fbef 122 {
mauroar211 0:b805b487fbef 123 return *_ndefMessage;
mauroar211 0:b805b487fbef 124 }
mauroar211 0:b805b487fbef 125
mauroar211 0:b805b487fbef 126 void NfcTag::print()
mauroar211 0:b805b487fbef 127 {
mauroar211 0:b805b487fbef 128 DMSG("NFC Tag - ");
mauroar211 0:b805b487fbef 129 DMSG_INT(_tagType);
mauroar211 0:b805b487fbef 130 DMSG("UID - ");
mauroar211 0:b805b487fbef 131 DMSG(getUidString().c_str());
mauroar211 0:b805b487fbef 132 if (_ndefMessage == NULL)
mauroar211 0:b805b487fbef 133 {
mauroar211 0:b805b487fbef 134 DMSG("\nNo NDEF Message");
mauroar211 0:b805b487fbef 135 }
mauroar211 0:b805b487fbef 136 else
mauroar211 0:b805b487fbef 137 {
mauroar211 0:b805b487fbef 138 _ndefMessage->print();
mauroar211 0:b805b487fbef 139 }
mauroar211 0:b805b487fbef 140 }