imsd/interfaces
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jorijn van der Graaf e31887bf21
sdp, engine, imsd, media: the far end's telephone-event packets are played as the tones they stand for
Keys pressed on the other phone reached imsd-media as RFC 4733 events and
were dropped with every packet that is not the audio's. The playout now
takes them: the gap before an event's start (a stock sender's DTX silence
often precedes a key press) is filled as before an audio frame, each
packet reports the event's duration so far from its start stamp, and what
the clock has not covered yet is synthesized as the event's Q.23
frequency pair at the packet's volume, so a retransmitted end packet adds
nothing, a lost update is caught up by the next, and a far end whose
audio resumes past the event (the stock phone's does) meets the clock
with the usual fill. An answer may renumber telephone-event from what we
offered (RFC 3264: the answerer sends with the offer's numbers, §6.1,
and the offerer with the answer's, §5.1), so the leg gets both: DTMF_PT
to send with, DTMF_RX_PT to take events at as well — our own SDP's
number: the offer's 98 or 100 on a call we placed, the offer's number we
echoed on one we answered; when the answer gave the audio our offer's
number, that number is the leg's audio and DTMF_RX_PT is the answer's
telephone-event number instead — and takes events at either number,
never at the audio's. --selftest pins the frequency table; the stats
gain rx_dtmf, tones and dtmf_rx_pt.

Tested: --selftest, tests/Sdp and tests/Engine (the eight suites pass);
the loopback's --dtmf-rx arm on a host build of this commit's tree
(journal/ims/captures/2026-10-15-dtmf-loopback-c3-rx.txt; the tx, both,
plain and collision runs beside it); the dev phone's dtmf benches ran in
builds of this series.
2026-10-16 22:25:49 +02:00
..
Imsd-Aka.cppm imsd 0.2.7 — initial public snapshot 2026-07-22 23:04:21 +02:00
Imsd-Engine.cppm sdp, engine, imsd, media: the far end's telephone-event packets are played as the tones they stand for 2026-10-16 22:25:49 +02:00
Imsd-Ipsec.cppm ipsec, engine, imsd: the state file records the P-CSCF and a resume follows the kernel's SA peer 2026-10-13 22:28:02 +02:00
Imsd-Messages.cppm imsd: a resumed registration echoes the 401's Security-Server list from the state file 2026-10-11 02:56:47 +02:00
Imsd-Qmi.cppm qmi, imsd-pcscf: read the ims PDN's P-CSCF list from the modem's runtime settings 2026-10-13 22:28:02 +02:00
Imsd-Sdp.cppm sdp, engine, imsd, media: the far end's telephone-event packets are played as the tones they stand for 2026-10-16 22:25:49 +02:00
Imsd-Sip.cppm engine: keep the reg-event subscription alive and act on a terminated binding 2026-10-06 14:01:33 +02:00
Imsd-Util.cppm util: canonical IPv6 text (RFC 5952 §4) and an address-list parser 2026-10-13 22:28:02 +02:00
Imsd.cppm qmi, imsd-pcscf: read the ims PDN's P-CSCF list from the modem's runtime settings 2026-10-13 22:28:02 +02:00
ImsdBus.cppm imsd, imsd-ofonod: let polkit decide call control, not the account name 2026-10-06 14:01:33 +02:00