summaryrefslogtreecommitdiff
path: root/sys/kern/tty_nmea.c
diff options
context:
space:
mode:
authorStuart Henderson <sthen@cvs.openbsd.org>2010-05-27 17:18:24 +0000
committerStuart Henderson <sthen@cvs.openbsd.org>2010-05-27 17:18:24 +0000
commit52300835ac47c92cc08efdeb725e05a3e5046e8e (patch)
tree8fb8df0cf5cfc655f7a223a0cde0c7f54b06d688 /sys/kern/tty_nmea.c
parent49e84783ae1ad38eed53c9d7de1e0496b18f7e5a (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/tty_nmea.c')
-rw-r--r--sys/kern/tty_nmea.c15
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;