diff -u -r -d gpsd.orig/CHANGELOG gpsd/CHANGELOG
--- gpsd.orig/CHANGELOG	Tue Jul 11 16:30:54 2000
+++ gpsd/CHANGELOG	Tue Sep 24 10:50:33 2002
@@ -30,3 +30,4 @@
 20000305 (1.01)
 	 Updated to IANA port.
 	 Fixes to DGPS support.
+20020924 Set status and mode 0 after GPS timeout (5 sec) - Cougar <cougar@random.ee>
diff -u -r -d gpsd.orig/gpsd.c gpsd/gpsd.c
--- gpsd.orig/gpsd.c	Tue Jul 11 16:30:54 2000
+++ gpsd/gpsd.c	Tue Sep 24 10:47:34 2002
@@ -45,6 +45,7 @@
 
 #define QLEN		5
 #define BUFSIZE		4096
+#define GPS_TIMEOUT	5		/* Consider GPS connection loss after 5 sec */
 
 int debug = 0;
 int device_speed = B4800;
@@ -140,6 +141,7 @@
     double baud;
     char buf[BUFSIZE];
     int sentdgps = 0, fixcnt = 0;
+    time_t curtime;
 
     while ((option = getopt(argc, argv, "D:L:S:T:hncl:p:s:d:r:")) != -1) {
 	switch (option) {
@@ -313,6 +315,11 @@
 		continue;
 	    errexit("select");
 	}
+	curtime = time(NULL);
+	if (curtime > gNMEAdata.last_update + GPS_TIMEOUT) {
+	  gNMEAdata.mode = 0;
+	  gNMEAdata.status = 0;
+	}
 	if (FD_ISSET(dsock, &rfds)) {
 	  int rtcmbytes, cnt;
 	  char *ptr;
diff -u -r -d gpsd.orig/nmea.h gpsd/nmea.h
--- gpsd.orig/nmea.h	Tue Jul 11 16:30:54 2000
+++ gpsd/nmea.h	Tue Sep 24 09:55:59 2002
@@ -1,3 +1,4 @@
+#include <time.h>
 
 #define GPGGA "GPGGA"
 #define GPGSA "GPGSA"
@@ -9,6 +10,8 @@
     int fdin;
     int fdout;
 
+    time_t last_update;		/* When we got last data from GPS receiver */
+
     long cmask;
     char utc[20];		/* UTC date / time in format "mm/dd/yy hh:mm:ss" */
 
diff -u -r -d gpsd.orig/nmea_parse.c gpsd/nmea_parse.c
--- gpsd.orig/nmea_parse.c	Tue Jul 11 16:30:54 2000
+++ gpsd/nmea_parse.c	Tue Sep 24 10:11:06 2002
@@ -141,6 +141,7 @@
 {
     double lat, lon, d, m;
     char str[20], *p;
+    int updated = 0;
 
 
     if (*(p = field(sentence, begin + 0)) != '\0') {
@@ -155,6 +156,7 @@
 	    gNMEAdata.latitude = lat;
 	    gNMEAdata.cmask |= C_LATLON;
 	}
+	updated++;
     }
     if (*(p = field(sentence, begin + 2)) != '\0') {
 	strncpy(str, p, 20);
@@ -169,7 +171,10 @@
 	    gNMEAdata.longitude = lon;
 	    gNMEAdata.cmask |= C_LATLON;
 	}
+	updated++;
     }
+    if (updated == 2)
+	gNMEAdata.last_update = time(NULL);
 }
 
 
diff -u -r -d gpsd.orig/rockwell.c gpsd/rockwell.c
--- gpsd.orig/rockwell.c	Tue Jul 11 16:30:54 2000
+++ gpsd/rockwell.c	Tue Sep 24 09:47:02 2002
@@ -241,6 +241,7 @@
 
     gNMEAdata.separation = p[O(33)] / 100;	// meters
 
+    gNMEAdata.last_update = time(NULL);
 }
 
 static void handle1002(unsigned short *p)

