mirror of
https://github.com/andreili/katapult.git
synced 2025-08-23 19:34:06 +02:00
flash_can: Fix pyserial exception handling
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
468b756f8d
commit
92e9174cae
@ -499,13 +499,13 @@ class CanSocket:
|
|||||||
class SerialSocket:
|
class SerialSocket:
|
||||||
def __init__(self, loop: asyncio.AbstractEventLoop):
|
def __init__(self, loop: asyncio.AbstractEventLoop):
|
||||||
self._loop = loop
|
self._loop = loop
|
||||||
self.serial = None
|
self.serial = self.serial_error = None
|
||||||
self.node = CanNode(0, self)
|
self.node = CanNode(0, self)
|
||||||
|
|
||||||
def _handle_response(self) -> None:
|
def _handle_response(self) -> None:
|
||||||
try:
|
try:
|
||||||
data = self.serial.read(4096)
|
data = self.serial.read(4096)
|
||||||
except self.serial.SerialException as e:
|
except self.serial_error as e:
|
||||||
logging.exception("Error on serial read")
|
logging.exception("Error on serial read")
|
||||||
self.close()
|
self.close()
|
||||||
self.node.feed_data(data)
|
self.node.feed_data(data)
|
||||||
@ -513,21 +513,22 @@ class SerialSocket:
|
|||||||
def send(self, can_id: int, payload: bytes = b"") -> None:
|
def send(self, can_id: int, payload: bytes = b"") -> None:
|
||||||
try:
|
try:
|
||||||
self.serial.write(payload)
|
self.serial.write(payload)
|
||||||
except self.serial.SerialException as e:
|
except self.serial_error as e:
|
||||||
logging.exception("Error on serial read")
|
logging.exception("Error on serial write")
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
async def run(self, intf: str, baud: int, fw_path: pathlib.Path) -> None:
|
async def run(self, intf: str, baud: int, fw_path: pathlib.Path) -> None:
|
||||||
if not fw_path.is_file():
|
if not fw_path.is_file():
|
||||||
raise FlashCanError("Invalid firmware path '%s'" % (fw_path))
|
raise FlashCanError("Invalid firmware path '%s'" % (fw_path))
|
||||||
import serial
|
import serial
|
||||||
|
self.serial_error = serial.SerialException
|
||||||
try:
|
try:
|
||||||
serial_dev = serial.Serial(baudrate=baud, timeout=0,
|
serial_dev = serial.Serial(baudrate=baud, timeout=0,
|
||||||
exclusive=True)
|
exclusive=True)
|
||||||
serial_dev.port = intf
|
serial_dev.port = intf
|
||||||
serial_dev.open()
|
serial_dev.open()
|
||||||
except (OSError, IOError, serial.SerialException) as e:
|
except (OSError, IOError, self.serial_error) as e:
|
||||||
logging.warn("Unable to open serial port: %s", e)
|
raise FlashCanError("Unable to open serial port: %s" % (e,))
|
||||||
self.serial = serial_dev
|
self.serial = serial_dev
|
||||||
self._loop.add_reader(self.serial.fileno(), self._handle_response)
|
self._loop.add_reader(self.serial.fileno(), self._handle_response)
|
||||||
flasher = CanFlasher(self.node, fw_path)
|
flasher = CanFlasher(self.node, fw_path)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user