data_store: add support for storing gcode commands

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Arksine 2021-01-12 12:30:34 -05:00
parent 8c365c62cb
commit d70bd8d2e0
2 changed files with 19 additions and 5 deletions

View File

@ -387,6 +387,10 @@ class Server:
if rpc_method == "objects/subscribe":
return await self._request_subscripton(web_request)
else:
if rpc_method == "gcode/script":
script = web_request.get_str('script', "")
data_store = self.lookup_plugin('data_store')
data_store.store_gcode_command(script)
return await self._request_standard(web_request)
async def _request_subscripton(self, web_request):

View File

@ -87,7 +87,7 @@ class DataStore:
def _set_current_temps(self, data):
for sensor in self.temperature_store:
if sensor in data:
last_temp, last_target, last_power = self.last_temps[sensor]
last_temp, last_target, last_power = self.last_temps[sensor]
self.last_temps[sensor] = (
round(data[sensor].get('temperature', last_temp), 2),
data[sensor].get('target', last_target),
@ -112,15 +112,25 @@ class DataStore:
def _update_gcode_store(self, response):
curtime = time.time()
self.gcode_queue.append({'message': response, 'time': curtime})
self.gcode_queue.append(
{'message': response, 'time': curtime, 'type': "response"})
def store_gcode_command(self, script):
curtime = time.time()
for cmd in script.split('\n'):
cmd = cmd.strip()
if not cmd:
continue
self.gcode_queue.append(
{'message': script, 'time': curtime, 'type': "command"})
async def _handle_gcode_store_request(self, web_request):
count = web_request.get_int("count", None)
if count is not None:
res = list(self.gcode_queue)[-count:]
gc_responses = list(self.gcode_queue)[-count:]
else:
res = list(self.gcode_queue)
return {'gcode_store': res}
gc_responses = list(self.gcode_queue)
return {'gcode_store': gc_responses}
def load_plugin(config):
return DataStore(config)