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": if rpc_method == "objects/subscribe":
return await self._request_subscripton(web_request) return await self._request_subscripton(web_request)
else: 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) return await self._request_standard(web_request)
async def _request_subscripton(self, web_request): async def _request_subscripton(self, web_request):

View File

@ -112,15 +112,25 @@ class DataStore:
def _update_gcode_store(self, response): def _update_gcode_store(self, response):
curtime = time.time() 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): async def _handle_gcode_store_request(self, web_request):
count = web_request.get_int("count", None) count = web_request.get_int("count", None)
if count is not None: if count is not None:
res = list(self.gcode_queue)[-count:] gc_responses = list(self.gcode_queue)[-count:]
else: else:
res = list(self.gcode_queue) gc_responses = list(self.gcode_queue)
return {'gcode_store': res} return {'gcode_store': gc_responses}
def load_plugin(config): def load_plugin(config):
return DataStore(config) return DataStore(config)