receiving/sending moved to one thread

This commit is contained in:
roel@libnfc.org 2012-12-07 12:22:05 +00:00
commit f0ba634221

View file

@ -25,14 +25,21 @@
#include "ui.h" #include "ui.h"
static serial_port sp; static serial_port sp;
static UsbCommand txcmd;
static bool txcmd_pending = false;
void SendCommand(UsbCommand *c) { void SendCommand(UsbCommand *c) {
#if 0 #if 0
printf("Sending %d bytes\n", sizeof(UsbCommand)); printf("Sending %d bytes\n", sizeof(UsbCommand));
#endif #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 { struct receiver_arg {
@ -79,6 +86,13 @@ static void *uart_receiver(void *targ) {
UsbCommandReceived((UsbCommand*)(rx+(i*sizeof(UsbCommand)))); 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); pthread_exit(NULL);