From 260dc5b3af8c0dcfcba4d6de1cc51fc877766ab7 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Sat, 17 Oct 2020 14:12:33 +0200
Subject: [PATCH] fix(pycard10): Make pycard10 reset pycardium via os.exec("")

This will result in more reliably reaching a clean state.

Co-Authored-By: schneider <schneider@muc.ccc.de>
Signed-off-by: Rahix <rahix@rahix.de>
---
 tools/pycard10.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/pycard10.py b/tools/pycard10.py
index a0ce7419..5f0a870c 100755
--- a/tools/pycard10.py
+++ b/tools/pycard10.py
@@ -130,10 +130,12 @@ class PyCard10(Pyboard):
         None
         """
 
-        self.soft_reset()
-
         self.serial.write(b"\x03\x03")  # ctrl-C twice: interrupt any running program
 
+        self.serial.write(b"\x02")  # ctrl-B: ensue it's the normal mode
+
+        self.serial.write(b'__import__("os").exec("")\r')  # Reset to REPL
+
         # flush input (without relying on serial.flushInput())
         n = self.serial.inWaiting()
         while n > 0:
@@ -176,8 +178,6 @@ class PyCard10(Pyboard):
 
         self.serial.write(b"\x04")  # ctrl-D: do the reset
 
-        time.sleep(1)  # Give epicardium some time to cycle pycardium
-
         n = self.serial.inWaiting()
         while n > 0:
             self.serial.read(n)
-- 
GitLab