mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-08-01 01:36:12 +00:00
docs: document repeater politeness knobs and Diagnostics screen
- settings_screen: full Radio section (Preset/Freq/SF/BW/CR/Repeater were undocumented), plus the five flood-only politeness sub-items. - tools_screen: new Diagnostics section (per-type counters, heap/stack, radio, pool/queue, Forwarded, reset popup). - README + FEATURES: mention diagnostics; FEATURES gets a full repeater entry. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
d790f7e5cd
commit
22ad46257f
+44
@@ -441,6 +441,50 @@ Sequencing: hardware duty-cycle RX and APC are both done and in field test on
|
||||
`feat/power-saving`; see the status block at the top of this entry for what's
|
||||
left (PPK2 current measurement, multi-hop APC gating).
|
||||
|
||||
### ✅ Companion repeater + politeness knobs + diagnostics
|
||||
|
||||
On-device repeater for the Solo companion, scoped to the SX1262 boards (Wio
|
||||
Tracker L1 OLED/e-ink, GAT562 30S). All on `feature/companion-repeater-presets`.
|
||||
|
||||
- **Repeater toggle** (`client_repeat`, Settings › Radio) — the companion relays
|
||||
flood/direct traffic on its **current** frequency (no dedicated band), still
|
||||
working as a normal companion. `MyMesh::allowPacketForward` gates it; loop
|
||||
detection (`isRepeatLooped`, ported from `simple_repeater`) and an advert
|
||||
flood-depth cap are always applied. Packet pool bumped 16→32 to match the
|
||||
repeater workload (a too-small pool starved channel/DM reception once relaying
|
||||
queued retransmits).
|
||||
- **Politeness knobs** (all opt-in, default off, flood-only — a direct route's
|
||||
named next hop is never dropped). Shown under Radio only while the repeater is
|
||||
on:
|
||||
- **Skip advert** — don't re-flood adverts (highest-volume flood).
|
||||
- **Max hops** — drop a flood past N hops.
|
||||
- **Yield** — scale the retransmit delay for *forwarded* floods only
|
||||
(`getRetransmitDelay`); own sends pass their own delay to `sendFlood`, so the
|
||||
companion's own traffic is never slowed. Widens the overhear window.
|
||||
- **Min SNR** — drop a flood copy below a dB threshold (`-128` sentinel = off,
|
||||
so an upgraded prefs file can't read as "filter at 0 dB").
|
||||
- **Suppress dup** — overhear cancel: a received flood whose hash matches a
|
||||
queued retransmit cancels our copy (`Dispatcher::suppressQueuedDuplicate`,
|
||||
`wantsOverhearSuppress` hook). MeshCore had no overhear-cancel before — the
|
||||
unused `removeOutboundByIdx`/`getOutboundByIdx` finally have a caller. Packet
|
||||
hash ignores the path for non-TRACE, so our copy and the peer's relayed copy
|
||||
hash equal. Pairs with Yield (longer delay → wider window to hear a peer).
|
||||
- **Diagnostics screen** (Tools › Diagnostics) — single read-only page: per-type
|
||||
RX/TX counters (generic `Dispatcher::n_recv_by_type`/`n_sent_by_type`), uptime,
|
||||
heap + stack (new `DeviceDiag` helper, nRF52 linker-symbol/`sbrk` heap +
|
||||
FreeRTOS stack high-water), noise floor, RSSI/SNR, pool free, outbound queue,
|
||||
and **Forwarded** (`Mesh::n_forwarded` — actual retransmits; backed out on
|
||||
overhear cancel so it reflects what hits the air). Enter opens a confirm popup
|
||||
to reset the cumulative counters (`resetStats` made virtual; `Mesh` override
|
||||
also clears `n_forwarded`).
|
||||
- Prefs persisted behind schema sentinels `0xC0DE000E` (four knobs) then
|
||||
`0xC0DE000F` (suppress-dup), with stray-byte clamps for upgraders.
|
||||
- **Open question:** the app-side dedicated-band gate in `CMD_SET_RADIO_PARAMS`
|
||||
was commented out (not deleted) to match the on-device toggle's any-frequency
|
||||
behaviour — undecided whether that gate was UX-only or regulatory.
|
||||
- **Not done:** live two-device mesh verification (A→repeater→C); counters make
|
||||
it observable but don't replace the field test.
|
||||
|
||||
### SOS broadcast
|
||||
|
||||
Configurable in Settings › System › SOS:
|
||||
|
||||
Reference in New Issue
Block a user