mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-07-26 14:58:12 +00:00
docs(repeater): rename "politeness" -> "forwarding filters", fix stale refs
Rename the repeater filter knobs from "politeness" to "forwarding filters" across code comments, FEATURES.md and the docs, and correct references that hadn't followed the controls when they moved from Settings › Radio to the dedicated Tools › Repeater screen. Comment/doc accuracy fixes: - NodePrefs: user_radio_presets are now written by both Settings and Repeater (shared picker), not Settings only. - DiagnosticsScreen: class header listed only some rows; spell out the full set (forwarded, signal, pool/queue, error flags, reset gesture). - RepeaterScreen header no longer claims to show live forwarding stats (they live on Diagnostics). - tools_screen.md: drop the stale paragraph claiming the Repeater screen shows live stats at the bottom — it is config-only. Comments/docs only; no behaviour change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -336,7 +336,7 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no
|
||||
rd(&_prefs.bot_quiet_end, sizeof(_prefs.bot_quiet_end));
|
||||
rd(_prefs.bot_trigger_ch, sizeof(_prefs.bot_trigger_ch));
|
||||
rd(_prefs.user_radio_presets, sizeof(_prefs.user_radio_presets));
|
||||
// → 0xC0DE000E: repeater politeness knobs. On a pre-E file the bytes here are
|
||||
// → 0xC0DE000E: repeater forwarding-filter knobs. On a pre-E file the bytes here are
|
||||
// that file's own sentinel tail, so clamp every out-of-range value back to its
|
||||
// "off" default (same stray-byte handling as the fields below).
|
||||
rd(&_prefs.repeat_skip_adverts, sizeof(_prefs.repeat_skip_adverts));
|
||||
|
||||
@@ -283,7 +283,7 @@ int MyMesh::calcRxDelay(float score, uint32_t air_time) const {
|
||||
uint32_t MyMesh::getRetransmitDelay(const mesh::Packet *packet) {
|
||||
uint32_t t = (_radio->getEstAirtimeFor(packet->getPathByteLen() + packet->payload_len + 2) * 0.5f);
|
||||
uint32_t d = getRNG()->nextInt(0, 5*t + 1);
|
||||
// Politeness yield (Settings > Radio): scale the flood retransmit delay so a
|
||||
// Yield filter (Tools > Repeater): scale the flood retransmit delay so a
|
||||
// mobile companion waits longer and lets better-sited fixed repeaters win the
|
||||
// flood first. Only forwarded floods reach here — own sends pass their own
|
||||
// delay to sendFlood() — so this never slows the companion's own traffic.
|
||||
@@ -556,7 +556,7 @@ bool MyMesh::isRepeatLooped(const mesh::Packet* packet) const {
|
||||
|
||||
bool MyMesh::allowPacketForward(const mesh::Packet* packet) {
|
||||
if (_prefs.client_repeat == 0) return false;
|
||||
// "Politeness" filters (Settings > Radio) — all default off, so a plain repeater
|
||||
// Forwarding filters (Tools > Repeater) — all default off, so a plain repeater
|
||||
// is unaffected. Flood-only by design: on a direct route this node is the named
|
||||
// next hop, so dropping there would kill delivery with no alternate path, while
|
||||
// dropping a flood copy just trims redundancy other nodes still carry.
|
||||
@@ -1848,7 +1848,7 @@ void MyMesh::handleCmdFrame(size_t len) {
|
||||
}
|
||||
|
||||
// Dedicated-band requirement for app-driven repeat disabled, to match the
|
||||
// on-device Repeater toggle (Settings > Radio), which repeats on whatever
|
||||
// on-device Repeater toggle (Tools > Repeater), which repeats on whatever
|
||||
// frequency is already set with no band restriction. Uncomment to restore
|
||||
// the old behaviour (repeat=1 only accepted on repeat_freq_ranges, i.e.
|
||||
// 433.000/869.495/918.000 MHz exactly, by default).
|
||||
|
||||
@@ -143,7 +143,7 @@ protected:
|
||||
bool allowPacketForward(const mesh::Packet* packet) override;
|
||||
bool isRepeatLooped(const mesh::Packet* packet) const;
|
||||
// Overhear suppression only makes sense while repeating; gated behind its own
|
||||
// opt-in pref (Settings > Radio > Suppress dup).
|
||||
// opt-in pref (Tools > Repeater > Suppress dup).
|
||||
bool wantsOverhearSuppress() const override { return _prefs.client_repeat && _prefs.repeat_suppress_dup; }
|
||||
|
||||
void sendFloodScoped(const TransportKey& scope, mesh::Packet* pkt, uint32_t delay_millis);
|
||||
|
||||
@@ -171,8 +171,9 @@ struct NodePrefs { // persisted to file
|
||||
// shows ✗. 0 = no auto-resend (single attempt). Default 2.
|
||||
uint8_t dm_resend_count;
|
||||
|
||||
// User-saved radio presets (Settings > Radio > Preset > "Save current...").
|
||||
// name[0] == '\0' marks an empty slot.
|
||||
// User-saved radio presets, written by the "Save current..." entry in the
|
||||
// shared preset picker (Settings > Radio and Tools > Repeater both populate
|
||||
// these same slots). name[0] == '\0' marks an empty slot.
|
||||
struct UserRadioPreset {
|
||||
char name[16];
|
||||
float freq;
|
||||
@@ -183,9 +184,9 @@ struct NodePrefs { // persisted to file
|
||||
static const uint8_t USER_RADIO_PRESET_MAX = 4;
|
||||
UserRadioPreset user_radio_presets[USER_RADIO_PRESET_MAX];
|
||||
|
||||
// Repeater "politeness" — only consulted when client_repeat is on, via
|
||||
// Repeater forwarding filters — only consulted when client_repeat is on, via
|
||||
// MyMesh::allowPacketForward(). Both default to off (0) so behaviour is
|
||||
// unchanged until the user opts in (Settings > Radio).
|
||||
// unchanged until the user opts in (Tools > Repeater).
|
||||
// repeat_skip_adverts: 1 = don't re-flood ADVERT packets (the highest-volume
|
||||
// flood traffic); messages/acks still relay.
|
||||
// repeat_max_hops: drop a flood packet once it has already travelled this
|
||||
|
||||
@@ -9,13 +9,14 @@
|
||||
|
||||
extern MyMesh the_mesh;
|
||||
|
||||
// Single-screen device diagnostics: packet counts by category (RX/TX), radio
|
||||
// totals, uptime, heap and stack headroom. Built from Dispatcher's per-type
|
||||
// counters (Mesh.h/Dispatcher.cpp) — grouped into a handful of categories
|
||||
// rather than all 16 raw PAYLOAD_TYPE_* values, so it stays readable on a
|
||||
// 128x64 OLED without needing the full type list. Falls back to scrolling
|
||||
// (same drawList-style indicator as every other screen) on screens too small
|
||||
// to show every row at once.
|
||||
// Single-screen device diagnostics: uptime, packet counts by category (RX/TX),
|
||||
// forwarded-packet count, heap and stack headroom, radio signal (noise floor,
|
||||
// RSSI/SNR), packet-pool/outbound-queue depth, and radio error flags. The packet
|
||||
// counts are built from Dispatcher's per-type counters (Mesh.h/Dispatcher.cpp) —
|
||||
// grouped into a handful of categories rather than all 16 raw PAYLOAD_TYPE_*
|
||||
// values, so they stay readable on a 128x64 OLED without the full type list.
|
||||
// Falls back to scrolling (same drawList-style indicator as every other screen)
|
||||
// on screens too small to show every row at once. Hold Enter resets the counters.
|
||||
class DiagnosticsScreen : public UIScreen {
|
||||
UITask* _task;
|
||||
int _scroll = 0;
|
||||
|
||||
Reference in New Issue
Block a user