X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=wifiscanner%2Fwifimap%2Fwifiscan.py;h=98c33ee8c6b130a8b1ca68b319145d3ca9ed7390;hb=31c8203f2babf892f4cadbabdd057eea04cdc333;hp=41175ad9611d64d08c1247b5d41ac0c08aed07f9;hpb=ca5df0def8442d66f4baa031eb192ddb7a68c520;p=wifihood diff --git a/wifiscanner/wifimap/wifiscan.py b/wifiscanner/wifimap/wifiscan.py index 41175ad..98c33ee 100644 --- a/wifiscanner/wifimap/wifiscan.py +++ b/wifiscanner/wifimap/wifiscan.py @@ -3,59 +3,92 @@ import osso import time -import gps +import config , db , gps import gobject +import os + +conf = config.Configuration() + class Scanner ( gps.GPSObject ) : def __init__ ( self , widget=None , ifname="wlan0" ) : gps.GPSObject.__init__( self , widget ) self.osso_context = osso.Context("wifi_scanner", "2.0", False) + osso_rpc = osso.Rpc(self.osso_context) + scan_out = osso_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "wakeup", wait_reply = True) self._timer = None + self.nscan = 0 + self.nfp = 0 + self.scanlist = None + self.aplist = {} + self.db = db.database( os.path.join( conf.homedir , conf.dbname ) ) def start ( self ) : osso_rpc = osso.Rpc(self.osso_context) scan_out = osso_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "start") - osso.SystemNote(self.osso_context).system_note_infoprint("WifiScand started") + self.db.open() def stop ( self ) : osso_rpc = osso.Rpc(self.osso_context) scan_out = osso_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "stop") - osso.SystemNote(self.osso_context).system_note_infoprint("WifiScand stopped") + self.db.close() def scan ( self ) : + timestamp = time.time() osso_rpc = osso.Rpc(self.osso_context) try : scan_out = osso_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "scan", wait_reply = True) + self.nscan +=1 except Exception , ex : osso.SystemNote(self.osso_context).system_note_infoprint("Exception scanning %s" % ex ) return True - #osso.SystemNote(self.osso_context).system_note_infoprint("Found %d APs" % len(scan_out.split()) ) out_str = "" + if self.scanlist : + start, end = self.scanlist.get_bounds() + self.scanlist.delete( start , end ) for net in scan_out.split() : + self.nfp += 1 items = net.rsplit(":", 1) out_str += " %s %s" % ( items[0] , items[1] ) + if self.scanlist : + self.scanlist.insert_at_cursor( "%s %5d\n" % ( items[0] , int(items[1]) ) ) + stored = self.db.get( items[0] ) + if stored : + max_rss = int(items[1]) + if stored[0] > max_rss : + max_rss = stored[0] + self.db.update( items[0] , max_rss , timestamp ) + else : + self.db.add( items[0] , int(items[1]) , timestamp ) + self.aplist[ items[0] ] = 1 + self.refresh_infowin() if self._debug : - # Use osso or hildon for notes ??? osso.SystemNote(self.osso_context).system_note_infoprint("Found %d APs" % len(scan_out) ) - # hildon.hildon_banner_show_information( self._parent , "icon_path" , "Found %d APs" % len(scan_out) ) else : - fd = open( "/home/user/MyDocs/wiscan_gui.info" , 'a' ) - fd.write( "%s %s%s\n" % ( time.time() , self.gps_info , out_str ) ) + fd = open( os.path.join( conf.homedir , "wiscan_gui.info" ) , 'a' ) + fd.write( "%s %s%s\n" % ( timestamp , self.gps_info , out_str ) ) fd.close() if self.satellites : - loclist = open( "/home/user/MyDocs/location.info" , 'a' ) + loclist = open( os.path.join( conf.homedir , "location.info" ) , 'a' ) loclist.write ( "%s\n" % ( self.satellites ,) ) loclist.close() if self.cell_info : - # osso.SystemNote(self.osso_context).system_note_infoprint("Found Cell : %s" % ( self.cell_info ,) ) - celllist = open( "/home/user/MyDocs/cell.info" , 'a' ) + celllist = open( os.path.join( conf.homedir , "cell.info" ) , 'a' ) celllist.write ( "%s\n" % ( self.cell_info ,) ) celllist.close() return True + def set_infowin ( self , statuswin , listwin ) : + gps.GPSObject.set_infowin( self , statuswin ) + self.scanlist = listwin + + def refresh_infowin ( self ) : + if self.status : + self.status.set_text( "%d gps\t%d scan\t%d fp\t%d ap\t%d total ap" % ( self.ngps , self.nscan , self.nfp , len(self.aplist.keys()) , self.db.nrows() ) ) + gobject.type_register(Scanner)