diff options
Diffstat (limited to 'util/ec3po/interpreter.py')
-rw-r--r-- | util/ec3po/interpreter.py | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/util/ec3po/interpreter.py b/util/ec3po/interpreter.py index 31079fb908..b71607f254 100644 --- a/util/ec3po/interpreter.py +++ b/util/ec3po/interpreter.py @@ -20,6 +20,7 @@ import logging import os import Queue import select +import sys COMMAND_RETRIES = 3 # Number of attempts to retry a command. @@ -312,19 +313,29 @@ def StartLoop(interp): Args: interp: An Interpreter object that has been properly initialised. """ - while True: - readable, writeable, _ = select.select(interp.inputs, interp.outputs, []) - - for obj in readable: - # Handle any debug prints from the EC. - if obj is interp.ec_uart_pty: - interp.HandleECData() - - # Handle any commands from the user. - elif obj is interp.cmd_pipe: - interp.HandleUserData() - - for obj in writeable: - # Send a command to the EC. - if obj is interp.ec_uart_pty: - interp.SendCmdToEC() + try: + while True: + readable, writeable, _ = select.select(interp.inputs, interp.outputs, []) + + for obj in readable: + # Handle any debug prints from the EC. + if obj is interp.ec_uart_pty: + interp.HandleECData() + + # Handle any commands from the user. + elif obj is interp.cmd_pipe: + interp.HandleUserData() + + for obj in writeable: + # Send a command to the EC. + if obj is interp.ec_uart_pty: + interp.SendCmdToEC() + + finally: + # Close pipes. + interp.cmd_pipe.close() + interp.dbg_pipe.close() + # Close file descriptor. + interp.ec_uart_pty.close() + # Exit. + sys.exit(0) |