|
@@ -79,6 +79,7 @@ bool SM130::read_response(uint8_t *ret, uint8_t *length, uint8_t *cmd) {
|
|
ret[i] = rfid_read_sync();
|
|
ret[i] = rfid_read_sync();
|
|
crc += ret[i];
|
|
crc += ret[i];
|
|
|
|
|
|
|
|
+ Serial.print("0x");
|
|
Serial.print(ret[i], HEX);
|
|
Serial.print(ret[i], HEX);
|
|
Serial.print (" ");
|
|
Serial.print (" ");
|
|
i++;
|
|
i++;
|
|
@@ -115,3 +116,65 @@ uint8_t SM130::rfid_read_sync() {
|
|
while(!rfid.available());
|
|
while(!rfid.available());
|
|
return rfid.read();
|
|
return rfid.read();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+bool SM130::seek_tag(uint8_t *id, uint8_t *length) {
|
|
|
|
+ uint8_t cmd, tag_type, tag_len;
|
|
|
|
+ uint8_t buf[10], buf_len =10, ret[10], len = 10;
|
|
|
|
+ int i;
|
|
|
|
+ send_command(0x82, NULL, 0, ret, &len); //send de la commande 0x82 seek for tag
|
|
|
|
+ read_response(buf, &buf_len, &cmd);
|
|
|
|
+ Serial.println("<seek_tag>");
|
|
|
|
+
|
|
|
|
+ if(cmd != 0x82) { //check si c'est bien la bonne commande
|
|
|
|
+ Serial.print("Bad command 0x");
|
|
|
|
+ Serial.print(cmd, HEX);
|
|
|
|
+ Serial.print(". Should be 0x82\r");
|
|
|
|
+ goto error;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ tag_type = buf[0]; //on à le type de tag ici
|
|
|
|
+ switch (tag_type) { //check de quel type de tag il s'agit (voir datasheet)
|
|
|
|
+ case 0x01:
|
|
|
|
+ tag_len = 7;
|
|
|
|
+ Serial.println("tag_type = Mifare UltraLight");
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case 0x02:
|
|
|
|
+ tag_len = 4;
|
|
|
|
+ Serial.println("tag_type = Mifare Santard 1K");
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case 0x03:
|
|
|
|
+ tag_len = 4;
|
|
|
|
+ Serial.println("tag_type = Mifare Classic 4K");
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ default: //tag moisi
|
|
|
|
+ Serial.print("Error : Unknown Mifare tag :");
|
|
|
|
+ Serial.print(tag_type, HEX);
|
|
|
|
+ Serial.println();
|
|
|
|
+ goto error;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Serial.print("Tag serial = ");
|
|
|
|
+ for (i = 0; i < tag_len; i++) {
|
|
|
|
+ id[i] = buf[tag_len - i];
|
|
|
|
+ Serial.print(id[i], HEX);
|
|
|
|
+ Serial.print(" ");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Serial.println();
|
|
|
|
+ *length = tag_len;
|
|
|
|
+ Serial.println("</seek_tag>");
|
|
|
|
+ return true;
|
|
|
|
+
|
|
|
|
+error:
|
|
|
|
+ while(rfid.available())
|
|
|
|
+ rfid.read();
|
|
|
|
+ Serial.println("</seek_tag>");
|
|
|
|
+ return false;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|