velxio/frontend/src/simulation
David Montero 1a0877f2af feat(esp32/uart): synthesize bit-level TX waveform on UART0 TX GPIO
Closes the same gap as the AVR / RP2040 commits — qemu-lcgamboa's UART
transmits the byte over the WebSocket as a 'serial_output' event with no
GPIO toggle, so an oscilloscope on the ESP32 TX pin saw nothing while
real silicon would render the 8N1 frame at the configured baud rate.

Two changes inside Esp32Bridge:

  * New `onPinChangeWithTime: (pin, state, timeMs) => void` callback
    that hooks the oscilloscope at parity with AVRSimulator /
    RP2040Simulator.  The 'gpio_change' event now also flows through it
    (timestamped with `performance.now()` — QEMU virtual time isn't
    surfaced across the wire, but at 1× sim speed the wall-clock skew
    is invisible on any practical sweep).  This also fixes the broader
    issue that ESP32 boards previously couldn't show ANY digital GPIO
    activity on the scope.

  * `emitUartTxFrame(byte, uart)` synthesizes start + 8 data LSB-first
    + stop transitions at `this.uartBaudRate` (default 115200) on the
    UART0 TX pin, mapped per board variant:
        esp32 / esp32-devkit-c-v4 / esp32-cam / wemos-lolin32-lite: GPIO1
        esp32-s3 / xiao-esp32-s3 / arduino-nano-esp32:               GPIO43
        esp32-c3 / xiao-esp32-c3 / aitewinrobot-esp32c3-supermini:   GPIO21

    Backend doesn't expose the live baud rate so we default to 115200
    (the Arduino default).  Override path:  bridge.uartBaudRate = N
    once we surface Serial.begin's argument via a backend event.

Wire-up: `bridge.onPinChangeWithTime = getOscilloscopeCallback(boardId)`
inside the three Esp32Bridge construction sites in useSimulatorStore
(setBoardType, addBoard, changeBoard).
2026-05-22 19:58:24 +02:00
..
customChips feat(attiny85+customchip): full ATtiny85 ADC/Timer0 + custom-chip pipeline fixes 2026-05-19 18:10:08 -03:00
cyw43
…
displays
…
parts fix(joystick): map wokwi-analog-joystick direction (-1/0/+1) to ADC voltage 2026-05-22 18:57:26 +02:00
spice Merge pull request #202 from davidmonterocrespo24/fix/circuit-sim-service-stop 2026-05-19 22:52:08 -03:00
verify feat(components): Regulated Power Supply with per-instance current limit 2026-05-18 00:00:45 -03:00
AVRSimulator.ts feat(avr/uart): synthesize bit-level TX waveform on PD1/PE1 2026-05-22 19:49:43 +02:00
Esp32Bridge.ts feat(esp32/uart): synthesize bit-level TX waveform on UART0 TX GPIO 2026-05-22 19:58:24 +02:00
Esp32C3Simulator.ts fix(spice+pipeline): LED visualization, INPUT_PULLUP, ESP32-C3, PWM fade, examples 2026-05-18 21:52:07 -03:00
Esp32MicroPythonLoader.ts
…
HD44780Decoder.ts
…
I2CBusManager.ts
…
Interconnect.ts feat(pi): Phase 3.3 — Pi Zero / Pi 1 / Pi 2 armhf simulators 2026-05-18 23:23:48 +02:00
LogicFamilies.ts
…
MicroPythonLoader.ts
…
PinManager.ts Merge pull request #193 from davidmonterocrespo24/esp32-cleanup-broadcast-pwm 2026-05-18 23:23:05 -03:00
PinResolver.ts
…
RP2040Simulator.ts feat(rp2040/uart): synthesize bit-level TX waveform on GP0 / GP4 2026-05-22 19:54:55 +02:00
RaspberryPi3Bridge.ts feat(pi): pluggable slave handler + canvas wire detection for I2C/SPI/UART 2026-05-18 16:26:37 +02:00
RiscVCore.ts
…
RiscVSimulator.ts fix(spice+pipeline): LED visualization, INPUT_PULLUP, ESP32-C3, PWM fade, examples 2026-05-18 21:52:07 -03:00
SensorUpdateRegistry.ts fix(sensor-panel): per-sensor state when switching between same-type sensors 2026-05-16 22:28:52 -03:00
SignalRouter.ts feat(esp32): SignalRouter — model the GPIO Matrix as first-class 2026-05-17 05:00:53 +02:00
SpiBus.ts
…
esp32-signals.ts fix(esp32): LEDC signal IDs are 71-86 per ESP32 TRM, not 72-87 2026-05-17 05:42:52 +02:00
piSlaveScanner.ts feat(pi): pluggable slave handler + canvas wire detection for I2C/SPI/UART 2026-05-18 16:26:37 +02:00
rp2040-bootrom.ts
…
sensorControlConfig.ts
…