Run the FastLED #3021 Phase-1 SCT-RX pin-toggle bench. Delegates to `ci/autoresearch/test_lpc_pin_toggle_rx.py` so the bench logic stays in one place (the script is also runnable stand-alone for ad-hoc bring-up). Uses `subprocess` to keep the pyserial dependency contained to the scr
(ctx: RunContext)
| 1654 | |
| 1655 | |
| 1656 | async def _run_lpc_pin_toggle_rx_tests(ctx: RunContext) -> int: |
| 1657 | """Run the FastLED #3021 Phase-1 SCT-RX pin-toggle bench. |
| 1658 | |
| 1659 | Delegates to `ci/autoresearch/test_lpc_pin_toggle_rx.py` so the |
| 1660 | bench logic stays in one place (the script is also runnable |
| 1661 | stand-alone for ad-hoc bring-up). Uses `subprocess` to keep the |
| 1662 | pyserial dependency contained to the script — the autoresearch |
| 1663 | runner itself stays import-free of `serial`. |
| 1664 | """ |
| 1665 | upload_port = ctx.upload_port |
| 1666 | assert upload_port is not None |
| 1667 | |
| 1668 | tx_pin = ctx.args.tx_pin if ctx.args.tx_pin is not None else 10 |
| 1669 | rx_pin = ctx.args.rx_pin if ctx.args.rx_pin is not None else 11 |
| 1670 | |
| 1671 | print() |
| 1672 | print("=" * 60) |
| 1673 | print("LPC SCT-RX MODE — pin-toggle TX → SCT-RX loopback (#3021 Phase 1)") |
| 1674 | print(f" Wiring required: jumper P0_{tx_pin} ↔ P0_{rx_pin} on LPC845-BRK") |
| 1675 | print("=" * 60) |
| 1676 | print() |
| 1677 | |
| 1678 | cmd = [ |
| 1679 | "uv", |
| 1680 | "run", |
| 1681 | "python", |
| 1682 | "ci/autoresearch/test_lpc_pin_toggle_rx.py", |
| 1683 | "--port", |
| 1684 | upload_port, |
| 1685 | "--tx-pin", |
| 1686 | str(tx_pin), |
| 1687 | "--rx-pin", |
| 1688 | str(rx_pin), |
| 1689 | ] |
| 1690 | result = subprocess.run(cmd) |
| 1691 | return 0 if result.returncode == 0 else 1 |
| 1692 | |
| 1693 | |
| 1694 | async def _run_lpc_ws2812_loopback_tests(ctx: RunContext) -> int: |
no test coverage detected