velxio/frontend/src/simulation
David Montero 4ff281bd40 fix(spice): MCU-edge listeners detach on resubscription for QEMU boards (frozen LEDs)
connectMcuEdgesToService resubscribes its per-pin listeners whenever
pinNetMap changes. The subscription swept pin NUMBERS 0..63 and
reverse-mapped them to names ('GPIO2' on ESP32, 'GPIO17' on Pi) to match
against pinNetMap's keys — but those keys are the WIRE pin names ('2',
'4', 'A0'), so after the first solve the match failed for every pin and
the resubscription attached nothing. Any mid-run pinNetMap update then
silently killed the MCU-edge → SPICE path and the canvas froze at the
last solved state while the firmware kept toggling.

Masked until now because nothing perturbed pinNetMap mid-run on the
blink examples; pure ESP-IDF mode (#139) unmasked it — gpio_reset_pin()
leaves the internal pull-up enabled, the worker reports gpio_pull, the
handler requests an electrical resolve, pinNetMap gets a new identity,
and the ESP-IDF blink example's LED froze ON.

Fix: subscribe FROM the pinNetMap names, mapped to PinManager pins with
the same pinNameToArduinoPin the netlist collector uses (STM32 via
stm32PinNameToLinear), and hand schedulePin the netlist name so
handleMcuEdge's v_<board>_<pin> lookup hits the fast alterSource path
instead of a full rebuild per edge. The 0..63 sweep remains as the
pre-first-solve fallback. Also fixed pinNameToArduinoPin's dead 'GPIO'
branch ('GP' tested first turned 'GPIO32' into parseInt('IO32') = NaN).
2026-07-24 07:26:09 +02:00
..
customChips
digital fix(sim): model slide-switch as a real SPDT + tie ESP32 dual 3V3/5V pins to the rail 2026-07-09 18:58:12 +02:00
displays
parts fix(7segment): rebuild per-element sim state when the digit count changes 2026-07-21 15:16:56 +02:00
spice fix(spice): MCU-edge listeners detach on resubscription for QEMU boards (frozen LEDs) 2026-07-24 07:26:09 +02:00
verify refactor(verify): extract store-driven pre-flight verification into verifyFromStore 2026-07-18 06:44:38 +02:00
AVRSimulator.ts feat(avr): drive inputs from real circuit, modeling the internal pull-up 2026-06-26 20:18:41 +02:00
Esp32Bridge.ts fix(esp32): force clean reconnect in Esp32Bridge.connect() — the real run-after-agent fix 2026-07-21 07:01:05 +02:00
Esp32C3Simulator.ts fix(esp32-c3): drive digital inputs from the SPICE solve (spiceDrivenInputs) 2026-07-09 19:16:37 +02:00
Esp32MicroPythonLoader.ts
HD44780Decoder.ts
I2CBusManager.ts
Interconnect.ts
LogicFamilies.ts
MicroPythonLoader.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
PinManager.ts fix(perf): un-freeze the editor during fast-toggling simulations (ESP32 clock) 2026-07-21 01:15:59 +02:00
PinResolver.ts
PioPeripheral.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
RP2040Simulator.ts sim: drive RP2040 + STM32 digital inputs from the real circuit 2026-06-26 22:05:24 +02:00
RaspberryPi3Bridge.ts feat(pi): gpiozero core + boot feedback, terminal and upload UX 2026-06-22 20:21:06 +02:00
RiscVCore.ts
RiscVSimulator.ts
SensorUpdateRegistry.ts
SignalRouter.ts
SpiBus.ts
Stm32Bridge.ts sim: drive RP2040 + STM32 digital inputs from the real circuit 2026-06-26 22:05:24 +02:00
UsiI2cBridge.ts feat(sim): ATtiny85 USI I2C — drive I2C devices (SSD1306 OLED) via TinyWireM 2026-06-19 07:44:18 +02:00
esp32-signals.ts
piSlaveScanner.ts
rp2040-bootrom.ts
sensorControlConfig.ts