From 97affae86cbd3d4e5bf351d8213832c52ea8622c Mon Sep 17 00:00:00 2001 From: Scott Penrose Date: Fri, 9 Oct 2026 13:16:30 +1100 Subject: [PATCH] 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. --- CMakeLists.txt | 1 + Kconfig | 1 + LICENSE | 2 +- README.md | 35 ++++++++++++++++++++++++-- dts/bindings/rock7,rockblock-9704.yaml | 1 + include/rb9704/rb9704.h | 1 + python/install.sh | 2 ++ python/pyproject.toml | 7 ++++++ python/rb9704tools/__init__.py | 2 ++ python/rb9704tools/cli.py | 2 ++ python/rb9704tools/fakemodem.py | 2 ++ python/tests/conftest.py | 2 ++ python/tests/test_cli.py | 2 ++ python/tests/test_fakemodem.py | 2 ++ python/tests/test_library.py | 2 ++ python/tests/test_real.py | 2 ++ python/tests/test_zephyr.py | 2 ++ samples/shell/CMakeLists.txt | 1 + samples/shell/src/main.c | 1 + src/rb9704_glue.h | 1 + src/rb9704_internal.h | 1 + src/rb9704_power.c | 1 + src/rb9704_serial.c | 1 + src/rb9704_shell.c | 1 + src/rb9704_shims.c | 1 + src/rb9704_worker.c | 1 + tests/rig/bridge/CMakeLists.txt | 1 + tests/rig/bridge/src/main.c | 1 + 28 files changed, 76 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 18faf1f..2c1d979 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,5 @@ # SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose # # rockblock9704-zephyr: Ground Control's RockBLOCK 9704 library built for # Zephyr, with the serial port, the timing calls and one worker thread to own diff --git a/Kconfig b/Kconfig index a30a088..73cb533 100644 --- a/Kconfig +++ b/Kconfig @@ -1,4 +1,5 @@ # SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose menuconfig RB9704 bool "RockBLOCK 9704 Iridium modem" diff --git a/LICENSE b/LICENSE index ed8b463..c4c85a8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2026 Scott Penrose +Copyright (c) 2026 Scott Penrose Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 9e9efd5..e21a2e7 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,13 @@ The 9704 sends and receives IMT messages of up to 100 kB through the Iridium network, and speaks JSPR, JSON lines over a 230400 8N1 UART. There is no AT mode; it is not a 9602 or 9603. +rockblock9704-zephyr is written and maintained by Scott Penrose +([Digital Dimensions](https://www.dd.com.au/)). It was built for two +projects that send data home by satellite: +[WII6](https://wii6.au/), a wave-measuring buoy, and +[OGLAS](https://oglas.au/), a fleet of LoRa sensors, repeaters and hubs. +Both run it, and neither is needed to use it. + ## Ground Control's library This module does not reimplement or fork the protocol. Ground Control's @@ -175,7 +182,31 @@ docs/TESTING.md the tests and how to run them west.yml the pins ``` +## Credits + +- [Ground Control](https://www.groundcontrol.com/), for the RockBLOCK 9704 + and its [C library](https://github.com/rock7/RockBLOCK-9704) (MIT), + which does all of the protocol work. This module builds it unchanged. +- The serial port and the worker began in OGLAS's satellite bench and were + carried through WII6 before moving here. + ## Licence -MIT, as Ground Control's library is. The serial port and worker began in -the OGLAS satellite bench and were carried through WII6 before moving here. +MIT, as Ground Control's library is. See `LICENSE`. + +Copyright (c) 2026 Scott Penrose + +* https://www.sh3d.com.au/ - Sh3d +* https://www.dd.com.au/ - Digital Dimensions + +## Support + +Report issues on the [GitHub mirror](https://github.com/SH3D/rockblock9704-zephyr/issues) +(the Gitea instance does not allow public sign-ups). Most helpful in a +report: the output of `rb9704 spy on` around the problem, and the modem's +firmware version from `rb9704 info`. + +## Disclaimer + +This is not an official Ground Control product. Use at your own risk, and +remember that every `send` costs airtime. diff --git a/dts/bindings/rock7,rockblock-9704.yaml b/dts/bindings/rock7,rockblock-9704.yaml index f446252..a649665 100644 --- a/dts/bindings/rock7,rockblock-9704.yaml +++ b/dts/bindings/rock7,rockblock-9704.yaml @@ -1,4 +1,5 @@ # SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose description: | RockBLOCK 9704, Ground Control's Iridium Certus (IMT) modem board, on a diff --git a/include/rb9704/rb9704.h b/include/rb9704/rb9704.h index 65c84e3..0e49261 100644 --- a/include/rb9704/rb9704.h +++ b/include/rb9704/rb9704.h @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * rb9704.h - the RockBLOCK 9704 Iridium modem on Zephyr. * diff --git a/python/install.sh b/python/install.sh index a54bf2e..2303fb4 100755 --- a/python/install.sh +++ b/python/install.sh @@ -1,4 +1,6 @@ #!/usr/bin/env bash +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose # # install.sh - set up the RockBLOCK 9704 host tools. # diff --git a/python/pyproject.toml b/python/pyproject.toml index d47465d..2886fb7 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -8,6 +8,7 @@ version = "0.1.0" description = "Host tools for the RockBLOCK 9704: a command line for the modem and Cloudloop, and a fake modem for testing" readme = "README.md" license = { text = "MIT" } +authors = [{ name = "Scott Penrose", email = "scottp@dd.com.au" }] requires-python = ">=3.10" dependencies = ["pyserial>=3.5"] @@ -18,6 +19,12 @@ dependencies = ["pyserial>=3.5"] modem = ["rockblock9704==1.0.2"] test = ["pytest>=7"] +[project.urls] +Homepage = "https://www.dd.com.au/" +Repository = "https://github.com/SH3D/rockblock9704-zephyr" +Issues = "https://github.com/SH3D/rockblock9704-zephyr/issues" +Changelog = "https://github.com/SH3D/rockblock9704-zephyr/blob/main/CHANGELOG.md" + [project.scripts] rb9704 = "rb9704tools.cli:main" rb9704-fake = "rb9704tools.fakemodem:main" diff --git a/python/rb9704tools/__init__.py b/python/rb9704tools/__init__.py index 190daf3..5c15c46 100644 --- a/python/rb9704tools/__init__.py +++ b/python/rb9704tools/__init__.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """Host tools for the RockBLOCK 9704.""" __version__ = "0.1.0" diff --git a/python/rb9704tools/cli.py b/python/rb9704tools/cli.py index 4bc270b..b9d4925 100644 --- a/python/rb9704tools/cli.py +++ b/python/rb9704tools/cli.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """ rb9704 - drive a RockBLOCK 9704 from the host over its USB-C port. diff --git a/python/rb9704tools/fakemodem.py b/python/rb9704tools/fakemodem.py index 290ac98..87bc187 100644 --- a/python/rb9704tools/fakemodem.py +++ b/python/rb9704tools/fakemodem.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """ rb9704-fake - a fake RockBLOCK 9704: JSPR over a serial port, no satellites. diff --git a/python/tests/conftest.py b/python/tests/conftest.py index 4bb0478..27549c7 100644 --- a/python/tests/conftest.py +++ b/python/tests/conftest.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """ The test harness: a fake modem in a process of its own, and a console to drive whatever is under test. diff --git a/python/tests/test_cli.py b/python/tests/test_cli.py index 82eb137..b2b3c62 100644 --- a/python/tests/test_cli.py +++ b/python/tests/test_cli.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """The rb9704 command line against the fake modem.""" import subprocess diff --git a/python/tests/test_fakemodem.py b/python/tests/test_fakemodem.py index 9a30d75..469d351 100644 --- a/python/tests/test_fakemodem.py +++ b/python/tests/test_fakemodem.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """The fake modem on its own, in this process: no serial port, no library.""" import base64 diff --git a/python/tests/test_library.py b/python/tests/test_library.py index 189b68e..fad3d9f 100644 --- a/python/tests/test_library.py +++ b/python/tests/test_library.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """ Ground Control's own Python binding (the rockblock9704 package, the same C library this repository builds into Zephyr) against the fake modem on a pty. diff --git a/python/tests/test_real.py b/python/tests/test_real.py index f6d9507..40df709 100644 --- a/python/tests/test_real.py +++ b/python/tests/test_real.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """ A real RockBLOCK 9704, with --real-modem PORT. Free checks only: identity and signal, never a message, so nothing here costs airtime. Indoors the diff --git a/python/tests/test_zephyr.py b/python/tests/test_zephyr.py index 12f5b4f..be6ca72 100644 --- a/python/tests/test_zephyr.py +++ b/python/tests/test_zephyr.py @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose """ Zephyr, through the shell sample, against the fake modem: on native_sim with --zephyr-exe, on a board with --board-console and --board-modem. diff --git a/samples/shell/CMakeLists.txt b/samples/shell/CMakeLists.txt index 082ff5e..f06c370 100644 --- a/samples/shell/CMakeLists.txt +++ b/samples/shell/CMakeLists.txt @@ -1,4 +1,5 @@ # SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(rb9704_shell) diff --git a/samples/shell/src/main.c b/samples/shell/src/main.c index 06e3d3f..6e887d9 100644 --- a/samples/shell/src/main.c +++ b/samples/shell/src/main.c @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * The rb9704 shell sample: `rb9704` on the console, and every message from * the network, every finished send and every signal change printed as it diff --git a/src/rb9704_glue.h b/src/rb9704_glue.h index 65f4364..dd9bf17 100644 --- a/src/rb9704_glue.h +++ b/src/rb9704_glue.h @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * rb9704_glue.h - what Ground Control's library needs declared on Zephyr. * diff --git a/src/rb9704_internal.h b/src/rb9704_internal.h index 0795e53..282d1f5 100644 --- a/src/rb9704_internal.h +++ b/src/rb9704_internal.h @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * rb9704_internal.h - between this module's own files. */ diff --git a/src/rb9704_power.c b/src/rb9704_power.c index 0fcc35d..ae444fc 100644 --- a/src/rb9704_power.c +++ b/src/rb9704_power.c @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * rb9704_power.c - the board's control pins, as the devicetree gives them. * diff --git a/src/rb9704_serial.c b/src/rb9704_serial.c index 3938174..0c1c859 100644 --- a/src/rb9704_serial.c +++ b/src/rb9704_serial.c @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * rb9704_serial.c - the library's serial port on a Zephyr UART. This is the * whole port: five function pointers filled into the library's global diff --git a/src/rb9704_shell.c b/src/rb9704_shell.c index 5adb440..16df3c1 100644 --- a/src/rb9704_shell.c +++ b/src/rb9704_shell.c @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * rb9704_shell.c - `rb9704` on the Zephyr shell. * diff --git a/src/rb9704_shims.c b/src/rb9704_shims.c index 3e3376d..2794ce0 100644 --- a/src/rb9704_shims.c +++ b/src/rb9704_shims.c @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * rb9704_shims.c - the library's three timing calls on the Zephyr kernel, * in place of its crossplatform.c, which has no Zephyr branch. diff --git a/src/rb9704_worker.c b/src/rb9704_worker.c index 88955fd..0c5c707 100644 --- a/src/rb9704_worker.c +++ b/src/rb9704_worker.c @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * rb9704_worker.c - the one thread that calls into Ground Control's library. * diff --git a/tests/rig/bridge/CMakeLists.txt b/tests/rig/bridge/CMakeLists.txt index 4fa8709..8fb9053 100644 --- a/tests/rig/bridge/CMakeLists.txt +++ b/tests/rig/bridge/CMakeLists.txt @@ -1,4 +1,5 @@ # SPDX-License-Identifier: MIT +# Copyright (c) 2026 Scott Penrose cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(rb9704_bridge) diff --git a/tests/rig/bridge/src/main.c b/tests/rig/bridge/src/main.c index c4c6ad8..25a016f 100644 --- a/tests/rig/bridge/src/main.c +++ b/tests/rig/bridge/src/main.c @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT + * Copyright (c) 2026 Scott Penrose * * A two-way UART bridge, for the test rig: every byte in on `host` goes out * on `target`, and the other way round. With `host` a board's USB serial