Menu Chiudi

NEW MeshCom 4.40 con Store&Forward

Cosa è stato modificato

1. Store-and-Forward (S&F) per i messaggi diretti

File: src/msgstore.cpp, src/msgstore_api.h, src/msgstore_glue.cpp, src/msgstore_settings.{h,cpp},
src/sto_notice.{h,cpp}, src/dm_dedup.{h,cpp}, src/reack_limiter.{h,cpp}, src/dm_stats.{h,cpp}, spuntare la casella in
src/lora_functions.cpp e src/loop_functions.cpp, sito web /?page=mailbox.

  • Problema: un messaggio diretto (DM) inviato a una stazione attualmente non raggiungibile va perso.
  • Il codice del mittente è rimasto invariato rispetto all'upstream: MAX_RETRANSMIT 3 a intervalli di 40 s, ovvero 4 trasmissioni in circa
    2 minuti, nuovo msg_id per copia (pnRetryId) a condizioni stabili {NNN. L'unica novità è un codice di risposta 0x03
    "fallito" nell'app al momento della rinuncia e punti aggiuntivi (ack=, rtt=, att=).
  • Destinatario: i messaggi diretti duplicati vengono scartati (deduplicazione in base alla fonte e a NNN), ma viene inviata una nuova conferma di ricezione (Re-ACK, limitata da
    reack_limiter), in modo che un ACK perso non provochi un loop infinito.
  • Nodo della casella postale (Store-Node): memorizza un DM che non raggiunge la destinazione (nessun controllo degli hop durante la memorizzazione).
    Non appena sente nuovamente la destinazione in forma diretta (percorso senza virgola), restituisce una scala a 9 livelli con
    max_hop 0 da: trasmissioni della durata di 0/40/80/180/220/260/360/400/440 s (per un totale di 7 min 20 s), seguite da 1 ora di pausa ciascuna
    Voce. Ogni spedizione ha una nuova msg_id (millis()), {NNN rimane. Ritardo casuale 5-60 s; se sente un
    Se viene trasmesso un altro nodo per lo stesso (sorgente, NNN), la trasmissione viene interrotta; un ACK termina la sequenza. La
    La casella di posta si trova solo nella RAM; un riavvio la cancella.
  • Limiti: un'azione al massimo ogni 30 secondi, al massimo 20 azioni all'ora per nodo; nessuna trasmissione in caso di QRS/QRT
    o se l'utilizzo del canale supera il 25% (5 min). Carico utile fino a 160 byte.
  • Risposta al mittente: stato 0x04 (in attesa, destinatario allegato) e, facoltativamente, il testo :stoNNN <Ziel>
    (limite di rate, --storenotice, impostazione predefinita).
  • Modalità (--store): off (Standard) | own (Destinazioni con lo stesso indicativo di chiamata di base del nodo) | list
    (Indicativo di chiamata da --storecall, max. 16) | heard (Brano ascoltato nelle ultime 12 ore).
  • Hardware: schede con ENABLE_MSGSTORE (tutti gli ambienti ESP32-S3, RAK4631, T114, T-Echo). Altrimenti non integrati.
  • Persistenza: frase propria (NVS su ESP32, /msgstore.cfg nel LittleFS su nRF52), non in s_meshcom_settings.

2. Matrice di vicinato (NBR)

File: src/nbr_matrix.{h,cpp}, src/nbr_mask.h, src/nbr_views.{h,cpp}, src/topo_ui.{h,cpp}, collegamento a
src/lora_functions.cpp e src/txring_functions.cpp, Annuncio /?page=neighbours, Comando --neighbours.

  • Calcola una matrice locale a due salti “La stazione Y riceve la stazione X” a partire dai campi di percorso dei frame ricevuti (finestra di 12 ore)
    e dai rapporti sui segnali HEY. La matrice stessa non viene trasmessa.
  • Per ogni frame da inoltrare (fonte, NNN): F richiesta = vicini diretti che non hanno ancora il frame; F esclusivo =
    vicini raggiungibili solo da me. Caso A (F esclusivo non vuoto): inoltro con priorità, non interrompo mai. Caso B:
    gli altri garantiscono la copertura, io inoltro con backoff e interrompo non appena viene rilevata la copertura (basata sul contatore di copertura, non su quello di
    ). Il controllo di interruzione rilegge ora l’anello TX sotto il ring-lock prima di liberare uno slot
    .
  • Riquadri di testo (:) e quindi anche i frame inviati dal server alimentano solo il proprio passo (ME), nessun
    Bordi del percorso; in questo modo non si creano vicini fantasma.
  • Nessun nuovo formato di trasmissione per la decisione: i firmware più vecchi continuano a diffondersi come prima. Rapporto HN facoltativo
    (--nbrreport, Standard auto): un frame HEY a “HN” ogni 15 min a max_hop 0; il firmware di serie lo scarta perché
    «HN» non supera l'esame per il codice di chiamata.
  • Memoria: ESP32-S3 e nRF52840 128 righe / 512 bordi, NbrMatrix 13.992 B, maschere TX-Ring 660 B; classico
    ESP32 64 righe / 256 spigoli, 5.592 B, 340 B.
  • Gli interruttori si trovano in node_sset4 0x0100-0x2000 e quindi al di fuori dei bit KISS/TCP 0x0010-0x0080.

3. MHeard e tabella dei percorsi sostituiti dall’NBR (cambiamento visibile nel comportamento)

src/mheard_functions.{cpp,h} e src/mheard_throttle.h omesso, src/mh_phone.{h,cpp} è la successione.

  • --mheard (in serie): righe al posto della tabella ASCII [MH] key=value, più recenti per prime; colonne pl/mesh e numeriche
    Gli HW-ID non sono più necessari.
  • --path, pagina del percorso Web, scheda "Percorso T-Deck": mostrano il numero di hop e i vicini dalla matrice anziché la versione completa
    Stringa del percorso del relay.
  • Pagina Web di MHeard: SNR come media su 8 frame, etichette diverse, campi aggiuntivi.
  • Frame BLE-MHeard per l'app: i più recenti per primi, al massimo un frame live per stazione al minuto, sette nuove chiavi
    (AGE HM ROLE EX NB GW VIA) aggiunte alla fine, le 13 chiavi precedenti e il loro ordine rimangono invariati. Per
    stazioni senza spazio per i dettagli (più di 64 / 48 vicini diretti su S3, RAK / ESP32 classico) mancano RSSI, SNR,
    PLT, MOD, PL e MESH nel frame al posto dei valori segnaposto; DIST rimane sempre numerico. L’app di serie tollera
    chiavi sconosciute e valori mancanti (verificato rispetto al codice sorgente dell’app).
  • In "Luft", cambia il valore, non il formato, del numero adiacente in HEY R<n>, Posizione /N e il rapporto sul segnale HEY:
    prima getMheardCount() (tutte le stazioni ascoltate in 60 minuti), ora NCNT (vicini su due lati, al massimo 99,
    minore o uguale al valore precedente). Il server e la mappa mostrano quindi sistematicamente valori inferiori per i nuovi nodi.
  • Persistenza: /mheard.dat e /mhpath.dat vengono cancellati al primo avvio (la cronologia va persa una volta sola),
    Intervallo di salvataggio da 30 s a 10 min, T-Deck Pro esegue una nuova registrazione /topo.dat sulla scheda SD.
  • Capacità con riga di dettaglio completa: S3/RAK 80 -> 64, ESP32 classico 30 -> 48.

4. Nuovi comandi seriali/USB (19)

Valori predefiniti nella colonna “Std.”. Solo --nbrdebug, --nbrrelay, --nbrsym, --nbrreport sono righe della tabella
COMMAND_TOGGLES (src/command_functions.cpp, 80 righe in totale, caratteri in src/command_toggles.h); tutti gli altri
sono i livelli della catena di comando definiti manualmente.

Comando Argomenti ore Effetto Salva Limitazione
--neighbours – – Visualizza la matrice dei vicini (forma abbreviata --nbr) no
--nbrreset – – Svuota matrice no
--nbrcheck – – Verifica della consistenza della matrice no
--nbrdebug acceso/spento off Output di debug di tutte le decisioni NBR sì
--nbrrelay off/count/on off Decisione sul relè: spento / solo registrazione / interruzione attiva sì
--nbrsym acceso/spento su Ipotesi di simmetria (SNR >= -16 dB), in assenza di osservazioni dirette sì
--nbrreport off/auto/on auto Notizie dal vicinato dell'HN (auto: solo se Mesh e Gateway sono spenti) sì
--store off/proprio/elenco/ascoltato off Modalità casella di posta; senza valore: stato sì ENABLE_MSGSTORE
--storecall Elenco/nessuno vuoto Indicativo di chiamata per Modus list (max. 16) sì ENABLE_MSGSTORE
--storeslots 1-50 50 Posti nella casella di posta sì ENABLE_MSGSTORE
--storetime 1-168 24 Tempo di permanenza in ore sì ENABLE_MSGSTORE
--storenotice acceso/spento su :sto-Avviso al mittente sì ENABLE_MSGSTORE
--mbox – – Visualizza il contenuto della casella di posta no ENABLE_MSGSTORE
--msgid – – Visualizza il contatore delle notizie no
--airgap on/off/mostra off Banco di prova: scartare la ricezione, rifiutare la trasmissione no
--battprobe [n] 1-10 1 Misurazione ADC della batteria (circa 7,5 s per ciclo) no INSTRUMENT_ENABLED, Heltec con divisore in serie
--dumpsettings – – Elenco delle impostazioni no solo nRF52
--keylock acceso/spento off Blocco tasti (SYM+K) sì T-Deck, T-Deck Plus
--ethmtu 1280-1500 1500 MTU Ethernet (se inferiore a 1500, limita l'MSS TCP del server web) sì RAK4631

Altre modifiche: --help è suddiviso in gruppi e, alle spalle delle guardie, ci sono i rispettivi addestratori; una parte dei
I comandi continuano a non avere un testo di aiuto. Token esatti al posto delle corrispondenze con prefisso nella tabella di alternanza. È stato rimosso
codice commentato dei comandi di prova --compress e --softser test|test0|xml.

5. Cambiamenti strutturali

  • s_meshcom_settings ha un'unica definizione in src/meshcom_settings.h; Schema e percorsi Flash in
    src/settings_schema.*, src/settings_store.* (ESP32: NVS con nomi delle chiavi invariati, nRF52: file).
    Gli intervalli di valori dello schema corrispondono ai limiti massimi dei setter (tra cui, ad esempio, node_postime fino a 86.400 s, node_alt fino a
    40000, node_gpsdebug fino a 3, --postime (ora limitato a un giorno).
  • Contatore (node_msgid (tra l'altro) suddivisi in src/counters_store.h; finalizeAndSendAPRS() sostituisce le singole copie
    della conclusione della trasmissione; save_msgid() omesso.
  • BLE: smontaggio del telaio del telefono e drain in src/ble_phone_*.h; UDP/gateway in src/udp_frame*, src/gateway_service*.
  • Moduli di supporto/database: src/country_profile.*, src/radio_units.*, src/loop_scheduler.*, src/uptime_min.h,
    src/batt_pipeline.h, src/ui_common/*.

6. Modifiche alla build (visibili al revisore)

  • RAK4631 contribuisce a -Os anziché -Ofast (variants/wiscore_rak4631/platformio.ini, build_unflags = -Ofast, -Os):
    Flash 96,1% -> circa 70%, RAM invariata; si interrompe a quel punto -ffast-math, in modo che funzioni isnan()-Esami in
    codice a monte (ad es. bmx280.cpp, onewire_functions.cpp) di nuovo. T114 e T-Echo rimangono su -Ofast.
  • Ambienti T-Beam classici: rimossi i flag di compilazione PSRAM. E22_XML: ricompilato KISS/TCP, MC_CAPTURE=0 ->
    MC_DIAG=0, tinyxml2 come copia incorporata all'indirizzo lib/tinyxml2.
  • t5_epaper sta costruendo ora (nuovo configuration.h, fonti bq27220, lib_deps); memoria T-Deck-Pro-LVGL nella PSRAM.
  • Nuove sezioni di base [esp32_s3]/[esp32_classic] con un upload_command su $BUILD_DIR
    (Indirizzi, file e --port (invariato).
  • Nuova linea di batterie per tutte le tavole (src/batt_pipeline.h, campionamento diverso). OneWire_GPIO 99 -> -1 con 8 tavole.
  • settings_schema.cpp si trova negli ambienti Safeboot nel filtro sorgente (i percorsi Flash seguono questo schema).
  • default_envs, tabelle delle partizioni e -Werror rimangono invariati; il file del flusso di lavoro meshcom-ci.yml non serve
    Modifica (stessi ambienti, stessi percorsi degli artefatti).
  • safeboot.bin e safeboot-s3.bin sono stati ricostruiti da zero a partire da questa configurazione (dati inseriti esp32_flash.* e
    settings_schema.cpp sono cambiate).

7. Rimosso

  • 43 font Adafruit GFX inutilizzati disponibili su src/Fonts/, 11 file AVR/SAMD/ESP8266 disponibili all'indirizzo src/Platforms/,
    src/nrf52/glcdfont.c (Duplicato), src/t-deck-pro/ui_scr_mrg.c (sostituito da src/ui_common/scr_mgr.c),
    src/idf_component.yml.orig.

Errori corretti

Solo gli errori che si trovano in upstream/dev 1d4f525 sono ancora disponibili.

Scrivi un commento

Il tuo indirizzo e-mail non verrà pubblicato. I campi obbligatori sono contrassegnati con *