int wrong_hmid;
};
-static void parse_hmcfgusb(uint8_t *buf, int buf_len, void *data)
+static int parse_hmcfgusb(uint8_t *buf, int buf_len, void *data)
{
struct recv_data *rdata = data;
if (buf_len < 1)
- return;
+ return 1;
switch(buf[0]) {
case 'E':
hexdump(buf, buf_len, "Unknown> ");
break;
}
+
+ return 1;
}
int main(int argc, char **argv)
}
printf("HM-CFG-USB opened!\n");
+ hmcfgusb_send_null_frame(dev, 1);
hmcfgusb_send(dev, (unsigned char*)"K", 1, 1);
while(!quit) {
rdata.wrong_hmid = 0;
hmcfgusb_send(dev, (unsigned char*)"K", 1, 1);
}
- fd = hmcfgusb_poll(dev, 10);
+ fd = hmcfgusb_poll(dev, 1);
if (fd >= 0) {
fprintf(stderr, "activity on unknown fd %d!\n", fd);
continue;
} else if (fd == -1) {
if (errno) {
- perror("hmcfgusb_poll");
- break;
+ if (errno != ETIMEDOUT) {
+ perror("hmcfgusb_poll");
+ break;
+ } else {
+ /* periodically wakeup the device */
+ hmcfgusb_send_null_frame(dev, 1);
+ }
}
}
}