Files
MeshCore-Solo/variants/sim/target.cpp
T
Jakub 8f4c92a217 feat(sim): add variants/sim/ — real companion_radio firmware on native + Emscripten
New board variant compiling the unmodified MyMesh/UITask/DataStore app
logic against real mesh::Radio/MainBoard/RTCClock/RNG interfaces, for
running the actual firmware outside embedded hardware:

- Native (plain g++, platform = native): ASCII-art display over stdout,
  stdin-driven input, local-disk-backed DataStore/IdentityStore.
- Emscripten/WASM (variants/sim/build_wasm.sh, since PlatformIO's native
  platform force-overrides any CC/CXX toolchain override back to system
  clang++): canvas-backed display, IDBFS-backed persistence across page
  reloads, JS-callable input via sim_enqueue_key(), emscripten_set_main_loop.

Real rweather/Crypto (AES128/SHA256/Ed25519) vendored unmodified and
proven working on both targets. variants/sim/web/index.html is a bare
verification harness, not the polished website embed.
2026-09-03 00:46:47 +02:00

29 lines
714 B
C++

#include <Arduino.h>
#include "target.h"
#include "SimRNG.h"
// Global stdout-backed Serial object, declared extern in Arduino.h.
SimSerialClass Serial;
SimMainBoard board;
SimRadio radio_driver;
SimRTCClock rtc_clock;
SensorManager sensors; // base class: no real sensors in Phase 1
#ifdef DISPLAY_CLASS
DISPLAY_CLASS display;
#endif
bool radio_init() {
// No real radio hardware to initialise -- always succeeds (see
// variants/sim/SimRadio.h; Phase 3 of the sim plan is where two SimRadio
// instances actually exchange bytes through a shared in-memory "ether").
return true;
}
mesh::LocalIdentity radio_new_identity() {
static SimRNG rng;
rng.begin();
return mesh::LocalIdentity(&rng);
}