Dependencies:   mbed

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);