moonraker: rework klippy state events
Emit specific events for each klippy state rather than one for all of them. Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
56bd9a61ea
commit
279d53afde
|
@ -189,7 +189,7 @@ class Server:
|
||||||
request.notify(ServerError("Klippy Disconnected", 503))
|
request.notify(ServerError("Klippy Disconnected", 503))
|
||||||
self.pending_requests = {}
|
self.pending_requests = {}
|
||||||
logging.info("Klippy Connection Removed")
|
logging.info("Klippy Connection Removed")
|
||||||
self.send_event("server:klippy_state_changed", "disconnect")
|
self.send_event("server:klippy_disconnect")
|
||||||
self.ioloop.call_later(1., self._connect_klippy)
|
self.ioloop.call_later(1., self._connect_klippy)
|
||||||
|
|
||||||
async def _initialize(self):
|
async def _initialize(self):
|
||||||
|
@ -250,7 +250,7 @@ class Server:
|
||||||
logging.info("Klippy ready")
|
logging.info("Klippy ready")
|
||||||
self.klippy_state = "ready"
|
self.klippy_state = "ready"
|
||||||
self.init_list.append('klippy_ready')
|
self.init_list.append('klippy_ready')
|
||||||
self.send_event("server:klippy_state_changed", "ready")
|
self.send_event("server:klippy_ready")
|
||||||
else:
|
else:
|
||||||
msg = result.get('state_message', "Klippy Not Ready")
|
msg = result.get('state_message', "Klippy Not Ready")
|
||||||
logging.info("\n" + msg)
|
logging.info("\n" + msg)
|
||||||
|
@ -298,7 +298,7 @@ class Server:
|
||||||
if state is not None:
|
if state is not None:
|
||||||
if state == "shutdown":
|
if state == "shutdown":
|
||||||
logging.info("Klippy has shutdown")
|
logging.info("Klippy has shutdown")
|
||||||
self.send_event("server:klippy_state_changed", "shutdown")
|
self.send_event("server:klippy_shutdown")
|
||||||
self.klippy_state = state
|
self.klippy_state = state
|
||||||
self.send_event("server:status_update", status)
|
self.send_event("server:status_update", status)
|
||||||
|
|
||||||
|
|
|
@ -177,7 +177,11 @@ class PanelDue:
|
||||||
|
|
||||||
# Register server events
|
# Register server events
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:klippy_state_changed", self.handle_klippy_state)
|
"server:klippy_ready", self._process_klippy_ready)
|
||||||
|
self.server.register_event_handler(
|
||||||
|
"server:klippy_shutdown", self._process_klippy_shutdown)
|
||||||
|
self.server.register_event_handler(
|
||||||
|
"server:klippy_disconnect", self._process_klippy_disconnect)
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:status_update", self.handle_status_update)
|
"server:status_update", self.handle_status_update)
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
|
@ -211,15 +215,6 @@ class PanelDue:
|
||||||
'M999': lambda args: "FIRMWARE_RESTART"
|
'M999': lambda args: "FIRMWARE_RESTART"
|
||||||
}
|
}
|
||||||
|
|
||||||
async def handle_klippy_state(self, state):
|
|
||||||
# XXX - Add a "connected" state and send a "C" to paneldue?
|
|
||||||
if state == "ready":
|
|
||||||
await self._process_klippy_ready()
|
|
||||||
elif state == "shutdown":
|
|
||||||
await self._process_klippy_shutdown()
|
|
||||||
elif state == "disconnect":
|
|
||||||
await self._process_klippy_disconnect()
|
|
||||||
|
|
||||||
async def _process_klippy_ready(self):
|
async def _process_klippy_ready(self):
|
||||||
# Request "info" and "configfile" status
|
# Request "info" and "configfile" status
|
||||||
retries = 10
|
retries = 10
|
||||||
|
|
|
@ -24,17 +24,14 @@ class TemperatureStore:
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:status_update", self._set_current_temps)
|
"server:status_update", self._set_current_temps)
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:klippy_state_changed", self._init_sensors)
|
"server:klippy_ready", self._init_sensors)
|
||||||
|
|
||||||
# Register endpoint
|
# Register endpoint
|
||||||
self.server.register_endpoint(
|
self.server.register_endpoint(
|
||||||
"/server/temperature_store", "server_temperature_store", ['GET'],
|
"/server/temperature_store", "server_temperature_store", ['GET'],
|
||||||
self._handle_temp_store_request)
|
self._handle_temp_store_request)
|
||||||
|
|
||||||
async def _init_sensors(self, state):
|
async def _init_sensors(self):
|
||||||
if state != "ready":
|
|
||||||
return
|
|
||||||
|
|
||||||
klippy_apis = self.server.lookup_plugin('klippy_apis')
|
klippy_apis = self.server.lookup_plugin('klippy_apis')
|
||||||
# Fetch sensors
|
# Fetch sensors
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -11,6 +11,9 @@ from tornado.ioloop import IOLoop
|
||||||
from tornado.websocket import WebSocketHandler, WebSocketClosedError
|
from tornado.websocket import WebSocketHandler, WebSocketClosedError
|
||||||
from utils import ServerError
|
from utils import ServerError
|
||||||
|
|
||||||
|
class Sentinel:
|
||||||
|
pass
|
||||||
|
|
||||||
class JsonRPC:
|
class JsonRPC:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.methods = {}
|
self.methods = {}
|
||||||
|
@ -105,7 +108,7 @@ class WebsocketManager:
|
||||||
|
|
||||||
# Register events
|
# Register events
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:klippy_state_changed", self._handle_klippy_state_changed)
|
"server:klippy_disconnect", self._handle_klippy_disconnect)
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"server:gcode_response", self._handle_gcode_response)
|
"server:gcode_response", self._handle_gcode_response)
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
|
@ -113,8 +116,8 @@ class WebsocketManager:
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"file_manager:filelist_changed", self._handle_filelist_changed)
|
"file_manager:filelist_changed", self._handle_filelist_changed)
|
||||||
|
|
||||||
async def _handle_klippy_state_changed(self, state):
|
async def _handle_klippy_disconnect(self):
|
||||||
await self.notify_websockets("klippy_state_changed", state)
|
await self.notify_websockets("klippy_disconnected")
|
||||||
|
|
||||||
async def _handle_gcode_response(self, response):
|
async def _handle_gcode_response(self, response):
|
||||||
await self.notify_websockets("gcode_response", response)
|
await self.notify_websockets("gcode_response", response)
|
||||||
|
@ -171,11 +174,11 @@ class WebsocketManager:
|
||||||
if old_ws is not None:
|
if old_ws is not None:
|
||||||
logging.info(f"Websocket Removed: {ws.uid}")
|
logging.info(f"Websocket Removed: {ws.uid}")
|
||||||
|
|
||||||
async def notify_websockets(self, name, data):
|
async def notify_websockets(self, name, data=Sentinel):
|
||||||
notification = json.dumps({
|
msg = {'jsonrpc': "2.0", 'method': "notify_" + name}
|
||||||
'jsonrpc': "2.0",
|
if data != Sentinel:
|
||||||
'method': "notify_" + name,
|
msg['params'] = [data]
|
||||||
'params': [data]})
|
notification = json.dumps(msg)
|
||||||
async with self.ws_lock:
|
async with self.ws_lock:
|
||||||
for ws in list(self.websockets.values()):
|
for ws in list(self.websockets.values()):
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue