From 7048899909275f3debd61b4e748b7aa5d493fc47 Mon Sep 17 00:00:00 2001 From: Javier Palacios Date: Thu, 1 Nov 2012 23:39:18 +0100 Subject: [PATCH] REFACTORING : reorganize update of detected APs --- wifiscanner/wifimap/db.py | 7 +++++++ wifiscanner/wifimap/replay.py | 30 ++++++++++++++++-------------- wifiscanner/wifimap/scanner.py | 30 ++++++++++++++++-------------- 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/wifiscanner/wifimap/db.py b/wifiscanner/wifimap/db.py index de0f2fe..67046f4 100644 --- a/wifiscanner/wifimap/db.py +++ b/wifiscanner/wifimap/db.py @@ -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 : diff --git a/wifiscanner/wifimap/replay.py b/wifiscanner/wifimap/replay.py index ea471d7..3fced51 100644 --- a/wifiscanner/wifimap/replay.py +++ b/wifiscanner/wifimap/replay.py @@ -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 diff --git a/wifiscanner/wifimap/scanner.py b/wifiscanner/wifimap/scanner.py index c1e6760..6b85222 100644 --- a/wifiscanner/wifimap/scanner.py +++ b/wifiscanner/wifimap/scanner.py @@ -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 -- 1.7.9.5