Commit Graph

4 Commits

Author SHA1 Message Date
David Montero Crespo e648f416ae feat(compiler): Serial = USB-CDC cuando boards.txt lo declara, como el hardware fisico
Tres piezas:
- _arduino_board_flags lee <id>.build.board y <id>.build.cdc_on_boot de
  boards.txt (cache, mismo patron que _arduino_variant).
- Cada compile escribe velxio_board.cmake (incluido OPTIONAL por el
  CMakeLists ANTES de project(), asi los defines llegan a TODOS los
  componentes — que Serial sea el CDC se decide dentro del core Arduino):
  ARDUINO_<BOARD> siempre que boards.txt lo nombre (los sketches de vendor
  hacen #ifdef ARDUINO_XIAO_ESP32S3), y ARDUINO_USB_CDC_ON_BOOT=1 +
  ARDUINO_USB_MODE=1 cuando cdc_on_boot=1. USB_MODE va FORZADO a 1 (HWCDC
  por USB-Serial-JTAG, la opcion de menu USBMode=hwcdc): el motor modela esa
  consola, no la pila OTG/TinyUSB. Ir por archivo y no por env hace el flag
  dependencia de configure: CMake reconfigura al cambiar.
- CONFIG_ESP_CONSOLE_SECONDARY_NONE en el sdkconfig: sin ella el ROM/IDF
  espejan cada byte de log al USB y el monitor unico del emulador (que
  mezcla ambos streams) mostraria el log entero dos veces en builds CDC.
2026-07-28 06:49:54 +02:00
David Montero Crespo f318b06116 feat(espidf): fijar CONFIG_ARDUINO_VARIANT en la plantilla de sdkconfig
Sin esta linea la variante se queda en el nombre del chip, asi que TODA placa
compila como dev-kit generico y variants/<VARIANTE>/pins_arduino.h nunca entra
en el include path: los nombres propios de la placa (D0..D10 en una XIAO, la
serigrafia de las M5) sencillamente no existen. Justo los sketches que la gente
copia de la wiki del fabricante.

El helper que deriva la variante del FQBN leyendo boards.txt ya estaba; faltaba
la plantilla que la consume. Sigue pendiente rellenar 'arduinoVariant' en
normalized para que surta efecto (ver F7.6 en velxio-prod).
2026-07-27 16:36:00 +02:00
David Montero 0daa45df76 fix(esp32): enable mbedTLS PSK so WiFiClientSecure/HTTPClient link
arduino-esp32's WiFiClientSecure/ssl_client.cpp wraps its ENTIRE body
(start_ssl_client, ssl_init, send_ssl_data, ...) in
  #if !defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) ... #else <body> #endif
ESP-IDF's mbedtls defaults the PSK key-exchange modes OFF, so the object
compiled empty and any sketch using WiFiClientSecure — including
HTTPClient.begin(url), which links the secure client even for http:// —
failed to link with "undefined reference to start_ssl_client". Commenting
out begin() let the optimizer drop the unused client, which is why it
"compiled when commented".

- sdkconfig.defaults.in: enable the PSK key-exchange ciphersuites
  (CONFIG_MBEDTLS_PSK_MODES + the four KEY_EXCHANGE_*PSK), matching
  arduino-esp32's own sdkconfig.
- espidf_compiler: ESP-IDF only seeds sdkconfig from sdkconfig.defaults when
  sdkconfig is ABSENT. Persistent build dirs live in the build volume and
  keep a stale sdkconfig across image rebuilds, so the new CONFIG_* would
  never reach kconfig. Drop the generated sdkconfig when the rendered
  defaults change so it re-seeds on configure.
- test: assert the rendered sdkconfig enables PSK.

Verified end-to-end: the reported WiFi+HTTPClient sketch now compiles to a
1.1 MB binary (was a hard link error before).
2026-06-10 20:50:48 +02:00
David Montero Crespo 14613f152f feat(compile): ESP-IDF compile options + request dedup
Backend:
- api/routes/compile.py            accepts board-specific compile options
                                   and dedups in-flight identical requests
- services/espidf_compiler.py      expanded ESP-IDF wrapper with the new
                                   options surface (sdkconfig.defaults.in
                                   template added)
- services/arduino_cli.py          honour the new options envelope
- services/esp32_lib_bridge.py     thread board options through to QEMU

Tests:
- tests/test_compile_request_dedup.py  end-to-end dedup behaviour
- tests/test_espidf_options.py     covers the new options parsing

Frontend:
- services/compilation.ts          client-side mirror — sends the new
                                   options field on every compile request

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 21:50:45 -03:00