REFACTORING : reorganize update of detected APs
authorJavier Palacios <javiplx@gmail.com>
Thu, 1 Nov 2012 22:39:18 +0000 (23:39 +0100)
committerJavier Palacios <javiplx@gmail.com>
Thu, 1 Nov 2012 22:39:18 +0000 (23:39 +0100)
wifiscanner/wifimap/db.py
wifiscanner/wifimap/replay.py
wifiscanner/wifimap/scanner.py

index de0f2fe..67046f4 100644 (file)
@@ -74,6 +74,13 @@ class database :
         if rc.rowcount :
             self.db.commit()
 
+    def seen_update ( self , mac , timestamp ) :
+
+        query = "UPDATE ap SET last_seen=%f WHERE mac='%s'" % ( timestamp , mac )
+        rc = self.db.execute( query )
+        if rc.rowcount :
+            self.db.commit()
+
     def delete ( self , mac ) :
         rc = self.db.execute( "DELETE FROM ap WHERE mac='%s'" % mac )
         if rc.rowcount :
index ea471d7..3fced51 100644 (file)
@@ -72,22 +72,24 @@ class ReplayScanner ( gobject.GObject ) :
 
         newap = 0
         self.newaps = False
-        for mac,max_rss in self.scanlist.iteritems() :
+        for mac,rss in self.scanlist.iteritems() :
             stored = self.db.db.execute( "SELECT rss, 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:] )
+            if not self.aps.has_key( mac ) :
+                if stored :
+                    self.aps[mac] = tuple(stored[1:])
+                else :
+                    newap += 1
+                    self.db.add( mac , rss , self.tstamp , self.info[4:] )
+                    self.aps[mac] = tuple(self.info[4:6])
+                    continue
+
+            if stored[0] < rss :
                 self.oldpos[mac] = self.aps[mac][0] , self.aps[mac][1]
-            else :
-                newap += 1
-                if not self.aps.has_key( mac ) :
-                    self.aps[ mac ] = [ 0 , 0 ]
-                self.db.add( mac , max_rss , self.tstamp , self.info[4:] )
-            self.aps[mac][0] = self.info[4]
-            self.aps[mac][1] = self.info[5]
+                self.db.update( mac , rss , self.tstamp , self.info[4:] )
+                self.aps[mac] = tuple(self.info[4:6])
+            elif stored :
+                self.db.seen_update( mac , self.tstamp )
+
         if newap :
             self.newap += newap
             self.newaps = True
index c1e6760..6b85222 100644 (file)
@@ -47,22 +47,24 @@ class Scanner ( gps.GPSObject , wifiscan.WifiScanner ) :
         wifiscan.WifiScanner.scan( self )
         newap = 0
         self.newaps = False
-        for mac,max_rss in self.scanlist.iteritems() :
+        for mac,rss in self.scanlist.iteritems() :
             stored = self.db.db.execute( "SELECT rss, 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:] )
+            if not self.aps.has_key( mac ) :
+                if stored :
+                    self.aps[mac] = tuple(stored[1:])
+                else :
+                    newap += 1
+                    self.db.add( mac , rss , self.tstamp , self.info[4:] )
+                    self.aps[mac] = tuple(self.info[4:6])
+                    continue
+
+            if stored[0] < rss :
                 self.oldpos[mac] = self.aps[mac][0] , self.aps[mac][1]
-            else :
-                newap += 1
-                if not self.aps.has_key( mac ) :
-                    self.aps[ mac ] = [ 0 , 0 ]
-                self.db.add( mac , max_rss , self.tstamp , self.info[4:] )
-            self.aps[mac][0] += self.info[4]
-            self.aps[mac][1] += self.info[5]
+                self.db.update( mac , rss , self.tstamp , self.info[4:] )
+                self.aps[mac] = tuple(self.info[4:6])
+            elif stored :
+                self.db.seen_update( mac , self.tstamp )
+
         if newap :
             self.newap += newap
             self.newaps = True