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.
FreeDMR/docs/codex-notes.md

50 lines
2.2 KiB

# Codex Notes
## Network Direct Dial
Findings:
- HBP `RPTO` options are variable-length in DMRGateway and null-padded options
are already trimmed in FreeDMR.
- DMRGateway bounds normal Homebrew `DMRD` packets to fixed length and uses a
300-byte stack buffer for outbound `RPTO`; a 255-byte receive limit in
FreeDMR is conservative and compatible.
- FreeDMR can implement repeater-ID network direct dial without a new packet
forwarding path by activating an existing `#<tg>` dial route and reusing the
current TG9 rewrite logic.
- FreeDMR1 still treats HBP `SLOTS` as repeater-advertised metadata from the
RPTC config packet or legacy PEER config. It is not currently a master-side
routing policy knob for dynamic/dial behavior.
Assumptions:
- `NETWORK_DIRECT_DIAL_SLOT=0` means disabled; `1` presents TG9 TS1; `2`
presents TG9 TS2 for DMO/simplex clients.
- Network direct dial is client/session-overridable through `OPTIONS`; the
compact alias is `NDD_SLOT`.
- RF-originated traffic must not activate network direct dial.
- Invalid `NETWORK_DIRECT_DIAL_SLOT` values in config should fall back to `0`
and log a warning; invalid OPTIONS values should leave the current session
value unchanged.
Unresolved questions:
- Whether to add a later local CW `N` notification for blocked network direct
dial attempts.
- Whether a broader HBP bounds-validation pass should reject all non-exact
`DMRD` lengths rather than only guarding short packets.
- Whether FreeDMR2 should promote HBP `SLOTS`/DMO capability into an explicit
access-session capability model. FreeDMR1 should not infer this for network
direct dial.
Protocol-sensitive areas:
- Network direct dial is a narrow exception to the normal rule that network
audio does not change local RF-facing dial state.
- It must not override active or hangtime user-selected dial-a-TG state.
- It must preserve existing packet rewrite boundaries by using the established
TG9 reflector bridge path.
Inferred invariants:
- General private voice routing remains disabled.
- Repeater/client-directed group-call access is allowed only when explicitly
configured and the selected RF slot is idle.
- Overlength `OPTIONS` should be acknowledged but ignored to avoid client
reconnect loops while protecting parser state.

Powered by TurnKey Linux.