X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/blobdiff_plain/47ea478b44e3c529201c6678f5e2cbbe0fc60bf9..cda220240e89e21e8b7dd76ab6b6a56000ce20e6:/flash-ota.c diff --git a/flash-ota.c b/flash-ota.c index ea2bcad..7afab13 100644 --- a/flash-ota.c +++ b/flash-ota.c @@ -207,7 +207,7 @@ int send_hm_message(struct ota_dev *dev, struct recv_data *rdata, uint8_t *msg) break; case DEVICE_TYPE_CULFW: { - char buf[128]; + char buf[256]; int i; memset(buf, 0, sizeof(buf)); @@ -227,14 +227,14 @@ int send_hm_message(struct ota_dev *dev, struct recv_data *rdata, uint8_t *msg) } if (msg[CTL] & 0x20) { - int cnt = 10; + int cnt = 3; int pfd; do { errno = 0; pfd = culfw_poll(dev->culfw, 1); if ((pfd < 0) && errno) { if (errno != ETIMEDOUT) { - perror("\n\nhmcfgusb_poll"); + perror("\n\nculfw_poll"); exit(EXIT_FAILURE); } } @@ -242,6 +242,11 @@ int send_hm_message(struct ota_dev *dev, struct recv_data *rdata, uint8_t *msg) break; } } while(cnt--); + + if (cnt == -1) { + fprintf(stderr, "\nMissing ACK!\n"); + return 0; + } } } break; @@ -329,7 +334,7 @@ int main(int argc, char **argv) printf("HomeMatic OTA flasher version " VERSION "\n\n"); - while((opt = getopt(argc, argv, "f:s:c:s:h")) != -1) { + while((opt = getopt(argc, argv, "b:c:f:hs:")) != -1) { switch (opt) { case 'b': bps = atoi(optarg); @@ -654,7 +659,7 @@ int main(int argc, char **argv) } if ((pfd < 0) && errno) { if (errno != ETIMEDOUT) { - perror("\n\nhmcfgusb_poll"); + perror("\n\npoll"); exit(EXIT_FAILURE); } }