velxio/backend/app/services
David Montero Crespo fd6829f645 merge: master (produccion) dentro de v3.2
Las dos ramas habian divergido: master llevaba el modo lenguaje ESP-IDF puro
(#139) y v3.2 la ruta de compilacion IDF v5.5 para toda la familia ESP32 mas
los arreglos de venv/toolchain. Ambas tocaban espidf_compiler.py.

Los dos lados son ejes ORTOGONALES y se conservan enteros:

  - use_idf5 / arduino_mode (v3.2): que arbol IDF usa el build (5.5 vs 4.4) y
    si cabe Arduino-como-componente.
  - pure_idf (master): el modo LENGUAJE que elige el usuario; sus ficheros son
    las fuentes del componente main con su propio app_main().

Resolucion:
  - _build_env acepta los tres. Un build IDF puro fuerza arduino_mode a falso:
    la plantilla CMake mete el componente arduino-esp32 en cuanto existe
    ARDUINO_ESP32_PATH, asi que dejarlo puesto compilaba el core de Arduino en
    un build que no tiene sketch. Lo cazaron los tests de master.
  - VELXIO_PURE_SKETCH solo con pure_idf, nunca con arduino_mode a falso a
    secas: un target sin core arduino-esp32 sigue entregando un SKETCH al
    traductor legacy y no debe tomar la rama del glob puro.
  - La identidad del build-dir suma los dos tokens (|idf:N|ard:N y |lang:pure):
    ningun par de esas combinaciones puede compartir un build/ configurado.
  - La cadena de escritura de fuentes queda pure_idf -> arduino_mode -> legacy.
  - sdkconfig: render de v3.2 (con target/use_idf5) mas el filtrado de simbolos
    CONFIG_ARDUINO* de master cuando el build es puro.

test/backend/unit/test_espidf_compiler.py: los 7 tests que ya estaban rotos en
v3.2 (AttributeError: idf5_path, fixture sin actualizar desde que se anadio la
seleccion de IDF) vuelven a pasar.

Verificado: backend 293 pasan / 0 fallan (v3.2 traia 7 rotos); frontend 2268
pasan / 0 fallan en los dos shards.
2026-07-25 21:52:00 +02:00
..
boot_images feat(pi): gpiozero core + boot feedback, terminal and upload UX 2026-06-22 20:21:06 +02:00
esp-idf-template merge: master (produccion) dentro de v3.2 2026-07-25 21:52:00 +02:00
__init__.py
arduino_cli.py feat(P2.1h): Library Manager 'Installed' list reads the cache, not the global volume 2026-06-08 06:14:17 +02:00
asm8080.py feat(chips): programmable retro CPU chips with external ROM 2026-05-18 23:38:18 -03:00
asmz80.py feat(chips): programmable Z80 chip + Larson scanner example 2026-05-19 00:21:08 -03:00
board_access.py feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
c_compile.py fix(c-compile): drop --code-loc 0x100 that overwrote SDCC's crt0 init (Z80) 2026-06-03 20:11:01 +02:00
chip_compile.py
esp32_flash_image.py
esp32_i2c_slaves.py
esp32_lib_bridge.py feat(compile): ESP-IDF compile options + request dedup 2026-05-18 21:50:45 -03:00
esp32_lib_manager.py feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
esp32_sd_slave.py feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
esp32_signals.py
esp32_spi_slaves.py feat(epaper): decode the UC8179/GD7965 7.5" panel + fix its BUSY polarity 2026-06-04 23:45:37 -03:00
esp32_worker.py fix(esp32-worker): never block QEMU callbacks on stdout (_emit queue) 2026-07-15 20:00:15 +02:00
esp_qemu_manager.py
espidf_compiler.py merge: master (produccion) dentro de v3.2 2026-07-25 21:52:00 +02:00
gpio_shim.py
qemu_manager.py feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
rom_compile.py feat(chips): C-to-Z80 compile via SDCC + LED chaser example 2026-05-19 00:31:10 -03:00
signal_router.py
stm32_lib_manager.py feat(boards): add 6 STM32 boards (F4 Discovery, Olimex H405, Netduino 2/+2, Pill variants) 2026-05-31 03:19:26 -03:00
stm32_worker.py sim: drive RP2040 + STM32 digital inputs from the real circuit 2026-06-26 22:05:24 +02:00
wasm_chip_runtime.py
wasm_chip_slave.py
wifi_status_parser.py