From 4651832d97ffcc5b49f69ff6434d6a889dc1ef73 Mon Sep 17 00:00:00 2001 From: "Peter D. Gray" Date: Tue, 4 Sep 2018 10:05:38 -0400 Subject: [PATCH] Leave SD card in removed state, and make a little faster --- shared/selftest.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/shared/selftest.py b/shared/selftest.py index b4c5176a..3bb5a673 100644 --- a/shared/selftest.py +++ b/shared/selftest.py @@ -181,6 +181,19 @@ async def test_microsd(): from main import numpad numpad.stop() + + async def wait_til_state(want): + dis.clear() + dis.text(None, 10, 'MicroSD Card:') + dis.text(None, 34, 'Remove' if sd.present() else 'Insert', font=FontLarge) + dis.show() + + while 1: + if want == sd.present(): return + await sleep_ms(100) + if ux_poll_once(): + raise RuntimeError("MicroSD test aborted") + try: import pyb sd = pyb.SDCard() @@ -188,18 +201,7 @@ async def test_microsd(): # test presence switch for ph in range(7): - want = not sd.present() - - dis.clear() - dis.text(None, 10, 'MicroSD Card:') - dis.text(None, 34, 'Remove' if sd.present() else 'Insert', font=FontLarge) - dis.show() - - while 1: - if want == sd.present(): break - await sleep_ms(100) - if ux_poll_once(): - raise RuntimeError("MicroSD test aborted") + await wait_til_state(not sd.present()) if ph >= 2 and sd.present(): # debounce @@ -228,7 +230,7 @@ async def test_microsd(): # just read it a bit, writing would prove little buf = bytearray(512) - msize = 1024*1024 + msize = 256*1024 for addr in range(0, msize, 1024): sd.readblocks(addr, buf) dis.progress_bar_show(addr/msize) @@ -236,6 +238,9 @@ async def test_microsd(): if addr == 0: assert buf[-2:] == b'\x55\xaa', "Bad read" + # force removal, so cards don't get stuck in finished units + await wait_til_state(False) + finally: # CRTICAL: power it back down sd.power(0)