feat: add HIL diagnostics and meter health handling
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
from hil_common import HilError, load_config, main_guard, new_artifact_dir, pair_ports, pio_command, run_checked
|
||||
|
||||
|
||||
def flash_pair(artifact: Path, yes_flash: bool) -> None:
|
||||
if not yes_flash:
|
||||
raise HilError("refusing to flash without --yes-flash")
|
||||
config = load_config()
|
||||
ports = pair_ports(config, "flash")
|
||||
environment = config.get("hil", {}).get("environment", "hil")
|
||||
artifact.mkdir(parents=True, exist_ok=True)
|
||||
run_checked([pio_command(), "run", "-e", environment], log=artifact / "build.log")
|
||||
for port in ports:
|
||||
run_checked([pio_command(), "run", "-e", environment, "-t", "upload", "--upload-port", str(port.device)],
|
||||
log=artifact / f"flash-{port.name}.log")
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Build once and flash the explicitly approved board pair")
|
||||
parser.add_argument("--yes-flash", action="store_true", help="confirm the approved_flash entries for this invocation")
|
||||
parser.add_argument("--artifact-dir")
|
||||
args = parser.parse_args()
|
||||
artifact = Path(args.artifact_dir) if args.artifact_dir else new_artifact_dir("flash")
|
||||
flash_pair(artifact, args.yes_flash)
|
||||
print(f"Flash logs: {artifact}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main_guard(main)
|
||||
Reference in New Issue
Block a user