The README had grown to 422 lines: the device and carrier table came after 61 lines of architecture, and the configuration section after 237 lines of architecture, that table, build, run and packaging notes and GNOME Calls detail. AGENTS.md, a file for coding agents, takes that detail and adds to it: a reference to the tree at this commit, written from the code and the bench record. The README is now what a person needs: what imsd is and its status, the verified device/carrier table, what it needs, how to install and enable it, the two dialers, a status check for the installed daemon, a `Not there yet` list, and where the rest is. In-tree comments that sent readers to README sections which moved — the cross-compiling flow (the CI workflow, build-package.sh, APKBUILD.binary), GNOME Calls' known gaps (imsd-ofono-restart-calls.sh), the D-Bus ABI (main.cpp) and the Configuration section (imsd.service) — point at AGENTS.md's sections now.
42 lines
1.8 KiB
Desktop File
42 lines
1.8 KiB
Desktop File
# SPDX-License-Identifier: GPL-3.0-only
|
|
# SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
|
|
[Unit]
|
|
Description=Userspace IMS/VoLTE daemon (SIP register + calls over the ims PDN)
|
|
# needs the ims PDN (multiplexed netdev + global v6) — ims-pdn-up.sh
|
|
# creates/connects the bearer through ModemManager and configures the netdev
|
|
After=ModemManager.service network.target
|
|
Wants=ModemManager.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
# bring up the ims PDN first; waits for modem + network registration,
|
|
# idempotent. worst case ~14 min (2 min modem wait + 5 min registration
|
|
# gate + connect retries), hence TimeoutStartSec
|
|
ExecStartPre=/usr/libexec/ims-pdn-up.sh
|
|
# a daemon older than 0.3.10 that an upgrade restarted inside its bring-up
|
|
# throttle wait: the wait — on another address only the verdict that its
|
|
# registration is gone — is handed over from its journal now that it has
|
|
# stopped (imsd.post-upgrade recorded the invocation in /run/imsd.handover)
|
|
ExecStartPre=-/usr/libexec/imsd-handover.sh
|
|
TimeoutStartSec=900
|
|
# /run/imsd.env: written by ims-pdn-up.sh (DEV= the connected ims netdev,
|
|
# LOCAL= the PDN address ModemManager assigned to it).
|
|
# /etc/imsd.env: admin configuration — PCSCF= is REQUIRED (the carrier's
|
|
# P-CSCF address; see AGENTS.md §10, or the README) and wins over the
|
|
# runtime-derived values.
|
|
EnvironmentFile=-/run/imsd.env
|
|
EnvironmentFile=-/etc/imsd.env
|
|
# registration state (imsreg.state) + media stats live here
|
|
StateDirectory=imsd
|
|
ExecStart=/usr/bin/imsd
|
|
# registration: resume an existing SA when possible (avoids fresh-SA
|
|
# throttles); a failed bring-up exits nonzero and systemd retries, as does
|
|
# a registered imsd whose PDN address left the netdev
|
|
Restart=on-failure
|
|
RestartSec=120
|
|
# SIGTERM: engine keeps the SA + registration state for the next resume
|
|
KillMode=mixed
|
|
TimeoutStopSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|