run_command has particular benefits for handle_binary_download() because
we can greatly simplify the code to handle running repr() on the target.
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
Add a run_command method for the "console". This allows running a command
on the target and capturing the result. Normally this is handled using
REPLWrapper but that doesn't work well with the NUS console because local
echo gets in the way.
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
--push is very similar to --binary --upload but handles directories
differently. --pull allows us to copy binary files from the target.
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
The default pexpect exception dump is verbose and potentially useful if
you know how to read it... but let's handle timeouts in a friendlier way.
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
- Certain Unix-like systems (such as *BSD systems) do not use /usr/bin/python3 as the default Python path. This small change will ensure a higher degree of compatibility.
Signed-off-by: Panagiotis Vasilopoulos <hello@alwayslivid.com>
This has two useful properties. Firstly it means the watch will be
maintained in the background, allowing the REPL to be used for
notifications and other updates. Secondly it will save a little bit
of power by reducing the work needed to handle spurious wake ups.
Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
This reduces the memory overhead required to --exec a file (although
we will still have problems with big classes).
For now we have avoided matching "^def" since we need additional
handling for decorators!
This is a big change that break compatiblity with existing applications
*and* with existing installed versions of main.py.
When upgrading it is import to update main.py:
./tools/wasptool --upload wasp/main.py
This allows for an elegant iterative development approach where we upload
some code than then interact with it, for example:
wasptool --exec wasp/drivers/nrf_rtc.py --console
rtc = RTC(watch.rtc.counter)