Run the FastLED #3021 Phase-2 SCT-RX WS2812 byte-match bench. Delegates to `ci/autoresearch/test_lpc_ws2812_loopback.py`. The sketch must be built with `-DFASTLED_LPC_RX_SCT_WS2812=1` for the `ws2812SctTest` RPC to be bound — without that flag the RPC is absent from the sketch's `fl
(ctx: RunContext)
| 1692 | |
| 1693 | |
| 1694 | async def _run_lpc_ws2812_loopback_tests(ctx: RunContext) -> int: |
| 1695 | """Run the FastLED #3021 Phase-2 SCT-RX WS2812 byte-match bench. |
| 1696 | |
| 1697 | Delegates to `ci/autoresearch/test_lpc_ws2812_loopback.py`. The |
| 1698 | sketch must be built with `-DFASTLED_LPC_RX_SCT_WS2812=1` for the |
| 1699 | `ws2812SctTest` RPC to be bound — without that flag the RPC is |
| 1700 | absent from the sketch's `fl::Remote` registry and the orchestrator |
| 1701 | will report `no response` for every test case. This is by design: |
| 1702 | the WS2812 driver pulls in `<FastLED.h>` which overflows the |
| 1703 | LPC845 64 KB flash budget until #3002 (fl::json soft-FP cleanup) |
| 1704 | lands. |
| 1705 | """ |
| 1706 | upload_port = ctx.upload_port |
| 1707 | assert upload_port is not None |
| 1708 | |
| 1709 | tx_pin = ctx.args.tx_pin if ctx.args.tx_pin is not None else 10 |
| 1710 | rx_pin = ctx.args.rx_pin if ctx.args.rx_pin is not None else 11 |
| 1711 | |
| 1712 | print() |
| 1713 | print("=" * 60) |
| 1714 | print("LPC SCT-RX MODE — WS2812 byte-match loopback (#3021 Phase 2)") |
| 1715 | print(f" Wiring required: jumper P0_{tx_pin} ↔ P0_{rx_pin} on LPC845-BRK") |
| 1716 | print(" Sketch must be built with -DFASTLED_LPC_RX_SCT_WS2812=1") |
| 1717 | print("=" * 60) |
| 1718 | print() |
| 1719 | |
| 1720 | cmd = [ |
| 1721 | "uv", |
| 1722 | "run", |
| 1723 | "python", |
| 1724 | "ci/autoresearch/test_lpc_ws2812_loopback.py", |
| 1725 | "--port", |
| 1726 | upload_port, |
| 1727 | "--tx-pin", |
| 1728 | str(tx_pin), |
| 1729 | "--rx-pin", |
| 1730 | str(rx_pin), |
| 1731 | ] |
| 1732 | result = subprocess.run(cmd) |
| 1733 | return 0 if result.returncode == 0 else 1 |
| 1734 | |
| 1735 | |
| 1736 | async def _run_coroutine_tests(ctx: RunContext) -> int: |
no test coverage detected