604d68c975
The PyTracker project seeks to create a simple tracking app, not with all the bloat TangoGPS creates (which is not needed) git-svn-id: http://www.neo1973-germany.de/svn@150 46df4e5c-bc4e-4628-a0fc-830ba316316d
81 lines
2.2 KiB
Python
Executable file
81 lines
2.2 KiB
Python
Executable file
#!/usr/bin/python
|
|
'''
|
|
authors: edistar
|
|
license: gpl v2 or later
|
|
version 0.2
|
|
'''
|
|
|
|
from __future__ import with_statement
|
|
import time
|
|
import datetime
|
|
import ecore
|
|
import e_dbus
|
|
import os
|
|
from dbus import SystemBus, Interface
|
|
from optparse import OptionParser
|
|
|
|
class Main:
|
|
|
|
def __init__(self):
|
|
|
|
self.GetPath()
|
|
|
|
# get FSO Usage proxy/iface up to request GPS
|
|
self.systembus=systembus = SystemBus(mainloop=e_dbus.DBusEcoreMainLoop())
|
|
self.usage_proxy = self.systembus.get_object('org.freesmartphone.ousaged', '/org/freesmartphone/Usage')
|
|
self.usage_iface = Interface(self.usage_proxy, 'org.freesmartphone.Usage')
|
|
|
|
# Request GPS from FSO (which then powers on the GPS chip)
|
|
self.usage_iface.RequestResource("GPS")
|
|
|
|
#get gypsy proxy/iface up
|
|
self.ogpsd_proxy = self.systembus.get_object('org.freesmartphone.ogpsd', '/org/freedesktop/Gypsy')
|
|
self.course_iface = Interface(self.ogpsd_proxy, 'org.freedesktop.Gypsy.Course')
|
|
self.pos_iface = Interface(self.ogpsd_proxy, 'org.freedesktop.Gypsy.Position')
|
|
|
|
# call self.UpdatePosition() when a dbus signal "PositionChanged" comes along the system bus
|
|
self.pos_iface.connect_to_signal("PositionChanged", self.UpdatePosition)
|
|
|
|
|
|
def UpdatePosition(self, fields, timestamp, lat, lon, alt):
|
|
|
|
# get UTC time from gypsy timestamp
|
|
string = str(datetime.datetime.utcfromtimestamp(timestamp))
|
|
date, time = string.split()
|
|
utctime = "%sT%sZ" % (date, time)
|
|
|
|
# write data to file
|
|
s ="%s,%s,%s,%s\n" % (lat, lon, alt, utctime)
|
|
with open(self.trackfile,'a') as file:
|
|
file.write(s)
|
|
|
|
#debugging output:
|
|
print s
|
|
|
|
|
|
def Parser(self):
|
|
|
|
# parse command line options
|
|
self.parser=OptionParser("usage foo bar")
|
|
self.parser.add_option("-f", "--file", "-o", "-l", action = "store", dest = "trackfile")
|
|
(self.options, self.args) = self.parser.parse_args()
|
|
|
|
|
|
def GetPath(self):
|
|
trackpath = '.'
|
|
suffix = 'track'
|
|
self.Parser()
|
|
|
|
# raises an Exception if the path doesn't exist! :)
|
|
path, rubbish, suffix = self.trackfile.options.rpartition("/")
|
|
|
|
if not os.path.exists(path):
|
|
raise Exception("path does not exist!")
|
|
|
|
# sets trackfile path and filename
|
|
self.trackfile = "%s/%s-%s" % (trackpath, time.strftime(), suffix)
|
|
|
|
|
|
|
|
test=Main()
|
|
ecore.main_loop_begin()
|