+ clearCommandBuffer();
+ UsbCommand c = {CMD_VERSION};
+ static UsbCommand resp = {0, {0, 0, 0}};
+
+ if (resp.arg[0] == 0 && resp.arg[1] == 0) { // no cached information available
+ SendCommand(&c);
+ if (WaitForResponseTimeout(CMD_ACK,&resp,1000)) {
+ PrintAndLog("Prox/RFID mark3 RFID instrument");
+ PrintAndLog((char*)resp.d.asBytes);
+ lookupChipID(resp.arg[0], resp.arg[1]);
+ }
+ } else {
+ PrintAndLog("[[[ Cached information ]]]\n");
+ PrintAndLog("Prox/RFID mark3 RFID instrument");
+ PrintAndLog((char*)resp.d.asBytes);
+ lookupChipID(resp.arg[0], resp.arg[1]);
+ PrintAndLog("");
+ }
+ return 0;
+}
+
+int CmdStatus(const char *Cmd)
+{
+ uint8_t speed_test_buffer[USB_CMD_DATA_SIZE];
+ sample_buf = speed_test_buffer;
+ #define USB_SPEED_TEST_SIZE (100*USB_CMD_DATA_SIZE)
+
+ clearCommandBuffer();
+ UsbCommand c = {CMD_STATUS, {USB_SPEED_TEST_SIZE}};
+ SendCommand(&c);
+ UsbCommand resp;
+ if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) {
+ PrintAndLog("Status command failed. USB Speed Test timed out");
+ }
+ return 0;
+}
+
+
+int CmdPing(const char *Cmd)
+{
+ clearCommandBuffer();
+ UsbCommand resp;
+ UsbCommand c = {CMD_PING};
+ SendCommand(&c);
+ if (WaitForResponseTimeout(CMD_ACK,&resp,1000)) {
+ PrintAndLog("Ping successfull");
+ }else{
+ PrintAndLog("Ping failed");
+ }