From 2dc4cfc5df3bd2b3e040a73b86d59c7a3883fc7f Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Wed, 27 Dec 2023 12:58:53 -0500 Subject: bulk_sensor: Don't assume chip_clock is zero on start of queries Send an explicit clock query in ChipClockUpdater to seed the initial clock. Signed-off-by: Kevin O'Connor --- klippy/extras/bulk_sensor.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'klippy/extras/bulk_sensor.py') diff --git a/klippy/extras/bulk_sensor.py b/klippy/extras/bulk_sensor.py index df5a5da2..ad486bc4 100644 --- a/klippy/extras/bulk_sensor.py +++ b/klippy/extras/bulk_sensor.py @@ -222,15 +222,15 @@ class ChipClockUpdater: return self.last_overflows def clear_duration_filter(self): self.max_query_duration = 1 << 31 - def note_start(self, reqclock): + def note_start(self): self.last_sequence = 0 self.last_overflows = 0 - self.clock_sync.reset(reqclock, 0) + # Set initial clock self.clear_duration_filter() - self.update_clock(minclock=reqclock) + self.update_clock(is_reset=True) self.clear_duration_filter() - def update_clock(self, minclock=0): - params = self.query_status_cmd.send([self.oid], minclock=minclock) + def update_clock(self, is_reset=False): + params = self.query_status_cmd.send([self.oid]) mcu_clock = self.mcu.clock32_to_clock64(params['clock']) seq_diff = (params['next_sequence'] - self.last_sequence) & 0xffff self.last_sequence += seq_diff @@ -250,4 +250,8 @@ class ChipClockUpdater: # inaccuracy of query responses and plus .5 for assumed offset # of hardware processing time. chip_clock = msg_count + 1 - self.clock_sync.update(mcu_clock + duration // 2, chip_clock) + avg_mcu_clock = mcu_clock + duration // 2 + if is_reset: + self.clock_sync.reset(avg_mcu_clock, chip_clock) + else: + self.clock_sync.update(avg_mcu_clock, chip_clock) -- cgit v1.2.3-70-g09d2