diff options
author | Stuart Henderson <sthen@cvs.openbsd.org> | 2010-05-27 17:18:24 +0000 |
---|---|---|
committer | Stuart Henderson <sthen@cvs.openbsd.org> | 2010-05-27 17:18:24 +0000 |
commit | 52300835ac47c92cc08efdeb725e05a3e5046e8e (patch) | |
tree | 8fb8df0cf5cfc655f7a223a0cde0c7f54b06d688 /sys/kern | |
parent | 49e84783ae1ad38eed53c9d7de1e0496b18f7e5a (diff) |
Switch the signal status "percent" sensor, which is currently
hardcoded(!), over to an "indicator" sensor type, value depending
on whether the GPS has fix. ok deraadt@
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/tty_nmea.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/sys/kern/tty_nmea.c b/sys/kern/tty_nmea.c index 035cd843cc8..edb678fd691 100644 --- a/sys/kern/tty_nmea.c +++ b/sys/kern/tty_nmea.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tty_nmea.c,v 1.38 2010/04/23 03:44:44 miod Exp $ */ +/* $OpenBSD: tty_nmea.c,v 1.39 2010/05/27 17:18:23 sthen Exp $ */ /* * Copyright (c) 2006, 2007, 2008 Marc Balmer <mbalmer@openbsd.org> @@ -109,10 +109,9 @@ nmeaopen(dev_t dev, struct tty *tp, struct proc *p) np->time.flags = SENSOR_FINVALID; sensor_attach(&np->timedev, &np->time); - np->signal.type = SENSOR_PERCENT; + np->signal.type = SENSOR_INDICATOR; np->signal.status = SENSOR_S_UNKNOWN; - np->signal.flags = SENSOR_FINVALID; - np->signal.value = 100000LL; + np->signal.value = 0; strlcpy(np->signal.desc, "Signal", sizeof(np->signal.desc)); sensor_attach(&np->timedev, &np->signal); @@ -371,12 +370,13 @@ nmea_gprmc(struct nmea *np, struct tty *tp, char *fld[], int fldcnt) } switch (*fld[2]) { case 'A': /* The GPS has a fix, (re)arm the timeout. */ + /* XXX is 'D' also a valid state? */ np->time.status = SENSOR_S_OK; + np->signal.value = 1; np->signal.status = SENSOR_S_OK; np->latitude.status = SENSOR_S_OK; np->longitude.status = SENSOR_S_OK; np->time.flags &= ~SENSOR_FINVALID; - np->signal.flags &= ~SENSOR_FINVALID; np->latitude.flags &= ~SENSOR_FINVALID; np->longitude.flags &= ~SENSOR_FINVALID; break; @@ -386,7 +386,8 @@ nmea_gprmc(struct nmea *np, struct tty *tp, char *fld[], int fldcnt) * will be degraded. Signal the condition through * the signal sensor. */ - np->signal.status = SENSOR_S_WARN; + np->signal.value = 0; + np->signal.status = SENSOR_S_CRIT; np->latitude.status = SENSOR_S_WARN; np->longitude.status = SENSOR_S_WARN; break; @@ -541,6 +542,8 @@ nmea_timeout(void *xnp) { struct nmea *np = xnp; + np->signal.value = 0; + np->signal.status = SENSOR_S_CRIT; if (np->time.status == SENSOR_S_OK) { np->time.status = SENSOR_S_WARN; np->latitude.status = SENSOR_S_WARN; |