Full messaging support, implemented fresh in three layers:
- dmrDataProtocol: pure short-data codec (CSBK preamble, data/response
headers, IP/UDP/TMS payload, ETSI CRCs) validated against on-air
captures by a host-side test suite. Transmits Motorola TMS (UDP 4007),
receives TMS and Anytone/"DMR standard" (UDP 5016).
- smsCore/smsStorage: TX queue with wait-for-channel and delivery
confirmation (response PDU / ACK, resend prompt on timeout), ISR-side
block assembly with layout auto-detection (confirmed/unconfirmed,
rate-1/2 and full 18-byte rate-3/4 blocks), delivery reports to
senders that request them, and a checksummed message store in SPI
flash at 0xC00000 (inbox + sent, 8 each; 8 quick texts).
- UI: Messages hub (main menu or long-press GREEN), keypad compose with
multi-tap (160 chars), inbox/sent/view with reply-resend-delete,
quick-text picker/editor, options (Wait for ACK, My ID only), and an
incoming-message popup with chime. Strings in all 20 languages.
The HR-C6000 does the BPTC/FEC; the driver streams 12-byte logical
bursts through the existing TX state machine (repeater wake included),
locks out PTT during a send, and leaves hotspot mode untouched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add delete_channel and keep_one_channel to the language table (after mute) and
fill all 20 language files (13 translated, English fallback for the rest), with
correct single-byte ISO-8859 accents. Wire them into the Delete Channel label,
confirmation and last-channel guard. The new strings land on empty voice-table
slots, so they play as silence (no crash, no .vpr regeneration).
flash.sh now always rebuilds the .gla language packs so edits to the language
files are actually picked up (previously a stale pack was re-flashed).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>