basecmd: Rename get_status to get_clock

Change the get_status command to get_clock.  Don't report the shutdown
status in the new get_clock command.

The primary purpose of this change is to force the host code to report
a firmware version mismatch with older firmwares as recent changes
(namely the ordering of message block acks) have subtle
incompatibilities if different host/mcu code is used.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2018-05-28 11:38:04 -04:00
parent 879c45db19
commit b93fd5b1b5
3 changed files with 21 additions and 21 deletions

View File

@ -226,11 +226,11 @@ only of interest to developers looking to gain insight into Klipper.
pins attached to thermistors controlling heaters - it can be used to pins attached to thermistors controlling heaters - it can be used to
check that a heater is within a temperature range. check that a heater is within a temperature range.
* `get_status` : This command causes the micro-controller to generate * `get_clock` : This command causes the micro-controller to generate a
a "status" response message. The host sends this command once a "clock" response message. The host sends this command once a second
second to obtain the value of the micro-controller clock and to to obtain the value of the micro-controller clock and to estimate
estimate the drift between host and micro-controller clocks. It the drift between host and micro-controller clocks. It enables the
enables the host to accurately estimate the micro-controller clock. host to accurately estimate the micro-controller clock.
Stepper commands Stepper commands
---------------- ----------------

View File

@ -14,8 +14,8 @@ class ClockSync:
def __init__(self, reactor): def __init__(self, reactor):
self.reactor = reactor self.reactor = reactor
self.serial = None self.serial = None
self.status_timer = self.reactor.register_timer(self._status_event) self.get_clock_timer = self.reactor.register_timer(self._get_clock_event)
self.status_cmd = None self.get_clock_cmd = None
self.mcu_freq = 1. self.mcu_freq = 1.
self.last_clock = 0 self.last_clock = 0
self.clock_est = (0., 0., 0.) self.clock_est = (0., 0., 0.)
@ -38,14 +38,14 @@ class ClockSync:
self.time_avg = params['#sent_time'] self.time_avg = params['#sent_time']
self.clock_est = (self.time_avg, self.clock_avg, self.mcu_freq) self.clock_est = (self.time_avg, self.clock_avg, self.mcu_freq)
self.prediction_variance = (.001 * self.mcu_freq)**2 self.prediction_variance = (.001 * self.mcu_freq)**2
# Enable periodic get_status timer # Enable periodic get_clock timer
self.status_cmd = serial.lookup_command('get_status') self.get_clock_cmd = serial.lookup_command('get_clock')
for i in range(8): for i in range(8):
params = self.status_cmd.send_with_response(response='status') params = self.get_clock_cmd.send_with_response(response='clock')
self._handle_status(params) self._handle_clock(params)
self.reactor.pause(0.100) self.reactor.pause(0.100)
serial.register_callback(self._handle_status, 'status') serial.register_callback(self._handle_clock, 'clock')
self.reactor.update_timer(self.status_timer, self.reactor.NOW) self.reactor.update_timer(self.get_clock_timer, self.reactor.NOW)
def connect_file(self, serial, pace=False): def connect_file(self, serial, pace=False):
self.serial = serial self.serial = serial
self.mcu_freq = serial.msgparser.get_constant_float('CLOCK_FREQ') self.mcu_freq = serial.msgparser.get_constant_float('CLOCK_FREQ')
@ -54,13 +54,13 @@ class ClockSync:
if pace: if pace:
freq = self.mcu_freq freq = self.mcu_freq
serial.set_clock_est(freq, self.reactor.monotonic(), 0) serial.set_clock_est(freq, self.reactor.monotonic(), 0)
# MCU clock querying (_handle_status is invoked from background thread) # MCU clock querying (_handle_clock is invoked from background thread)
def _status_event(self, eventtime): def _get_clock_event(self, eventtime):
self.status_cmd.send() self.get_clock_cmd.send()
# Use an unusual time for the next event so status messages # Use an unusual time for the next event so clock messages
# don't resonate with other periodic events. # don't resonate with other periodic events.
return eventtime + .9839 return eventtime + .9839
def _handle_status(self, params): def _handle_clock(self, params):
# Extend clock to 64bit # Extend clock to 64bit
last_clock = self.last_clock last_clock = self.last_clock
clock = (last_clock & ~0xffffffff) | params['clock'] clock = (last_clock & ~0xffffffff) | params['clock']

View File

@ -240,11 +240,11 @@ config_reset(uint32_t *args)
****************************************************************/ ****************************************************************/
void void
command_get_status(uint32_t *args) command_get_clock(uint32_t *args)
{ {
sendf("status clock=%u status=%c", timer_read_time(), sched_is_shutdown()); sendf("clock clock=%u", timer_read_time());
} }
DECL_COMMAND_FLAGS(command_get_status, HF_IN_SHUTDOWN, "get_status"); DECL_COMMAND_FLAGS(command_get_clock, HF_IN_SHUTDOWN, "get_clock");
static uint32_t stats_send_time, stats_send_time_high; static uint32_t stats_send_time, stats_send_time_high;