]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
receiving/sending moved to one thread
authorroel@libnfc.org <roel@libnfc.org@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Fri, 7 Dec 2012 12:22:05 +0000 (12:22 +0000)
committerroel@libnfc.org <roel@libnfc.org@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Fri, 7 Dec 2012 12:22:05 +0000 (12:22 +0000)
client/proxmark3.c

index e9d64c88909d32c02858c0999a6b6c2c704b01e2..38a977169396263377774030d910fe077c65b58d 100644 (file)
 #include "ui.h"
 
 static serial_port sp;
+static UsbCommand txcmd;
+static bool txcmd_pending = false;
 
 void SendCommand(UsbCommand *c) {
 #if 0
   printf("Sending %d bytes\n", sizeof(UsbCommand));
 #endif
-  if (!uart_send(sp,(byte_t*)c,sizeof(UsbCommand))) {
-    ERR("Sending bytes to proxmark failed");
+/*
+  if (txcmd_pending) {
+    ERR("Sending command failed, previous command is still pending");
   }
+*/
+  while(txcmd_pending);
+  txcmd = *c;
+  txcmd_pending = true;
 }
 
 struct receiver_arg {
@@ -79,6 +86,13 @@ static void *uart_receiver(void *targ) {
         UsbCommandReceived((UsbCommand*)(rx+(i*sizeof(UsbCommand))));
       }
     }
+
+    if(txcmd_pending) {
+      if (!uart_send(sp,(byte_t*)&txcmd,sizeof(UsbCommand))) {
+        PrintAndLog("Sending bytes to proxmark failed");
+      }
+      txcmd_pending = false;
+    }
   }
   
   pthread_exit(NULL);
Impressum, Datenschutz