diff options
author | fishsoupisgood <github@madingley.org> | 2020-11-08 00:44:09 +0000 |
---|---|---|
committer | fishsoupisgood <github@madingley.org> | 2020-11-08 00:44:09 +0000 |
commit | 6a27a521f99c7babc9d000465b661f66b54ee101 (patch) | |
tree | cafd3f2b11534b84d5aebe7a03746e92c04b39df /serial_arm.c | |
parent | 8531610431c4f0f60cbe64ed8ae362219e7f6520 (diff) | |
download | galaxy_tools-6a27a521f99c7babc9d000465b661f66b54ee101.tar.gz galaxy_tools-6a27a521f99c7babc9d000465b661f66b54ee101.tar.bz2 galaxy_tools-6a27a521f99c7babc9d000465b661f66b54ee101.zip |
add wait until disarmed
Diffstat (limited to 'serial_arm.c')
-rw-r--r-- | serial_arm.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/serial_arm.c b/serial_arm.c index 4ed28b9..c8f6b66 100644 --- a/serial_arm.c +++ b/serial_arm.c @@ -39,11 +39,13 @@ int main (int argc, char *argv[]) unsigned opt; int zone = -1; int action = -1; + int disarm = 0; const char *port = NULL; unsigned baud = 9600; int fd; + int timeout = 15; - while ((opt = getopt (argc, argv, "h:p:z:USPRBFTAD")) != -1) { + while ((opt = getopt (argc, argv, "h:p:z:USPRBFTADW")) != -1) { switch (opt) { case 'p': port = optarg; @@ -93,6 +95,10 @@ int main (int argc, char *argv[]) action = 8; break; + case 'W': + disarm++; + break; + default: /* '?' */ return usage (argv[0]); } @@ -112,13 +118,18 @@ int main (int argc, char *argv[]) - if (action == -1) { - if (show_state (fd)) - return -1; - return 0; + if (disarm) { + if (!show_state (fd, zone)) + return 0; + + action = 0; } + if (action == -1) + return show_state (fd, zone); + + if (zone != -1) sprintf (cmd, "SA%d*%d", zone, action); @@ -134,14 +145,17 @@ int main (int argc, char *argv[]) switch (b.function) { case SIA_FN_ACKNOLEDGE: printf ("Panel acks command\n"); - return 0; + break; case SIA_FN_REJECT: printf ("Panel nacks command\n"); - /*fall through */ + return -1; } - return -1; + while (disarm && timeout && show_state (fd, zone)) + sleep (2); + + return !timeout; } |