X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/blobdiff_plain/fbbbfa37bd5adae5eabd94e6db96be584998ffd6..1e79d00a9f4c2f059c8bd2dc22e601c4ed4065d6:/hmland.c diff --git a/hmland.c b/hmland.c index a9d9670..32a1cdf 100644 --- a/hmland.c +++ b/hmland.c @@ -455,7 +455,7 @@ static int comm(int fd_in, int fd_out, int master_socket, int flags) memset(out, 0, sizeof(out)); out[0] = 'K'; wait_for_h = 1; - hmcfgusb_send_null_frame(dev); + hmcfgusb_send_null_frame(dev, 1); hmcfgusb_send(dev, out, sizeof(out), 1); while(!quit) { @@ -478,11 +478,18 @@ static int comm(int fd_in, int fd_out, int master_socket, int flags) } } else if (fd == -1) { if (errno) { - perror("hmcfgusb_poll"); - quit = 1; - } else { - /* periodically wakeup the device */ - hmcfgusb_send_null_frame(dev); + if (errno != ETIMEDOUT) { + perror("hmcfgusb_poll"); + quit = 1; + } else { + /* periodically wakeup the device */ + hmcfgusb_send_null_frame(dev, 1); + if (wait_for_h) { + memset(out, 0, sizeof(out)); + out[0] = 'K'; + hmcfgusb_send(dev, out, sizeof(out), 1); + } + } } } }