X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=wifiscanner%2Fwifimap%2Freplay.py;h=a0ccd461fa7a9d5c4406d32ac49043a6cbe282cc;hb=759aacbbfcca9659b56081eaf37dbeaf235a397f;hp=6bf7c868dc705f6677b5bc1e17982991a980487b;hpb=71dd6ad8f5852cf274bf046d54ec4c476268cce7;p=wifihood diff --git a/wifiscanner/wifimap/replay.py b/wifiscanner/wifimap/replay.py index 6bf7c86..a0ccd46 100644 --- a/wifiscanner/wifimap/replay.py +++ b/wifiscanner/wifimap/replay.py @@ -1,16 +1,13 @@ -import config import db import gobject import os -conf = config.Configuration() - class ReplayScanner ( gobject.GObject ) : - def __init__ ( self , ifname="wlan0" ) : + def __init__ ( self , conf , ifname="wlan0" ) : gobject.GObject.__init__( self ) self.scan_timeout = 0 self.db = db.database( os.path.join( conf.homedir , "wifireplay.db" ) ) @@ -29,14 +26,17 @@ class ReplayScanner ( gobject.GObject ) : # Values to be set by wireless scans self.scanlist = {} - self.tstamp = 0 self.nscan = 0 self.nfp = 0 # Values from the Scanner object + self.tstamp = 0 self.newap = 0 + self.newaps = False + self.aps = {} + self.oldpos = {} - def start ( self , timeout=5000 ) : + def start ( self , timeout=5000 , writelog=False ) : self.scan_timeout = timeout self.db.open() self._fd = open( self._file ) @@ -53,6 +53,8 @@ class ReplayScanner ( gobject.GObject ) : return next = self._fd.readline().split() + if not next : + return delta = float(next[0]) - float(self._current[0]) gobject.timeout_add( int(1000 / self._speed * delta) , self.scan ) @@ -64,24 +66,38 @@ class ReplayScanner ( gobject.GObject ) : self.nscan +=1 self.scanlist.clear() self.tstamp = float(self._current[0]) - for n in range(11, len(self._current), 2) : + for n in range(10, len(self._current), 2) : self.nfp += 1 self.scanlist[ self._current[n] ] = int(self._current[n+1]) + newap = 0 + self.newaps = False for mac,max_rss in self.scanlist.iteritems() : - stored = self.db.get( mac ) + stored = self.db.db.execute( "SELECT rss, n, lat, lon FROM ap WHERE mac='%s'" % mac ).fetchone() if stored : + if not self.aps.has_key( mac ) : + self.aps[ mac ] = list(stored[1:]) if stored[0] > max_rss : max_rss = stored[0] self.db.update( mac , max_rss , self.tstamp , self.info[4:] ) else : - self.newap += 1 + newap += 1 + if not self.aps.has_key( mac ) : + self.aps[ mac ] = [ 0 , 0 , 0 ] self.db.add( mac , max_rss , self.tstamp , self.info[4:] ) + if self.aps[mac][0] != 0 : + self.oldpos[mac] = self.aps[mac][1] / self.aps[mac][0] , self.aps[mac][2] / self.aps[mac][0] + self.aps[mac][0] += 1 + self.aps[mac][1] += self.info[4] + self.aps[mac][2] += self.info[5] + if newap : + self.newap += newap + self.newaps = True self._current = next def report ( self ) : - return "%d gps\t%d scan\t%d fp\t%d ap\t%d total ap" % ( self.ngps , self.nscan , self.nfp , self.newap , -1 ) + return "%d gps\t%d scan\t%d fp\t%d ap\t%d total ap" % ( self.ngps , self.nscan , self.nfp , self.newap , self.db.nrows() ) gobject.type_register(ReplayScanner)