5 import osso_wrapper as osso
16 class Scanner ( gps.GPSObject , wifiscan.WifiScanner ) :
18 def __init__ ( self , ifname="wlan0" ) :
19 gps.GPSObject.__init__( self )
20 wifiscan.WifiScanner.__init__( self , ifname )
21 conf = config.Configuration( 'scanner' )
22 self.homedir = conf.homedir
23 self.db = db.database( os.path.join( self.homedir , conf.dbname ) )
25 # Values to be set by wireless scans
29 def start ( self , timeout=5000 ) :
30 gps.GPSObject.start( self )
31 wifiscan.WifiScanner.start( self , timeout )
35 gps.GPSObject.stop( self )
36 wifiscan.WifiScanner.stop( self )
40 wifiscan.WifiScanner.scan( self )
43 for mac,max_rss in self.scanlist.iteritems() :
44 stored = self.db.get( mac )
46 if stored[0] > max_rss :
48 self.db.update( mac , max_rss , self.tstamp , self.info[4:] )
51 self.db.add( mac , max_rss , self.tstamp , self.info[4:] )
57 def write_logs ( self ) :
58 fd = open( os.path.join( self.homedir , "wiscan_gui.info" ) , 'a' )
59 fd.write( "%s %s %s\n" % ( self.tstamp , " ".join(self.info) , " ".join(self.scanlist) ) )
62 loclist = open( os.path.join( self.homedir , "location.info" ) , 'a' )
63 loclist.write ( "%s\n" % ( self.satellites ,) )
66 celllist = open( os.path.join( self.homedir , "cell.info" ) , 'a' )
67 celllist.write ( "%s\n" % ( self.cells ,) )
71 # BUG : if report is called after close, db.nrows() will produce an exception
72 return "%s\t%s\t%d ap\t%d total ap" % ( gps.GPSObject.report(self) , wifiscan.WifiScanner.report(self) , self.newap , self.db.nrows() )
75 gobject.type_register(Scanner)
77 if __name__ == "__main__" :
78 loop = gobject.MainLoop()
80 def on_stop(control, mainloop):
82 sample.control.connect("gpsd-stopped", on_stop, loop)
83 def show_scan(wifiscanner):
84 gobject.timeout_add( 5000 , show_scan , sample )
85 print "scan results %s" % wifiscanner.report()
86 print " tstamp %s" % wifiscanner.tstamp
88 for k,v in wifiscanner.scanlist.iteritems() :
90 print " %s %s" % ( k , v )
97 gobject.timeout_add( 5100 , show_scan , sample )