From bdeafb42eef3a9d0a7886ef47003a2208bb489fe Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 18 Mar 2021 22:20:56 +0100 Subject: add preliminary sense_minmax support --- bin/dlog-viewer | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/bin/dlog-viewer b/bin/dlog-viewer index fd5b923..8d296d8 100755 --- a/bin/dlog-viewer +++ b/bin/dlog-viewer @@ -201,13 +201,13 @@ class DLog: self.channels = list(map(DLogChannel, channels)) self.interval = float(dlog.find("frame").find("tint").text) self.sense_minmax = int(dlog.find("frame").find("sense_minmax").text) - self.planned_duration = int(dlog.find("frame").find("time").text) - self.observed_duration = self.interval * int(len(raw_data) / (4 * num_channels)) if self.sense_minmax: - raise RuntimeError( - "DLog files with 'Log Min/Max' enabled are not supported yet" - ) + # there's a min, current, and max reading for each channel. + num_channels *= 3 + + self.planned_duration = int(dlog.find("frame").find("time").text) + self.observed_duration = self.interval * int(len(raw_data) / (4 * num_channels)) self.timestamps = np.linspace( 0, self.observed_duration, num=int(len(raw_data) / (4 * num_channels)) @@ -264,7 +264,11 @@ class DLog: self.slots = [dict(), dict(), dict(), dict()] for i, channel in enumerate(self.channels): - channel.data = self.data[i] + if self.sense_minmax: + # [i*3] == current/avg(?), [i*3 + 1] == min, [i*3 + 2] == max + channel.data = self.data[i * 3] + else: + channel.data = self.data[i] self.slots[channel.slot - 1][channel.unit] = channel def slot_has_data(self, slot): -- cgit v1.2.3