Files
tetrapack-calls/docs
misadeksandCopilot App eba3872011 MS: surface inbound DTMF from downlink D-INFO as TnccDtmfIndication
Previously the MS only handled the uplink DTMF direction (TnccDtmf request ->
U-INFO). A DTMF type-3 element received in a downlink D-INFO (cl. 14.8.19,
Table 14.58) was parsed but silently dropped: TnccDtmfIndication was defined
but never constructed, and rx_d_info ignored pdu.dtmf. This wires the inbound
path to the TN.

- dtmf.rs (tetra-pdus): add DTMF_TYPE_NOT_SUPPORTED (0b010) and
  DTMF_TYPE_NOT_SUBSCRIBED (0b011) type constants (Table 14.58).
- pdu.rs (cc_ms): tncc_dtmf_indication_from_ie() maps a decoded DTMF element to
  a TNCC-DTMF indication (Table 11.3): tone-start -> delimiter=Dtmf + digits,
  tone-end -> delimiter=ToneEnd, not-supported/not-subscribed -> dtmf_result;
  reserved/unrecognised types return None (dropped). Plus dtmf_nibble_to_digit.
- rx_d_info (cc_ms/routes/rd.rs): after the notify indication, if pdu.dtmf is
  present, emit TelemetryEvent::TnccDtmfIndication for the call. Made rx_d_info
  pub(in ...cc_ms) so it is unit-testable like rx_d_setup.
- events.rs / codec.rs: new TnccDtmfIndication telemetry variant; added to the
  bitcode/JSON round-trip and JSON schema-freeze golden tests.
- Interface schema bumped bluestation-ms-interface-5 -> -6 (new outbound
  telemetry event); net_control golden + version-guard tests updated.
- Test: rx_d_info_dtmf_surfaces_tncc_dtmf_indication covers tone-start digits,
  tone-end, not-supported result, and no-DTMF (no indication).
- docs: MS_MODE.md documents the downlink DTMF -> TnccDtmfIndication direction
  and the schema bump.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-08-02 17:04:07 +02:00
..