mirror of
https://github.com/meshtastic/firmware.git
synced 2026-11-07 23:04:49 -05:00
faca3727de0132f52bb1775495b7d92f1083facb
Two nodes exchanging a stream are each other's main collision partner: both redraw their backoff after the same frame, and land on the same slot far more often than chance, because the draw is timed from each node's own handling of that frame rather than from the frame itself. A module can now claim a packet for one parity of the slot grid through RadioTxHook::slotParity(), returning the new meshtastic.SlotParity from mesh.proto. A claimed packet's plain CSMA draw counts its slots from the air end of the last frame this node sent or heard - the one instant both ends share - and takes only slots of that parity, so two nodes on opposite parities are always at least a whole slot apart however differently they handled the frame. The weighted rebroadcast draw is untouched, and with no parity claimed the draw is exactly the code that was there. The driver keeps the anchor up to date whether or not anything asks for it: the air end is stamped in the TX_DONE / RX_DONE interrupt itself, since everything after that is handling delay a peer does not share. DMShell claims its own frames when DMSHELL_SLOT_PARITY=even|odd is set, by packet id rather than port number, since the packet is encrypted by the time the driver asks. Unset, no hook is registered at all. -DMESHTASTIC_TX_SLOT_PARITY=<0|1> gives a whole node a default parity, for the far end of a session that runs no module of its own. The mesh.proto enum needs its own protobufs PR and a submodule bump; the generated files here were regenerated from it with nanopb 0.4.9.1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MkrqYBzhAxyybmoezb1TJV
Overview
This repository contains the official device firmware for Meshtastic, an open-source LoRa mesh networking project designed for long-range, low-power communication without relying on internet or cellular infrastructure. The firmware supports various hardware platforms, including ESP32, nRF52, RP2040/RP2350, and Linux-based devices.
Meshtastic enables text messaging, location sharing, and telemetry over a decentralized mesh network, making it ideal for outdoor adventures, emergency preparedness, and remote operations.
Get Started
- 🔧 Building Instructions - Learn how to compile the firmware from source.
- ⚡ Flashing Instructions - Install or update the firmware on your device.
Join our community and help improve Meshtastic! 🚀
Stats
Languages
C++
73.6%
C
21.7%
Python
2.6%
Shell
1.5%
Batchfile
0.2%
Other
0.2%
