From: Martin Mares Date: Sat, 3 Mar 2012 17:38:51 +0000 (+0100) Subject: Sleep 1ms between send and receive X-Git-Tag: v1.4~2 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=0cee3d92dd75b85c11741ac47ca9a6702a4f7380;p=arexx.git Sleep 1ms between send and receive Otherwise, some versions of logger firmware can get confused. --- diff --git a/arexxd.c b/arexxd.c index 0358db1..9fcae6e 100644 --- a/arexxd.c +++ b/arexxd.c @@ -410,6 +410,12 @@ static void dump_packet(byte *pkt) } } +static void my_msleep(int ms) +{ + struct timespec ts = { .tv_sec = ms/1000, .tv_nsec = (ms%1000) * 1000000 }; + nanosleep(&ts, NULL); +} + static int send_and_receive(byte *req, byte *reply) { if (debug_packets) { @@ -436,6 +442,7 @@ static int send_and_receive(byte *req, byte *reply) log_pkt(">> xmit %d bytes\n", transferred); dump_packet(req); } + my_msleep(1); if (err = libusb_bulk_transfer(devh, rx_endpoint, reply, 64, &transferred, 200)) { if (err == LIBUSB_ERROR_TIMEOUT) { log_pkt("<< recv timed out\n"); @@ -555,8 +562,7 @@ static void sigterm_handler(int sig __attribute__((unused))) static void interruptible_msleep(int ms) { sigprocmask(SIG_UNBLOCK, &term_sigs, NULL); - struct timespec ts = { .tv_sec = ms/1000, .tv_nsec = (ms%1000) * 1000000 }; - nanosleep(&ts, NULL); + my_msleep(ms); sigprocmask(SIG_BLOCK, &term_sigs, NULL); }