velxio/test/backend/unit
David Montero 173cc3ea36 feat(picow): IoT gateway — proxy browser HTTP into the chip's server
ESP32 web-server examples are reachable from the browser via
/api/gateway/<client_id>/ (QEMU slirp hostfwd). The Pico W server lives
in the browser-side lwIP, so there was no inbound path: visiting the
chip's IP did nothing.

Add the mirror of tcp_nat.py: tcp_inbound.TcpInbound originates a TCP
connection INTO the chip over the WebSocket bridge (SYN -> SYN+ACK ->
ACK -> request -> response -> FIN), so the backend can fetch a page the
sketch serves on 10.13.37.42:80 and hand it back to the browser.

- bridge.py routes chip TCP segments addressed to a gateway-opened
  connection to TcpInbound (before the chip-initiated NAT, which would
  RST them); exposes http_into_chip() + ensure_chip_mac() (primes the
  chip's gateway ARP).
- iot_gateway.py: same /api/gateway/<client_id>/ route now falls through
  to the Pico W bridge when there's no ESP32 instance, builds a raw
  HTTP/1.1 request, and parses the chip's response. Same plan gate, same
  URL shape — the browser sees no difference between ESP32 and Pico W.

Validated end to end (real RP2040 emulator serving an HTTP page ->
gateway returns it) plus 6 unit tests for the TCP state machine,
response parsing and ARP priming.
2026-06-14 02:15:53 +02:00
..
__init__.py
test_arduino_cli_attinycore.py
test_boot_images.py fix(pi3): show kernel boot + autologin SD + sidecar cache invalidation 2026-05-16 06:23:22 +02:00
test_compile_dedup.py perf(compile): dedup, concurrency limits, and persistent build dir for ESP-IDF 2026-05-09 08:33:11 +02:00
test_dht22_worker.py test(dht22): skip absolute-timing busy_wait checks under CI 2026-05-17 22:31:37 +02:00
test_esp32_wifi_args.py chore(tests): silence three noisy warnings in deploy-gate output 2026-05-16 22:39:43 +02:00
test_esp32_wifi_webserver.py
test_esp32c3_wifi_args.py
test_espidf_compiler.py
test_espidf_core_first.py fix(esp32): manifest scope resolves to the DECLARED lib, not first-match 2026-06-06 09:01:03 +02:00
test_espidf_real_paths.py
test_i2c_slaves.py
test_mcp_tools.py
test_picow_inbound_gateway.py feat(picow): IoT gateway — proxy browser HTTP into the chip's server 2026-06-14 02:15:53 +02:00
test_signal_router.py fix(esp32): LEDC signal IDs are 71-86 per ESP32 TRM, not 72-87 2026-05-17 05:42:52 +02:00
test_wifi_status_parser.py