mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-09-14 15:16:40 +00:00
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.
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
#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);
|
||||
}
|
||||
Reference in New Issue
Block a user