-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy paththreaded_iwparse.py
71 lines (53 loc) · 1.67 KB
/
threaded_iwparse.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/python
import threading
import time
import iwlist
import pprint
class threaded_iwparse(threading.Thread):
def __init__(self, threadID, name, interface, counter, delay):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.interface = interface
self.counter = counter
self.delay = delay
self.cells = None
self.updated = False
self.time_taken = None
self.stopped = False
def run(self):
print "Starting " + self.name
self.print_iwlist()
print "Exiting " + self.name
def print_iwlist(self):
while self.counter:
if self.stopped:
#self.name.exit()
return
# time.sleep(self.delay)
start = time.time()
""" Pretty prints the output of iwlist scan into a table. """
content = iwlist.scan(self.interface) #(interface='wlan0')
self.cells = iwlist.parse(content)
# print cells
sortby = "signal_level_dBm"
reverse = False
self.cells.sort(None, lambda el: el[sortby], reverse)
self.updated = True
self.time_taken = time.time()-start
self.counter -= 1
self.stopped = True
return
def read(self):
# return the cells most recently read
self.updated = False
return self.cells
def update(self):
return self.updated
def time(self):
#return time taken
return self.time_taken
def stop(self):
self.stopped = True
def running(self):
return not self.stopped