summaryrefslogtreecommitdiffstats
path: root/net_arm.c
diff options
context:
space:
mode:
Diffstat (limited to 'net_arm.c')
-rw-r--r--net_arm.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/net_arm.c b/net_arm.c
index 310de09..b5674d4 100644
--- a/net_arm.c
+++ b/net_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 *host = NULL;
unsigned port = 10005;
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 'h':
host = optarg;
@@ -93,6 +95,10 @@ int main (int argc, char *argv[])
action = 8;
break;
+ case 'W':
+ disarm++;
+ break;
+
default: /* '?' */
return usage (argv[0]);
}
@@ -108,9 +114,15 @@ int main (int argc, char *argv[])
}
+ if (disarm) {
+ if (!show_state (fd, zone))
+ return 0;
+
+ action = 0;
+ }
if (action == -1)
- return show_state (fd);
+ return show_state (fd, zone);
if (zone != -1)
@@ -127,14 +139,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;
}