diff --git a/MFRC522.cpp b/MFRC522.cpp index 698950a..3e8d084 100644 --- a/MFRC522.cpp +++ b/MFRC522.cpp @@ -114,7 +114,7 @@ void MFRC522::PCD_ReadRegister( byte reg, ///< The register to read from. One o mask |= (1 << i); } // Read value and tell that we want to read the same address again. - byte value = SPI.transfer(address); + byte value = SPI.transfer(address); // Apply mask to both current value of values[0] and the new data in value. values[0] = (values[index] & ~mask) | (value & mask); } @@ -387,7 +387,7 @@ byte MFRC522::PCD_CommunicateWithPICC( byte command, ///< The command to execut // Prepare values for BitFramingReg byte txLastBits = validBits ? *validBits : 0; - byte bitFraming = (rxAlign << 4) + txLastBits; // RxAlign = BitFramingReg[6..4]. TxLastBits = BitFramingReg[2..0] + byte bitFraming = (rxAlign << 4) + txLastBits; // RxAlign = BitFramingReg[6..4]. TxLastBits = BitFramingReg[2..0] PCD_WriteRegister(CommandReg, PCD_Idle); // Stop any active command. PCD_WriteRegister(ComIrqReg, 0x7F); // Clear all seven interrupt request bits @@ -452,7 +452,7 @@ byte MFRC522::PCD_CommunicateWithPICC( byte command, ///< The command to execut return STATUS_CRC_WRONG; } // Verify CRC_A - do our own calculation and store the control in controlBuffer. - byte controlBuffer[2]; + byte controlBuffer[2]; n = PCD_CalculateCRC(&backData[0], *backLen - 2, &controlBuffer[0]); if (n != STATUS_OK) { return n; @@ -540,7 +540,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp bool uidComplete; bool selectDone; bool useCascadeTag; - byte cascadeLevel = 1; + byte cascadeLevel = 1; byte result; byte count; byte index; @@ -585,7 +585,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp // Repeat Cascade Level loop until we have a complete UID. uidComplete = false; - while ( ! uidComplete) { + while (!uidComplete) { // Set the Cascade Level in the SEL byte, find out if we need to use the Cascade Tag in byte 2. switch (cascadeLevel) { case 1: @@ -624,7 +624,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp byte bytesToCopy = currentLevelKnownBits / 8 + (currentLevelKnownBits % 8 ? 1 : 0); // The number of bytes needed to represent the known bits for this level. if (bytesToCopy) { byte maxBytes = useCascadeTag ? 3 : 4; // Max 4 bytes in each Cascade Level. Only 3 left if we use the Cascade Tag - if (bytesToCopy > maxBytes) { + if (bytesToCopy > maxBytes) { bytesToCopy = maxBytes; } for (count = 0; count < bytesToCopy; count++) { @@ -638,7 +638,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp // Repeat anti collision loop until we can transmit all UID bits + BCC and receive a SAK - max 32 iterations. selectDone = false; - while ( ! selectDone) { + while (!selectDone) { // Find out how many bits and bytes to send and receive. if (currentLevelKnownBits >= 32) { // All UID bits in this Cascade Level are known. This is a SELECT. //Serial.print("SELECT: currentLevelKnownBits="); Serial.println(currentLevelKnownBits, DEC); @@ -673,7 +673,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp PCD_WriteRegister(BitFramingReg, (rxAlign << 4) + txLastBits); // RxAlign = BitFramingReg[6..4]. TxLastBits = BitFramingReg[2..0] // Transmit the buffer and receive the response. - result = PCD_TransceiveData(buffer, bufferUsed, responseBuffer, &responseLength, &txLastBits, rxAlign); + result = PCD_TransceiveData(buffer, bufferUsed, responseBuffer, &responseLength, &txLastBits, rxAlign); if (result == STATUS_COLLISION) { // More than one PICC in the field => collision. result = PCD_ReadRegister(CollReg); // CollReg[7..0] bits are: ValuesAfterColl reserved CollPosNotValid CollPos[4:0] if (result & 0x20) { // CollPosNotValid @@ -690,7 +690,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp currentLevelKnownBits = collisionPos; count = (currentLevelKnownBits - 1) % 8; // The bit to modify index = 1 + (currentLevelKnownBits / 8) + (count ? 1 : 0); // First byte is index 0. - buffer[index] |= (1 << count); + buffer[index] |= (1 << count); } else if (result != STATUS_OK) { return result; @@ -706,7 +706,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp // Run loop again to do the SELECT. } } - } // End of while ( ! selectDone) + } // End of while (!selectDone) // We do not check the CBB - it was constructed by us above. @@ -718,7 +718,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp } // Check response SAK (Select Acknowledge) - if (responseLength != 3 || txLastBits != 0) { // SAK must be exactly 24 bits (1 byte + CRC_A). + if (responseLength != 3 || txLastBits != 0) { // SAK must be exactly 24 bits (1 byte + CRC_A). return STATUS_ERROR; } // Verify CRC_A - do our own calculation and store the control in buffer[2..3] - those bytes are not needed anymore. @@ -736,7 +736,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp uidComplete = true; uid->sak = responseBuffer[0]; } - } // End of while ( ! uidComplete) + } // End of while (!uidComplete) // Set correct uid->size uid->size = 3 * cascadeLevel + 1; @@ -751,7 +751,7 @@ byte MFRC522::PICC_Select( Uid *uid, ///< Pointer to Uid struct. Normally outp */ byte MFRC522::PICC_HaltA() { byte result; - byte buffer[4]; + byte buffer[4]; // Build command buffer buffer[0] = PICC_CMD_HLTA; @@ -898,7 +898,7 @@ byte MFRC522::MIFARE_Write( byte blockAddr, ///< MIFARE Classic: The block (0-0x } // Step 2: Transfer the data - result = PCD_MIFARE_Transceive( buffer, bufferSize); // Adds CRC_A and checks that the response is MF_ACK. + result = PCD_MIFARE_Transceive(buffer, bufferSize); // Adds CRC_A and checks that the response is MF_ACK. if (result != STATUS_OK) { return result; } @@ -1250,7 +1250,7 @@ void MFRC522::PICC_DumpToSerial(Uid *uid ///< Pointer to Uid struct returned fro PICC_DumpMifareUltralightToSerial(); break; - case PICC_TYPE_ISO_14443_4: + case PICC_TYPE_ISO_14443_4: case PICC_TYPE_ISO_18092: case PICC_TYPE_MIFARE_PLUS: case PICC_TYPE_TNP3XXX: @@ -1293,7 +1293,7 @@ void MFRC522::PICC_DumpMifareClassicToSerial( Uid *uid, ///< Pointer to Uid str break; default: // Should not happen. Ignore. - break; + break; } // Dump sectors, highest address first. @@ -1526,16 +1526,16 @@ bool MFRC522::MIFARE_OpenUidBackdoor(bool logErrors) { byte response[32]; // Card's response is written here byte received; byte status = PCD_TransceiveData(&cmd, (byte)1, response, &received, &validBits, (byte)0, false); // 40 - if( status != STATUS_OK ) { - if( logErrors ) { + if(status != STATUS_OK) { + if(logErrors) { Serial.println(F("Card did not respond to 0x40 after HALT command. Are you sure it is a UID changeable one?")); Serial.print(F("Error name: ")); Serial.println(GetStatusCodeName(status)); } return false; } - if ( received != 1 || response[0] != 0x0A ) { - if ( logErrors ) { + if (received != 1 || response[0] != 0x0A) { + if (logErrors) { Serial.print(F("Got bad response on backdoor 0x40 command: ")); Serial.print(response[0], HEX); Serial.print(F(" (")); @@ -1548,16 +1548,16 @@ bool MFRC522::MIFARE_OpenUidBackdoor(bool logErrors) { cmd = 0x43; validBits = 8; status = PCD_TransceiveData(&cmd, (byte)1, response, &received, &validBits, (byte)0, false); // 43 - if( status != STATUS_OK ) { - if( logErrors ) { + if(status != STATUS_OK) { + if(logErrors) { Serial.println(F("Error in communication at command 0x43, after successfully executing 0x40")); Serial.print(F("Error name: ")); Serial.println(GetStatusCodeName(status)); } return false; } - if ( received != 1 || response[0] != 0x0A ) { - if ( logErrors ) { + if (received != 1 || response[0] != 0x0A) { + if (logErrors) { Serial.print(F("Got bad response on backdoor 0x43 command: ")); Serial.print(response[0], HEX); Serial.print(F(" (")); @@ -1579,11 +1579,11 @@ bool MFRC522::MIFARE_OpenUidBackdoor(bool logErrors) { * It assumes a default KEY A of 0xFFFFFFFFFFFF. * Make sure to have selected the card before this function is called. */ -bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { +bool MFRC522::MIFARE_SetUid(byte *newUid, byte uidSize, bool logErrors) { // UID + BCC byte can not be larger than 16 together - if ( !newUid || !uidSize || uidSize > 15) { - if ( logErrors ) { + if (!newUid || !uidSize || uidSize > 15) { + if (logErrors) { Serial.println(F("New UID buffer empty, size 0, or size > 15 given")); } return false; @@ -1592,9 +1592,9 @@ bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { // Authenticate for reading MIFARE_Key key = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; byte status = PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, (byte)1, &key, &uid); - if ( status != STATUS_OK ) { + if (status != STATUS_OK) { - if ( status == STATUS_TIMEOUT ) { + if (status == STATUS_TIMEOUT) { // We get a read timeout if no card is selected yet, so let's select one // Wake the card up again if sleeping @@ -1602,15 +1602,15 @@ bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { // byte atqa_size = 2; // PICC_WakeupA(atqa_answer, &atqa_size); - if ( !PICC_IsNewCardPresent() || !PICC_ReadCardSerial() ) { + if (!PICC_IsNewCardPresent() || !PICC_ReadCardSerial()) { Serial.println(F("No card was previously selected, and none are available. Failed to set UID.")); return false; } status = PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, (byte)1, &key, &uid); - if ( status != STATUS_OK ) { + if (status != STATUS_OK) { // We tried, time to give up - if ( logErrors ) { + if (logErrors) { Serial.println(F("Failed to authenticate to card for reading, could not set UID: ")); Serial.println(GetStatusCodeName(status)); } @@ -1618,7 +1618,7 @@ bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { } } else { - if ( logErrors ) { + if (logErrors) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(GetStatusCodeName(status)); } @@ -1630,8 +1630,8 @@ bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { byte block0_buffer[18]; byte byteCount = sizeof(block0_buffer); status = MIFARE_Read((byte)0, block0_buffer, &byteCount); - if ( status != STATUS_OK ) { - if ( logErrors ) { + if (status != STATUS_OK) { + if (logErrors) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(GetStatusCodeName(status)); Serial.println(F("Are you sure your KEY A for sector 0 is 0xFFFFFFFFFFFF?")); @@ -1641,7 +1641,7 @@ bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { // Write new UID to the data we just read, and calculate BCC byte byte bcc = 0; - for ( int i = 0; i < uidSize; i++ ) { + for (int i = 0; i < uidSize; i++) { block0_buffer[i] = newUid[i]; bcc ^= newUid[i]; } @@ -1653,8 +1653,8 @@ bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { PCD_StopCrypto1(); // Activate UID backdoor - if ( !MIFARE_OpenUidBackdoor(logErrors) ) { - if ( logErrors ) { + if (!MIFARE_OpenUidBackdoor(logErrors)) { + if (logErrors) { Serial.println(F("Activating the UID backdoor failed.")); } return false; @@ -1663,7 +1663,7 @@ bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { // Write modified block 0 back to card status = MIFARE_Write((byte)0, block0_buffer, (byte)16); if (status != STATUS_OK) { - if ( logErrors ) { + if (logErrors) { Serial.print(F("MIFARE_Write() failed: ")); Serial.println(GetStatusCodeName(status)); } @@ -1682,14 +1682,14 @@ bool MFRC522::MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors) { * Resets entire sector 0 to zeroes, so the card can be read again by readers. */ bool MFRC522::MIFARE_UnbrickUidSector(bool logErrors) { - MIFARE_OpenUidBackdoor( logErrors ); + MIFARE_OpenUidBackdoor(logErrors); byte block0_buffer[] = {0x01, 0x02, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // Write modified block 0 back to card byte status = MIFARE_Write((byte)0, block0_buffer, (byte)16); if (status != STATUS_OK) { - if ( logErrors ) { + if (logErrors) { Serial.print(F("MIFARE_Write() failed: ")); Serial.println(GetStatusCodeName(status)); } diff --git a/MFRC522.h b/MFRC522.h index 098d874..ba0c16c 100644 --- a/MFRC522.h +++ b/MFRC522.h @@ -324,7 +324,7 @@ public: byte PCD_CommunicateWithPICC(byte command, byte waitIRq, byte *sendData, byte sendLen, byte *backData = NULL, byte *backLen = NULL, byte *validBits = NULL, byte rxAlign = 0, bool checkCRC = false); byte PICC_RequestA(byte *bufferATQA, byte *bufferSize); byte PICC_WakeupA(byte *bufferATQA, byte *bufferSize); - byte PICC_REQA_or_WUPA(byte command, byte *bufferATQA, byte *bufferSize); + byte PICC_REQA_or_WUPA(byte command, byte *bufferATQA, byte *bufferSize); byte PICC_Select(Uid *uid, byte validBits = 0); byte PICC_HaltA(); @@ -360,14 +360,14 @@ public: void PICC_DumpMifareUltralightToSerial(); void MIFARE_SetAccessBits(byte *accessBitBuffer, byte g0, byte g1, byte g2, byte g3); bool MIFARE_OpenUidBackdoor(bool logErrors); - bool MIFARE_SetUid(byte* newUid, byte uidSize, bool logErrors); + bool MIFARE_SetUid(byte *newUid, byte uidSize, bool logErrors); bool MIFARE_UnbrickUidSector(bool logErrors); ///////////////////////////////////////////////////////////////////////////////////// // Convenience functions - does not add extra functionality ///////////////////////////////////////////////////////////////////////////////////// bool PICC_IsNewCardPresent(); - bool PICC_ReadCardSerial(); + bool PICC_ReadCardSerial(); private: byte _chipSelectPin; // Arduino pin connected to MFRC522's SPI slave select input (Pin 24, NSS, active low)