try :
import osso
except :
- import osso_wrapper as osso
+ import hildongtk.osso as osso
import time
-import config , db
+import db
import gps , wifiscan
import gobject
import os
-conf = config.Configuration()
-
class Scanner ( gps.GPSObject , wifiscan.WifiScanner ) :
- def __init__ ( self , ifname="wlan0" ) :
+ def __init__ ( self , conf , ifname="wlan0" ) :
gps.GPSObject.__init__( self )
wifiscan.WifiScanner.__init__( self , ifname )
self.db = db.database( os.path.join( conf.homedir , conf.dbname ) )
+ self.homedir = conf.homedir
+
+ self.write = False
# Values to be set by wireless scans
+ 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 ) :
gps.GPSObject.start( self )
wifiscan.WifiScanner.start( self , timeout )
self.db.open()
+ self.write = writelog
def stop ( self ) :
gps.GPSObject.stop( self )
wifiscan.WifiScanner.stop( self )
self.db.close()
+ self.write = False
def scan ( self ) :
+ self.tstamp = time.time()
wifiscan.WifiScanner.scan( self )
+ 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:] )
- self.write_logs()
+ 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
+ if self.write :
+ self.write_logs()
def write_logs ( self ) :
- fd = open( os.path.join( conf.homedir , "wiscan_gui.info" ) , 'a' )
- fd.write( "%s %s %s\n" % ( self.tstamp , self.info , self.scanlist ) )
+ fd = open( os.path.join( self.homedir , "wiscan_gui.info" ) , 'a' )
+ fd.write( "%s %s\n" % ( self.tstamp , self ) )
fd.close()
if self.satellites :
- loclist = open( os.path.join( conf.homedir , "location.info" ) , 'a' )
+ loclist = open( os.path.join( self.homedir , "location.info" ) , 'a' )
loclist.write ( "%s\n" % ( self.satellites ,) )
loclist.close()
if self.cells :
- celllist = open( os.path.join( conf.homedir , "cell.info" ) , 'a' )
+ celllist = open( os.path.join( self.homedir , "cell.info" ) , 'a' )
celllist.write ( "%s\n" % ( self.cells ,) )
celllist.close()
+ def __str__ ( self ) :
+ return "%s %s" % ( gps.GPSObject.__str__(self) , wifiscan.WifiScanner.__str__(self) )
+
def report ( self ) :
# BUG : if report is called after close, db.nrows() will produce an exception
return "%s\t%s\t%d ap\t%d total ap" % ( gps.GPSObject.report(self) , wifiscan.WifiScanner.report(self) , self.newap , self.db.nrows() )