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.
50 lines
2.2 KiB
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.
|