You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.0 KiB
67 lines
2.0 KiB
# FreeDMR 2 Subscription Model
|
|
|
|
The subscription model is the centrepiece of FreeDMR 2.
|
|
|
|
Conceptually, each TG is a conference bridge. Client systems subscribe to conference TGs. FreeDMR routes traffic according to active subscriptions, not according to the legacy shape of the `BRIDGES` dict.
|
|
|
|
Definitions:
|
|
|
|
- `conference_tg`: FreeDMR network/conference identity.
|
|
- `rf_tg`: Client-facing RF presentation identity.
|
|
|
|
Examples:
|
|
|
|
Direct TG:
|
|
|
|
```text
|
|
rf_tg == conference_tg
|
|
```
|
|
|
|
Dial-a-TG:
|
|
|
|
```text
|
|
rf_tg == 9
|
|
conference_tg == selected reflector/TG
|
|
```
|
|
|
|
Alias/rewrite:
|
|
|
|
```text
|
|
rf_tg may differ from conference_tg by policy/configuration
|
|
```
|
|
|
|
Example subscription:
|
|
|
|
```python
|
|
TalkgroupSubscription(
|
|
client_id=2345001,
|
|
slot=2,
|
|
rf_tg=9,
|
|
conference_tg=4400,
|
|
mode="dial",
|
|
active=True,
|
|
)
|
|
```
|
|
|
|
## Routing Invariant
|
|
|
|
Packet routing should not need to know whether a subscription came from static config, default reflector, dial-a-TG, API, SMS control, or a future UI action. Those are subscription sources, not routing modes.
|
|
|
|
## Dial-a-TG Rationale
|
|
|
|
Dial-a-TG exists so terminal users can access arbitrary FreeDMR TGs without programming every TG into the terminal/codeplug. It is an amateur-radio usability feature and should be evaluated against that goal, not only against commercial DMR fleet assumptions.
|
|
|
|
Control of dial-a-TG from TS1 as well as TS2 is intentional. If TS2 is blocked by unwanted traffic, a user can transmit private-call control on TS1 to disconnect or change the TS2 reflector/TG state.
|
|
|
|
Voice prompts should remain RF-visible as TG9 slot 2 unless that policy is deliberately changed.
|
|
|
|
## FreeDMR Routing Model
|
|
|
|
- TGs are conference groups.
|
|
- DMR IDs are like phone numbers.
|
|
- Timeslots are access/capacity paths, more like phone lines.
|
|
- FreeDMR is intended to be relatively timeslot agnostic.
|
|
- TS1 control affecting TS2 reflector state is consistent with the FreeDMR PBX/line model.
|
|
|
|
This model also allows future arbitrary RF TG aliases, not only the traditional TG9 dial-a-TG rewrite.
|