This program is for reading and writing from /to MIFARE Classic 1k ,MIFARE Ultralight MF0ICU1,MIFARE Ultralight NTAG213,MIFARE Ultralight NTAG203

Dependencies:   mbed

Committer:
sheralikhan
Date:
Fri May 26 09:57:55 2017 +0000
Revision:
3:f9ed412458d5
Parent:
2:e27413743e1b
Child:
4:9d923c6e6c14
Reading_Writing_MIFARE_Tags_WIZWIKI_W7500

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sheralikhan 3:f9ed412458d5 1 /*--------------------------------------------------------Reading Writing MIFARE Tags---------------------------------------------------------------
sheralikhan 3:f9ed412458d5 2 Note:
sheralikhan 3:f9ed412458d5 3 ---------
sheralikhan 3:f9ed412458d5 4 1.This program is for reading and writing from /to MIFARE Classic 1k ,MIFARE Ultralight MF0ICU1,MIFARE Ultralight NTAG213,MIFARE Ultralight NTAG203
sheralikhan 3:f9ed412458d5 5 2.Generally we are using MBED model WIZnet WIZWiki W7500 to interfacng with MFRC522 Rader and writer device using SPI protocol
sheralikhan 3:f9ed412458d5 6 3.This program is designed such a way that it will take input 1,2 for reading or writing from/to tags
sheralikhan 3:f9ed412458d5 7 4.Once user can entering input based on input it will call read and write function respectively...
sheralikhan 3:f9ed412458d5 8 ----------------------------------------------------------------------------------------------------------------------------------------------------*/
sheralikhan 3:f9ed412458d5 9
sheralikhan 3:f9ed412458d5 10
sheralikhan 3:f9ed412458d5 11
sheralikhan 3:f9ed412458d5 12 /*Test of cheap 13.56Mhz RFID-RC522 module
sheralikhan 3:f9ed412458d5 13 Connect as follows:
sheralikhan 3:f9ed412458d5 14 RFID pins -> WIZWiki-W7500 header CN5 (Arduino-compatible header)
sheralikhan 3:f9ed412458d5 15 --------------------------------------------------------------------------
sheralikhan 3:f9ed412458d5 16 1.RFID IRQ -> Not used. Leave open
sheralikhan 3:f9ed412458d5 17 2.RFID MISO -> WIZWiki-W7500 SPI_MISO =D12
sheralikhan 3:f9ed412458d5 18 3.RFID MOSI -> WIZWiki-W7500 SPI_MOSI =D11
sheralikhan 3:f9ed412458d5 19 4.RFID SCK -> WIZWiki-W7500 SPI_SCK =D13
sheralikhan 3:f9ed412458d5 20 5.RFID SDA -> WIZWiki-W7500 SPI_CS =D10
sheralikhan 3:f9ed412458d5 21 6.RFID RST -> WIZWiki-W7500 =D9
sheralikhan 3:f9ed412458d5 22 3.3V and Gnd to the respective pins*/
sheralikhan 3:f9ed412458d5 23
sheralikhan 3:f9ed412458d5 24
sheralikhan 0:4b5aa5fe3ff4 25
sheralikhan 1:27fb38198323 26
sheralikhan 1:27fb38198323 27 //Adding Library for Mbed
sheralikhan 0:4b5aa5fe3ff4 28 #include "mbed.h"
sheralikhan 1:27fb38198323 29 //Adding Library for MFRC522
sheralikhan 0:4b5aa5fe3ff4 30 #include "MFRC522.h"
sheralikhan 1:27fb38198323 31 //Adding Library for SPI protocol
sheralikhan 0:4b5aa5fe3ff4 32 #include "SPI.h"
sheralikhan 3:f9ed412458d5 33
sheralikhan 3:f9ed412458d5 34 //Define RFID version and date
sheralikhan 0:4b5aa5fe3ff4 35 #define VERSION "RFID_2017_03_20"
sheralikhan 3:f9ed412458d5 36 //Define board
sheralikhan 0:4b5aa5fe3ff4 37 #define CIBLE "WIZwiki-W7500"
sheralikhan 0:4b5aa5fe3ff4 38
sheralikhan 0:4b5aa5fe3ff4 39
sheralikhan 0:4b5aa5fe3ff4 40 // ARMmbed WIZwiki W7500 Pin for MFRC522 SPI Communication
sheralikhan 0:4b5aa5fe3ff4 41 #define SPI_MOSI D11
sheralikhan 0:4b5aa5fe3ff4 42 #define SPI_MISO D12
sheralikhan 0:4b5aa5fe3ff4 43 #define SPI_SCLK D13
sheralikhan 0:4b5aa5fe3ff4 44 #define SPI_CS D10
sheralikhan 0:4b5aa5fe3ff4 45
sheralikhan 1:27fb38198323 46 // WIZWiki-W7500 Pin for MFRC522 reset(pick another D pin if you need D8)
sheralikhan 0:4b5aa5fe3ff4 47 #define MF_RESET D9
sheralikhan 0:4b5aa5fe3ff4 48
sheralikhan 3:f9ed412458d5 49
sheralikhan 3:f9ed412458d5 50 //Define led for identification
sheralikhan 0:4b5aa5fe3ff4 51 DigitalOut LedGreen(D7);
sheralikhan 3:f9ed412458d5 52
sheralikhan 0:4b5aa5fe3ff4 53 //Serial connection to PC for output
sheralikhan 0:4b5aa5fe3ff4 54 Serial pc(USBTX, USBRX);
sheralikhan 0:4b5aa5fe3ff4 55
sheralikhan 3:f9ed412458d5 56
sheralikhan 3:f9ed412458d5 57 //Define or create MFRC522 class and passing pins as arguments
sheralikhan 0:4b5aa5fe3ff4 58 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET);
sheralikhan 0:4b5aa5fe3ff4 59
sheralikhan 0:4b5aa5fe3ff4 60 //* Local functions */
sheralikhan 3:f9ed412458d5 61 void DumpMifareClassicToSerial (MFRC522::Uid *uid, uint8_t piccType, MFRC522::MIFARE_Key *key); //It is reading MIFARE Classic 1k memory block and sector
sheralikhan 3:f9ed412458d5 62 void DumpMifareClassicSectorToSerial(MFRC522::Uid *uid, MFRC522::MIFARE_Key *key, uint8_t sector); //It is reading MIFARE Classic 1k memory block data and sector data
sheralikhan 3:f9ed412458d5 63 void DumpMifareUltralightToSerial (void); //It is reading MIFARE Ultralight memory block,block data and sector,sector data
sheralikhan 3:f9ed412458d5 64 void writeDataUL(void); //It is Writing function to MIFARE Ultralight
sheralikhan 3:f9ed412458d5 65 void writeDataClassic1k(void); //It is Writing function to MIFARE Classic 1k
sheralikhan 2:e27413743e1b 66 uint8_t page;
sheralikhan 0:4b5aa5fe3ff4 67 /**
sheralikhan 0:4b5aa5fe3ff4 68 * Dumps debug info about the selected PICC to Serial.
sheralikhan 0:4b5aa5fe3ff4 69 * On success the PICC is halted after dumping the data.
sheralikhan 0:4b5aa5fe3ff4 70 * For MIFARE Classic the factory default key of 0xFFFFFFFFFFFF is tried.
sheralikhan 0:4b5aa5fe3ff4 71 */
sheralikhan 0:4b5aa5fe3ff4 72
sheralikhan 0:4b5aa5fe3ff4 73 void DumpToSerial(MFRC522::Uid *uid)
sheralikhan 0:4b5aa5fe3ff4 74 {
sheralikhan 3:f9ed412458d5 75 //Declaring MIFARE Classic 1k key
sheralikhan 0:4b5aa5fe3ff4 76 MFRC522::MIFARE_Key key;
sheralikhan 0:4b5aa5fe3ff4 77
sheralikhan 0:4b5aa5fe3ff4 78 // Print Card UID
sheralikhan 0:4b5aa5fe3ff4 79 printf("Card UID: ");
sheralikhan 0:4b5aa5fe3ff4 80 for (uint8_t i = 0; i < RfChip.uid.size; i++) {
sheralikhan 0:4b5aa5fe3ff4 81 printf(" %X", RfChip.uid.uidByte[i]);
sheralikhan 0:4b5aa5fe3ff4 82 }
sheralikhan 0:4b5aa5fe3ff4 83 printf("\n\r");
sheralikhan 0:4b5aa5fe3ff4 84
sheralikhan 0:4b5aa5fe3ff4 85 // Print Card type
sheralikhan 0:4b5aa5fe3ff4 86 uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
sheralikhan 0:4b5aa5fe3ff4 87 printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType));
sheralikhan 2:e27413743e1b 88 wait_ms(50);
sheralikhan 0:4b5aa5fe3ff4 89
sheralikhan 0:4b5aa5fe3ff4 90 // Dump contents
sheralikhan 0:4b5aa5fe3ff4 91 switch (piccType) {
sheralikhan 0:4b5aa5fe3ff4 92 case MFRC522::PICC_TYPE_MIFARE_MINI:
sheralikhan 0:4b5aa5fe3ff4 93 case MFRC522::PICC_TYPE_MIFARE_1K:
sheralikhan 0:4b5aa5fe3ff4 94 case MFRC522::PICC_TYPE_MIFARE_4K:
sheralikhan 0:4b5aa5fe3ff4 95 // All keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
sheralikhan 0:4b5aa5fe3ff4 96 for (uint8_t i = 0; i < 6; i++) {
sheralikhan 0:4b5aa5fe3ff4 97 key.keyByte[i] = 0xFF;
sheralikhan 0:4b5aa5fe3ff4 98 }
sheralikhan 3:f9ed412458d5 99 //Calling MIFARE Classic 1k memory block and sector
sheralikhan 0:4b5aa5fe3ff4 100 DumpMifareClassicToSerial(uid, piccType, &key);
sheralikhan 0:4b5aa5fe3ff4 101 break;
sheralikhan 0:4b5aa5fe3ff4 102
sheralikhan 0:4b5aa5fe3ff4 103 case MFRC522::PICC_TYPE_MIFARE_UL:
sheralikhan 3:f9ed412458d5 104 //Calling MIFARE Ultralight memory block,block data and sector,sector data
sheralikhan 0:4b5aa5fe3ff4 105 DumpMifareUltralightToSerial();
sheralikhan 0:4b5aa5fe3ff4 106 break;
sheralikhan 0:4b5aa5fe3ff4 107
sheralikhan 0:4b5aa5fe3ff4 108 default:
sheralikhan 0:4b5aa5fe3ff4 109 break; // No memory dump here
sheralikhan 0:4b5aa5fe3ff4 110 }
sheralikhan 0:4b5aa5fe3ff4 111
sheralikhan 0:4b5aa5fe3ff4 112 printf("\n\r");
sheralikhan 0:4b5aa5fe3ff4 113
sheralikhan 3:f9ed412458d5 114 RfChip.PICC_HaltA(); // Instructs a PICC in state ACTIVE(*) to go to state HALT.
sheralikhan 0:4b5aa5fe3ff4 115 } // End PICC_DumpToSerial()
sheralikhan 0:4b5aa5fe3ff4 116
sheralikhan 0:4b5aa5fe3ff4 117 /**
sheralikhan 0:4b5aa5fe3ff4 118 * Dumps memory contents of a MIFARE Classic PICC.
sheralikhan 0:4b5aa5fe3ff4 119 * On success the PICC is halted after dumping the data.
sheralikhan 0:4b5aa5fe3ff4 120 */
sheralikhan 0:4b5aa5fe3ff4 121 void DumpMifareClassicToSerial(MFRC522::Uid *uid, uint8_t piccType, MFRC522::MIFARE_Key *key)
sheralikhan 0:4b5aa5fe3ff4 122 {
sheralikhan 0:4b5aa5fe3ff4 123 uint8_t no_of_sectors = 0;
sheralikhan 0:4b5aa5fe3ff4 124 switch (piccType) {
sheralikhan 0:4b5aa5fe3ff4 125 case MFRC522::PICC_TYPE_MIFARE_MINI:
sheralikhan 0:4b5aa5fe3ff4 126 // Has 5 sectors * 4 blocks/sector * 16 bytes/block = 320 bytes.
sheralikhan 0:4b5aa5fe3ff4 127 no_of_sectors = 5;
sheralikhan 0:4b5aa5fe3ff4 128 break;
sheralikhan 0:4b5aa5fe3ff4 129
sheralikhan 0:4b5aa5fe3ff4 130 case MFRC522::PICC_TYPE_MIFARE_1K:
sheralikhan 0:4b5aa5fe3ff4 131 // Has 16 sectors * 4 blocks/sector * 16 bytes/block = 1024 bytes.
sheralikhan 0:4b5aa5fe3ff4 132 no_of_sectors = 16;
sheralikhan 0:4b5aa5fe3ff4 133 break;
sheralikhan 0:4b5aa5fe3ff4 134
sheralikhan 0:4b5aa5fe3ff4 135 case MFRC522::PICC_TYPE_MIFARE_4K:
sheralikhan 0:4b5aa5fe3ff4 136 // Has (32 sectors * 4 blocks/sector + 8 sectors * 16 blocks/sector) * 16 bytes/block = 4096 bytes.
sheralikhan 0:4b5aa5fe3ff4 137 no_of_sectors = 40;
sheralikhan 0:4b5aa5fe3ff4 138 break;
sheralikhan 0:4b5aa5fe3ff4 139
sheralikhan 0:4b5aa5fe3ff4 140 default:
sheralikhan 0:4b5aa5fe3ff4 141 // Should not happen. Ignore.
sheralikhan 0:4b5aa5fe3ff4 142 break;
sheralikhan 0:4b5aa5fe3ff4 143 }
sheralikhan 0:4b5aa5fe3ff4 144
sheralikhan 0:4b5aa5fe3ff4 145 // Dump sectors, highest address first.
sheralikhan 0:4b5aa5fe3ff4 146 if (no_of_sectors) {
sheralikhan 0:4b5aa5fe3ff4 147 printf("Sector Block 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AccessBits \n\r");
sheralikhan 0:4b5aa5fe3ff4 148 printf("----------------------------------------------------------------------------------------- \n\r");
sheralikhan 0:4b5aa5fe3ff4 149 for (int8_t i = no_of_sectors-1 ; i>= 0; i--) {
sheralikhan 0:4b5aa5fe3ff4 150
sheralikhan 0:4b5aa5fe3ff4 151 DumpMifareClassicSectorToSerial(uid, key, i);
sheralikhan 0:4b5aa5fe3ff4 152
sheralikhan 0:4b5aa5fe3ff4 153
sheralikhan 0:4b5aa5fe3ff4 154 }
sheralikhan 0:4b5aa5fe3ff4 155 }
sheralikhan 0:4b5aa5fe3ff4 156
sheralikhan 0:4b5aa5fe3ff4 157 RfChip.PICC_HaltA(); // Halt the PICC before stopping the encrypted session.
sheralikhan 0:4b5aa5fe3ff4 158 RfChip.PCD_StopCrypto1();
sheralikhan 0:4b5aa5fe3ff4 159 } // End PICC_DumpMifareClassicToSerial()
sheralikhan 0:4b5aa5fe3ff4 160
sheralikhan 0:4b5aa5fe3ff4 161 /**
sheralikhan 0:4b5aa5fe3ff4 162 * Dumps memory contents of a sector of a MIFARE Classic PICC.
sheralikhan 0:4b5aa5fe3ff4 163 * Uses PCD_Authenticate(), MIFARE_Read() and PCD_StopCrypto1.
sheralikhan 0:4b5aa5fe3ff4 164 * Always uses PICC_CMD_MF_AUTH_KEY_A because only Key A can always read the sector trailer access bits.
sheralikhan 0:4b5aa5fe3ff4 165 */
sheralikhan 0:4b5aa5fe3ff4 166 void DumpMifareClassicSectorToSerial(MFRC522::Uid *uid, MFRC522::MIFARE_Key *key, uint8_t sector)
sheralikhan 0:4b5aa5fe3ff4 167 {
sheralikhan 3:f9ed412458d5 168 uint8_t status; // Set what type of error is found
sheralikhan 3:f9ed412458d5 169 uint8_t firstBlock; // Address of lowest address to dump actually last block dumped)
sheralikhan 3:f9ed412458d5 170 uint8_t no_of_blocks; // Number of blocks in sector
sheralikhan 3:f9ed412458d5 171 bool isSectorTrailer; // Set to true while handling the "last" (ie highest address) in the sector.
sheralikhan 0:4b5aa5fe3ff4 172
sheralikhan 0:4b5aa5fe3ff4 173 // The access bits are stored in a peculiar fashion.
sheralikhan 0:4b5aa5fe3ff4 174 // There are four groups:
sheralikhan 0:4b5aa5fe3ff4 175 // g[3] Access bits for the sector trailer, block 3 (for sectors 0-31) or block 15 (for sectors 32-39)
sheralikhan 0:4b5aa5fe3ff4 176 // g[2] Access bits for block 2 (for sectors 0-31) or blocks 10-14 (for sectors 32-39)
sheralikhan 0:4b5aa5fe3ff4 177 // g[1] Access bits for block 1 (for sectors 0-31) or blocks 5-9 (for sectors 32-39)
sheralikhan 0:4b5aa5fe3ff4 178 // g[0] Access bits for block 0 (for sectors 0-31) or blocks 0-4 (for sectors 32-39)
sheralikhan 0:4b5aa5fe3ff4 179 // Each group has access bits [C1 C2 C3]. In this code C1 is MSB and C3 is LSB.
sheralikhan 0:4b5aa5fe3ff4 180 // The four CX bits are stored together in a nible cx and an inverted nible cx_.
sheralikhan 0:4b5aa5fe3ff4 181 uint8_t c1, c2, c3; // Nibbles
sheralikhan 0:4b5aa5fe3ff4 182 uint8_t c1_, c2_, c3_; // Inverted nibbles
sheralikhan 0:4b5aa5fe3ff4 183 bool invertedError = false; // True if one of the inverted nibbles did not match
sheralikhan 0:4b5aa5fe3ff4 184 uint8_t g[4]; // Access bits for each of the four groups.
sheralikhan 0:4b5aa5fe3ff4 185 uint8_t group; // 0-3 - active group for access bits
sheralikhan 0:4b5aa5fe3ff4 186 bool firstInGroup; // True for the first block dumped in the group
sheralikhan 0:4b5aa5fe3ff4 187
sheralikhan 0:4b5aa5fe3ff4 188 // Determine position and size of sector.
sheralikhan 0:4b5aa5fe3ff4 189 if (sector < 32) {
sheralikhan 0:4b5aa5fe3ff4 190 // Sectors 0..31 has 4 blocks each
sheralikhan 0:4b5aa5fe3ff4 191 no_of_blocks = 4;
sheralikhan 0:4b5aa5fe3ff4 192 firstBlock = sector * no_of_blocks;
sheralikhan 0:4b5aa5fe3ff4 193 } else if (sector < 40) {
sheralikhan 0:4b5aa5fe3ff4 194 // Sectors 32-39 has 16 blocks each
sheralikhan 0:4b5aa5fe3ff4 195 no_of_blocks = 16;
sheralikhan 0:4b5aa5fe3ff4 196 firstBlock = 128 + (sector - 32) * no_of_blocks;
sheralikhan 0:4b5aa5fe3ff4 197 } else {
sheralikhan 0:4b5aa5fe3ff4 198 // Illegal input, no MIFARE Classic PICC has more than 40 sectors.
sheralikhan 0:4b5aa5fe3ff4 199 return;
sheralikhan 0:4b5aa5fe3ff4 200 }
sheralikhan 0:4b5aa5fe3ff4 201
sheralikhan 0:4b5aa5fe3ff4 202 // Dump blocks, highest address first.
sheralikhan 3:f9ed412458d5 203 uint8_t byteCount; //No of reading data
sheralikhan 3:f9ed412458d5 204 uint8_t buffer[18]; //Reading data of buffer
sheralikhan 3:f9ed412458d5 205 uint8_t blockAddr; // No of Sector
sheralikhan 0:4b5aa5fe3ff4 206 isSectorTrailer = true;
sheralikhan 0:4b5aa5fe3ff4 207 for (int8_t blockOffset = no_of_blocks - 1; blockOffset >= 0; blockOffset--) {
sheralikhan 0:4b5aa5fe3ff4 208 blockAddr = firstBlock + blockOffset;
sheralikhan 0:4b5aa5fe3ff4 209
sheralikhan 0:4b5aa5fe3ff4 210 // Sector number - only on first line
sheralikhan 0:4b5aa5fe3ff4 211 if (isSectorTrailer) {
sheralikhan 0:4b5aa5fe3ff4 212 printf(" %2d ", sector);
sheralikhan 0:4b5aa5fe3ff4 213 } else {
sheralikhan 0:4b5aa5fe3ff4 214 printf(" ");
sheralikhan 0:4b5aa5fe3ff4 215 }
sheralikhan 0:4b5aa5fe3ff4 216
sheralikhan 0:4b5aa5fe3ff4 217 // Block number
sheralikhan 0:4b5aa5fe3ff4 218 printf(" %3d ", blockAddr);
sheralikhan 0:4b5aa5fe3ff4 219
sheralikhan 0:4b5aa5fe3ff4 220 // Establish encrypted communications before reading the first block
sheralikhan 3:f9ed412458d5 221 /*While MFRC522 reader/writer is not uthenticate MIFARE card then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 0:4b5aa5fe3ff4 222 if (isSectorTrailer) {
sheralikhan 0:4b5aa5fe3ff4 223 status = RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, firstBlock, key, uid);
sheralikhan 0:4b5aa5fe3ff4 224 if (status != MFRC522::STATUS_OK) {
sheralikhan 0:4b5aa5fe3ff4 225 printf("PCD_Authenticate() failed: %s \r\n", RfChip.GetStatusCodeName(status));
sheralikhan 0:4b5aa5fe3ff4 226 return;
sheralikhan 0:4b5aa5fe3ff4 227 }
sheralikhan 0:4b5aa5fe3ff4 228 }
sheralikhan 0:4b5aa5fe3ff4 229
sheralikhan 0:4b5aa5fe3ff4 230 // Read block
sheralikhan 3:f9ed412458d5 231 /*If MFRC522 reader/writer is uthenticate MIFARE card but it not uthenticate key then it will through MIFARE_Read() failed: Timeout in communication */
sheralikhan 0:4b5aa5fe3ff4 232 byteCount = sizeof(buffer);
sheralikhan 0:4b5aa5fe3ff4 233 status = RfChip.MIFARE_Read(blockAddr, buffer, &byteCount);
sheralikhan 0:4b5aa5fe3ff4 234 if (status != MFRC522::STATUS_OK) {
sheralikhan 0:4b5aa5fe3ff4 235 printf("MIFARE_Read() failed: %s \r\n", RfChip.GetStatusCodeName(status));
sheralikhan 0:4b5aa5fe3ff4 236 continue;
sheralikhan 0:4b5aa5fe3ff4 237 }
sheralikhan 0:4b5aa5fe3ff4 238
sheralikhan 0:4b5aa5fe3ff4 239 // Dump data
sheralikhan 0:4b5aa5fe3ff4 240 for (uint8_t index = 0; index < 16; index++) {
sheralikhan 2:e27413743e1b 241 printf(" %2X", buffer[index]);
sheralikhan 0:4b5aa5fe3ff4 242 }
sheralikhan 0:4b5aa5fe3ff4 243
sheralikhan 3:f9ed412458d5 244
sheralikhan 3:f9ed412458d5 245 //This block is printing access bit......................................................................................
sheralikhan 3:f9ed412458d5 246
sheralikhan 0:4b5aa5fe3ff4 247 // Parse sector trailer data
sheralikhan 0:4b5aa5fe3ff4 248 if (isSectorTrailer) {
sheralikhan 0:4b5aa5fe3ff4 249 c1 = buffer[7] >> 4;
sheralikhan 0:4b5aa5fe3ff4 250 c2 = buffer[8] & 0xF;
sheralikhan 0:4b5aa5fe3ff4 251 c3 = buffer[8] >> 4;
sheralikhan 0:4b5aa5fe3ff4 252 c1_ = buffer[6] & 0xF;
sheralikhan 0:4b5aa5fe3ff4 253 c2_ = buffer[6] >> 4;
sheralikhan 0:4b5aa5fe3ff4 254 c3_ = buffer[7] & 0xF;
sheralikhan 0:4b5aa5fe3ff4 255 invertedError = (c1 != (~c1_ & 0xF)) || (c2 != (~c2_ & 0xF)) || (c3 != (~c3_ & 0xF));
sheralikhan 0:4b5aa5fe3ff4 256
sheralikhan 0:4b5aa5fe3ff4 257 g[0] = ((c1 & 1) << 2) | ((c2 & 1) << 1) | ((c3 & 1) << 0);
sheralikhan 0:4b5aa5fe3ff4 258 g[1] = ((c1 & 2) << 1) | ((c2 & 2) << 0) | ((c3 & 2) >> 1);
sheralikhan 0:4b5aa5fe3ff4 259 g[2] = ((c1 & 4) << 0) | ((c2 & 4) >> 1) | ((c3 & 4) >> 2);
sheralikhan 0:4b5aa5fe3ff4 260 g[3] = ((c1 & 8) >> 1) | ((c2 & 8) >> 2) | ((c3 & 8) >> 3);
sheralikhan 0:4b5aa5fe3ff4 261 isSectorTrailer = false;
sheralikhan 0:4b5aa5fe3ff4 262 }
sheralikhan 0:4b5aa5fe3ff4 263
sheralikhan 0:4b5aa5fe3ff4 264 // Which access group is this block in?
sheralikhan 0:4b5aa5fe3ff4 265 if (no_of_blocks == 4) {
sheralikhan 0:4b5aa5fe3ff4 266 group = blockOffset;
sheralikhan 0:4b5aa5fe3ff4 267 firstInGroup = true;
sheralikhan 0:4b5aa5fe3ff4 268 } else {
sheralikhan 0:4b5aa5fe3ff4 269 group = blockOffset / 5;
sheralikhan 0:4b5aa5fe3ff4 270 firstInGroup = (group == 3) || (group != (blockOffset + 1) / 5);
sheralikhan 0:4b5aa5fe3ff4 271 }
sheralikhan 0:4b5aa5fe3ff4 272
sheralikhan 0:4b5aa5fe3ff4 273 if (firstInGroup) {
sheralikhan 0:4b5aa5fe3ff4 274 // Print access bits
sheralikhan 0:4b5aa5fe3ff4 275 printf(" [ %d %d %d ] ", (g[group] >> 2) & 1, (g[group] >> 1) & 1, (g[group] >> 0) & 1);
sheralikhan 0:4b5aa5fe3ff4 276 if (invertedError) {
sheralikhan 0:4b5aa5fe3ff4 277 printf(" Inverted access bits did not match! ");
sheralikhan 0:4b5aa5fe3ff4 278 }
sheralikhan 0:4b5aa5fe3ff4 279 }
sheralikhan 0:4b5aa5fe3ff4 280
sheralikhan 0:4b5aa5fe3ff4 281 if (group != 3 && (g[group] == 1 || g[group] == 6)) {
sheralikhan 0:4b5aa5fe3ff4 282 // Not a sector trailer, a value block
sheralikhan 0:4b5aa5fe3ff4 283 printf(" Addr = 0x%02X, Value = 0x%02X%02X%02X%02X", buffer[12],
sheralikhan 0:4b5aa5fe3ff4 284 buffer[3],
sheralikhan 0:4b5aa5fe3ff4 285 buffer[2],
sheralikhan 0:4b5aa5fe3ff4 286 buffer[1],
sheralikhan 0:4b5aa5fe3ff4 287 buffer[0]);
sheralikhan 0:4b5aa5fe3ff4 288 }
sheralikhan 3:f9ed412458d5 289
sheralikhan 3:f9ed412458d5 290 //END....................................................................................................................
sheralikhan 3:f9ed412458d5 291
sheralikhan 0:4b5aa5fe3ff4 292 printf("\n\r");
sheralikhan 0:4b5aa5fe3ff4 293 }
sheralikhan 0:4b5aa5fe3ff4 294
sheralikhan 0:4b5aa5fe3ff4 295 return;
sheralikhan 0:4b5aa5fe3ff4 296 } // End PICC_DumpMifareClassicSectorToSerial()
sheralikhan 0:4b5aa5fe3ff4 297
sheralikhan 0:4b5aa5fe3ff4 298 /**
sheralikhan 0:4b5aa5fe3ff4 299 * Dumps memory contents of a MIFARE Ultralight PICC.
sheralikhan 0:4b5aa5fe3ff4 300 */
sheralikhan 0:4b5aa5fe3ff4 301 void DumpMifareUltralightToSerial(void)
sheralikhan 0:4b5aa5fe3ff4 302 {
sheralikhan 3:f9ed412458d5 303 uint8_t status; // Set what type of error is found
sheralikhan 3:f9ed412458d5 304 uint8_t byteCount; //No of reading data
sheralikhan 3:f9ed412458d5 305 uint8_t buffer[18]; //Reading data from buffer
sheralikhan 0:4b5aa5fe3ff4 306 uint8_t i;
sheralikhan 2:e27413743e1b 307 printf("Page 0 1 2 3 \n");
sheralikhan 0:4b5aa5fe3ff4 308 // Try the mpages of the original Ultralight. Ultralight C has more pages.
sheralikhan 2:e27413743e1b 309 for ( page = 0; page < 16; page +=4) {
sheralikhan 0:4b5aa5fe3ff4 310 // Read pages
sheralikhan 3:f9ed412458d5 311 /*If MFRC522 reader/writer is uthenticate MIFARE card but it not uthenticate key then it will through MIFARE_Read() failed: Timeout in communication */
sheralikhan 0:4b5aa5fe3ff4 312 byteCount = sizeof(buffer);
sheralikhan 0:4b5aa5fe3ff4 313 status = RfChip.MIFARE_Read(page, buffer, &byteCount);
sheralikhan 0:4b5aa5fe3ff4 314 if (status != MFRC522::STATUS_OK) {
sheralikhan 0:4b5aa5fe3ff4 315 printf("MIFARE_Read() failed: %s \n\r", RfChip.GetStatusCodeName(status));
sheralikhan 0:4b5aa5fe3ff4 316 break;
sheralikhan 0:4b5aa5fe3ff4 317 }
sheralikhan 0:4b5aa5fe3ff4 318
sheralikhan 0:4b5aa5fe3ff4 319 // Dump data
sheralikhan 0:4b5aa5fe3ff4 320 for (uint8_t offset = 0; offset < 4; offset++) {
sheralikhan 0:4b5aa5fe3ff4 321 i = page + offset;
sheralikhan 0:4b5aa5fe3ff4 322 printf(" %2d ", i); // Pad with spaces
sheralikhan 0:4b5aa5fe3ff4 323 for (uint8_t index = 0; index < 4; index++) {
sheralikhan 0:4b5aa5fe3ff4 324 i = 4 * offset + index;
sheralikhan 0:4b5aa5fe3ff4 325 printf(" %02X ", buffer[i]);
sheralikhan 0:4b5aa5fe3ff4 326 }
sheralikhan 0:4b5aa5fe3ff4 327
sheralikhan 0:4b5aa5fe3ff4 328 printf("\n\r");
sheralikhan 0:4b5aa5fe3ff4 329 }
sheralikhan 0:4b5aa5fe3ff4 330 }
sheralikhan 0:4b5aa5fe3ff4 331 } // End PICC_DumpMifareUltralightToSerial()
sheralikhan 0:4b5aa5fe3ff4 332
sheralikhan 2:e27413743e1b 333
sheralikhan 2:e27413743e1b 334 //Create function for writting data
sheralikhan 2:e27413743e1b 335 void WriteToRfidTag(MFRC522::Uid *uid)
sheralikhan 2:e27413743e1b 336 {
sheralikhan 2:e27413743e1b 337
sheralikhan 2:e27413743e1b 338 MFRC522::MIFARE_Key key;
sheralikhan 2:e27413743e1b 339
sheralikhan 2:e27413743e1b 340 // Print Card UID
sheralikhan 2:e27413743e1b 341 printf("Card UID: ");
sheralikhan 2:e27413743e1b 342 for (uint8_t i = 0; i < RfChip.uid.size; i++) {
sheralikhan 2:e27413743e1b 343 printf(" %X", RfChip.uid.uidByte[i]);
sheralikhan 2:e27413743e1b 344 }
sheralikhan 2:e27413743e1b 345 printf("\n\r");
sheralikhan 2:e27413743e1b 346
sheralikhan 2:e27413743e1b 347 // Print Card type
sheralikhan 2:e27413743e1b 348 uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
sheralikhan 2:e27413743e1b 349 printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType));
sheralikhan 2:e27413743e1b 350 wait_ms(50);
sheralikhan 2:e27413743e1b 351
sheralikhan 2:e27413743e1b 352 // Dump contents
sheralikhan 2:e27413743e1b 353 switch (piccType) {
sheralikhan 2:e27413743e1b 354 case MFRC522::PICC_TYPE_MIFARE_MINI:
sheralikhan 2:e27413743e1b 355 case MFRC522::PICC_TYPE_MIFARE_1K:
sheralikhan 2:e27413743e1b 356 case MFRC522::PICC_TYPE_MIFARE_4K:
sheralikhan 2:e27413743e1b 357 // All keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
sheralikhan 2:e27413743e1b 358 for (uint8_t i = 0; i < 6; i++) {
sheralikhan 2:e27413743e1b 359 key.keyByte[i] = 0xFF;
sheralikhan 2:e27413743e1b 360 }
sheralikhan 2:e27413743e1b 361 writeDataClassic1k(); // WriteToRfidTag(&(RfChip.uid))
sheralikhan 2:e27413743e1b 362 break;
sheralikhan 2:e27413743e1b 363
sheralikhan 2:e27413743e1b 364 case MFRC522::PICC_TYPE_MIFARE_UL:
sheralikhan 2:e27413743e1b 365 writeDataUL();
sheralikhan 2:e27413743e1b 366 break;
sheralikhan 2:e27413743e1b 367 default:
sheralikhan 2:e27413743e1b 368 break; // No memory dump here
sheralikhan 2:e27413743e1b 369 }
sheralikhan 2:e27413743e1b 370 printf("\n\r");
sheralikhan 2:e27413743e1b 371 }
sheralikhan 2:e27413743e1b 372
sheralikhan 2:e27413743e1b 373 void writeDataClassic1k()
sheralikhan 2:e27413743e1b 374 {
sheralikhan 2:e27413743e1b 375 //Declaration of MFRC522 key
sheralikhan 2:e27413743e1b 376 MFRC522::MIFARE_Key key;
sheralikhan 2:e27413743e1b 377 //Declaration of MFRC522 status
sheralikhan 2:e27413743e1b 378 MFRC522::StatusCode status;
sheralikhan 2:e27413743e1b 379 uint8_t buffer[16];
sheralikhan 2:e27413743e1b 380 uint8_t block;
sheralikhan 2:e27413743e1b 381
sheralikhan 2:e27413743e1b 382
sheralikhan 2:e27413743e1b 383 while(true) {
sheralikhan 3:f9ed412458d5 384
sheralikhan 3:f9ed412458d5 385 // All keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
sheralikhan 2:e27413743e1b 386 for (uint8_t i = 0; i < 6; i++) {
sheralikhan 2:e27413743e1b 387 key.keyByte[i] = 0xFF;
sheralikhan 2:e27413743e1b 388 }
sheralikhan 2:e27413743e1b 389
sheralikhan 2:e27413743e1b 390 pc.printf("Enter 1 block: "); // Enter Data
sheralikhan 2:e27413743e1b 391
sheralikhan 2:e27413743e1b 392 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 393 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 394 }
sheralikhan 2:e27413743e1b 395 printf("\n\r");
sheralikhan 2:e27413743e1b 396 block = 1;
sheralikhan 3:f9ed412458d5 397 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 398 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 399 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 400 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 401 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 402 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 403
sheralikhan 2:e27413743e1b 404 continue;
sheralikhan 2:e27413743e1b 405 }
sheralikhan 2:e27413743e1b 406 // Write block
sheralikhan 2:e27413743e1b 407 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 408 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 409 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 410 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 411
sheralikhan 2:e27413743e1b 412 continue;
sheralikhan 2:e27413743e1b 413 } else {
sheralikhan 2:e27413743e1b 414 LedGreen=1;
sheralikhan 2:e27413743e1b 415 pc.printf("Succesfully Written to block 1: ");
sheralikhan 2:e27413743e1b 416 }
sheralikhan 2:e27413743e1b 417 printf("\n\r");
sheralikhan 2:e27413743e1b 418 pc.printf("Enter 2 block: "); // Enter Data
sheralikhan 2:e27413743e1b 419
sheralikhan 2:e27413743e1b 420 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 421 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 422 }
sheralikhan 2:e27413743e1b 423 printf("\n\r");
sheralikhan 2:e27413743e1b 424 block = 2;
sheralikhan 3:f9ed412458d5 425 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 426 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 427 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 428 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 429 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 430 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 431
sheralikhan 2:e27413743e1b 432 continue;
sheralikhan 2:e27413743e1b 433 }
sheralikhan 2:e27413743e1b 434 // Write block
sheralikhan 2:e27413743e1b 435 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 436 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 437 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 438 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 439
sheralikhan 2:e27413743e1b 440 continue;
sheralikhan 2:e27413743e1b 441 } else {
sheralikhan 2:e27413743e1b 442 LedGreen = 1;
sheralikhan 2:e27413743e1b 443 pc.printf("Succesfully Written to block 2: ");
sheralikhan 2:e27413743e1b 444 }
sheralikhan 2:e27413743e1b 445 printf("\n\r");
sheralikhan 2:e27413743e1b 446 pc.printf("Enter 4 block: "); // Enter Data
sheralikhan 2:e27413743e1b 447
sheralikhan 2:e27413743e1b 448 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 449 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 450 }
sheralikhan 2:e27413743e1b 451 printf("\n\r");
sheralikhan 2:e27413743e1b 452 block = 4;
sheralikhan 3:f9ed412458d5 453 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 454 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 455 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 456 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 457 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 458 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 459
sheralikhan 2:e27413743e1b 460 continue;
sheralikhan 2:e27413743e1b 461 }
sheralikhan 2:e27413743e1b 462 // Write block
sheralikhan 2:e27413743e1b 463 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 464 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 465 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 466 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 467
sheralikhan 2:e27413743e1b 468 continue;
sheralikhan 2:e27413743e1b 469 } else {
sheralikhan 2:e27413743e1b 470 LedGreen = 1;
sheralikhan 2:e27413743e1b 471 pc.printf("Succesfully Written to block 4: ");
sheralikhan 2:e27413743e1b 472 }
sheralikhan 2:e27413743e1b 473 printf("\n\r");
sheralikhan 2:e27413743e1b 474 pc.printf("Enter 5 block: "); // Enter Data
sheralikhan 2:e27413743e1b 475
sheralikhan 2:e27413743e1b 476 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 477 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 478 }
sheralikhan 2:e27413743e1b 479 printf("\n\r");
sheralikhan 2:e27413743e1b 480 block = 5;
sheralikhan 3:f9ed412458d5 481 /*While MFRC522 reader/writer is not uthenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 482 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 483 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 484 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 485 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 486 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 487
sheralikhan 2:e27413743e1b 488 continue;
sheralikhan 2:e27413743e1b 489 }
sheralikhan 2:e27413743e1b 490
sheralikhan 2:e27413743e1b 491 // Write block
sheralikhan 2:e27413743e1b 492 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 493 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 494 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 495 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 496
sheralikhan 2:e27413743e1b 497 continue;
sheralikhan 2:e27413743e1b 498 } else {
sheralikhan 2:e27413743e1b 499 LedGreen = 1;
sheralikhan 2:e27413743e1b 500 pc.printf("Succesfully Written to block 5: ");
sheralikhan 2:e27413743e1b 501 }
sheralikhan 2:e27413743e1b 502 printf("\n\r");
sheralikhan 2:e27413743e1b 503 pc.printf("Enter 6 block: "); // Enter Data
sheralikhan 2:e27413743e1b 504
sheralikhan 2:e27413743e1b 505 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 506 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 507 }
sheralikhan 2:e27413743e1b 508 printf("\n\r");
sheralikhan 2:e27413743e1b 509 block = 6;
sheralikhan 3:f9ed412458d5 510 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 511 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 512 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 513 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 514 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 515 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 516
sheralikhan 2:e27413743e1b 517 continue;
sheralikhan 2:e27413743e1b 518 }
sheralikhan 2:e27413743e1b 519 // Write block
sheralikhan 2:e27413743e1b 520 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 521 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 522 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 523 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 524
sheralikhan 2:e27413743e1b 525 continue;
sheralikhan 2:e27413743e1b 526 } else {
sheralikhan 2:e27413743e1b 527 LedGreen=1;
sheralikhan 2:e27413743e1b 528 pc.printf("Succesfully Written to block 6: ");
sheralikhan 2:e27413743e1b 529 }
sheralikhan 2:e27413743e1b 530 printf("\n\r");
sheralikhan 2:e27413743e1b 531 printf("\n\r");
sheralikhan 2:e27413743e1b 532 pc.printf("Enter 8 block: "); // Enter Data
sheralikhan 2:e27413743e1b 533 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 534 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 535 }
sheralikhan 2:e27413743e1b 536 printf("\n\r");
sheralikhan 2:e27413743e1b 537 block = 8;
sheralikhan 3:f9ed412458d5 538 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 539 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 540 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 541 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 542 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 543 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 544
sheralikhan 2:e27413743e1b 545 continue;
sheralikhan 2:e27413743e1b 546 }
sheralikhan 2:e27413743e1b 547
sheralikhan 2:e27413743e1b 548 // Write block
sheralikhan 2:e27413743e1b 549 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 550 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 551 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 552 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 553
sheralikhan 2:e27413743e1b 554 continue;
sheralikhan 2:e27413743e1b 555 } else {
sheralikhan 2:e27413743e1b 556
sheralikhan 2:e27413743e1b 557 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 558 }
sheralikhan 2:e27413743e1b 559 printf("\n\r");
sheralikhan 2:e27413743e1b 560 pc.printf("Enter 10 block: "); // Enter Data
sheralikhan 2:e27413743e1b 561 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 562 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 563 }
sheralikhan 2:e27413743e1b 564 printf("\n\r");
sheralikhan 2:e27413743e1b 565 block = 10;
sheralikhan 3:f9ed412458d5 566 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 567 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 568 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 569 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 570 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 571 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 572
sheralikhan 2:e27413743e1b 573 continue;
sheralikhan 2:e27413743e1b 574 }
sheralikhan 2:e27413743e1b 575
sheralikhan 2:e27413743e1b 576 // Write block
sheralikhan 2:e27413743e1b 577 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 578 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 579 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 580 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 581
sheralikhan 2:e27413743e1b 582 continue;
sheralikhan 2:e27413743e1b 583 } else {
sheralikhan 3:f9ed412458d5 584
sheralikhan 2:e27413743e1b 585 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 586 }
sheralikhan 2:e27413743e1b 587 printf("\n\r");
sheralikhan 2:e27413743e1b 588 pc.printf("Enter 12 block: "); // Enter Data
sheralikhan 2:e27413743e1b 589 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 590 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 591 }
sheralikhan 2:e27413743e1b 592 printf("\n\r");
sheralikhan 2:e27413743e1b 593 block = 12;
sheralikhan 3:f9ed412458d5 594 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 595 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 596 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 597 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 598 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 599 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 600
sheralikhan 2:e27413743e1b 601 continue;
sheralikhan 2:e27413743e1b 602 }
sheralikhan 2:e27413743e1b 603
sheralikhan 2:e27413743e1b 604 // Write block
sheralikhan 2:e27413743e1b 605 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 606 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 607 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 608 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 609
sheralikhan 2:e27413743e1b 610 continue;
sheralikhan 2:e27413743e1b 611 } else {
sheralikhan 3:f9ed412458d5 612
sheralikhan 2:e27413743e1b 613 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 614 }
sheralikhan 2:e27413743e1b 615 printf("\n\r");
sheralikhan 2:e27413743e1b 616 pc.printf("Enter 13 block: "); // Enter Data
sheralikhan 2:e27413743e1b 617 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 618 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 619 }
sheralikhan 2:e27413743e1b 620 printf("\n\r");
sheralikhan 2:e27413743e1b 621 block = 13;
sheralikhan 3:f9ed412458d5 622 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 623 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 624 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 625 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 626 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 627 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 628
sheralikhan 2:e27413743e1b 629 continue;
sheralikhan 2:e27413743e1b 630 }
sheralikhan 2:e27413743e1b 631
sheralikhan 2:e27413743e1b 632 // Write block
sheralikhan 2:e27413743e1b 633 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 634 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 635 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 636 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 637
sheralikhan 2:e27413743e1b 638 continue;
sheralikhan 2:e27413743e1b 639 } else {
sheralikhan 3:f9ed412458d5 640
sheralikhan 2:e27413743e1b 641 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 642 }
sheralikhan 2:e27413743e1b 643 printf("\n\r");
sheralikhan 2:e27413743e1b 644 pc.printf("Enter 14 block: "); // Enter Data
sheralikhan 2:e27413743e1b 645 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 646 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 647 }
sheralikhan 2:e27413743e1b 648 printf("\n\r");
sheralikhan 2:e27413743e1b 649 block = 14;
sheralikhan 3:f9ed412458d5 650 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 651 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 652 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 653 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 654 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 655 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 656
sheralikhan 2:e27413743e1b 657 continue;
sheralikhan 2:e27413743e1b 658 }
sheralikhan 2:e27413743e1b 659
sheralikhan 2:e27413743e1b 660 // Write block
sheralikhan 2:e27413743e1b 661 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 662 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 663 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 664 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 665
sheralikhan 2:e27413743e1b 666 continue;
sheralikhan 2:e27413743e1b 667 } else {
sheralikhan 3:f9ed412458d5 668
sheralikhan 2:e27413743e1b 669 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 670 }
sheralikhan 2:e27413743e1b 671
sheralikhan 2:e27413743e1b 672
sheralikhan 2:e27413743e1b 673 printf("\n\r");
sheralikhan 2:e27413743e1b 674 pc.printf("Enter 16 block: "); // Enter Data
sheralikhan 2:e27413743e1b 675 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 676 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 677 }
sheralikhan 2:e27413743e1b 678 printf("\n\r");
sheralikhan 2:e27413743e1b 679 block = 16;
sheralikhan 3:f9ed412458d5 680 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 681 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 682 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 683 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 684 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 685 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 686
sheralikhan 2:e27413743e1b 687 continue;
sheralikhan 2:e27413743e1b 688 }
sheralikhan 2:e27413743e1b 689
sheralikhan 2:e27413743e1b 690 // Write block
sheralikhan 2:e27413743e1b 691 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 692 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 693 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 694 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 695
sheralikhan 2:e27413743e1b 696 continue;
sheralikhan 2:e27413743e1b 697 } else {
sheralikhan 3:f9ed412458d5 698
sheralikhan 2:e27413743e1b 699 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 700 }
sheralikhan 2:e27413743e1b 701 printf("\n\r");
sheralikhan 2:e27413743e1b 702 pc.printf("Enter 17 block: "); // Enter Data
sheralikhan 2:e27413743e1b 703 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 704 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 705 }
sheralikhan 2:e27413743e1b 706 printf("\n\r");
sheralikhan 2:e27413743e1b 707 block = 17;
sheralikhan 3:f9ed412458d5 708 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 709 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 710 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 711 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 712 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 713 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 714
sheralikhan 2:e27413743e1b 715 continue;
sheralikhan 2:e27413743e1b 716 }
sheralikhan 2:e27413743e1b 717
sheralikhan 2:e27413743e1b 718 // Write block
sheralikhan 2:e27413743e1b 719 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 720 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 721 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 722 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 723
sheralikhan 2:e27413743e1b 724 continue;
sheralikhan 2:e27413743e1b 725 } else {
sheralikhan 3:f9ed412458d5 726
sheralikhan 2:e27413743e1b 727 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 728 }
sheralikhan 2:e27413743e1b 729 printf("\n\r");
sheralikhan 2:e27413743e1b 730 pc.printf("Enter 18 block: "); // Enter Data
sheralikhan 2:e27413743e1b 731 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 732 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 733 }
sheralikhan 2:e27413743e1b 734 printf("\n\r");
sheralikhan 2:e27413743e1b 735 block = 18;
sheralikhan 3:f9ed412458d5 736 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 737 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 738 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 739 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 740 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 741 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 742
sheralikhan 2:e27413743e1b 743 continue;
sheralikhan 2:e27413743e1b 744 }
sheralikhan 2:e27413743e1b 745
sheralikhan 2:e27413743e1b 746 // Write block
sheralikhan 2:e27413743e1b 747 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 748 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 749 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 750 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 751
sheralikhan 2:e27413743e1b 752 continue;
sheralikhan 2:e27413743e1b 753 } else {
sheralikhan 3:f9ed412458d5 754
sheralikhan 2:e27413743e1b 755 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 756 }
sheralikhan 2:e27413743e1b 757
sheralikhan 2:e27413743e1b 758 printf("\n\r");
sheralikhan 2:e27413743e1b 759 pc.printf("Enter 20 block: "); // Enter Data
sheralikhan 2:e27413743e1b 760 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 761 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 762 }
sheralikhan 2:e27413743e1b 763 printf("\n\r");
sheralikhan 2:e27413743e1b 764 block = 20;
sheralikhan 3:f9ed412458d5 765 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 766 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 767 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 768 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 769 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 770 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 771
sheralikhan 2:e27413743e1b 772 continue;
sheralikhan 2:e27413743e1b 773 }
sheralikhan 2:e27413743e1b 774
sheralikhan 2:e27413743e1b 775 // Write block
sheralikhan 2:e27413743e1b 776 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 777 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 778 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 779 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 780
sheralikhan 2:e27413743e1b 781 continue;
sheralikhan 2:e27413743e1b 782 } else {
sheralikhan 3:f9ed412458d5 783
sheralikhan 2:e27413743e1b 784 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 785 }
sheralikhan 2:e27413743e1b 786 printf("\n\r");
sheralikhan 2:e27413743e1b 787 pc.printf("Enter 21 block: "); // Enter Data
sheralikhan 2:e27413743e1b 788 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 789 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 790 }
sheralikhan 2:e27413743e1b 791 printf("\n\r");
sheralikhan 2:e27413743e1b 792 block = 21;
sheralikhan 3:f9ed412458d5 793 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 794 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 795 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 796 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 797 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 798 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 799
sheralikhan 2:e27413743e1b 800 continue;
sheralikhan 2:e27413743e1b 801 }
sheralikhan 2:e27413743e1b 802
sheralikhan 2:e27413743e1b 803 // Write block
sheralikhan 2:e27413743e1b 804 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 805 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 806 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 807 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 808
sheralikhan 2:e27413743e1b 809 continue;
sheralikhan 2:e27413743e1b 810 } else {
sheralikhan 3:f9ed412458d5 811
sheralikhan 2:e27413743e1b 812 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 813 }
sheralikhan 2:e27413743e1b 814 printf("\n\r");
sheralikhan 2:e27413743e1b 815 pc.printf("Enter 22 block: "); // Enter Data
sheralikhan 2:e27413743e1b 816 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 817 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 818 }
sheralikhan 2:e27413743e1b 819 printf("\n\r");
sheralikhan 2:e27413743e1b 820 block = 22;
sheralikhan 3:f9ed412458d5 821 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 822 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 823 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 824 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 825 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 826 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 827
sheralikhan 2:e27413743e1b 828 continue;
sheralikhan 2:e27413743e1b 829 }
sheralikhan 2:e27413743e1b 830
sheralikhan 2:e27413743e1b 831 // Write block
sheralikhan 2:e27413743e1b 832 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 833 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 834 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 835 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 836
sheralikhan 2:e27413743e1b 837 continue;
sheralikhan 2:e27413743e1b 838 } else {
sheralikhan 3:f9ed412458d5 839
sheralikhan 2:e27413743e1b 840 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 841 }
sheralikhan 2:e27413743e1b 842 printf("\n\r");
sheralikhan 2:e27413743e1b 843 pc.printf("Enter 24 block: "); // Enter Data
sheralikhan 2:e27413743e1b 844 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 845 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 846 }
sheralikhan 2:e27413743e1b 847 printf("\n\r");
sheralikhan 2:e27413743e1b 848 block = 24;
sheralikhan 3:f9ed412458d5 849 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 850 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 851 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 852 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 853 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 854 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 855
sheralikhan 2:e27413743e1b 856 continue;
sheralikhan 2:e27413743e1b 857 }
sheralikhan 2:e27413743e1b 858
sheralikhan 2:e27413743e1b 859 // Write block
sheralikhan 2:e27413743e1b 860 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 861 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 862 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 863 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 864
sheralikhan 2:e27413743e1b 865 continue;
sheralikhan 2:e27413743e1b 866 } else {
sheralikhan 3:f9ed412458d5 867
sheralikhan 2:e27413743e1b 868 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 869 }
sheralikhan 2:e27413743e1b 870 printf("\n\r");
sheralikhan 2:e27413743e1b 871 pc.printf("Enter 25 block: "); // Enter Data
sheralikhan 2:e27413743e1b 872 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 873 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 874 }
sheralikhan 2:e27413743e1b 875 printf("\n\r");
sheralikhan 2:e27413743e1b 876 block = 25;
sheralikhan 3:f9ed412458d5 877 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 878 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 879 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 880 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 881 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 882 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 883
sheralikhan 2:e27413743e1b 884 continue;
sheralikhan 2:e27413743e1b 885 }
sheralikhan 2:e27413743e1b 886
sheralikhan 2:e27413743e1b 887 // Write block
sheralikhan 2:e27413743e1b 888 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 889 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 890 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 891 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 892
sheralikhan 2:e27413743e1b 893 continue;
sheralikhan 2:e27413743e1b 894 } else {
sheralikhan 3:f9ed412458d5 895
sheralikhan 2:e27413743e1b 896 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 897 }
sheralikhan 2:e27413743e1b 898 printf("\n\r");
sheralikhan 2:e27413743e1b 899 pc.printf("Enter 26 block: "); // Enter Data
sheralikhan 2:e27413743e1b 900 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 901 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 902 }
sheralikhan 2:e27413743e1b 903 printf("\n\r");
sheralikhan 2:e27413743e1b 904 block = 26;
sheralikhan 3:f9ed412458d5 905 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 906 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 907 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 908 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 909 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 910 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 911
sheralikhan 2:e27413743e1b 912 continue;
sheralikhan 2:e27413743e1b 913 }
sheralikhan 2:e27413743e1b 914
sheralikhan 2:e27413743e1b 915 // Write block
sheralikhan 2:e27413743e1b 916 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 917 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 918 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 919 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 920
sheralikhan 2:e27413743e1b 921 continue;
sheralikhan 2:e27413743e1b 922 } else {
sheralikhan 3:f9ed412458d5 923
sheralikhan 2:e27413743e1b 924 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 925 }
sheralikhan 2:e27413743e1b 926 printf("\n\r");
sheralikhan 2:e27413743e1b 927 pc.printf("Enter 28 block: "); // Enter Data
sheralikhan 2:e27413743e1b 928 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 929 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 930 }
sheralikhan 2:e27413743e1b 931 printf("\n\r");
sheralikhan 2:e27413743e1b 932 block = 28;
sheralikhan 3:f9ed412458d5 933 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 934 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 935 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 936 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 937 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 938 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 939
sheralikhan 2:e27413743e1b 940 continue;
sheralikhan 2:e27413743e1b 941 }
sheralikhan 2:e27413743e1b 942
sheralikhan 2:e27413743e1b 943 // Write block
sheralikhan 2:e27413743e1b 944 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 945 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 946 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 947 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 948
sheralikhan 2:e27413743e1b 949 continue;
sheralikhan 2:e27413743e1b 950 } else {
sheralikhan 3:f9ed412458d5 951
sheralikhan 2:e27413743e1b 952 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 953 }
sheralikhan 2:e27413743e1b 954 printf("\n\r");
sheralikhan 2:e27413743e1b 955 pc.printf("Enter 29 block: "); // Enter Data
sheralikhan 2:e27413743e1b 956 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 957 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 958 }
sheralikhan 2:e27413743e1b 959 printf("\n\r");
sheralikhan 2:e27413743e1b 960 block = 29;
sheralikhan 3:f9ed412458d5 961 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 962 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 963 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 964 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 965 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 966 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 967
sheralikhan 2:e27413743e1b 968 continue;
sheralikhan 2:e27413743e1b 969 }
sheralikhan 2:e27413743e1b 970
sheralikhan 2:e27413743e1b 971 // Write block
sheralikhan 2:e27413743e1b 972 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 973 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 974 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 975 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 976
sheralikhan 2:e27413743e1b 977 continue;
sheralikhan 2:e27413743e1b 978 } else {
sheralikhan 3:f9ed412458d5 979
sheralikhan 2:e27413743e1b 980 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 981 }
sheralikhan 2:e27413743e1b 982 printf("\n\r");
sheralikhan 2:e27413743e1b 983 pc.printf("Enter 30 block: "); // Enter Data
sheralikhan 2:e27413743e1b 984 for(uint8_t i = 0; i < 16; i++) {
sheralikhan 2:e27413743e1b 985 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 986 }
sheralikhan 2:e27413743e1b 987 printf("\n\r");
sheralikhan 2:e27413743e1b 988 block = 30;
sheralikhan 3:f9ed412458d5 989 /*While MFRC522 reader/writer is not Authenticate MIFARE card key A then it will through PCD_Authenticate() failed: Timeout in communication */
sheralikhan 2:e27413743e1b 990 pc.printf("Authenticating using key A...");
sheralikhan 2:e27413743e1b 991 status = (MFRC522::StatusCode)RfChip.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(RfChip.uid));
sheralikhan 2:e27413743e1b 992 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 993 pc.printf("PCD_Authenticate() failed: ");
sheralikhan 2:e27413743e1b 994 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 995
sheralikhan 2:e27413743e1b 996 continue;
sheralikhan 2:e27413743e1b 997 }
sheralikhan 2:e27413743e1b 998
sheralikhan 2:e27413743e1b 999 // Write block
sheralikhan 2:e27413743e1b 1000 status = (MFRC522::StatusCode)RfChip.MIFARE_Write(block, buffer, 16);
sheralikhan 2:e27413743e1b 1001 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 1002 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 1003 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 1004
sheralikhan 2:e27413743e1b 1005 continue;
sheralikhan 2:e27413743e1b 1006 } else {
sheralikhan 3:f9ed412458d5 1007
sheralikhan 2:e27413743e1b 1008 pc.printf("Succesfully Written to tag: ");
sheralikhan 2:e27413743e1b 1009 }
sheralikhan 2:e27413743e1b 1010 printf("\n\r");
sheralikhan 2:e27413743e1b 1011 pc.printf("Written to Classic card successfully....\n\r");
sheralikhan 2:e27413743e1b 1012 RfChip.PICC_HaltA();
sheralikhan 2:e27413743e1b 1013 RfChip.PCD_StopCrypto1();
sheralikhan 2:e27413743e1b 1014 break;
sheralikhan 2:e27413743e1b 1015 // switchcase();
sheralikhan 2:e27413743e1b 1016 }
sheralikhan 2:e27413743e1b 1017
sheralikhan 2:e27413743e1b 1018
sheralikhan 2:e27413743e1b 1019 } // end of void writeDataClassic1k()
sheralikhan 2:e27413743e1b 1020
sheralikhan 2:e27413743e1b 1021
sheralikhan 2:e27413743e1b 1022
sheralikhan 2:e27413743e1b 1023 void writeDataUL()
sheralikhan 2:e27413743e1b 1024 {
sheralikhan 2:e27413743e1b 1025 //Declaration of MFRC522 status
sheralikhan 2:e27413743e1b 1026 MFRC522::StatusCode status;
sheralikhan 3:f9ed412458d5 1027 uint8_t buffer[16]; //Define buffer
sheralikhan 3:f9ed412458d5 1028 uint8_t page; //Define page
sheralikhan 2:e27413743e1b 1029
sheralikhan 2:e27413743e1b 1030 while(true) {
sheralikhan 2:e27413743e1b 1031
sheralikhan 2:e27413743e1b 1032 pc.printf("Enter 4 page: "); // Enter Data
sheralikhan 2:e27413743e1b 1033
sheralikhan 2:e27413743e1b 1034 for(uint8_t i = 0; i < 4; i++) {
sheralikhan 2:e27413743e1b 1035 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 1036 }
sheralikhan 2:e27413743e1b 1037 printf("\n\r");
sheralikhan 2:e27413743e1b 1038 page = 4;
sheralikhan 2:e27413743e1b 1039 // Write block
sheralikhan 2:e27413743e1b 1040 status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
sheralikhan 2:e27413743e1b 1041 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 1042 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 1043 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 1044
sheralikhan 2:e27413743e1b 1045 continue;
sheralikhan 2:e27413743e1b 1046 } else {
sheralikhan 2:e27413743e1b 1047 LedGreen=1;
sheralikhan 2:e27413743e1b 1048 pc.printf("Succesfully Written to page 4: ");
sheralikhan 2:e27413743e1b 1049 }
sheralikhan 2:e27413743e1b 1050 printf("\n\r");
sheralikhan 2:e27413743e1b 1051
sheralikhan 2:e27413743e1b 1052 pc.printf("Enter 5 page: "); // Enter Data
sheralikhan 2:e27413743e1b 1053
sheralikhan 2:e27413743e1b 1054 for(uint8_t i = 0; i < 4; i++) {
sheralikhan 2:e27413743e1b 1055 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 1056 }
sheralikhan 2:e27413743e1b 1057 printf("\n\r");
sheralikhan 2:e27413743e1b 1058 page = 5;
sheralikhan 2:e27413743e1b 1059 // Write block
sheralikhan 3:f9ed412458d5 1060 //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
sheralikhan 2:e27413743e1b 1061 status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
sheralikhan 2:e27413743e1b 1062 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 1063 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 1064 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 1065
sheralikhan 2:e27413743e1b 1066 continue;
sheralikhan 2:e27413743e1b 1067 } else {
sheralikhan 2:e27413743e1b 1068 LedGreen=1;
sheralikhan 2:e27413743e1b 1069 pc.printf("Succesfully Written to page 5: ");
sheralikhan 2:e27413743e1b 1070 }
sheralikhan 2:e27413743e1b 1071 printf("\n\r");
sheralikhan 2:e27413743e1b 1072
sheralikhan 2:e27413743e1b 1073 pc.printf("Enter 6 page: "); // Enter Data
sheralikhan 2:e27413743e1b 1074
sheralikhan 2:e27413743e1b 1075 for(uint8_t i = 0; i < 4; i++) {
sheralikhan 2:e27413743e1b 1076 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 1077 }
sheralikhan 2:e27413743e1b 1078 printf("\n\r");
sheralikhan 2:e27413743e1b 1079 page = 6;
sheralikhan 2:e27413743e1b 1080 // Write block
sheralikhan 3:f9ed412458d5 1081 //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
sheralikhan 2:e27413743e1b 1082 status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
sheralikhan 2:e27413743e1b 1083 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 1084 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 1085 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 1086
sheralikhan 2:e27413743e1b 1087 continue;
sheralikhan 2:e27413743e1b 1088 } else {
sheralikhan 2:e27413743e1b 1089 LedGreen=1;
sheralikhan 2:e27413743e1b 1090 pc.printf("Succesfully Written to page 6: ");
sheralikhan 2:e27413743e1b 1091 }
sheralikhan 2:e27413743e1b 1092 printf("\n\r");
sheralikhan 2:e27413743e1b 1093
sheralikhan 2:e27413743e1b 1094 pc.printf("Enter 7 page: "); // Enter Data
sheralikhan 2:e27413743e1b 1095
sheralikhan 2:e27413743e1b 1096 for(uint8_t i = 0; i < 4; i++) {
sheralikhan 2:e27413743e1b 1097 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 1098 }
sheralikhan 2:e27413743e1b 1099 printf("\n\r");
sheralikhan 2:e27413743e1b 1100 page = 7;
sheralikhan 2:e27413743e1b 1101 // Write block
sheralikhan 3:f9ed412458d5 1102 //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
sheralikhan 2:e27413743e1b 1103 status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
sheralikhan 2:e27413743e1b 1104 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 1105 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 1106 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 1107
sheralikhan 2:e27413743e1b 1108 continue;
sheralikhan 2:e27413743e1b 1109 } else {
sheralikhan 2:e27413743e1b 1110 LedGreen=1;
sheralikhan 2:e27413743e1b 1111 pc.printf("Succesfully Written to page 7: ");
sheralikhan 2:e27413743e1b 1112 }
sheralikhan 2:e27413743e1b 1113 printf("\n\r");
sheralikhan 2:e27413743e1b 1114
sheralikhan 2:e27413743e1b 1115 pc.printf("Enter 8 page: "); // Enter Data
sheralikhan 2:e27413743e1b 1116
sheralikhan 2:e27413743e1b 1117 for(uint8_t i = 0; i < 4; i++) {
sheralikhan 2:e27413743e1b 1118 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 1119 }
sheralikhan 2:e27413743e1b 1120 printf("\n\r");
sheralikhan 2:e27413743e1b 1121 page = 8;
sheralikhan 2:e27413743e1b 1122 // Write block
sheralikhan 3:f9ed412458d5 1123 //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
sheralikhan 2:e27413743e1b 1124 status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
sheralikhan 2:e27413743e1b 1125 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 1126 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 1127 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 1128
sheralikhan 2:e27413743e1b 1129 continue;
sheralikhan 2:e27413743e1b 1130 } else {
sheralikhan 2:e27413743e1b 1131 LedGreen=1;
sheralikhan 2:e27413743e1b 1132 pc.printf("Succesfully Written to page 8: ");
sheralikhan 2:e27413743e1b 1133 }
sheralikhan 2:e27413743e1b 1134 printf("\n\r");
sheralikhan 2:e27413743e1b 1135
sheralikhan 2:e27413743e1b 1136 pc.printf("Enter 9 page: "); // Enter Data
sheralikhan 2:e27413743e1b 1137
sheralikhan 2:e27413743e1b 1138 for(uint8_t i = 0; i < 4; i++) {
sheralikhan 2:e27413743e1b 1139 buffer[i] = pc.putc(pc.getc());
sheralikhan 2:e27413743e1b 1140 }
sheralikhan 2:e27413743e1b 1141 printf("\n\r");
sheralikhan 2:e27413743e1b 1142 page = 9;
sheralikhan 2:e27413743e1b 1143 // Write block
sheralikhan 3:f9ed412458d5 1144 //While MFRC522 reader/writer is not Authenticate MIFARE card it will through MIFARE_Write() failed: Error in communication
sheralikhan 2:e27413743e1b 1145 status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
sheralikhan 2:e27413743e1b 1146 if (status != MFRC522::STATUS_OK) {
sheralikhan 2:e27413743e1b 1147 pc.printf("MIFARE_Write() failed: ");
sheralikhan 2:e27413743e1b 1148 pc.printf(RfChip.GetStatusCodeName(status));
sheralikhan 3:f9ed412458d5 1149
sheralikhan 2:e27413743e1b 1150 continue;
sheralikhan 2:e27413743e1b 1151 } else {
sheralikhan 2:e27413743e1b 1152 LedGreen=1;
sheralikhan 2:e27413743e1b 1153 pc.printf("Succesfully Written to page 9: ");
sheralikhan 2:e27413743e1b 1154 }
sheralikhan 2:e27413743e1b 1155 printf("Written Succefully to ultralight ......\n\r");
sheralikhan 2:e27413743e1b 1156 RfChip.PICC_HaltA();
sheralikhan 2:e27413743e1b 1157 break;
sheralikhan 2:e27413743e1b 1158 }
sheralikhan 2:e27413743e1b 1159
sheralikhan 2:e27413743e1b 1160 } //End writeDataUL()
sheralikhan 2:e27413743e1b 1161
sheralikhan 2:e27413743e1b 1162
sheralikhan 2:e27413743e1b 1163
sheralikhan 0:4b5aa5fe3ff4 1164 int main()
sheralikhan 0:4b5aa5fe3ff4 1165 {
sheralikhan 0:4b5aa5fe3ff4 1166 /* Set debug UART speed */
sheralikhan 0:4b5aa5fe3ff4 1167 printf("\n\rUART 9600 baud\n\r");
sheralikhan 0:4b5aa5fe3ff4 1168 pc.baud(9600);
sheralikhan 0:4b5aa5fe3ff4 1169 printf("\n\r%s %s\n\r",VERSION,CIBLE);
sheralikhan 0:4b5aa5fe3ff4 1170
sheralikhan 0:4b5aa5fe3ff4 1171 /* Init. RC522 Chip */
sheralikhan 0:4b5aa5fe3ff4 1172 RfChip.PCD_Init();
sheralikhan 0:4b5aa5fe3ff4 1173
sheralikhan 0:4b5aa5fe3ff4 1174 /* Read RC522 version */
sheralikhan 0:4b5aa5fe3ff4 1175 uint8_t temp = RfChip.PCD_ReadRegister(MFRC522::VersionReg);
sheralikhan 0:4b5aa5fe3ff4 1176 printf("MFRC522 version: %d\n\r", temp & 0x07);
sheralikhan 0:4b5aa5fe3ff4 1177 printf("\n\r");
sheralikhan 2:e27413743e1b 1178 pc.printf("Enter 1 Reading \n");
sheralikhan 2:e27413743e1b 1179 pc.printf("Enter 2 Writing \n");
sheralikhan 0:4b5aa5fe3ff4 1180
sheralikhan 2:e27413743e1b 1181
sheralikhan 2:e27413743e1b 1182 while(true) {
sheralikhan 2:e27413743e1b 1183
sheralikhan 3:f9ed412458d5 1184
sheralikhan 0:4b5aa5fe3ff4 1185 LedGreen = 1;
sheralikhan 0:4b5aa5fe3ff4 1186
sheralikhan 0:4b5aa5fe3ff4 1187 // Look for new cards
sheralikhan 0:4b5aa5fe3ff4 1188 if ( ! RfChip.PICC_IsNewCardPresent()) {
sheralikhan 2:e27413743e1b 1189 wait_ms(50);
sheralikhan 0:4b5aa5fe3ff4 1190 continue;
sheralikhan 0:4b5aa5fe3ff4 1191 }
sheralikhan 2:e27413743e1b 1192 LedGreen = 0;
sheralikhan 2:e27413743e1b 1193 wait_ms(50);
sheralikhan 0:4b5aa5fe3ff4 1194 // Select one of the cards
sheralikhan 0:4b5aa5fe3ff4 1195 if ( ! RfChip.PICC_ReadCardSerial()) {
sheralikhan 2:e27413743e1b 1196 wait_ms(50);
sheralikhan 0:4b5aa5fe3ff4 1197 continue;
sheralikhan 0:4b5aa5fe3ff4 1198 }
sheralikhan 2:e27413743e1b 1199 LedGreen = 1;
sheralikhan 2:e27413743e1b 1200 wait_ms(50);
sheralikhan 2:e27413743e1b 1201 char ch=pc.getc();
sheralikhan 2:e27413743e1b 1202 if(ch=='1') {
sheralikhan 2:e27413743e1b 1203 pc.printf("reading..........\n");
sheralikhan 2:e27413743e1b 1204 // Dump debug info about the card. PICC_HaltA() is automatically called.
sheralikhan 2:e27413743e1b 1205 DumpToSerial(&(RfChip.uid));
sheralikhan 2:e27413743e1b 1206 wait_ms(20);
sheralikhan 2:e27413743e1b 1207 } else if(ch=='2') {
sheralikhan 2:e27413743e1b 1208 pc.printf("Writing..... \n");
sheralikhan 2:e27413743e1b 1209 //Calling WriteToRfidTag()
sheralikhan 2:e27413743e1b 1210 WriteToRfidTag(&(RfChip.uid));
sheralikhan 2:e27413743e1b 1211 wait_ms(50);
sheralikhan 0:4b5aa5fe3ff4 1212
sheralikhan 2:e27413743e1b 1213 }
sheralikhan 0:4b5aa5fe3ff4 1214
sheralikhan 0:4b5aa5fe3ff4 1215 }
sheralikhan 0:4b5aa5fe3ff4 1216 }