How gotemzzz/renode_interactive_memory_window works
This Electron desktop app starts Renode and presents a small memory window for reading bytes at a searched address. The renderer requests startup, monitor connection, peripheral discovery, and memory reads through a preload IPC bridge; the main process dispatches those requests to the Renode backend. The backend launches Renode, connects to its Telnet monitor, and exchanges commands. Monitor output is logged and extracted before results return to the UI. The tree and sampled source support this workflow, but do not establish broader capabilities beyond the visible memory and peripheral views.
Main entry points: renode-cli.ts Renode CLI · main.ts IPC handlers · preload.ts API bridge · getMonitorOutput.ts Output capture
Components 12
Memory UI
- Memory window
src/renderer/renderer.ts
Electron IPC
- API bridge
src/preload.ts - IPC handlers
src/main.ts
Renode runtime
- Renode CLI
src/backend/renode-cli.ts - Renode process
- Telnet monitor
- Startup detector
src/utils/waitForRenodeToStartTelnet.ts - Peripheral parser
src/utils/parsePeripherals.ts
Monitor output
- Output capture
src/utils/getMonitorOutput.ts - Monitor log
monitor_output.txt - Block extractor
src/utils/extractMonitorBlock.ts
Other components
- User
Connections 18
- User → Memory window: uses
- Memory window → API bridge: invokes API
- API bridge → IPC handlers: IPC invokes
- IPC handlers → Renode CLI: dispatches commands
- IPC handlers → Peripheral parser: parses results
- Renode CLI → Renode process: spawns
- Renode CLI → Startup detector: waits for startup
- Renode process → Startup detector: stdout signals ready
- Renode CLI → Telnet monitor: connects and commands
- Renode CLI → Output capture: requests output
- Renode CLI → Output capture: streams socket data
- Output capture → Monitor log: writes and reads
- Output capture → Block extractor: extracts blocks
- IPC handlers → Renode CLI: requests bytes or peripherals
- Renode CLI → Peripheral parser: returns command output
- Peripheral parser → IPC handlers: returns peripheral list
- IPC handlers → API bridge: returns IPC results
- API bridge → Memory window: returns results