Achieve full decoupling of Scanner object and graphical environment
[wifihood] / wifimap / wifiscan.py
index 013fb9c..c5495ce 100644 (file)
@@ -16,29 +16,27 @@ conf = config.Configuration()
 
 class Scanner ( gps.GPSObject ) :
 
-    def __init__ ( self , widget=None , ifname="wlan0" ) :
+    def __init__ ( self , ifname="wlan0" ) :
         gps.GPSObject.__init__( self )
-        self.osso_context = None
-        if widget :
-            self.osso_context = osso.Context("wifi_scanner", "2.0", False)
-            osso_rpc = osso.Rpc(self.osso_context)
-            osso_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "wakeup", wait_reply = True)
-        self._timer = None
+        self.osso_context = osso.Context("wifi_scanner", "2.0", False)
+        osso_rpc = osso.Rpc(self.osso_context)
+        osso_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "wakeup", wait_reply = True)
+        self.db = db.database( os.path.join( conf.homedir , conf.dbname ) )
+
+        # Values to be set by wireless scans
         self.nscan = 0
         self.nfp = 0
-        self.scanlist = None
         self.newap = 0
-        self.db = db.database( os.path.join( conf.homedir , conf.dbname ) )
+        self.scanlist = []
 
     def start ( self ) :
-        if self.osso_context :
-            osso_rpc = osso.Rpc(self.osso_context)
-            scan_out = osso_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "start")
+        osso_rpc = osso.Rpc(self.osso_context)
+        osso_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "start")
         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_rpc.rpc_run("org.javiplx.wifiscan", "/org/javiplx/wifiscan", "org.javiplx.wifiscan", "stop")
         self.db.close()
 
     def scan ( self ) :
@@ -49,15 +47,12 @@ class Scanner ( gps.GPSObject ) :
         except Exception , ex :
             osso.SystemNote(self.osso_context).system_note_infoprint("Exception scanning %s" % ex )
             return True
-        if self.scanlist :
-            start, end = self.scanlist.get_bounds()
-            self.scanlist.delete( start , end )
+        del self.scanlist[:]
         tstamp = time.time()
         latlon = None
         if self.gps_state == "FIX" :
             latlon = ( self.device.fix[4] , self.device.fix[5] , self.device.fix[7] )
         self.store_scan( tstamp , scan_out , latlon )
-        self.refresh_infowin()
         if self._debug :
             osso.SystemNote(self.osso_context).system_note_infoprint("Found %d APs" % len(scan_out) )
         else :
@@ -69,8 +64,7 @@ class Scanner ( gps.GPSObject ) :
         for net in scan_out.split() :
             self.nfp += 1
             items = net.rsplit(":", 1)
-            if self.scanlist :
-                self.scanlist.insert_at_cursor( "%s %5d\n" % ( items[0] , int(items[1]) ) )
+            self.scanlist.append( "%s %5d\n" % ( items[0] , int(items[1]) ) )
             stored = self.db.get( items[0] )
             if stored :
                 max_rss = int(items[1])
@@ -86,8 +80,7 @@ class Scanner ( gps.GPSObject ) :
         while nets :
             self.nfp += 1
             items = ( nets.pop(0) , nets.pop(0) )
-            if self.scanlist :
-                self.scanlist.insert_at_cursor( "%s %5d\n" % ( items[0] , int(items[1]) ) )
+            self.scanlist.append( "%s %5d\n" % ( items[0] , int(items[1]) ) )
             stored = self.db.get( items[0] )
             if stored :
                 max_rss = int(items[1])
@@ -111,9 +104,6 @@ class Scanner ( gps.GPSObject ) :
                 celllist.write ( "%s\n" % ( self.cell_info ,) )
                 celllist.close()
 
-    def set_infowin ( self , listwin ) :
-        self.scanlist = listwin
-
     def report ( self ) :
         return "%s\t%d scan\t%d fp\t%d ap\t%d total ap" % ( gps.GPSObject.report(self) , self.nscan , self.nfp , self.newap , self.db.nrows() )