Merge pull request #10 from janecker/nfc-improvements
Improves NFC Tag handling
This commit is contained in:
commit
bce2ad2ed8
37
src/nfc.cpp
37
src/nfc.cpp
@ -93,8 +93,16 @@ bool formatNdefTag() {
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t readTagSize()
|
||||||
|
{
|
||||||
|
uint8_t buffer[4];
|
||||||
|
memset(buffer, 0, 4);
|
||||||
|
nfc.ntag2xx_ReadPage(3, buffer);
|
||||||
|
return buffer[2]*8;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t ntag2xx_WriteNDEF(const char *payload) {
|
uint8_t ntag2xx_WriteNDEF(const char *payload) {
|
||||||
uint8_t tagSize = 240; // 144 bytes is maximum for NTAG213
|
uint16_t tagSize = readTagSize();
|
||||||
Serial.print("Tag Size: ");Serial.println(tagSize);
|
Serial.print("Tag Size: ");Serial.println(tagSize);
|
||||||
|
|
||||||
uint8_t pageBuffer[4] = {0, 0, 0, 0};
|
uint8_t pageBuffer[4] = {0, 0, 0, 0};
|
||||||
@ -369,21 +377,19 @@ void scanRfidTask(void * parameter) {
|
|||||||
|
|
||||||
if (uidLength == 7)
|
if (uidLength == 7)
|
||||||
{
|
{
|
||||||
uint8_t data[256];
|
uint16_t tagSize = readTagSize();
|
||||||
|
if(tagSize > 0)
|
||||||
|
{
|
||||||
|
// Create a buffer depending on the size of the tag
|
||||||
|
uint8_t* data = (uint8_t*)malloc(tagSize);
|
||||||
|
memset(data, 0, tagSize);
|
||||||
|
|
||||||
// We probably have an NTAG2xx card (though it could be Ultralight as well)
|
// We probably have an NTAG2xx card (though it could be Ultralight as well)
|
||||||
Serial.println("Seems to be an NTAG2xx tag (7 byte UID)");
|
Serial.println("Seems to be an NTAG2xx tag (7 byte UID)");
|
||||||
|
|
||||||
for (uint8_t i = 0; i < 45; i++) {
|
uint8_t numPages = readTagSize()/4;
|
||||||
/*
|
for (uint8_t i = 4; i < 4+numPages; i++) {
|
||||||
if (i < uidLength) {
|
if (!nfc.ntag2xx_ReadPage(i, data+(i-4) * 4))
|
||||||
uidString += String(uid[i], HEX);
|
|
||||||
if (i < uidLength - 1) {
|
|
||||||
uidString += ":"; // Optional: Trennzeichen hinzufügen
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (!nfc.mifareclassic_ReadDataBlock(i, data + (i - 4) * 4))
|
|
||||||
{
|
{
|
||||||
break; // Stop if reading fails
|
break; // Stop if reading fails
|
||||||
}
|
}
|
||||||
@ -409,6 +415,13 @@ void scanRfidTask(void * parameter) {
|
|||||||
hasReadRfidTag = 1;
|
hasReadRfidTag = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oledShowMessage("NFC-Tag read error");
|
||||||
|
hasReadRfidTag = 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user