archive: move legacy/unported modules out of the live tree

Nothing in the asyncio core imports any of these; they are moved to archive/
(history preserved) and dropped from pyproject.toml py-modules:

  * bridge_all.py -- forward-everything proxy, never ported to the asyncio core
    (imports the Twisted-era reportFactory -> ImportError today).
  * playback.py -- talkback/parrot app (connects like a repeater, plays a stream
    back). Twisted-based; earmarked to return as an OmniLink adapter.
  * play_ambe.py / mk_voice.py / voice_lib.py -- Twisted-era voice test utilities.
  * reporting_const.py -- REPORT_OPCODES for the old pickle/opcode reporting
    protocol, superseded by the NDJSON feed; it was imported but never used.

Also removes the now-dead `from reporting_const import *` (hblink.py) and the
unused REPORT_OPCODES name from bridge.py's hblink import. Docs/service updated
(README app table, INSTALL run + legacy note, hblink3.service comment,
dashboard/FIELDS.md); archive/README.md explains what's there and why. Suite
still 74/74.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cort BuffingtonandClaude Opus 4.8 committed 2026-07-12 14:17:02 -05:00
1 parent f21eca42b0
commit aae53890f7
16 files changed
+24 -11

No files matched your search

+1 -3
View File
@@ -64,8 +64,6 @@ Every system named in `rules.py` must exist and be enabled in `hblink.cfg`. **Up
source venv/bin/activate
python bridge.py -c hblink.cfg -r rules.py # conference-bridge router (main app)
# or
python bridge_all.py -c hblink.cfg # forward-everything proxy
# or
python hblink.py -c hblink.cfg # protocol core, standalone server/outbound
```
@@ -96,4 +94,4 @@ sudo systemctl restart hblink3
## Notes
- The legacy voice utilities (`playback.py`, `play_ambe.py`) are **not** migrated to asyncio and will not run against the current core.
- Legacy, unmaintained code lives in [`archive/`](archive/) and is excluded from packaging. It includes the Twisted-era voice utilities (`playback.py`, `play_ambe.py`, `mk_voice.py`, `voice_lib.py`), the old opcode reporting constants (`reporting_const.py`), and `bridge_all.py` (a forward-everything proxy that was never ported to the asyncio core). None of it runs against the current core.
-1
View File
@@ -15,7 +15,6 @@ HBlink3 is an open-source implementation of the DMR **HomeBrew Repeater Protocol
| Program | Purpose |
|---|---|
| `bridge.py` | The main application: a configurable conference-bridge call router with dynamic on/off triggering, timeouts, and private (unit) call routing. |
| `bridge_all.py` | A simple proxy that forwards all traffic between every configured system — makes several repeaters appear as one. |
| `hblink.py` | The protocol core. Runs standalone as a server/outbound system for testing, and is the module the applications are built on. |
## Features
+17
View File
@@ -0,0 +1,17 @@
# archive/
Legacy, unmaintained code kept for reference. **None of it runs against the
current asyncio core**, and it is excluded from packaging (`pyproject.toml`).
Nothing in the live code path imports anything here.
| File | What it was | Why it's here |
|---|---|---|
| `bridge_all.py` | A "forward-everything" proxy (every system bridged to every other). | Never ported to the asyncio core — still imports the Twisted-era `reportFactory`, so it fails at import. |
| `playback.py` | A talkback/parrot app: connected like a repeater and played a call stream back so users could hear themselves. | Twisted-based. **Earmarked to return as an OmniLink adapter** — running it as a separate process that connects like a repeater (tied to a system or bridge) keeps the repeat-back off the routing hot path, which is why it was standalone here too. |
| `play_ambe.py` | Played canned AMBE/voice sequences into a system for testing. | Twisted-based; depends on the voice utilities below. |
| `mk_voice.py` | Built synthetic voice/AMBE packet sequences. | Only used by `play_ambe.py`. |
| `voice_lib.py` | Word/AMBE sample library for the voice utilities. | Only used by `mk_voice.py` / `play_ambe.py`. |
| `reporting_const.py` | `REPORT_OPCODES` for the old pickle/opcode reporting protocol. | Superseded by the newline-delimited-JSON reporting feed; no longer referenced. |
If any of these is revived, port it to the asyncio core and the NDJSON reporting
feed first.
File renamed without changes.
View File
File renamed without changes.
File renamed without changes.
View File
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1 -1
View File
@@ -38,7 +38,7 @@ import importlib.util
import asyncio
# Things we import from the main hblink module
from hblink import HBSYSTEM, OPENBRIDGE, systems, hblink_handler, ReportServer, config_reports, REPORT_OPCODES, mk_aliases, run_periodic
from hblink import HBSYSTEM, OPENBRIDGE, systems, hblink_handler, ReportServer, config_reports, mk_aliases, run_periodic
from dmr_utils3.utils import bytes_3, int_id, get_alias
from dmr_utils3 import decode, bptc, const
import config
+2 -2
View File
@@ -114,8 +114,8 @@ for a non-local dashboard or a feed interruption).
## Conference Bridges
One table per conference bridge defined in `rules.py`, with a row per member
system. (Empty if you're running `bridge_all` or standalone `hblink.py`, which
have no conference-bridge rules.)
system. (Empty if you're running standalone `hblink.py`, which has no
conference-bridge rules.)
| Column | Meaning |
|---|---|
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

-1
View File
@@ -49,7 +49,6 @@ from dmr_utils3.utils import int_id, bytes_4, try_download, mk_id_dict
# Imports for the reporting server
import json
from reporting_const import *
# The module needs logging logging, but handlers, etc. are controlled by the parent
import logging
+2 -2
View File
@@ -7,8 +7,8 @@
#
# Adjust User/Group and the paths below to your install. bridge.py defaults to
# hblink.cfg and rules.py in its own directory; pass -c/-r in ExecStart to use
# other files. To run a different app (e.g. the plain proxy), point ExecStart at
# bridge_all.py or hblink.py instead.
# other files. To run the protocol core standalone, point ExecStart at hblink.py
# instead.
[Unit]
Description=HBlink3 DMR Conference Bridge Router
+1 -1
View File
@@ -44,4 +44,4 @@ Homepage = "https://github.com/n0mjs710/hblink3"
# The core routing modules. Listed explicitly because they are top-level modules
# rather than a package, so a `pip install .` resolves them correctly.
[tool.setuptools]
py-modules = ["hblink", "bridge", "bridge_all", "config", "const", "log", "reporting_const"]
py-modules = ["hblink", "bridge", "config", "const", "log"]