summaryrefslogtreecommitdiff
path: root/gps.py
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-09-25 17:03:02 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-09-25 17:03:02 +0000
commita03346c46c0159ee792a5632f6200e3c0a9666f6 (patch)
treebbc6938ef77b495c9edfd8a6235a373dec8fbc09 /gps.py
parent36ae8a121441f3720ed489dd557f2d3123d4dd0b (diff)
downloadgpsd-a03346c46c0159ee792a5632f6200e3c0a9666f6.tar.gz
Decorate TIMING objects with client-side timing information.
Diffstat (limited to 'gps.py')
-rwxr-xr-xgps.py27
1 files changed, 18 insertions, 9 deletions
diff --git a/gps.py b/gps.py
index 86d40c1c..f22554cb 100755
--- a/gps.py
+++ b/gps.py
@@ -398,6 +398,15 @@ class gps(gpsdata):
self.d_decode_time = float(decode_time)
self.poll_time = float(poll_time)
self.emit_time = float(emit_time)
+ if self.timings.sentence_time != 0:
+ basetime = self.timings.sentence_time
+ else:
+ basetime = self.timings.d_xmit_time
+ self.timings.c_decode_time = time.time() - basetime
+ self.timings.c_recv_time = self.received - basetime
+ data = self.timings
+
+
return self.valid
def __json_unpack(self, buf):
@@ -469,6 +478,14 @@ class gps(gpsdata):
self.skyview.used += 1
self.valid = ONLINE_SET | SATELLITE_SET
return self.skyview
+ elif self.data.get("class") == "TIMING":
+ if self.data["timebase"] != 0:
+ basetime = self.data["timebase"]
+ else:
+ basetime = self.data["xmit"]
+ self.data["c_recv"] = self.received - basetime
+ self.data["c_decode"] = time.time() - basetime
+ return self.data
else:
# Other classes, including RTCM2, AIS, WATCH and DEVICELIST,
# fall through to here.
@@ -494,7 +511,7 @@ class gps(gpsdata):
# while the client is reading.
if not self.response:
raise StopIteration
- self.timings.c_recv_time = time.time()
+ self.received = time.time()
if self.raw_hook:
self.raw_hook(self.response);
if self.response.startswith("{") and "class" in self.response:
@@ -502,14 +519,6 @@ class gps(gpsdata):
self.newstyle = True
else:
data = self.__oldstyle_unpack(self.response)
- if self.profiling:
- if self.timings.sentence_time != '?':
- basetime = self.timings.sentence_time
- else:
- basetime = self.timings.d_xmit_time
- self.timings.c_decode_time = time.time() - basetime
- self.timings.c_recv_time -= basetime
- data = self.timings
return data
def next(self):