mirror of https://github.com/meshcore-dev/MeshCore
Tree:
11ca58a7aa
anon-contacts-fix
default-scope
dev
flood.max.advert
gh-pages
main
t-impulse-ui
companion-v1.0.0a
companion-v1.0.0b
companion-v1.0.0c
companion-v1.10.0
companion-v1.11.0
companion-v1.12.0
companion-v1.13.0
companion-v1.14.0
companion-v1.14.1
companion-v1.15.0
companion-v1.16.0
companion-v1.2.0
companion-v1.2.1
companion-v1.2.2
companion-v1.3.0
companion-v1.4.0
companion-v1.4.1
companion-v1.4.2
companion-v1.4.3
companion-v1.5.0
companion-v1.5.1
companion-v1.6.0
companion-v1.6.1
companion-v1.6.2
companion-v1.7.0
companion-v1.7.1
companion-v1.7.2
companion-v1.7.3
companion-v1.7.4
companion-v1.8.0
companion-v1.8.1
companion-v1.9.0
rep-v6
repeater-v1.0.0a
repeater-v1.0.0c
repeater-v1.0.0d
repeater-v1.10.0
repeater-v1.11.0
repeater-v1.12.0
repeater-v1.13.0
repeater-v1.14.0
repeater-v1.14.1
repeater-v1.15.0
repeater-v1.16.0
repeater-v1.2.0
repeater-v1.2.1
repeater-v1.2.2
repeater-v1.3.0
repeater-v1.4.0
repeater-v1.4.1
repeater-v1.4.2
repeater-v1.4.3
repeater-v1.5.0
repeater-v1.5.1
repeater-v1.6.0
repeater-v1.6.1
repeater-v1.6.2
repeater-v1.7.0
repeater-v1.7.1
repeater-v1.7.2
repeater-v1.7.3
repeater-v1.7.4
repeater-v1.8.0
repeater-v1.8.1
repeater-v1.9.0
repeater-v1.9.1
room-server-v1.0.0a
room-server-v1.0.0c
room-server-v1.10.0
room-server-v1.11.0
room-server-v1.12.0
room-server-v1.13.0
room-server-v1.14.0
room-server-v1.14.1
room-server-v1.15.0
room-server-v1.16.0
room-server-v1.2.0
room-server-v1.2.1
room-server-v1.2.2
room-server-v1.3.0
room-server-v1.4.0
room-server-v1.4.1
room-server-v1.4.2
room-server-v1.4.3
room-server-v1.5.0
room-server-v1.5.1
room-server-v1.6.0
room-server-v1.6.1
room-server-v1.6.2
room-server-v1.7.0
room-server-v1.7.1
room-server-v1.7.2
room-server-v1.7.3
room-server-v1.7.4
room-server-v1.8.0
room-server-v1.8.1
room-server-v1.9.0
room-v6
${ noResults }
1 Commits (11ca58a7aaafbf1396173424c615557562152f4f)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
d9e0d42738 |
sim: add ADAPTIVE routing strategy, density estimator, and TX power saving
Adds a complete simulation harness for the MeshCore radio platform, including: ### ADAPTIVE routing strategy (sim/src/RoutingStrategies.h) Hash-based relay gate selects a deterministic subset of nodes to forward each flood, with relay percentage adapted to local neighbour density: - SPARSE (<=4 neighbours): 100% relay -- no redundancy to spare - MEDIUM (5-14): 25% relay - DENSE (>=15): 15% relay Selection uses hash(packet_seed XOR node_seed) with no coordination required. Different packets select different subsets for stochastic load balancing. Relay suppression: nodes cancel queued outbound TX if they overhear another node already relaying the same flood (matched by packet hash). ### DensityEstimator (sim/src/DensityEstimator.h) Passive sliding-window neighbour count from normal traffic -- no extra messages. Only counts direct senders (hop_count==1) over a configurable window (default 60s). Uses std::unordered_set for unique counting; no fixed-array cap. ### Adaptive TX power saving (sim/src/SimNode.h) power_save_enabled reduces TX power in DENSE/MEDIUM tiers: DENSE: configurable (default 10 dBm, saves 75% TX current vs 20 dBm) MEDIUM: configurable (default 14 dBm, saves 60% TX current) SPARSE: always full power -- every hop counts on marginal links Validated: 100% delivery maintained at -10dBm DENSE reduction. Energy savings ~35% radio total. TX power reduction also lowers area RF noise floor. ### Scenario suite (sim/scenarios/) scenario_adaptive: ADAPTIVE vs DEFAULT vs PATH_SNR_HYBRID comparison scenario_concurrent: 2-8 simultaneous flood sources scenario_longchain: 20-hop chains at marginal SNR scenario_mixed: ADAPTIVE + legacy DEFAULT interoperability scenario_dutycycle: EU 1% duty cycle enforcement validation scenario_relay_pct_sweep: grid sweep to find optimal DENSE%/MEDIUM% operating point scenario_txpower: TX power saving vs delivery rate vs energy trade-off ### Key empirical results FM50 ADAPTIVE vs DEFAULT: equal delivery rate, -65% airtime, -70% collisions CH20 (chain): ADAPTIVE = SPARSE throughout, identical to DEFAULT TX power MODERATE (-10dB): 100% delivery, -35% energy across all topologies Legacy interop: zero delivery regression with mixed firmware ### Bug fixes - DensityEstimator: replace seen[64] array with unordered_set (was capping at 64 neighbours) - SimBus::onTransmit: add len > 255 guard before memcpy into 255-byte buffer - SimNode p_forward gate: >= -> > (was silently dropping relays at p_forward=1.0) - SimNode TX power reset: remove redundant !power_save_enabled clause - scenario_concurrent: fix stale ConcurrentResult* pointer after vector reallocation - scenario_relay_pct_sweep: update TxCallback from 4-arg to 5-arg (tx_power_dbm) - scenario_adaptive: remove unused variable last_suppressed Co-Authored-By: Claude Sonnet 4.6 <[email protected]> |
1 month ago |