Commit Graph
6 Commits
Author SHA1 Message Date
scottp 97affae86c Who made it, and why: author, credits, licence and support
The README says who wrote it and the two projects it was built for, WII6
and OGLAS, with their sites; credits Ground Control for the modem and
the library that does the protocol work; and gives the licence with
contact details, where to report issues and what helps in a report, and
that it is not a Ground Control product. The licence, every source file
and the Python package's metadata carry the copyright and email; the
package lists its homepage, repository, issues and changelog.
2026-10-09 13:16:30 +11:00
scottp 90d56e4c6d Sample: the LilyGO T3-S3 and ESP32 DevKitC, from OGLAST2's satbench
The two boards OGLAST2's satellite bench was built for: the T3-S3 with
the modem on uart0 (GPIO43 and 44), the original ESP32 DevKitC on uart2
(GPIO17 and 16). Both build; neither has run here.
2026-10-09 13:00:31 +11:00
scottp beb22fb70c Docs: the README, JSPR, Cloudloop, testing
README says what the module adds to Ground Control's library and what it
works around, and how to use it. JSPR.md is the protocol as the library
speaks it, from its source, with its surprises. CLOUDLOOP.md is account
to first message, from WII6's IRIDIUM.md. TESTING.md is the levels, the
rig, and what has passed: Python, native_sim, an ESP32-S3 and an STM32U5
against the fake, and free checks against a real 9704.
2026-10-09 12:48:16 +11:00
scottp 917522d1f4 Python: the rb9704 command line, a fake modem, and the tests
rb9704 drives a 9704 on USB and the Cloudloop account behind it, moved
from WII6's host/rockblock with its project names taken out. rb9704-fake
speaks JSPR on a pty or a serial port: everything the library asks, MO in
segments with the CRC checked, MT, signal, provisioning, refusals and
failures on command.

The tests run against the fake at every level: the fake itself, the
command line, Ground Control's Python binding, the shell sample on
native_sim, and the sample on a board (test_zephyr.py, one suite through
two consoles). test_real.py makes free checks against a real modem.
2026-10-09 12:48:16 +11:00
scottp dbed9bbc88 The shell sample, and a two-board rig for testing on hardware
samples/shell is `rb9704` on the shell with callbacks that print what
arrives, a CRC-32 and the start of each message from the network. Board
overlays for native_sim (the modem a host serial port, a pty or a real
9704 on USB), NUCLEO-U575ZI-Q, XIAO ESP32S3 and ESP32-S3-DevKitC.

tests/rig/bridge copies bytes between a board's USB serial port and a
UART, so two boards wired together stand in for a USB-serial adapter: one
runs the sample, the other bridges its modem UART to the host, where the
fake modem answers. Overlays for a Nucleo and a XIAO, either way round.
2026-10-09 12:48:16 +11:00
scottp c0e92a7f02 The module: Ground Control's library on Zephyr, with one worker thread
Ground Control's RockBLOCK 9704 library is pinned untouched in west.yml
and compiled here for any board with a UART: a serial port on the bus of
the rock7,rockblock-9704 devicetree node, the library's timing calls on
the kernel, and one worker thread that owns every call into it, since the
library has no locking and shares static buffers.

The worker sleeps until a request or a byte from the modem arrives.
Requests (begin, end, power, send, info, signal) wait as long as the
caller says; a send with K_NO_WAIT queues and reports through mo_done.
Callbacks for a sent message, a received one, the signal and the
provisioning; a status snapshot that never touches the modem.

The library asks for provisioning once and keeps a miss for good; the
worker clears its cache before a send whose topic is missing and after
the modem refuses one, so a modem provisioned later is seen.

The serial port and worker began in the OGLAS satellite bench and were
carried through WII6's lib/wii6-sat.
2026-10-09 12:48:16 +11:00