moonraker: rework Klippy init sequence

Stop polling Klippy after it it has exited the "startup" state.
When this has been detected, emit a "klippy_startup"
event.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2021-10-24 07:33:42 -04:00
parent a0b5275cc9
commit 9d7dac3425
1 changed files with 11 additions and 8 deletions

View File

@ -358,8 +358,10 @@ class Server:
else:
logging.info("GCode Output Subscribed")
self.init_list.append("gcode_output_sub")
if "klippy_ready" in self.init_list or \
not self.klippy_connection.is_connected():
if (
"startup_complete" in self.init_list or
not self.klippy_connection.is_connected()
):
# Either Klippy is ready or the connection dropped
# during initialization. Exit initialization
self.init_attempts = 0
@ -395,10 +397,15 @@ class Server:
if send_id:
self.init_list.append("identified")
self.send_event("server:klippy_identified")
if self.klippy_state == "ready":
if self.klippy_state != "startup":
self.init_list.append('startup_complete')
self.send_event("server:klippy_started", self.klippy_state)
if self.klippy_state != "ready":
msg = result.get('state_message', "Klippy Not Ready")
logging.info("\n" + msg)
return
await self._verify_klippy_requirements()
logging.info("Klippy ready")
self.init_list.append('klippy_ready')
# register methods with klippy
for method in self.klippy_reg_methods:
try:
@ -406,10 +413,6 @@ class Server:
except ServerError:
logging.exception(f"Unable to register method '{method}'")
self.send_event("server:klippy_ready")
elif self.init_attempts % LOG_ATTEMPT_INTERVAL == 0 and \
self.init_attempts <= MAX_LOG_ATTEMPTS:
msg = result.get('state_message', "Klippy Not Ready")
logging.info("\n" + msg)
async def _verify_klippy_requirements(self) -> None:
result = await self.klippy_apis.get_object_list(default=None)