-
Notifications
You must be signed in to change notification settings - Fork 2
/
linux-wifi-aggregator.py
84 lines (70 loc) · 3.01 KB
/
linux-wifi-aggregator.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env python
# Description: Aggregate WiFi RSSI
# Author: Aravinth Panchadcharam
import csv
import datetime as dt
import time
import sys
if len(sys.argv) < 2:
print "python linux-wifi-aggregator.py log_file_name_without_extension"
print "Example: python linux-wifi-aggregator.py logs/mediatek-mt7610u-wifi-rssi-03-10-2017"
print
else:
log_file_name = sys.argv[1]
log_file = open(log_file_name + '.csv', "rb")
reader = csv.reader(log_file)
agg_file_name = log_file_name + '-agg.csv'
agg_file = open(agg_file_name, "wb")
writer = csv.writer(agg_file, delimiter=',',
quotechar='"', quoting=csv.QUOTE_NONE)
# write headers to aggregated file
writer.writerow(["nic", "antenna", "ssid", "distance", "rssi",
"link_quality", "channel", "link_quality_in_percentage"])
for row in reader:
# ignore header row
if reader.line_num == 1:
pass
# first data row
if reader.line_num == 2:
distance = int(row[3])
rssi = int(row[5])
link_quality = int(row[6])
link_quality_in_percentage = int(row[8])
row_count = 1
nic = row[0]
antenna = int(row[1])
ssid = row[2]
channel = int(row[7])
pass
# other data rows
if reader.line_num > 2:
if distance == int(row[3]):
row_count += 1
rssi += int(row[5])
link_quality += int(row[6])
link_quality_in_percentage += int(row[8])
else:
rssi_avg = rssi / row_count
link_quality_avg = link_quality / row_count
link_quality_in_percentage_avg = link_quality_in_percentage / row_count
print "Distance : %d, RSSI Avg: %d, Link Avg: %d, Link Percent Avg: %d, Sample Count: %d" % (distance, rssi_avg, link_quality_avg, link_quality_in_percentage_avg, row_count)
writer.writerow([nic, antenna, ssid, distance, rssi_avg,
link_quality_avg, channel, link_quality_in_percentage_avg])
distance = int(row[3])
rssi = int(row[5])
link_quality = int(row[6])
link_quality_in_percentage = int(row[8])
row_count = 1
nic = row[0]
antenna = int(row[1])
ssid = row[2]
channel = int(row[7])
# save last row
rssi_avg = rssi / row_count
link_quality_avg = link_quality / row_count
link_quality_in_percentage_avg = link_quality_in_percentage / row_count
print "Distance : %d, RSSI Avg: %d, Link Avg: %d, Link Percent Avg: %d, Sample Count: %d" % (distance, rssi_avg, link_quality_avg, link_quality_in_percentage_avg, row_count)
writer.writerow([nic, antenna, ssid, distance, rssi_avg,
link_quality_avg, channel, link_quality_in_percentage_avg])
log_file.close()
agg_file.close()