1
0
Fork 0
mirror of https://gitlab.gnome.org/GNOME/calls.git synced 2024-11-04 15:41:19 +00:00
Purism GNOME phone app
Find a file
Evangelos Ribeiro Tzaras db7674d0f9 manager: Add new set of add and remove signals for CuiCalls
This is part of a refactoring which should help separating concerns between
CallsCall and CallsUiCallData better.

To accomplish this we want to stop passing around CallsCall objects and instead
pass CallsUiCallData objects.
In this commit we added new signals instead of changing the existing ones
because that results in a lot of churn. It allows to do the switch per module
allowing smaller individual patches and a more manageable patchset.
2022-02-01 06:11:58 +01:00
.gitlab/issue_templates gitlab: Update bug template 2021-11-22 15:22:50 +00:00
.gitlab-ci gitlab-ci: Use prebuilt containers 2021-12-21 14:16:47 +01:00
build-aux meson: Add postinstall script to compile schemas etc 2021-06-30 00:39:07 +02:00
data Document and release 42.beta.1 2022-01-26 14:35:20 +01:00
debian Document and release 42.beta.1 2022-01-26 14:35:20 +01:00
doc meson: Don't use deprecated meson.source_root() 2021-12-29 11:10:21 +01:00
plugins dummy: provider: Fake being a modem 2022-01-31 17:08:38 +00:00
po Update Persian translation 2022-01-29 10:38:03 +00:00
src manager: Add new set of add and remove signals for CuiCalls 2022-02-01 06:11:58 +01:00
subprojects Update libcallui subproject and adjust to CuiCallState changes 2022-01-31 15:25:46 +01:00
tests tests: mock-contacts-provider: Add license header 2022-02-01 06:11:58 +01:00
.dir-locals.el dir-locals: Treat more G_* macros as including a semicolon 2021-07-20 10:17:17 +02:00
.gitignore Add .gitignore 2020-03-13 11:38:58 +01:00
.gitlab-ci.yml ci: Deploy documentation as gitlab pages 2022-01-26 06:16:42 +00:00
.gitmodules Add libcall-ui as submodule 2021-11-16 09:39:34 +01:00
calls.doap doap: Add download and bug pages 2021-07-16 14:15:40 +02:00
COPYING Add license COPYING file for appropriate packaging. 2020-03-25 21:10:53 +00:00
gcovr.cfg coverage: Exclude subprojects and generated dbus code 2021-11-18 12:15:25 +01:00
HACKING.md HACKING: Fix style around signals 2021-07-20 10:17:17 +02:00
meson.build Document and release 42.beta.0 2022-01-25 14:22:43 +01:00
meson_options.txt meson: Remove wayland option 2021-07-13 04:21:53 +02:00
NEWS Document and release 42.beta.1 2022-01-26 14:35:20 +01:00
ofono.md README: Mark oFono backend as not actively developed 2021-11-22 20:34:25 +00:00
org.gnome.Calls.json flatpak: Add cmocka dependency 2021-12-05 09:49:05 +01:00
README.md readme: Mention that documentation is available as gitlab page 2022-01-26 06:16:42 +00:00
run.in run: Allow passing arguments to calls when running under gdb 2021-06-18 16:50:11 +02:00

Calls

A phone dialer and call handler.

License

Calls is licensed under the GPLv3+.

Dependencies

To build Calls you need to first install the build-deps defined by the debian/control file

If you are running a Debian based distribution, you can easily install all those the dependencies making use of the following command

sudo apt-get build-dep .

Building

We use the meson and thereby Ninja. The quickest way to get going is to do the following:

meson . _build
ninja -C _build
ninja -C _build install

If you don't want to pollute your filesystem please be aware, that you can also use --prefix=~/install.

Build the documentation

If you want to build the documentation you have to configure the meson project with -Ggtk_doc=true

meson . _build -Dgtk_doc=true
ninja -C _build
ninja -C _build calls-doc

You can also browse the documentation online

Running from the source tree

The most comfortable way to run from the source tree is by using the provided run script which sets up the environment for you:

_build/run

Debugging

When trying to understand issues in applications debugging logs are invaluable tools. Enable debug logging by invoking Calls with -vvv arguments.

In the case of crashes you should provide a backtrace where possible. If your system is using systemd you may find this guide useful.

For backend specific debugging, please see the sections below.

Call provider backends

Calls uses libpeas to support runtime loadable plugins which we call "providers". Calls currently ships four different plugins:

  • mm: The ModemManager plugin used for cellular modems
  • sip: The SIP plugin for VoIP
  • dummy: A dummy plugin
  • ofono: The oFono plugin used for cellular modems (not in active development)

By default Calls will load the mm and sip plugins. If you want to load other plugins you may specify the -p <PLUGIN> argument (you can pass multiple -p arguments) when invoking calls, f.e.

_build/run -p sip -p dummy
/usr/bin/gnome-calls -p mm

Every plugins uses the following concepts:

  • CallsProvider: The principal abstraction of a library allowing to place and receive calls.
  • CallsOrigin: Originates calls. Represents a single modem or VoIP account.
  • CallsCall: A call.

There is a one to many relation between provider and origins and between origins and calls. F.e. you have one SIP provider managing multiple SIP accounts (=origins) each of which can have multiple active calls (not yet implemented).

ModemManager

This is the default backend for cellular calls. It uses libmm-glib to talk to ModemManager over DBus. It currently only supports one modem and one active call at a time.

Debugging

You can monitor the ModemManager messages on the DBus as follows:

gdbus monitor --system --dest org.freedesktop.ModemManager1

For complete debugging logs you can set ModemManager's log verbosity to DEBUG as follows:

mmcli -G DEBUG

and inspect the logs on a systemd based system with:

journalctl -u ModemManager.service

For more information see here

SIP

This plugin uses the libsofia-sip library for SIP signalling and GStreamer for media handling. It supports multiple SIP accounts and currently one active call at a time (subject to change).

Debugging

You can print the sent and received SIP messages by setting the environment variable TPORT_LOG=1. To test the audio quality you can use one of the various public reachable echo test services, f.e. echo@conference.sip2sip.info. Please note that the SIP plugin currently doesn't support DTMF, which is used for some test services for navigating through a menu.

If one or both sides can't hear any audio at all it is likely that the audio packets are not reaching the desired destination.

Dummy

This plugin is mostly useful for development purposes and work on the UI as it allows simulating both outgoing and incoming calls. To trigger an incoming call you should send a USR1 signal to the calls process:

kill -SIGUSR1 $(pidof gnome-calls)

oFono

This plugin is not in active development anymore, so your mileage may vary. See here for more information.