diff --git a/adafruit_sdcard.py b/adafruit_sdcard.py index 1962239..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) @@ -256,8 +258,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 @@ -265,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