How matthew-the-great/arena-timer-emulator works
ArenaTimer is a Windows-hosted ESP32 emulator dashboard, with a separate optional behavioral simulator. The main emulator workflow is: upload a complete flash image, start the virtual ESP32, relay its guest web interface, and view guest-sourced timer and LED output while sending controls. The behavioral simulator instead drives a native firmware process and presents its state in a separate dashboard. README documents Wi-Fi/NAT, UART controls, and raw or synchronized LED display; some QEMU startup and simulator command wiring is not visible in the excerpts, so those links are omitted or marked unverified.
Main entry points: qemu.js Emulator UI · manager.mjs QEMU Manager · server.mjs HTTP Server · engine.mjs Process Engine
Components 15
Behavioral Dashboard
- Simulator Page
public/index.html - Simulator UI
public/sim.js
Behavioral Runtime
- HTTP Server
server.mjs - Process Engine
engine.mjs - Native Firmware Host
native/host.cpp
ESP32 Dashboard
- Emulator Page
public/qemu.html - Emulator UI
public/qemu.js - LED Display
public/qemu.js
ESP32 Emulation
- QEMU Manager
qemu/manager.mjs - LED Frame Validator
qemu/led-frames.mjs - ESP32 QEMU
Guest Network and Display
- Guest HTTP Relay
qemu/network.mjs - Guest Page Adapter
qemu/guest-display.mjs - User Firmware Interface
Other components
- Operator
Connections 18
- Operator → Simulator Page: opens
README.md - Simulator Page → Simulator UI: loads
public/sim.js - Simulator UI → HTTP Server: posts actions
public/sim.js - HTTP Server → Process Engine: creates and drives
server.mjs - Process Engine → Native Firmware Host: spawns process
engine.mjs - Native Firmware Host → Process Engine: emits state
engine.mjs - Operator → Emulator Page: opens
README.md - Emulator Page → Emulator UI: loads
public/qemu.js - Emulator UI → QEMU Manager: uploads and controls
public/qemu.js - HTTP Server → QEMU Manager: routes requests
server.mjs - QEMU Manager → LED Frame Validator: validates frames
qemu/manager.mjs - QEMU Manager → Guest HTTP Relay: creates relay
qemu/manager.mjs - Emulator UI → LED Display: renders frames
public/qemu.js - QEMU Manager → ESP32 QEMU: manages process
- Emulator UI → Guest HTTP Relay: opens guest page
public/qemu.js - Guest HTTP Relay → User Firmware Interface: proxies requests
qemu/network.mjs - User Firmware Interface → Guest Page Adapter: HTML adapted by relay
- Guest Page Adapter → Emulator UI: posts timer value
qemu/guest-display.mjs