Initial implementation of AP positions update
[wifihood] / wifiscanner / wifimap / scanner.py
index 41f2e5c..c6488c1 100644 (file)
@@ -13,17 +13,19 @@ import gobject
 
 import os
 
-conf = config.Configuration()
-
 class Scanner ( gps.GPSObject , wifiscan.WifiScanner ) :
 
     def __init__ ( self , ifname="wlan0" ) :
         gps.GPSObject.__init__( self )
         wifiscan.WifiScanner.__init__( self , ifname )
-        self.db = db.database( os.path.join( conf.homedir , conf.dbname ) )
+        conf = config.Configuration( 'scanner' )
+        self.homedir = conf.homedir
+        self.db = db.database( os.path.join( self.homedir , conf.dbname ) )
 
         # Values to be set by wireless scans
         self.newap = 0
+        self.newaps = False
+        self.aps = []
 
     def start ( self , timeout=5000 ) :
         gps.GPSObject.start( self )
@@ -37,27 +39,33 @@ class Scanner ( gps.GPSObject , wifiscan.WifiScanner ) :
 
     def scan ( self ) :
         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, lat/n, lon/n FROM ap WHERE mac='%s'" % mac ).fetchone()
             if stored :
+                self.aps.append( 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
                 self.db.add( mac , max_rss , self.tstamp , self.info[4:] )
+        if newap :
+            self.newap += newap
+            self.newaps = True
         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 %s\n" % ( self.tstamp , " ".join(self.info) , " ".join(self.scanlist) ) )
             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()