This repository has been archived on 2026-08-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
donglora/examples/meshcore
swaitsandClaude Opus 4.6 d01de9d14d fix: MeshCore spec compliance audit and packet quality warnings
Audited against meshcore-spec and fixed all compliance gaps:

- Fix trace hash size encoding: use 1<<(flags&3) not (flags&3)+1
- Reject reserved path hash_size_code 3 per spec Section 3
- Minimum packet size 3 bytes (was 2)
- Add MAX_PACKET_PAYLOAD (184) and min payload (1) validation
- Tighten payload minimums: ANON_REQ≥51, encrypted≥20, group≥19,
  multipart≥2
- Add node_type 0 ("none") to NODE_TYPES
- Fix node_type fallback display (was "node=type=14", now "node=0x0e")

Add packet quality warnings for likely-corrupt frames:
- decode_meshcore_packet returns (str, list[str]) with quality warnings
- ADVERT: flag bad node_type, bad UTF-8 in name, future/bad timestamps
- Combine content warnings with low-SNR signal at display layer
- Warnings stack: one flag = maybe, multiple = high confidence corrupt

Update test corpus and generators for tightened validation rules.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:57:32 -06:00
..

MeshCore Example

This is a protocol implementation built on top of DongLoRa. The DongLoRa firmware itself is protocol-agnostic — it just gives you a LoRa radio pipe. MeshCore is one of many possible protocols you can run over it.

What's here

  • meshcore_rx.py — MeshCore packet decoder, Watchman mesh health reporter
  • channels.csv — 276 known MeshCore channels (Public + hashtag channels)
  • corpus/ — Test vectors for MeshCore packet decoders

Usage

uv run examples/meshcore/meshcore_rx.py [PORT]

Connects to a DongLoRa device, configures the radio for the MeshCore frequency/modulation, and decodes received packets in real time.

Running the test corpus

uv run examples/meshcore/corpus/validate.py