Implement an internal buffer on scanner to store coordinates, enabling the plot of...
authorjaviplx <javiplx@gmail.com>
Sat, 14 May 2011 09:29:24 +0000 (09:29 +0000)
committerjaviplx <javiplx@gmail.com>
Sat, 14 May 2011 09:29:24 +0000 (09:29 +0000)
git-svn-id: file:///svnroot/wifihood/trunk@159 c51dfc6a-5949-4919-9c8e-f207a149c383

wifiscanner/wifimap/replay.py
wifiscanner/wifiscanner

index 649828e..0130e60 100644 (file)
@@ -35,7 +35,7 @@ class ReplayScanner ( gobject.GObject ) :
         # Values from the Scanner object
         self.newap = 0
         self.newaps = False
-        self.aps = []
+        self.aps = {}
 
     def start ( self , timeout=5000 ) :
         self.scan_timeout = timeout
@@ -74,15 +74,21 @@ class ReplayScanner ( gobject.GObject ) :
         newap = 0
         self.newaps = False
         for mac,max_rss in self.scanlist.iteritems() :
-            stored = self.db.db.execute( "SELECT rss, lat/n, lon/n FROM ap WHERE mac='%s'" % mac ).fetchone()
+            stored = self.db.db.execute( "SELECT rss, n, lat, lon FROM ap WHERE mac='%s'" % mac ).fetchone()
             if stored :
-                self.aps.append( stored[1:] )
+                if not self.aps.has_key( mac ) :
+                    self.aps[ mac ] = stored[1:]
                 if stored[0] > max_rss :
                     max_rss = stored[0]
                 self.db.update( mac , max_rss , self.tstamp , self.info[4:] )
             else :
                 newap += 1
+                if not self.aps.has_key( mac ) :
+                    self.aps[ mac ] = [ 0 , 0 , 0 ]
                 self.db.add( mac , max_rss , self.tstamp , self.info[4:] )
+            self.aps[0] += 1
+            self.aps[1] += self.info[4]
+            self.aps[2] += self.info[5]
         if newap :
             self.newap += newap
             self.newaps = True
index f1fe5e4..ec1b676 100755 (executable)
@@ -63,8 +63,8 @@ class scanner ( wifimap.ReplayScanner ) :
             if self.newaps :
                 pointsize += 2
             self.map.plot( pixmap , ( float(self.info[4]) , float(self.info[5]) ) , "red" , pointsize )
-            while self.aps :
-                self.map.plot( pixmap , self.aps.pop() , "green" , 1 )
+            for ap in self.aps.values() :
+                self.map.plot( pixmap , ( ap[1]/ap[0] , ap[2]/ap[0] ) , "green" , 1 )
             self.map.get_pixbuf().get_from_drawable( pixmap , pixmap.get_colormap() , 0, 0 , 0 , 0 , self.map.win_x, self.map.win_y )
             self.map.show()