This program is for reading and writing from /to MIFARE Classic 1k ,MIFARE Ultralight MF0ICU1,MIFARE Ultralight NTAG213,MIFARE Ultralight NTAG203
Diff: main.cpp
- Revision:
- 2:e27413743e1b
- Parent:
- 1:27fb38198323
- Child:
- 3:f9ed412458d5
--- a/main.cpp Thu Apr 13 05:33:25 2017 +0000
+++ b/main.cpp Thu May 25 07:16:28 2017 +0000
@@ -33,7 +33,7 @@
DigitalOut LedGreen(D7);
DigitalOut LedRed(D6);
DigitalOut LedYellow(D5);
-
+char save[1024];
//Serial connection to PC for output
Serial pc(USBTX, USBRX);
@@ -43,14 +43,15 @@
void DumpMifareClassicToSerial (MFRC522::Uid *uid, uint8_t piccType, MFRC522::MIFARE_Key *key);
void DumpMifareClassicSectorToSerial(MFRC522::Uid *uid, MFRC522::MIFARE_Key *key, uint8_t sector);
void DumpMifareUltralightToSerial (void);
-
+void writeDataUL(void);
+void writeDataClassic1k(void);
+uint8_t page;
/**
* 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.
*/
-
void DumpToSerial(MFRC522::Uid *uid)
{
MFRC522::MIFARE_Key key;
@@ -65,7 +66,7 @@
// Print Card type
uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType));
- wait_ms(1000);
+ wait_ms(50);
// Dump contents
switch (piccType) {
@@ -224,11 +225,7 @@
// Dump data
for (uint8_t index = 0; index < 16; index++) {
- printf(" %3d", buffer[index]);
-// if ((index % 4) == 3)
-// {
-// printf(" ");
-// }
+ printf(" %2X", buffer[index]);
}
// Parse sector trailer data
@@ -273,7 +270,6 @@
buffer[1],
buffer[0]);
}
-
printf("\n\r");
}
@@ -289,10 +285,9 @@
uint8_t byteCount;
uint8_t buffer[18];
uint8_t i;
-
- printf("Page 0 1 2 3");
+ printf("Page 0 1 2 3 \n");
// Try the mpages of the original Ultralight. Ultralight C has more pages.
- for (uint8_t page = 0; page < 16; page +=4) {
+ for ( page = 0; page < 16; page +=4) {
// Read pages
byteCount = sizeof(buffer);
status = RfChip.MIFARE_Read(page, buffer, &byteCount);
@@ -315,6 +310,862 @@
}
} // 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++) {
+ printf(" %X", RfChip.uid.uidByte[i]);
+ }
+ printf("\n\r");
+
+ // Print Card type
+ uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
+ printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType));
+ wait_ms(50);
+
+ // Dump contents
+ switch (piccType) {
+ case MFRC522::PICC_TYPE_MIFARE_MINI:
+ case MFRC522::PICC_TYPE_MIFARE_1K:
+ case MFRC522::PICC_TYPE_MIFARE_4K:
+ // All keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
+ for (uint8_t i = 0; i < 6; i++) {
+ key.keyByte[i] = 0xFF;
+ }
+ writeDataClassic1k(); // WriteToRfidTag(&(RfChip.uid))
+ break;
+
+ case MFRC522::PICC_TYPE_MIFARE_UL:
+ writeDataUL();
+ break;
+ case MFRC522::PICC_TYPE_TNP3XXX:
+ printf("Dumping memory contents not implemented for that PICC type. \n\r");
+ break;
+ case MFRC522::PICC_TYPE_ISO_14443_4:
+ case MFRC522::PICC_TYPE_ISO_18092:
+ case MFRC522::PICC_TYPE_MIFARE_PLUS:
+ printf("Dumping memory contents not implemented for that PICC type. \n\r");
+ break;
+
+ case MFRC522::PICC_TYPE_UNKNOWN:
+ case MFRC522::PICC_TYPE_NOT_COMPLETE:
+ default:
+ break; // No memory dump here
+ }
+
+ 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) {
+
+ for (uint8_t i = 0; i < 6; i++) {
+ key.keyByte[i] = 0xFF;
+ }
+ // Look for new cards
+ if ( ! RfChip.PICC_IsNewCardPresent()) {
+ continue;
+ }
+
+ // Select one of the cards
+ if ( ! RfChip.PICC_ReadCardSerial()) {
+ continue;
+ }
+ printf("\n\r");
+
+
+ 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;
+
+ 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));
+ LedRed=1;
+ 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));
+ LedYellow = 1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedYellow = 1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedYellow = 1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ pc.printf("Succesfully Written to tag: ");
+ }
+ printf("\n\r");
+ pc.printf("Enter 9 block: "); // Enter Data
+ for(uint8_t i = 0; i < 16; i++) {
+ buffer[i] = pc.putc(pc.getc());
+ }
+ printf("\n\r");
+ block = 9;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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;
+ 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));
+ LedRed=1;
+ 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));
+ LedRed=1;
+ continue;
+ } else {
+ LedYellow=1;
+ 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];
+ uint8_t 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));
+ LedYellow=1;
+ 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
+ status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
+ if (status != MFRC522::STATUS_OK) {
+ pc.printf("MIFARE_Write() failed: ");
+ pc.printf(RfChip.GetStatusCodeName(status));
+ LedYellow=1;
+ 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
+ status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
+ if (status != MFRC522::STATUS_OK) {
+ pc.printf("MIFARE_Write() failed: ");
+ pc.printf(RfChip.GetStatusCodeName(status));
+ LedYellow=1;
+ 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
+ status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
+ if (status != MFRC522::STATUS_OK) {
+ pc.printf("MIFARE_Write() failed: ");
+ pc.printf(RfChip.GetStatusCodeName(status));
+ LedYellow=1;
+ 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
+ status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
+ if (status != MFRC522::STATUS_OK) {
+ pc.printf("MIFARE_Write() failed: ");
+ pc.printf(RfChip.GetStatusCodeName(status));
+ LedYellow=1;
+ 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
+ status = (MFRC522::StatusCode)RfChip.MIFARE_UltralightWrite(page, buffer, 4);
+ if (status != MFRC522::STATUS_OK) {
+ pc.printf("MIFARE_Write() failed: ");
+ pc.printf(RfChip.GetStatusCodeName(status));
+ LedYellow=1;
+ 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 */
@@ -329,31 +1180,43 @@
uint8_t temp = RfChip.PCD_ReadRegister(MFRC522::VersionReg);
printf("MFRC522 version: %d\n\r", temp & 0x07);
printf("\n\r");
+ pc.printf("Enter 1 Reading \n");
+ pc.printf("Enter 2 Writing \n");
- while(1) {
- LedRed = 1;
+
+ while(true) {
+
+ LedRed = 0;
LedGreen = 1;
+ LedYellow = 0;
// Look for new cards
if ( ! RfChip.PICC_IsNewCardPresent()) {
- wait_ms(500);
+ wait_ms(50);
continue;
}
-
- LedRed = 0;
-
+ LedGreen = 0;
+ wait_ms(50);
// Select one of the cards
if ( ! RfChip.PICC_ReadCardSerial()) {
- wait_ms(500);
+ wait_ms(50);
continue;
}
-
- LedRed = 1;
- LedGreen = 0;
+ LedGreen = 1;
+ wait_ms(50);
+ char ch=pc.getc();
+ if(ch=='1') {
+ pc.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");
+ //Calling WriteToRfidTag()
+ WriteToRfidTag(&(RfChip.uid));
+ wait_ms(50);
- // Dump debug info about the card. PICC_HaltA() is automatically called.
- DumpToSerial(&(RfChip.uid));
- wait_ms(200);
+ }
}
}
\ No newline at end of file