diff options
Diffstat (limited to 'klippy/extras/bulk_sensor.py')
-rw-r--r-- | klippy/extras/bulk_sensor.py | 16 |
1 files changed, 10 insertions, 6 deletions
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) |