summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfishsoupisgood <github@madingley.org>2020-11-08 00:44:09 +0000
committerfishsoupisgood <github@madingley.org>2020-11-08 00:44:09 +0000
commit6a27a521f99c7babc9d000465b661f66b54ee101 (patch)
treecafd3f2b11534b84d5aebe7a03746e92c04b39df
parent8531610431c4f0f60cbe64ed8ae362219e7f6520 (diff)
downloadgalaxy_tools-6a27a521f99c7babc9d000465b661f66b54ee101.tar.gz
galaxy_tools-6a27a521f99c7babc9d000465b661f66b54ee101.tar.bz2
galaxy_tools-6a27a521f99c7babc9d000465b661f66b54ee101.zip
add wait until disarmed
-rw-r--r--arm.c14
-rw-r--r--arm.h2
-rw-r--r--net_arm.c25
-rw-r--r--serial_arm.c30
4 files changed, 54 insertions, 17 deletions
diff --git a/arm.c b/arm.c
index 7cfdd3f..e34115d 100644
--- a/arm.c
+++ b/arm.c
@@ -122,12 +122,13 @@ static const char *ready_to_str (int i)
-int show_state (int fd)
+int show_state (int fd, int zone)
{
int i, l = SIA_MAX_DATA_LENGTH;
unsigned char armed[SIA_MAX_DATA_LENGTH];
unsigned char state[SIA_MAX_DATA_LENGTH];
unsigned char ready[SIA_MAX_DATA_LENGTH];
+ int s = 0;
i = get_thing (fd, "SA", armed);
@@ -161,12 +162,19 @@ int show_state (int fd)
printf ("%-6s | %-15s | %-15s | %-15s\n", "Zone", "Armed", "State", "Ready");
printf ("-------+-----------------+-----------------+----------------\n");
- for (i = 0; i < l; ++i)
+ if (zone > 0) {
+ s = zone;
+ l = zone + 1;
+ }
+
+ for (i = s; i < l; ++i)
printf ("%6d | %-15s | %-15s | %-15s\n", i + 1, armed_to_str (armed[i]), state_to_str (state[i]), ready_to_str (ready[i]));
printf ("\n");
- return armed[0] - '0';
+ if (zone < 0) zone = 0;
+
+ return armed[zone] - '0';
}
diff --git a/arm.h b/arm.h
index 3d4de83..d53e5b1 100644
--- a/arm.h
+++ b/arm.h
@@ -1,6 +1,6 @@
#ifndef _arm_h_
#define _arm_h_
extern int auth_cmd_with_ack(int fd, unsigned char fn, const void *data, size_t len,SIA_Block *b);
-extern int show_state(int fd);
+extern int show_state(int fd, int zone);
#endif /* _arm_h_ */
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;
}
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;
}