]> ToastFreeware Gitweb - gregoa/zavai.git/blobdiff - zavai/gps.py
Notes about remotising devices
[gregoa/zavai.git] / zavai / gps.py
index f0d11f244f81d0f34235be16363b1c1499829612..2b73da7cc917ac10b61f9ac411bd2dc78889c999 100755 (executable)
@@ -25,7 +25,7 @@ import zavai
 
 class GPSMonitor(zavai.Service):
     def __init__(self, gps):
-        super(GPSMonitor, self).__init__()
+        super(GPSMonitor, self).__init__(["satellites"])
 
         self.gps = gps
         self.gps_ubx = gps.gps_ubx
@@ -69,10 +69,10 @@ class GPSMonitor(zavai.Service):
 
     def on_ubxdebug_packet(self, clid, length, data):
         zavai.info("gps monitor: UBX debug packet")
-        self.notify(clid, length, data)
+        self.notify("satellites", clid, length, data)
 
     def start(self):
-        self.gps.request(self)
+        self.gps.connect("gps", self)
         # TODO: find out how come sometimes these events are not sent
         self.gps.bus.add_signal_receiver(
             self.on_satellites_changed, 'SatellitesChanged', 'org.freedesktop.Gypsy.Satellite',
@@ -89,19 +89,20 @@ class GPSMonitor(zavai.Service):
         self.gps.bus.remove_signal_receiver(
             self.on_ubxdebug_packet, 'DebugPacket', 'org.freesmartphone.GPS.UBX',
             'org.freesmartphone.ogpsd', '/org/freedesktop/Gypsy')
-        self.gps.release(self)
+        self.gps.disconnect("gps", self)
 
 
 class GPSPosition(zavai.Service):
     def __init__(self, gps):
+        super(GPSPosition, self).__init__(["position"])
         self.gps = gps
 
     def on_position_changed(self, fields, tstamp, lat, lon, alt):
         zavai.info("gps position: position changed")
-        self.notify(fields, tstamp, lat, lon, alt)
+        self.notify("position", fields, tstamp, lat, lon, alt)
 
     def start(self):
-        self.gps.request(self)
+        self.gps.connect("gps", self)
         self.gps.bus.add_signal_receiver(
             self.on_position_changed, 'PositionChanged', 'org.freedesktop.Gypsy.Position',
             'org.freesmartphone.ogpsd', '/org/freedesktop/Gypsy')
@@ -110,12 +111,12 @@ class GPSPosition(zavai.Service):
         self.gps.bus.remove_signal_receiver(
             self.on_position_changed, 'PositionChanged', 'org.freedesktop.Gypsy.Position',
             'org.freesmartphone.ogpsd', '/org/freedesktop/Gypsy')
-        self.gps.release(self)
+        self.gps.disconnect("gps", self)
 
 # For a list of dbus services, look in /etc/dbus-1/system.d/
 class GPS(zavai.Service):
     def __init__(self, registry, name):
-        super(GPS, self).__init__()
+        super(GPS, self).__init__(["gps"])
 
         self.bus = registry.resource("dbus.system_bus")
 
@@ -199,6 +200,7 @@ class GPS(zavai.Service):
 class GPX(zavai.Service):
     "Write GPX track and waypoint files"
     def __init__(self, registry, name):
+        super(GPX, self).__init__(["gpx"])
         self.registry = registry
         self.trk = None
         self.wpt = None
@@ -206,7 +208,6 @@ class GPX(zavai.Service):
         conf = registry.resource("conf")
         self.trackdir = conf.homedir
         self.activity_monitors = set()
-        self.started = False
 
     def add_activity_monitor(self, cb):
         self.activity_monitors.add(cb)
@@ -221,24 +222,21 @@ class GPX(zavai.Service):
 
     def start(self):
         zavai.info("Starting GPX trace subsystem")
-        self.started = True
         gps = self.registry.resource("gps")
-        gps.position.connect(self.on_position_changed)
+        gps.position.connect("position", self.on_position_changed)
 
     def stop(self):
-        if not self.started: return
         zavai.info("Stopping GPX trace subsystem")
         gps = self.registry.resource("gps")
-        gps.position.disconnect(self.on_position_changed)
+        gps.position.disconnect("position", self.on_position_changed)
         self.stop_track()
-        self.started = False
 
     def on_position_changed(self, fields, tstamp, lat, lon, alt):
         self.last_pos = (fields, tstamp, lat, lon, alt)
         self.trackpoint()
 
     def start_track(self, tstamp = None, basename = None):
-        if basename is None:
+        if basename is not None:
             self.basename = basename
         elif tstamp is not None:
             # Compute basename for output files
@@ -254,7 +252,7 @@ class GPX(zavai.Service):
     xmlns="http://www.topografix.com/GPX/1/0"
     xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
   <trk>
-    <trkseg>""" % VERSION
+    <trkseg>""" % zavai.VERSION
 
         self.wpt = open(self.basename + "-wpt.gpx", "wt")
         print >>self.wpt, """<?xml version="1.0" encoding="UTF-8"?>
@@ -263,7 +261,7 @@ class GPX(zavai.Service):
     creator="audiomap %s"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://www.topografix.com/GPX/1/0"
-    xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">""" % VERSION
+    xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">""" % zavai.VERSION
 
         self.wpt_seq = 1;
         self.notify_activity_monitors()