diff --git a/MFRC522.cpp b/MFRC522.cpp index a12c0b5..f6652eb 100644 --- a/MFRC522.cpp +++ b/MFRC522.cpp @@ -1274,6 +1274,28 @@ const __FlashStringHelper *MFRC522::PICC_GetTypeName(PICC_Type piccType ///< One } } // End PICC_GetTypeName() +/** + * Dumps debug info about the connected PCD to Serial. + * Shows all known firmware versions + */ +void MFRC522::PCD_DumpVersionToSerial() { + // Get the MFRC522 firmware version + byte v = PCD_ReadRegister(VersionReg); + Serial.print(F("Firmware Version: 0x")); + Serial.print(v, HEX); + // Lookup which version + switch(v) { + case 0x88: Serial.println(F(" = (clone)")); break; + case 0x90: Serial.println(F(" = v0.0")); break; + case 0x91: Serial.println(F(" = v1.0")); break; + case 0x92: Serial.println(F(" = v2.0")); break; + default: Serial.println(F(" = (unknown)")); + } + // When 0x00 or 0xFF is returned, communication probably failed + if ((v == 0x00) || (v == 0xFF)) + Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?")); +} // End PCD_DumpVersionToSerial() + /** * Dumps debug info about the selected PICC to Serial. * On success the PICC is halted after dumping the data. diff --git a/MFRC522.h b/MFRC522.h index cf90a6c..3f68c4d 100644 --- a/MFRC522.h +++ b/MFRC522.h @@ -387,6 +387,7 @@ public: // old function used too much memory, now name moved to flash; if you need char, copy from flash to memory //const char *PICC_GetTypeName(byte type); const __FlashStringHelper *PICC_GetTypeName(PICC_Type type); + void PCD_DumpVersionToSerial(); void PICC_DumpToSerial(Uid *uid); void PICC_DumpMifareClassicToSerial(Uid *uid, PICC_Type piccType, MIFARE_Key *key); void PICC_DumpMifareClassicSectorToSerial(Uid *uid, MIFARE_Key *key, byte sector); diff --git a/examples/DumpInfo/DumpInfo.ino b/examples/DumpInfo/DumpInfo.ino index cfbf6fe..c74281a 100644 --- a/examples/DumpInfo/DumpInfo.ino +++ b/examples/DumpInfo/DumpInfo.ino @@ -41,17 +41,17 @@ #include #include -#define RST_PIN 9 // -#define SS_PIN 10 // +#define RST_PIN 9 // Configurable, see typical pin layout above +#define SS_PIN 10 // Configurable, see typical pin layout above -MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance +MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance void setup() { Serial.begin(9600); // Initialize serial communications with the PC while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4) SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 - ShowReaderDetails(); // Show details of PCD - MFRC522 Card Reader details + mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details Serial.println(F("Scan PICC to see UID, type, and data blocks...")); } @@ -69,21 +69,3 @@ void loop() { // Dump debug info about the card; PICC_HaltA() is automatically called mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); } - -void ShowReaderDetails() { - // Get the MFRC522 software version - byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); - Serial.print(F("MFRC522 Software Version: 0x")); - Serial.print(v, HEX); - if (v == 0x91) - Serial.print(F(" = v1.0")); - else if (v == 0x92) - Serial.print(F(" = v2.0")); - else - Serial.print(F(" (unknown)")); - Serial.println(""); - // When 0x00 or 0xFF is returned, communication probably failed - if ((v == 0x00) || (v == 0xFF)) { - Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?")); - } -} diff --git a/examples/firmware_check/firmware_check.ino b/examples/firmware_check/firmware_check.ino index 49a8624..5c4a7f5 100644 --- a/examples/firmware_check/firmware_check.ino +++ b/examples/firmware_check/firmware_check.ino @@ -46,7 +46,7 @@ void setup() { Serial.println(F("*****************************")); Serial.println(F("MFRC522 Digital self test")); Serial.println(F("*****************************")); - ShowReaderVersion(); // Show version of PCD - MFRC522 Card Reader + mfrc522.PCD_DumpVersionToSerial(); // Show version of PCD - MFRC522 Card Reader Serial.println(F("-----------------------------")); Serial.println(F("Only known versions supported")); Serial.println(F("-----------------------------")); @@ -62,24 +62,3 @@ void setup() { } void loop() {} // nothing to do - -/** -* Helper to print MFRC522 module info -*/ -void ShowReaderVersion() { - // Get the MFRC522 firmware version - byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); - Serial.print(F("Firmware Version: 0x")); - Serial.print(v, HEX); - // Lookup which version - switch(v) { - case 0x88: Serial.println(F(" = (clone)")); break; - case 0x90: Serial.println(F(" = v0.0")); break; - case 0x91: Serial.println(F(" = v1.0")); break; - case 0x92: Serial.println(F(" = v2.0")); break; - default: Serial.println(F(" = (unknown)")); - } - // When 0x00 or 0xFF is returned, communication probably failed - if ((v == 0x00) || (v == 0xFF)) - Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?")); -} diff --git a/keywords.txt b/keywords.txt index 73e6216..b1a5a95 100644 --- a/keywords.txt +++ b/keywords.txt @@ -59,12 +59,14 @@ MIFARE_Increment KEYWORD2 MIFARE_Ultralight_Write KEYWORD2 MIFARE_GetValue KEYWORD2 MIFARE_SetValue KEYWORD2 +PCD_NTAG216_AUTH KEYWORD2 # Support functions PCD_MIFARE_Transceive KEYWORD2 GetStatusCodeName KEYWORD2 PICC_GetType KEYWORD2 PICC_GetTypeName KEYWORD2 +PCD_DumpVersionToSerial KEYWORD2 PICC_DumpToSerial KEYWORD2 PICC_DumpMifareClassicToSerial KEYWORD2 PICC_DumpMifareClassicSectorToSerial KEYWORD2