From da525baee7dd4e797a3017e3f495004a9dea8b25 Mon Sep 17 00:00:00 2001 From: Calum Cuthill Date: Fri, 7 Oct 2022 10:28:33 +0100 Subject: [PATCH 1/2] timeout to avoid getting stuck in while loop --- adafruit_sdcard.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/adafruit_sdcard.py b/adafruit_sdcard.py index 1962239..fad0688 100644 --- a/adafruit_sdcard.py +++ b/adafruit_sdcard.py @@ -256,8 +256,12 @@ def _cmd( if data_block: # Wait for the start block byte buf[1] = 0xFF - while buf[1] != 0xFE: + for _ in range(_CMD_TIMEOUT): card.readinto(buf, start=1, end=2, write_value=0xFF) + if buf[1] == 0xFE: + break + if buf[1] != 0xFE: + return -1 card.readinto(response_buf, write_value=0xFF) if data_block: # Read the checksum From 4729365f96cdf76b6013d8ec7be05490d101e468 Mon Sep 17 00:00:00 2001 From: Calum Cuthill Date: Fri, 7 Oct 2022 10:56:28 +0100 Subject: [PATCH 2/2] pylint disables (tips on not needing these welcome) --- adafruit_sdcard.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/adafruit_sdcard.py b/adafruit_sdcard.py index fad0688..823b9bd 100644 --- a/adafruit_sdcard.py +++ b/adafruit_sdcard.py @@ -202,6 +202,7 @@ def _wait_for_ready(self, card: SPI, timeout: float = 0.3) -> None: # pylint: disable-msg=too-many-arguments # pylint: disable=no-member + # pylint: disable-msg=too-many-branches # no-member disable should be reconsidered when it can be tested def _cmd( self, @@ -248,6 +249,7 @@ def _cmd( card.write(buf) + # pylint: disable-msg=too-many-nested-blocks # wait for the response (response[7] == 0) for _ in range(_CMD_TIMEOUT): card.readinto(buf, end=1, write_value=0xFF) @@ -269,6 +271,7 @@ def _cmd( return buf[0] return -1 + # pylint: enable-msg=too-many-branches # pylint: enable-msg=too-many-arguments # pylint: disable-msg=too-many-arguments