Created
August 22, 2018 12:28
-
-
Save dybber/69499bd62b2bf75c553e0f5a303ac451 to your computer and use it in GitHub Desktop.
enter_raw_repl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def enter_raw_repl(self): | |
# Brief delay before sending RAW MODE char if requests | |
if _rawdelay > 0: | |
time.sleep(_rawdelay) | |
self.serial.write(b'\x02') # ctrl-B: exit RAW repl | |
time.sleep(0.5) | |
self.serial.write(b'\x03') # ctrl-C | |
time.sleep(0.5) | |
self.serial.write(b'\r\x03\x03') # ctrl-C twice: interrupt any running program | |
# flush input (without relying on serial.flushInput()) | |
n = self.serial.inWaiting() | |
while n > 0: | |
self.serial.read(n) | |
n = self.serial.inWaiting() | |
self.serial.write(b'\r\x01') # ctrl-A: enter raw REPL | |
data = self.read_until(1, b'raw REPL; CTRL-B to exit\r\n>') | |
if not data.endswith(b'raw REPL; CTRL-B to exit\r\n>'): | |
print(data) | |
raise PyboardError('could not enter raw repl') | |
self.serial.write(b'\x04') # ctrl-D: soft reset | |
data = self.read_until(1, b'soft reboot\r\n') | |
if not data.endswith(b'soft reboot\r\n'): | |
print(data) | |
raise PyboardError('could not enter raw repl') | |
# By splitting this into 2 reads, it allows boot.py to print stuff, | |
# which will show up after the soft reboot and before the raw REPL. | |
# Modification from original pyboard.py below: | |
# Add a small delay and send Ctrl-C twice after soft reboot to ensure | |
# any main program loop in main.py is interrupted. | |
time.sleep(0.5) | |
self.serial.write(b'\x03') | |
time.sleep(0.1) # (slight delay before second interrupt | |
self.serial.write(b'\x03') | |
# End modification above. | |
data = self.read_until(1, b'raw REPL; CTRL-B to exit\r\n') | |
if not data.endswith(b'raw REPL; CTRL-B to exit\r\n'): | |
print(data) | |
raise PyboardError('could not enter raw repl') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment