You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.2 KiB
Python

#!/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()