Commit graph

2 commits

Author SHA1 Message Date
34e40f8ac9 CI fix + add meshcore source as submodules
CI: switch from python:3.12-slim container to ubuntu-latest +
actions/setup-python. The slim image has no node, but
actions/checkout@v4 is a JavaScript action and the runner expects
node inside the job container. Default ubuntu-latest images on
Forgejo (catthehacker/ubuntu:act-*) ship node; setup-python adds
Python on top.

Submodules: vendor MeshCore firmware and meshcore_py source under
reference/ so the firmware/library behavior is verifiable inline
(parse_status field offsets, send_chan_msg's OK-only ack, etc).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 22:07:04 -04:00
0f478bf720 Implement test/control stations, simulator, tests
Adds the modjam package: a MeshCore-backed test station service for
Pi (IDLE + RUNNING states, cuesheet-driven), a control station REPL
for the Mac, and a UDP simulator that swaps in for the radio when
SIMULATOR=true (drops cross-config packets and a configurable
fraction of test-payload datagrams to mimic real radio loss).
docker-compose runs three sim stations + control on a bridge net.
TSV log format matches the reference traces.

Pytest suite covers protocol codec, cuesheet builder, TSV logger,
config loader, and UDP radio packet routing/loss; .forgejo/workflows
runs it on push to main and on PRs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 21:27:41 -04:00