SPI: connect by VERSION command (#1495)

* SPI: connect by VERSION command

* shorter timeout

* add exception

* simple test

* fallback

* bootstub check

* update comments

---------

Co-authored-by: Comma Device <device@comma.ai>
This commit is contained in:
Adeeb Shihadeh
2023-07-16 19:33:18 -07:00
committed by GitHub
parent e8da4eab2e
commit 5d873444b2
4 changed files with 48 additions and 9 deletions

View File

@@ -40,6 +40,9 @@ DEV_PATH = "/dev/spidev0.0"
class PandaSpiException(Exception):
pass
class PandaProtocolMismatch(PandaSpiException):
pass
class PandaSpiUnavailable(PandaSpiException):
pass
@@ -109,6 +112,9 @@ class PandaSpiHandle(BaseHandle):
"""
A class that mimics a libusb1 handle for panda SPI communications.
"""
PROTOCOL_VERSION = 1
def __init__(self):
self.dev = SpiDevice()
@@ -225,7 +231,7 @@ class PandaSpiHandle(BaseHandle):
version_bytes = spi.readbytes(len(vers_str) + 2)
if bytes(version_bytes).startswith(vers_str):
break
if (time.monotonic() - start) > 0.5:
if (time.monotonic() - start) > 0.01:
raise PandaSpiMissingAck
rlen = struct.unpack("<H", bytes(version_bytes[-2:]))[0]