This program is for reading and writing from /to MIFARE Classic 1k ,MIFARE Ultralight MF0ICU1,MIFARE Ultralight NTAG213,MIFARE Ultralight NTAG203
Diff: main.cpp
- Revision:
- 4:9d923c6e6c14
- Parent:
- 3:f9ed412458d5
- Child:
- 5:93f22f8fdcd2
--- a/main.cpp Fri May 26 09:57:55 2017 +0000
+++ b/main.cpp Tue Jun 06 10:13:06 2017 +0000
@@ -1,14 +1,12 @@
/*--------------------------------------------------------Reading Writing MIFARE Tags---------------------------------------------------------------
-Note:
----------
+
1.This program is for reading and writing from /to MIFARE Classic 1k ,MIFARE Ultralight MF0ICU1,MIFARE Ultralight NTAG213,MIFARE Ultralight NTAG203
2.Generally we are using MBED model WIZnet WIZWiki W7500 to interfacng with MFRC522 Rader and writer device using SPI protocol
-3.This program is designed such a way that it will take input 1,2 for reading or writing from/to tags
+3.This program is designed such a way that it will take input 1,2 for reading or writing from serial monitor
4.Once user can entering input based on input it will call read and write function respectively...
+
----------------------------------------------------------------------------------------------------------------------------------------------------*/
-
-
/*Test of cheap 13.56Mhz RFID-RC522 module
Connect as follows:
RFID pins -> WIZWiki-W7500 header CN5 (Arduino-compatible header)
@@ -19,7 +17,8 @@
4.RFID SCK -> WIZWiki-W7500 SPI_SCK =D13
5.RFID SDA -> WIZWiki-W7500 SPI_CS =D10
6.RFID RST -> WIZWiki-W7500 =D9
-3.3V and Gnd to the respective pins*/
+3.3V and Gnd to the respective pins
+-------------------------------------------------------------------------*/
@@ -34,7 +33,9 @@
//Define RFID version and date
#define VERSION "RFID_2017_03_20"
//Define board
-#define CIBLE "WIZwiki-W7500"
+#define BOARD "WIZwiki-W7500"
+//Adding Library for RFID tags read and Write
+#include "RFIDRW.h"
// ARMmbed WIZwiki W7500 Pin for MFRC522 SPI Communication
@@ -46,34 +47,26 @@
// WIZWiki-W7500 Pin for MFRC522 reset(pick another D pin if you need D8)
#define MF_RESET D9
-
//Define led for identification
DigitalOut LedGreen(D7);
-//Serial connection to PC for output
-Serial pc(USBTX, USBRX);
-
-
-//Define or create MFRC522 class and passing pins as arguments
-MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET);
+//Serial connection to cp for output
+Serial cp(USBTX, USBRX);
-//* Local functions */
-void DumpMifareClassicToSerial (MFRC522::Uid *uid, uint8_t piccType, MFRC522::MIFARE_Key *key); //It is reading MIFARE Classic 1k memory block and sector
-void DumpMifareClassicSectorToSerial(MFRC522::Uid *uid, MFRC522::MIFARE_Key *key, uint8_t sector); //It is reading MIFARE Classic 1k memory block data and sector data
-void DumpMifareUltralightToSerial (void); //It is reading MIFARE Ultralight memory block,block data and sector,sector data
-void writeDataUL(void); //It is Writing function to MIFARE Ultralight
-void writeDataClassic1k(void); //It is Writing function to MIFARE Classic 1k
-uint8_t page;
+//Creating MFRC522 class abject and passing pin as a argument
+MFRC522 RfChip(SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET);
+
/**
* Dumps debug info about the selected PICC to Serial.
* On success the PICC is halted after dumping the data.
* For MIFARE Classic the factory default key of 0xFFFFFFFFFFFF is tried.
*/
+//Declaring MIFARE Classic 1k key
+MFRC522::MIFARE_Key key;
void DumpToSerial(MFRC522::Uid *uid)
{
- //Declaring MIFARE Classic 1k key
- MFRC522::MIFARE_Key key;
+
// Print Card UID
printf("Card UID: ");
@@ -114,229 +107,15 @@
RfChip.PICC_HaltA(); // Instructs a PICC in state ACTIVE(*) to go to state HALT.
} // End PICC_DumpToSerial()
-/**
- * Dumps memory contents of a MIFARE Classic PICC.
- * On success the PICC is halted after dumping the data.
- */
-void DumpMifareClassicToSerial(MFRC522::Uid *uid, uint8_t piccType, MFRC522::MIFARE_Key *key)
-{
- uint8_t no_of_sectors = 0;
- switch (piccType) {
- case MFRC522::PICC_TYPE_MIFARE_MINI:
- // Has 5 sectors * 4 blocks/sector * 16 bytes/block = 320 bytes.
- no_of_sectors = 5;
- break;
-
- case MFRC522::PICC_TYPE_MIFARE_1K:
- // Has 16 sectors * 4 blocks/sector * 16 bytes/block = 1024 bytes.
- no_of_sectors = 16;
- break;
-
- case MFRC522::PICC_TYPE_MIFARE_4K:
- // Has (32 sectors * 4 blocks/sector + 8 sectors * 16 blocks/sector) * 16 bytes/block = 4096 bytes.
- no_of_sectors = 40;
- break;
-
- default:
- // Should not happen. Ignore.
- break;
- }
-
- // Dump sectors, highest address first.
- if (no_of_sectors) {
- printf("Sector Block 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AccessBits \n\r");
- printf("----------------------------------------------------------------------------------------- \n\r");
- for (int8_t i = no_of_sectors-1 ; i>= 0; i--) {
-
- DumpMifareClassicSectorToSerial(uid, key, i);
-
-
- }
- }
-
- RfChip.PICC_HaltA(); // Halt the PICC before stopping the encrypted session.
- RfChip.PCD_StopCrypto1();
-} // End PICC_DumpMifareClassicToSerial()
-
-/**
- * Dumps memory contents of a sector of a MIFARE Classic PICC.
- * Uses PCD_Authenticate(), MIFARE_Read() and PCD_StopCrypto1.
- * Always uses PICC_CMD_MF_AUTH_KEY_A because only Key A can always read the sector trailer access bits.
- */
-void DumpMifareClassicSectorToSerial(MFRC522::Uid *uid, MFRC522::MIFARE_Key *key, uint8_t sector)
-{
- uint8_t status; // Set what type of error is found
- uint8_t firstBlock; // Address of lowest address to dump actually last block dumped)
- uint8_t no_of_blocks; // Number of blocks in sector
- bool isSectorTrailer; // Set to true while handling the "last" (ie highest address) in the sector.
-
- // The access bits are stored in a peculiar fashion.
- // There are four groups:
- // g[3] Access bits for the sector trailer, block 3 (for sectors 0-31) or block 15 (for sectors 32-39)
- // g[2] Access bits for block 2 (for sectors 0-31) or blocks 10-14 (for sectors 32-39)
- // g[1] Access bits for block 1 (for sectors 0-31) or blocks 5-9 (for sectors 32-39)
- // g[0] Access bits for block 0 (for sectors 0-31) or blocks 0-4 (for sectors 32-39)
- // Each group has access bits [C1 C2 C3]. In this code C1 is MSB and C3 is LSB.
- // The four CX bits are stored together in a nible cx and an inverted nible cx_.
- uint8_t c1, c2, c3; // Nibbles
- uint8_t c1_, c2_, c3_; // Inverted nibbles
- bool invertedError = false; // True if one of the inverted nibbles did not match
- uint8_t g[4]; // Access bits for each of the four groups.
- uint8_t group; // 0-3 - active group for access bits
- bool firstInGroup; // True for the first block dumped in the group
-
- // Determine position and size of sector.
- if (sector < 32) {
- // Sectors 0..31 has 4 blocks each
- no_of_blocks = 4;
- firstBlock = sector * no_of_blocks;
- } else if (sector < 40) {
- // Sectors 32-39 has 16 blocks each
- no_of_blocks = 16;
- firstBlock = 128 + (sector - 32) * no_of_blocks;
- } else {
- // Illegal input, no MIFARE Classic PICC has more than 40 sectors.
- return;
- }
-
- // Dump blocks, highest address first.
- uint8_t byteCount; //No of reading data
- uint8_t buffer[18]; //Reading data of buffer
- uint8_t blockAddr; // No of Sector
- isSectorTrailer = true;
- for (int8_t blockOffset = no_of_blocks - 1; blockOffset >= 0; blockOffset--) {
- blockAddr = firstBlock + blockOffset;
-
- // Sector number - only on first line
- if (isSectorTrailer) {
- printf(" %2d ", sector);
- } else {
- printf(" ");
- }
-
- // Block number
- printf(" %3d ", blockAddr);
-
- // Establish encrypted communications before reading the first block
- /*While MFRC522 reader/writer is not uthenticate MIFARE card then it will through PCD_Authenticate() failed: Timeout in communication */
- if (isSectorTrailer) {
- status = RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, firstBlock, key, uid);
- if (status != MFRC522::STATUS_OK) {
- printf("PCD_Authenticate() failed: %s \r\n", RfChip.GetStatusCodeName(status));
- return;
- }
- }
-
- // Read block
- /*If MFRC522 reader/writer is uthenticate MIFARE card but it not uthenticate key then it will through MIFARE_Read() failed: Timeout in communication */
- byteCount = sizeof(buffer);
- status = RfChip.MIFARE_Read(blockAddr, buffer, &byteCount);
- if (status != MFRC522::STATUS_OK) {
- printf("MIFARE_Read() failed: %s \r\n", RfChip.GetStatusCodeName(status));
- continue;
- }
-
- // Dump data
- for (uint8_t index = 0; index < 16; index++) {
- printf(" %2X", buffer[index]);
- }
-
-
-//This block is printing access bit......................................................................................
-
- // Parse sector trailer data
- if (isSectorTrailer) {
- c1 = buffer[7] >> 4;
- c2 = buffer[8] & 0xF;
- c3 = buffer[8] >> 4;
- c1_ = buffer[6] & 0xF;
- c2_ = buffer[6] >> 4;
- c3_ = buffer[7] & 0xF;
- invertedError = (c1 != (~c1_ & 0xF)) || (c2 != (~c2_ & 0xF)) || (c3 != (~c3_ & 0xF));
-
- g[0] = ((c1 & 1) << 2) | ((c2 & 1) << 1) | ((c3 & 1) << 0);
- g[1] = ((c1 & 2) << 1) | ((c2 & 2) << 0) | ((c3 & 2) >> 1);
- g[2] = ((c1 & 4) << 0) | ((c2 & 4) >> 1) | ((c3 & 4) >> 2);
- g[3] = ((c1 & 8) >> 1) | ((c2 & 8) >> 2) | ((c3 & 8) >> 3);
- isSectorTrailer = false;
- }
-
- // Which access group is this block in?
- if (no_of_blocks == 4) {
- group = blockOffset;
- firstInGroup = true;
- } else {
- group = blockOffset / 5;
- firstInGroup = (group == 3) || (group != (blockOffset + 1) / 5);
- }
-
- if (firstInGroup) {
- // Print access bits
- printf(" [ %d %d %d ] ", (g[group] >> 2) & 1, (g[group] >> 1) & 1, (g[group] >> 0) & 1);
- if (invertedError) {
- printf(" Inverted access bits did not match! ");
- }
- }
-
- if (group != 3 && (g[group] == 1 || g[group] == 6)) {
- // Not a sector trailer, a value block
- printf(" Addr = 0x%02X, Value = 0x%02X%02X%02X%02X", buffer[12],
- buffer[3],
- buffer[2],
- buffer[1],
- buffer[0]);
- }
-
- //END....................................................................................................................
-
- printf("\n\r");
- }
-
- return;
-} // End PICC_DumpMifareClassicSectorToSerial()
/**
* Dumps memory contents of a MIFARE Ultralight PICC.
*/
-void DumpMifareUltralightToSerial(void)
-{
- uint8_t status; // Set what type of error is found
- uint8_t byteCount; //No of reading data
- uint8_t buffer[18]; //Reading data from buffer
- uint8_t i;
- printf("Page 0 1 2 3 \n");
- // Try the mpages of the original Ultralight. Ultralight C has more pages.
- for ( page = 0; page < 16; page +=4) {
- // Read pages
- /*If MFRC522 reader/writer is uthenticate MIFARE card but it not uthenticate key then it will through MIFARE_Read() failed: Timeout in communication */
- byteCount = sizeof(buffer);
- status = RfChip.MIFARE_Read(page, buffer, &byteCount);
- if (status != MFRC522::STATUS_OK) {
- printf("MIFARE_Read() failed: %s \n\r", RfChip.GetStatusCodeName(status));
- break;
- }
-
- // Dump data
- for (uint8_t offset = 0; offset < 4; offset++) {
- i = page + offset;
- printf(" %2d ", i); // Pad with spaces
- for (uint8_t index = 0; index < 4; index++) {
- i = 4 * offset + index;
- printf(" %02X ", buffer[i]);
- }
-
- printf("\n\r");
- }
- }
-} // End PICC_DumpMifareUltralightToSerial()
-
//Create function for writting data
void WriteToRfidTag(MFRC522::Uid *uid)
{
- MFRC522::MIFARE_Key key;
-
// Print Card UID
printf("Card UID: ");
for (uint8_t i = 0; i < RfChip.uid.size; i++) {
@@ -358,11 +137,11 @@
for (uint8_t i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
- writeDataClassic1k(); // WriteToRfidTag(&(RfChip.uid))
+ writeDataClassic1k(uid); // WriteToRfidTag(&(RfChip.uid))
break;
case MFRC522::PICC_TYPE_MIFARE_UL:
- writeDataUL();
+ writeDataUL(uid);
break;
default:
break; // No memory dump here
@@ -370,818 +149,26 @@
printf("\n\r");
}
-void writeDataClassic1k()
-{
- //Declaration of MFRC522 key
- MFRC522::MIFARE_Key key;
- //Declaration of MFRC522 status
- MFRC522::StatusCode status;
- uint8_t buffer[16];
- uint8_t block;
-
-
- while(true) {
-
- // All keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
- for (uint8_t i = 0; i < 6; i++) {
- key.keyByte[i] = 0xFF;
- }
-
- pc.printf("Enter 1 block: "); // Enter Data
-
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 1;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen=1;
- pc.printf("Succesfully Written to block 1: ");
- }
- printf("\n\r");
- pc.printf("Enter 2 block: "); // Enter Data
-
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 2;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen = 1;
- pc.printf("Succesfully Written to block 2: ");
- }
- printf("\n\r");
- pc.printf("Enter 4 block: "); // Enter Data
-
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 4;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen = 1;
- pc.printf("Succesfully Written to block 4: ");
- }
- printf("\n\r");
- pc.printf("Enter 5 block: "); // Enter Data
-
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 5;
- /*While MFRC522 reader/writer is not uthenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen = 1;
- pc.printf("Succesfully Written to block 5: ");
- }
- printf("\n\r");
- pc.printf("Enter 6 block: "); // Enter Data
-
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 6;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen=1;
- pc.printf("Succesfully Written to block 6: ");
- }
- printf("\n\r");
- printf("\n\r");
- pc.printf("Enter 8 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 8;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 10 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 10;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 12 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 12;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 13 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 13;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 14 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 14;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
-
-
- printf("\n\r");
- pc.printf("Enter 16 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 16;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 17 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 17;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 18 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 18;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
-
- printf("\n\r");
- pc.printf("Enter 20 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 20;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 21 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 21;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 22 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 22;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 24 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 24;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 25 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 25;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 26 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 26;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 28 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 28;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 29 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 29;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Enter 30 block: "); // Enter Data
- for(uint8_t i = 0; i < 16; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- block = 30;
- /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
- pc.printf("Authenticating using key A...");
- status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
- if (status != MFRC522::STATUS_OK) {
- pc.printf("PCD_Authenticate() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- }
-
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
-
- pc.printf("Succesfully Written to tag: ");
- }
- printf("\n\r");
- pc.printf("Written to Classic card successfully....\n\r");
- RfChip.PICC_HaltA();
- RfChip.PCD_StopCrypto1();
- break;
- // switchcase();
- }
-
-
-} // end of void writeDataClassic1k()
-
-
-
-void writeDataUL()
-{
- //Declaration of MFRC522 status
- MFRC522::StatusCode status;
- uint8_t buffer[16]; //Define buffer
- uint8_t page; //Define page
-
- while(true) {
-
- pc.printf("Enter 4 page: "); // Enter Data
-
- for(uint8_t i = 0; i < 4; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- page = 4;
- // Write block
- status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen=1;
- pc.printf("Succesfully Written to page 4: ");
- }
- printf("\n\r");
-
- pc.printf("Enter 5 page: "); // Enter Data
-
- for(uint8_t i = 0; i < 4; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- page = 5;
- // Write block
- //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
- status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen=1;
- pc.printf("Succesfully Written to page 5: ");
- }
- printf("\n\r");
-
- pc.printf("Enter 6 page: "); // Enter Data
-
- for(uint8_t i = 0; i < 4; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- page = 6;
- // Write block
- //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
- status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen=1;
- pc.printf("Succesfully Written to page 6: ");
- }
- printf("\n\r");
-
- pc.printf("Enter 7 page: "); // Enter Data
-
- for(uint8_t i = 0; i < 4; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- page = 7;
- // Write block
- //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
- status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen=1;
- pc.printf("Succesfully Written to page 7: ");
- }
- printf("\n\r");
-
- pc.printf("Enter 8 page: "); // Enter Data
-
- for(uint8_t i = 0; i < 4; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- page = 8;
- // Write block
- //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
- status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen=1;
- pc.printf("Succesfully Written to page 8: ");
- }
- printf("\n\r");
-
- pc.printf("Enter 9 page: "); // Enter Data
-
- for(uint8_t i = 0; i < 4; i++) {
- buffer[i] = pc.putc(pc.getc());
- }
- printf("\n\r");
- page = 9;
- // Write block
- //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
- status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
- if (status != MFRC522::STATUS_OK) {
- pc.printf("MIFARE_Write() failed: ");
- pc.printf(RfChip.GetStatusCodeName(status));
-
- continue;
- } else {
- LedGreen=1;
- pc.printf("Succesfully Written to page 9: ");
- }
- printf("Written Succefully to ultralight ......\n\r");
- RfChip.PICC_HaltA();
- break;
- }
-
-} //End writeDataUL()
-
-
-
int main()
{
/* Set debug UART speed */
printf("\n\rUART 9600 baud\n\r");
- pc.baud(9600);
- printf("\n\r%s %s\n\r",VERSION,CIBLE);
+ cp.baud(9600);
+ printf("\n\r%s %s\n\r",VERSION,BOARD);
/* Init. RC522 Chip */
RfChip.PCD_Init();
/* Read RC522 version */
uint8_t temp = RfChip.PCD_ReadRegister(MFRC522::VersionReg);
- printf("MFRC522 version: %d\n\r", temp & 0x07);
+ printf("MFRC522 version: %d\n\r", temp);
printf("\n\r");
- pc.printf("Enter 1 Reading \n");
- pc.printf("Enter 2 Writing \n");
+ cp.printf("Enter 1 Reading \n");
+ cp.printf("Enter 2 Writing \n");
while(true) {
-
LedGreen = 1;
// Look for new cards
@@ -1198,14 +185,14 @@
}
LedGreen = 1;
wait_ms(50);
- char ch=pc.getc();
+ char ch=cp.getc();
if(ch=='1') {
- pc.printf("reading..........\n");
+ cp.printf("reading..........\n");
// Dump debug info about the card. PICC_HaltA() is automatically called.
DumpToSerial(&(RfChip.uid));
wait_ms(20);
} else if(ch=='2') {
- pc.printf("Writing..... \n");
+ cp.printf("Writing..... \n");
//Calling WriteToRfidTag()
WriteToRfidTag(&(RfChip.uid));
wait_ms(50);