Files
Cort BuffingtonandClaude Opus 5.5 ec8bbfaedc HBP->IPSC: accept 53-byte DMRD, carry RSSI, set the slot bit; drop old RSSI encoding
DMRD bytes 53-54 (BER, RSSI) are optional on input: HBlink3 passes a
53-byte DMRD through unchanged. Accept anything from 53 bytes and read
byte 54 only when present; output is still 55 bytes.

DMRD byte 54 of a voice header or terminator now goes into the RSSI
field (bytes 52-53) of the VOICE_HEAD / VOICE_TERM built from it, as
8.8 fixed-point -dBm. No reading (53 bytes, 0, or a synthesized
HEAD/TERM) sends 0 as before. The terminator reading is cleared at the
end of each call so it cannot reach a later synthesized TERM.

Byte 31 bit 7 of VOICE_HEAD / VOICE_TERM is the timeslot (0x40 / 0xC0
in repeater captures); it was hardcoded 0x80 (TS2). The RSSI status
bit (bit 6) is left 0.

The old firmware RSSI encoding (-56 dB offset) is dropped: no repeater
using it is known. [ipsc] rssi_encoding_new is no longer read; configs
that still carry it load unchanged.

Tests: 53/55-byte input, RSSI round trip through the IPSC->HBP decoder,
slot bit, terminator reading not carried into the next call, legacy
key fixture, and a late-entry case where only the LC-error bit can
reject a corrupt burst E LC. parity_ref_gv.txt byte 31 corrected to
TS1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 07:41:11 -05:00

20 lines
497 B
TOML

# Config fixture for the byte-for-byte parity test (mirrors the Python tests/test.toml
# fields that affect translator output: hbp_repeater_id and ipsc_master_id).
[global]
log_level = "WARNING"
[ipsc]
mode = "MASTER"
bind_ip = "127.0.0.1"
bind_port = 50000
ipsc_master_id = 9999999
auth_enabled = false
keepalive_watchdog = 60
[ipsc.capabilities]
use_safe_defaults = true
[hbp]
master_ip = "127.0.0.1"
master_port = 62031
hbp_repeater_id = 3120000
passphrase = "passw0rd"
hbp_mode = "PERSISTENT"