diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2024-04-13 21:02:04 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2024-04-20 12:52:47 -0400 |
commit | 9ceaae3847b4bb87f0e894d6133995f7a07b21bf (patch) | |
tree | 3e24461ea90fb3495ac719328efe81a16c3290e7 /klippy/extras/bulk_sensor.py | |
parent | 56829b07d2428abf199bac55cec499286eab5c6e (diff) | |
download | kutter-9ceaae3847b4bb87f0e894d6133995f7a07b21bf.tar.gz kutter-9ceaae3847b4bb87f0e894d6133995f7a07b21bf.tar.xz kutter-9ceaae3847b4bb87f0e894d6133995f7a07b21bf.zip |
bulk_sensor: Refactor ChipClockUpdater constructor
Build the clock_sync and struct.Struct() in the ChipClockUpdater
constructor.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras/bulk_sensor.py')
-rw-r--r-- | klippy/extras/bulk_sensor.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/klippy/extras/bulk_sensor.py b/klippy/extras/bulk_sensor.py index cb4c17ac..d514bc91 100644 --- a/klippy/extras/bulk_sensor.py +++ b/klippy/extras/bulk_sensor.py @@ -202,15 +202,17 @@ MAX_BULK_MSG_SIZE = 52 # Handle common periodic chip status query responses class ChipClockUpdater: - def __init__(self, clock_sync, bytes_per_sample): - self.clock_sync = clock_sync - self.bytes_per_sample = bytes_per_sample - self.samples_per_block = MAX_BULK_MSG_SIZE // bytes_per_sample + def __init__(self, mcu, chip_clock_smooth, unpack_fmt): + self.mcu = mcu + self.clock_sync = ClockSyncRegression(mcu, chip_clock_smooth) + unpack = struct.Struct(unpack_fmt) + self.unpack_from = unpack.unpack_from + self.bytes_per_sample = unpack.size + self.samples_per_block = MAX_BULK_MSG_SIZE // self.bytes_per_sample self.last_sequence = self.max_query_duration = 0 self.last_overflows = 0 - self.mcu = self.oid = self.query_status_cmd = None - def setup_query_command(self, mcu, msgformat, oid, cq): - self.mcu = mcu + self.oid = self.query_status_cmd = None + def setup_query_command(self, msgformat, oid, cq): self.oid = oid self.query_status_cmd = self.mcu.lookup_query_command( msgformat, "sensor_bulk_status oid=%c clock=%u query_ticks=%u" @@ -256,11 +258,11 @@ class ChipClockUpdater: else: self.clock_sync.update(avg_mcu_clock, chip_clock) # Convert a list of sensor_bulk_data responses into list of samples - def extract_samples(self, unpack_fmt, raw_samples): - unpack_from = struct.Struct(unpack_fmt).unpack_from + def extract_samples(self, raw_samples): # Load variables to optimize inner loop below last_sequence = self.get_last_sequence() time_base, chip_base, inv_freq = self.clock_sync.get_time_translation() + unpack_from = self.unpack_from bytes_per_sample = self.bytes_per_sample samples_per_block = self.samples_per_block # Process every message in raw_samples |