mirror of
https://github.com/andreili/katapult.git
synced 2025-08-23 19:34:06 +02:00
flashtool: add some delay after resetting CAN nodes
The previous UUID verification step introduce a delay that allowed nodes time to reboot before a node ID was assigned. Reintroduce a 1 second delay. Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
6a7ca81e4f
commit
0601062acc
@ -34,6 +34,7 @@ def crc16_ccitt(buf: Union[bytes, bytearray]) -> int:
|
|||||||
crc = ((data << 8) | (crc >> 8)) ^ (data >> 4) ^ (data << 3)
|
crc = ((data << 8) | (crc >> 8)) ^ (data >> 4) ^ (data << 3)
|
||||||
return crc & 0xFFFF
|
return crc & 0xFFFF
|
||||||
|
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
CAN_FMT = "<IB3x8s"
|
CAN_FMT = "<IB3x8s"
|
||||||
CAN_READER_LIMIT = 1024 * 1024
|
CAN_READER_LIMIT = 1024 * 1024
|
||||||
@ -127,7 +128,7 @@ class CanFlasher:
|
|||||||
crc = crc16_ccitt(out_cmd[2:])
|
crc = crc16_ccitt(out_cmd[2:])
|
||||||
out_cmd.extend(struct.pack("<H", crc))
|
out_cmd.extend(struct.pack("<H", crc))
|
||||||
out_cmd.extend(CMD_TRAILER)
|
out_cmd.extend(CMD_TRAILER)
|
||||||
err = Exception()
|
last_err = Exception()
|
||||||
while tries:
|
while tries:
|
||||||
data = bytearray()
|
data = bytearray()
|
||||||
recd_len = 0
|
recd_len = 0
|
||||||
@ -144,14 +145,16 @@ class CanFlasher:
|
|||||||
recd_len = data[3] * 4
|
recd_len = data[3] * 4
|
||||||
read_done = len(data) == recd_len + 8
|
read_done = len(data) == recd_len + 8
|
||||||
break
|
break
|
||||||
|
except asyncio.CancelledError:
|
||||||
|
raise
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
logging.info(
|
logging.info(
|
||||||
f"Response for command {cmdname} timed out, "
|
f"Response for command {cmdname} timed out, "
|
||||||
f"{tries - 1} tries remaining"
|
f"{tries - 1} tries remaining"
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if type(e) != type(err) or str(e) != str(err):
|
if type(e) is type(last_err) and e.args == last_err.args:
|
||||||
err = e
|
last_err = e
|
||||||
logging.exception("Can Read Error")
|
logging.exception("Can Read Error")
|
||||||
else:
|
else:
|
||||||
trailer = data[-2:]
|
trailer = data[-2:]
|
||||||
@ -468,6 +471,7 @@ class CanSocket:
|
|||||||
return
|
return
|
||||||
await asyncio.sleep(.5)
|
await asyncio.sleep(.5)
|
||||||
self._reset_nodes()
|
self._reset_nodes()
|
||||||
|
await asyncio.sleep(1.0)
|
||||||
node = self._set_node_id(uuid)
|
node = self._set_node_id(uuid)
|
||||||
flasher = CanFlasher(node, fw_path)
|
flasher = CanFlasher(node, fw_path)
|
||||||
await asyncio.sleep(.5)
|
await asyncio.sleep(.5)
|
||||||
@ -513,7 +517,7 @@ class SerialSocket:
|
|||||||
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_error as e:
|
except self.serial_error:
|
||||||
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)
|
||||||
@ -521,7 +525,7 @@ 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_error as e:
|
except self.serial_error:
|
||||||
logging.exception("Error on serial write")
|
logging.exception("Error on serial write")
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
@ -627,7 +631,7 @@ def main():
|
|||||||
)
|
)
|
||||||
sock = SerialSocket(loop)
|
sock = SerialSocket(loop)
|
||||||
loop.run_until_complete(sock.run(args.device, args.baud, fpath))
|
loop.run_until_complete(sock.run(args.device, args.baud, fpath))
|
||||||
except Exception as e:
|
except Exception:
|
||||||
logging.exception("Flash Error")
|
logging.exception("Flash Error")
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
finally:
|
finally:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user