Increased robustness, with ability to handle multiformat log files
[wifihood] / wifiscanner / logscanner
1 #!/usr/bin/python
2
3 import wifimap
4
5 import sys
6
7 verbose = False
8
9 def main ( scanner , filename ) :
10     scanner.start()
11     fd = open( filename )
12     nline = 0
13     for line in fd.readlines() :
14         nline += 1
15         gps_info = line[:-1].split(None,11)
16         tstamp = float(gps_info.pop(0))
17         scan_out = gps_info.pop()
18         if len(gps_info) != 10 :
19             if verbose :
20                 print "Unparseable scan at line %d" % nline
21             continue
22         if gps_info[0] == "None" :
23             if verbose :
24                 print "Broken scan at line %d" % nline
25             continue
26         if gps_info[3] == "nan" :
27             if verbose :
28                 print "Broken scan at line %d" % nline
29             continue
30         latlon = None
31         if gps_info[0] == "FIX" :
32                 scanner.ngps += 1
33                 latlon = ( float(gps_info[4]) , float(gps_info[5]) , float(gps_info[6]) )
34         scanner.nscan +=1
35         if scan_out.find(" ") == 17 :
36             scanner.store_legacy( tstamp , scan_out , latlon )
37         else :
38             scanner.store_scan( tstamp , scan_out , latlon )
39         if verbose : 
40             print "%5d gps\t%5d scan\t%6d fp\t%5d ap\t%6d total ap" % ( scanner.ngps , scanner.nscan , scanner.nfp , scanner.newap , scanner.db.nrows() )
41     fd.close()
42
43 if __name__ == "__main__" :
44
45     if len(sys.argv) != 2 :
46         print "Usage : logscanner wifiscanner.log"
47         sys.exit(1)
48     scanner = wifimap.Scanner()
49     main( scanner , sys.argv[1] )
50