mirror of
https://github.com/andreili/katapult.git
synced 2025-08-24 03:44:06 +02:00
flash_can: add option to request bootloader
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
f136b8ce4b
commit
1da9898366
@ -440,7 +440,9 @@ class CanSocket:
|
|||||||
self.nodes[decoded_id + 1] = node
|
self.nodes[decoded_id + 1] = node
|
||||||
return node
|
return node
|
||||||
|
|
||||||
async def run(self, intf: str, uuid: int, fw_path: pathlib.Path) -> None:
|
async def run(
|
||||||
|
self, intf: str, uuid: int, fw_path: pathlib.Path, req_only: bool
|
||||||
|
) -> 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))
|
||||||
try:
|
try:
|
||||||
@ -452,6 +454,9 @@ class CanSocket:
|
|||||||
self._loop.add_reader(
|
self._loop.add_reader(
|
||||||
self.cansock.fileno(), self._handle_can_response)
|
self.cansock.fileno(), self._handle_can_response)
|
||||||
self._jump_to_bootloader(uuid)
|
self._jump_to_bootloader(uuid)
|
||||||
|
if req_only:
|
||||||
|
output_line("Bootloader request command sent")
|
||||||
|
return
|
||||||
await asyncio.sleep(.5)
|
await asyncio.sleep(.5)
|
||||||
self._reset_nodes()
|
self._reset_nodes()
|
||||||
await asyncio.sleep(.5)
|
await asyncio.sleep(.5)
|
||||||
@ -586,6 +591,10 @@ def main():
|
|||||||
"-v", "--verbose", action="store_true",
|
"-v", "--verbose", action="store_true",
|
||||||
help="Enable verbose responses"
|
help="Enable verbose responses"
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-r", "--request-bootloader", action="store_true",
|
||||||
|
help="Requests the bootloader and exits (CAN only)"
|
||||||
|
)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
if not args.verbose:
|
if not args.verbose:
|
||||||
@ -594,6 +603,7 @@ def main():
|
|||||||
fpath = pathlib.Path(args.firmware).expanduser().resolve()
|
fpath = pathlib.Path(args.firmware).expanduser().resolve()
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
iscan = args.device is None
|
iscan = args.device is None
|
||||||
|
req_only = args.request_bootloader
|
||||||
sock = None
|
sock = None
|
||||||
try:
|
try:
|
||||||
if iscan:
|
if iscan:
|
||||||
@ -606,7 +616,7 @@ def main():
|
|||||||
"The 'uuid' option must be specified to flash a device"
|
"The 'uuid' option must be specified to flash a device"
|
||||||
)
|
)
|
||||||
uuid = int(args.uuid, 16)
|
uuid = int(args.uuid, 16)
|
||||||
loop.run_until_complete(sock.run(intf, uuid, fpath))
|
loop.run_until_complete(sock.run(intf, uuid, fpath, req_only))
|
||||||
else:
|
else:
|
||||||
if args.device is None:
|
if args.device is None:
|
||||||
raise FlashCanError(
|
raise FlashCanError(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user