Update FPGA and Vivado skills
This commit is contained in:
@@ -95,13 +95,32 @@ def main() -> None:
|
||||
graph.invoke(init, cfg)
|
||||
elif args.command == "resume":
|
||||
payload = json.loads(args.resume_json) if args.resume_json else {}
|
||||
graph.invoke(Command(resume=payload), cfg)
|
||||
snap0 = graph.get_state(cfg)
|
||||
pend = [intr for task in snap0.tasks for intr in task.interrupts]
|
||||
if len(pend) <= 1:
|
||||
graph.invoke(Command(resume=payload), cfg)
|
||||
else:
|
||||
# Multiple interrupts pending (parallel fan-out, e.g. modify_fpga +
|
||||
# modify_imx6). payload must be a map keyed by each interrupt's "action"
|
||||
# (or interrupt id); resume them all at once with an id->value map.
|
||||
resume_map = {}
|
||||
for intr in pend:
|
||||
val = intr.value if isinstance(intr.value, dict) else {}
|
||||
action = val.get("action")
|
||||
if action in payload:
|
||||
resume_map[intr.id] = payload[action]
|
||||
elif intr.id in payload:
|
||||
resume_map[intr.id] = payload[intr.id]
|
||||
else:
|
||||
resume_map[intr.id] = {}
|
||||
graph.invoke(Command(resume=resume_map), cfg)
|
||||
# status: no invoke, just snapshot
|
||||
snap = graph.get_state(cfg)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
_emit({"status": "error", "error": str(exc)}, 1)
|
||||
|
||||
if snap.next:
|
||||
all_intr = [intr.value for task in snap.tasks for intr in task.interrupts]
|
||||
_emit({
|
||||
"status": "interrupt",
|
||||
"thread_id": args.thread_id,
|
||||
@@ -109,6 +128,8 @@ def main() -> None:
|
||||
"next": list(snap.next),
|
||||
"iteration": snap.values.get("iteration"),
|
||||
"interrupt": _pending_interrupt(snap),
|
||||
"pending_interrupts": all_intr,
|
||||
"pending_count": len(all_intr),
|
||||
}, 2)
|
||||
else:
|
||||
_emit({
|
||||
|
||||
Reference in New Issue
Block a user