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
…
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
…
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
…
RP2040Simulator.ts sim: drive RP2040 + STM32 digital inputs from the real circuit 2026-06-26 22:05:24 +02:00
RaspberryPi3Bridge.ts
…
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
…
esp32-signals.ts
…
piSlaveScanner.ts
…
rp2040-bootrom.ts
…
sensorControlConfig.ts
…