]> cvs.zerfleddert.de Git - hmcfgusb/blobdiff - hmland.c
flash-ota: cleanup for hmuartlgw
[hmcfgusb] / hmland.c
index f0b07f2b8cf01196937420fdb321e3f012486e11..38e4d6baa499a03536a5bfd95ac0c25bbc1dcbe1 100644 (file)
--- a/hmland.c
+++ b/hmland.c
@@ -1,6 +1,6 @@
 /* HM-CFG-LAN emulation for HM-CFG-USB
  *
- * Copyright (c) 2013-15 Michael Gernoth <michael@gernoth.net>
+ * Copyright (c) 2013-16 Michael Gernoth <michael@gernoth.net>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -47,6 +47,7 @@
 
 #define PID_FILE "/var/run/hmland.pid"
 
+#define POLL_TIMEOUT_MS                250     /* Wake up device/bus at least once every 250ms */
 #define DEFAULT_REBOOT_SECONDS 86400
 #define LAN_READ_CHUNK_SIZE    2048
 /* Don't allow remote clients to consume all of our memory */
@@ -65,6 +66,7 @@ static int reboot_at_minute = -1;
 static int reboot_set = 0;
 static uint8_t *lan_read_buf = NULL;
 static int lan_read_buflen = 0;
+static char *serial = NULL;
 
 struct queued_rx {
        char *rx;
@@ -505,7 +507,7 @@ static int comm(int fd_in, int fd_out, int master_socket, int flags)
 
        hmcfgusb_set_debug(debug);
 
-       dev = hmcfgusb_init(hmlan_format_out, &fd_out);
+       dev = hmcfgusb_init(hmlan_format_out, &fd_out, serial);
        if (!dev) {
                fprintf(stderr, "Can't initialize HM-CFG-USB!\n");
                return 0;
@@ -571,7 +573,7 @@ static int comm(int fd_in, int fd_out, int master_socket, int flags)
        while(!quit) {
                int fd;
 
-               fd = hmcfgusb_poll(dev, 1000);  /* Wakeup device/bus at least once a second */
+               fd = hmcfgusb_poll(dev, POLL_TIMEOUT_MS);
                if (fd >= 0) {
                        if (fd == master_socket) {
                                int client;
@@ -808,6 +810,7 @@ void hmlan_syntax(char *prog)
        fprintf(stderr, "\t-p n\t\tlisten on port n (default: 1000)\n");
        fprintf(stderr, "\t-r n\t\treboot HM-CFG-USB after n seconds (0: no reboot, default: %u if FW < 0.967, 0 otherwise)\n", DEFAULT_REBOOT_SECONDS);
        fprintf(stderr, "\t   hh:mm\treboot HM-CFG-USB daily at hh:mm\n");
+       fprintf(stderr, "\t-S serial\tuse HM-CFG-USB with given serial (for multiple hmland instances)\n");
        fprintf(stderr, "\t-v\t\tverbose mode\n");
        fprintf(stderr, "\t-V\t\tshow version (" VERSION ")\n");
 
@@ -822,7 +825,7 @@ int main(int argc, char **argv)
        char *ep;
        int opt;
        
-       while((opt = getopt(argc, argv, "DdhIiPp:Rr:l:L:vV")) != -1) {
+       while((opt = getopt(argc, argv, "DdhIiPp:Rr:l:L:S:vV")) != -1) {
                switch (opt) {
                        case 'D':
                                debug = 1;
@@ -880,12 +883,15 @@ int main(int argc, char **argv)
                                        exit(EXIT_FAILURE);
                                }
                                break;
+                       case 'S':
+                               serial = optarg;
+                               break;
                        case 'v':
                                verbose = 1;
                                break;
                        case 'V':
                                printf("hmland " VERSION "\n");
-                               printf("Copyright (c) 2013-15 Michael Gernoth\n\n");
+                               printf("Copyright (c) 2013-16 Michael Gernoth\n\n");
                                exit(EXIT_SUCCESS);
                        case 'h':
                        case ':':
Impressum, Datenschutz