diff --git a/PyTracker/trunk/tracking.txt b/PyTracker/trunk/INFO.TXT similarity index 100% rename from PyTracker/trunk/tracking.txt rename to PyTracker/trunk/INFO.TXT diff --git a/PyTracker/trunk/PyTrackerClient.py b/PyTracker/trunk/PyTrackerClient.py index 02b0c5c..e6429c3 100644 --- a/PyTracker/trunk/PyTrackerClient.py +++ b/PyTracker/trunk/PyTrackerClient.py @@ -102,6 +102,7 @@ class TrackClient: def StopTrack(self): self.SendData(self.__username, self.__pwhash, action="STOP") + +# remove connect_to_signal event self.terminator.remove() self.usage_iface.ReleaseResource("GPS") - sys.exit() diff --git a/PyTracker/trunk/PyTrackerServer.py b/PyTracker/trunk/PyTrackerServer.py new file mode 100644 index 0000000..589b29d --- /dev/null +++ b/PyTracker/trunk/PyTrackerServer.py @@ -0,0 +1,90 @@ +from __future__ import with_statement +import time +from socket import * +from WriteGPX import * + +class TrackServer: + def __init__(self, host, port, hashfile, datadir = '.'): + self.InitSocker(host, port) + self.InitHashdb(hashfile) + self.InitTrackDict() + self.datadir = datadir + + def InitHashdb(self, hashfile): + self.hashdb=[] + with open(hashfile, "r") as file: + for line in file: + if line: + self.hashdb.append((line.split()[0], \ + line.split()[1])) + + def InitTrackDict(self): + self.TrackDict={} + for data in self.hashdb: + self.TrackDict[data[0]] = "" + + def InitSocket(self, host, port): + +# Set the socket parameters +# e.g. host = "localhost" +# e.g. port = 49152 + self.__addr = (str(host),int(port)) + +# Create socket and bind it to the address + self.__UDPSock = socket(AF_INET,SOCK_DGRAM) + self.__UDPSock.bind(sel.__addr) + +# Debug message: + print "UDP Socket for %s at port %s created" % (host, port) + + def VerifyUser(self, username, password_hash): + for data in self.hashdb: + if data[0] == username and data[1] == password_hash: + return 1 + return 0 + + + def Parser(self, stuff): + +# Parses the complete data sent to UDP port + try: + username, password_hash, action, data = stuff.split(';') + +# Verifies the user and password + if self.VerifyUser(username, password_hash): + if action == "START": + self.NewTrack(username) + if action == "STOP": + self.CloseTrack(username) + if action == "TRANSMIT": + self.AddToTrack(username, data) + print "Action", action,"received" + except: + print "Something went wrong.." + + def NewTrack(self, username): + if not self.TrackDict[username]: + self.TrackDict[username] = WriteGPX("%s%s%s" % (self.datadir, username, time.strftime("%Y%m%d%H%M%S")) + print "Created track", self.TrackDict[username] + + def CloseTrack(self, username): + if self.TrackDict[username]: + self.TrackDict[username].close() + print "Closed track", self.TrackDict[username] + del self.TrackDict[username] + + def AddToTrack(self, username, data): + lat, lon, ele, time = data.split(',') + self.TrackDict[username].write(lat, lon, ele, time) + + +buf = 1024 + +# Create instance of TrackServer +instance = TrackServer() + +#Receive messages +while 1: + data,addr = UDPSock.recvfrom(1024) + print "Following data received:", data + instance.Parser(data) diff --git a/PyTracker/trunk/PyTracker.py b/PyTracker/trunk/PyTracker[old].py similarity index 100% rename from PyTracker/trunk/PyTracker.py rename to PyTracker/trunk/PyTracker[old].py diff --git a/PyTracker/trunk/WriteGPX.py b/PyTracker/trunk/WriteGPX.py index a88db93..c87a709 100644 --- a/PyTracker/trunk/WriteGPX.py +++ b/PyTracker/trunk/WriteGPX.py @@ -3,16 +3,20 @@ authors: Pau1us license: gpl v2 or later -This is a Class to creat *.gpx Files +This is a Class to create *.gpx Files Usage: open new file: file = WriteGPX(filename) write trackpint: file.write(lat, lon, alt, utctime) close file: file.close() The file musst be closed, otherwise the file will be incomplete ''' +from __future__ import with_statement +<<<<<<< .mine +======= from __future__ import with_statement +>>>>>>> .r158 class WriteGPX: def __init__(self, filename): self.filename = filename @@ -31,9 +35,9 @@ class WriteGPX: def write(self, lat, lon, ele, time): self.trackpoint = '\n\ -%s\n\ -\n\ -\n' % (lat, lon, ele, time) + %s\n\ + \n\ + \n' % (lat, lon, ele, time) with open(self.filename,'a') as file: file.write(self.trackpoint) diff --git a/PyTracker/trunk/server.py b/PyTracker/trunk/server.py deleted file mode 100644 index 038d29a..0000000 --- a/PyTracker/trunk/server.py +++ /dev/null @@ -1,79 +0,0 @@ -from __future__ import with_statement -import time -from socket import * - -class TrackServer: - def __init__(self): - self.InitHashdb("hashfile.txt") - self.InitTrackDict() - - def InitHashdb(self, hashfile): - self.hashdb=[] - with open(hashfile, "r") as file: - for line in file: - if line: - self.hashdb.append((line.split()[0], \ - line.split()[1])) - - def InitTrackDict(self): - self.TrackDict={} - for data in self.hashdb: - self.TrackDict[data[0]] = "" - - def VerifyUser(self, username, password_hash): - for data in self.hashdb: - if data[0] == username and data[1] == password_hash: - return 1 - return 0 - - - def Parser(self, stuff): -# Parses the complete data sent to UDP port - try: - username, password_hash, action, data = stuff.split() -# Verifies the user and password - if self.VerifyUser(username, password_hash): - - if action == "START": - self.NewTrack(username) - if action == "STOP": - self.CloseTrack(username) - if action == "TRANSMIT": - self.AddToTrack(username, data) - print "Action", action,"received" - except: - print "Something went wrong.." - - def NewTrack(self, username): - self.TrackDict[username] = "/home/edistar/Openmoko/projects/tracking/data/" + username + time.strftime("%Y%m%d%H%M%S") - print "Created track", self.TrackDict[username] - - def CloseTrack(self, username): - self.TrackDict[username] = "" - print "Closed track", self.TrackDict[username] - - def AddToTrack(self, username, data): - with open(self.TrackDict[username], "a") as trackfile: - trackfile.write(data + "\n") - print "Successfully added data to track", self.TrackDict[username] - -instance=TrackServer() - -# Set the socket parameters -host = "" -port = 49152 -buf = 1024 -addr = (host,port) - -# Create socket and bind to address -UDPSock = socket(AF_INET,SOCK_DGRAM) -UDPSock.bind(addr) - -# Create instance of TrackServer -instance = TrackServer() - -#Receive messages -while 1: - data,addr = UDPSock.recvfrom(buf) - print "Following data received:", data - instance.Parser(data)