From 2af15b1e976fc8479bae40c55dbe172619e7450c Mon Sep 17 00:00:00 2001 From: Peter Barker <pbarker@barker.dropbear.id.au> Date: Tue, 8 Mar 2022 12:23:27 +1100 Subject: [PATCH] mavmsgstats.py: add capability to parse tlogs --- tools/mavmsgstats.py | 48 +++++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/tools/mavmsgstats.py b/tools/mavmsgstats.py index 34860710..8eb7d6e0 100755 --- a/tools/mavmsgstats.py +++ b/tools/mavmsgstats.py @@ -13,6 +13,8 @@ parser.add_argument("logs", metavar="LOG", nargs="+") args = parser.parse_args() +os.environ['MAVLINK20'] = '1' + from pymavlink import mavutil categories = { @@ -32,22 +34,44 @@ def show_stats(logfile): '''show stats on a file''' print("Processing log %s" % filename) mlog = mavutil.mavlink_connection(filename) + sizes = {} total_size = 0 - names = mlog.name_to_id.keys() pairs = [] - for name in names: - sizes[name] = 0 - - for name in names: - mid = mlog.name_to_id[name] - count = mlog.counts[mid] - mlen = mlog.formats[mid].len - size = count * mlen - total_size += size - sizes[name] += size - pairs.append((name, count*mlen)) + if filename.endswith("tlog"): + counts = {} + names = [] + while True: + m = mlog.recv_match() + if m is None: + break + t = m.get_type() + if t not in counts: + sizes[t] = m._header.mlen + counts[t] = 0 + names.append(t) + counts[t] += 1 + for (name, size) in sizes.items(): + size_for_this_message = size * counts[name] + pairs.append((name, size_for_this_message)) + total_size += size_for_this_message + + else: + + names = mlog.name_to_id.keys() + + for name in names: + sizes[name] = 0 + + for name in names: + mid = mlog.name_to_id[name] + count = mlog.counts[mid] + mlen = mlog.formats[mid].len + size = count * mlen + total_size += size + sizes[name] += size + pairs.append((name, count*mlen)) pairs = sorted(pairs, key = lambda p : p[1]) print("Total size: %u" % total_size) -- GitLab