Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ardupilot
GitHub Repository: Ardupilot/ardupilot
Path: blob/master/Tools/scripts/frame_sizes.py
9447 views
1
#!/usr/bin/env python3
2
3
# flake8: noqa
4
5
import re, sys, operator, os
6
7
code_line = re.compile("^\s*\d+:/")
8
frame_line = re.compile("^\s*\d+\s+/\* frame size = (\d+) \*/")
9
10
class frame(object):
11
def __init__(self, code, frame_size):
12
self.code = code
13
self.frame_size = int(frame_size)
14
15
frames = []
16
17
def process_lst(filename):
18
'''process one lst file'''
19
last_code = ''
20
h = open(filename, mode='r')
21
for line in h:
22
if code_line.match(line):
23
last_code = line.strip()
24
elif frame_line.match(line):
25
frames.append(frame(last_code, frame_line.match(line).group(1)))
26
h.close()
27
28
if len(sys.argv) > 1:
29
dname = sys.argv[1]
30
else:
31
dname = '.'
32
33
for root, dirs, files in os.walk(dname):
34
for f in files:
35
if f.endswith(".lst"):
36
process_lst(os.path.join(root, f))
37
38
sorted_frames = sorted(frames,
39
key=operator.attrgetter('frame_size'),
40
reverse=True)
41
42
print("FrameSize Code")
43
for frame in sorted_frames:
44
if frame.frame_size > 0:
45
print("%9u %s" % (frame.frame_size, frame.code))
46
47
48