Skip to content
Snippets Groups Projects
Commit 4865a22f authored by Damien George's avatar Damien George
Browse files

tools/pyboard.py: Add "--follow" option to wait for output indefinitely.

Also flush stdout so you can see output as it comes.
parent ff987ccf
No related branches found
No related tags found
No related merge requests found
...@@ -35,6 +35,7 @@ import serial ...@@ -35,6 +35,7 @@ import serial
def stdout_write_bytes(b): def stdout_write_bytes(b):
sys.stdout.buffer.write(b) sys.stdout.buffer.write(b)
sys.stdout.buffer.flush()
class PyboardError(BaseException): class PyboardError(BaseException):
pass pass
...@@ -207,6 +208,7 @@ def main(): ...@@ -207,6 +208,7 @@ def main():
import argparse import argparse
cmd_parser = argparse.ArgumentParser(description='Run scripts on the pyboard.') cmd_parser = argparse.ArgumentParser(description='Run scripts on the pyboard.')
cmd_parser.add_argument('--device', default='/dev/ttyACM0', help='the serial device of the pyboard') cmd_parser.add_argument('--device', default='/dev/ttyACM0', help='the serial device of the pyboard')
cmd_parser.add_argument('--follow', action='store_true', help='follow the output after running the scripts [default if no scripts given]')
cmd_parser.add_argument('--test', action='store_true', help='run a small test suite on the pyboard') cmd_parser.add_argument('--test', action='store_true', help='run a small test suite on the pyboard')
cmd_parser.add_argument('files', nargs='*', help='input files') cmd_parser.add_argument('files', nargs='*', help='input files')
args = cmd_parser.parse_args() args = cmd_parser.parse_args()
...@@ -214,10 +216,14 @@ def main(): ...@@ -214,10 +216,14 @@ def main():
if args.test: if args.test:
run_test(device=args.device) run_test(device=args.device)
if len(args.files) == 0: for filename in args.files:
try: try:
pyb = Pyboard(args.device) pyb = Pyboard(args.device)
ret, ret_err = pyb.follow(timeout=None, data_consumer=stdout_write_bytes) pyb.enter_raw_repl()
with open(filename, 'rb') as f:
pyfile = f.read()
ret, ret_err = pyb.exec_raw(pyfile, timeout=None, data_consumer=stdout_write_bytes)
pyb.exit_raw_repl()
pyb.close() pyb.close()
except PyboardError as er: except PyboardError as er:
print(er) print(er)
...@@ -228,14 +234,10 @@ def main(): ...@@ -228,14 +234,10 @@ def main():
stdout_write_bytes(ret_err) stdout_write_bytes(ret_err)
sys.exit(1) sys.exit(1)
for filename in args.files: if args.follow or len(args.files) == 0:
try: try:
pyb = Pyboard(args.device) pyb = Pyboard(args.device)
pyb.enter_raw_repl() ret, ret_err = pyb.follow(timeout=None, data_consumer=stdout_write_bytes)
with open(filename, 'rb') as f:
pyfile = f.read()
ret, ret_err = pyb.exec_raw(pyfile, timeout=None, data_consumer=stdout_write_bytes)
pyb.exit_raw_repl()
pyb.close() pyb.close()
except PyboardError as er: except PyboardError as er:
print(er) print(er)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment