Skip to content

Commit bb2fc8c

Browse files
authored
Merge pull request #51 from calcut/main
Avoid getting stuck in while loop during file write
2 parents c59df6b + 4729365 commit bb2fc8c

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

adafruit_sdcard.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ def _wait_for_ready(self, card: SPI, timeout: float = 0.3) -> None:
202202

203203
# pylint: disable-msg=too-many-arguments
204204
# pylint: disable=no-member
205+
# pylint: disable-msg=too-many-branches
205206
# no-member disable should be reconsidered when it can be tested
206207
def _cmd(
207208
self,
@@ -248,6 +249,7 @@ def _cmd(
248249

249250
card.write(buf)
250251

252+
# pylint: disable-msg=too-many-nested-blocks
251253
# wait for the response (response[7] == 0)
252254
for _ in range(_CMD_TIMEOUT):
253255
card.readinto(buf, end=1, write_value=0xFF)
@@ -256,15 +258,20 @@ def _cmd(
256258
if data_block:
257259
# Wait for the start block byte
258260
buf[1] = 0xFF
259-
while buf[1] != 0xFE:
261+
for _ in range(_CMD_TIMEOUT):
260262
card.readinto(buf, start=1, end=2, write_value=0xFF)
263+
if buf[1] == 0xFE:
264+
break
265+
if buf[1] != 0xFE:
266+
return -1
261267
card.readinto(response_buf, write_value=0xFF)
262268
if data_block:
263269
# Read the checksum
264270
card.readinto(buf, start=1, end=3, write_value=0xFF)
265271
return buf[0]
266272
return -1
267273

274+
# pylint: enable-msg=too-many-branches
268275
# pylint: enable-msg=too-many-arguments
269276

270277
# pylint: disable-msg=too-many-arguments

0 commit comments

Comments
 (0)