Commit Graph
26 Commits
Author SHA1 Message Date
Aleksander Morgado 00949c4ad3 core: add autoptr cleanup methods to all internal types 2020-09-19 20:27:10 +02:00
Aleksander Morgado 6347a7d783 base-call: catch terminated errors before ATD replies
If we get one of the in-call termination errors before ATD replies OK,
we need to cancel the start() operation right away and return an
error to the caller.

Otherwise, the Call will be reported as "terminated" right away, but
the caller would not get an error back until 90s later:

    $ sudo mmcli --call 0 --start
    error: couldn't start the call: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Serial.ResponseTimeout: Serial command timed out'
2019-10-17 08:31:46 +00:00
Aleksander Morgado 8c8e0e8805 voice,call,cinterion: add Purism as copyright holder
The GSM supplementary services related changes, as well as the rework
done to manage calls per call id, is copyrighted by Purism SPC.
2019-07-12 11:31:04 +02:00
Aleksander Morgado 213c60b76d api,call: new Multiparty boolean property
It will be set to TRUE if this call is part of a multiparty call.
2019-07-11 23:21:00 +02:00
Aleksander Morgado 8bc38110c9 base-call: remove in-call event and audio settings logic
The in-call unsolicited events and the in-call audio settings are
managed exclusively at modem level, and no longer at call object
level. This is because these two things are applicable to all calls
that may be active at the same time.
2019-07-11 23:21:00 +02:00
Aleksander Morgado b7fa4e3661 base-call: allow updating audio settings from out of the call object
E.g. if we want the modem-level in-call state management to provide
what audio settings are expected in all ongoing calls.
2019-07-11 23:21:00 +02:00
Aleksander Morgado 222874299e api,call: new Deflect() method
This method allows deflecting an incoming or waiting call to a
different number.
2019-07-11 23:20:59 +02:00
Aleksander Morgado b22f90c4c4 broadband-modem: if +CLCC is supported, call supports detailed events 2019-07-11 23:01:08 +02:00
Aleksander Morgado cd2e851b8c base-call: allow skipping the timeout in incoming calls
E.g. if the modem supports reporting incoming call updates explicitly.
2019-07-11 23:00:50 +02:00
Aleksander Morgado 3873fda83f base-call: allow keeping ongoing call index for easy call matching 2019-07-11 23:00:50 +02:00
Aleksander Morgado a006ed0744 base-call: add simple getters for the MmGdbusCall properties 2019-07-11 23:00:50 +02:00
Aleksander Morgado 329caff84f base-call: implement generic audio channel setup/cleanup handlers
Modems that require specific commands to setup or cleanup the audio
channel as soon as a call is ongoing can subclass these two new
methods.

The setup() method is considered part of the call start/accept
process, and so if it fails, the whole operation will fail.

The failures in the cleanup() method will be reported in the log, but
otherwise ignored, as this operation may be executed without any
user intervention (e.g. if the remote party hangs up).
2018-10-16 17:09:21 +00:00
Dan Williams 627303a748 api/libmm-glib/cli: add AudioPort and AudioFormat properties to the Call object 2018-10-16 17:09:21 +00:00
Aleksander Morgado 887376fe44 mm-iface-mode: provide direction and number when creating calls
Calls created from property bundles are always outgoing, while calls
created as input events from URCs during runtime are always incoming.

This change makes it mandatory to provide at least direction of the
call when the object is created, leaving the number as an optional
property that may or may not be known in advance (e.g. it would be
optional only for incoming calls).
2018-10-16 17:09:21 +00:00
Aleksander Morgado 44413308b2 iface-modem-voice: always create plugin-specified call objects
The Voice interface logic must always use the create_call() object
from its own interface to create call objects, as that is the method
that plugins can subclass to provide plugin-specific call objects.

This applies to both incoming and outgoing calls.
2018-10-16 17:09:21 +00:00
Aleksander Morgado bd3b5aca01 base-call: automatically terminate unanswered incoming calls
Try to automatically detect when the caller finishes the attempt to
establish the call.
2018-10-16 17:09:21 +00:00
Aleksander Morgado 0090124ec0 base-call: ACTIVE after start() if detailed transitions unavailable
The most detailed call state transition flow for a new outgoing call
would be:

  UNKNOWN -> DIALING -> RINGING -> ACTIVE

But, if the modem doesn't support reporting intermediate states
(e.g. DIALING or RINGING) then a successful start() should imply
getting into ACTIVE state right away.

For now, only the Huawei plugin implements the detailed transition
support, so make them configurable via call object properties.
2018-10-16 17:09:21 +00:00
Aleksander Morgado 7c10db26c2 base-call: setup/cleanup custom events when transitioning to/from in-call 2018-10-16 17:09:21 +00:00
Aleksander Morgado 60d42de68e base-call: no need to delete call info from the device
Call information only lives in the ModemManager logic, there is no
associated date stored within the device itself. Therefore, simplify
everything by assuming there is nothing to remove.

Looks like this logic was implemented because it was originally based
on the SMS management logic, but for SMS we do have to remove
them (the stored PDU parts) from the device.
2018-10-16 17:09:21 +00:00
Aleksander Morgado a6101a8532 call-list: coding style fixes 2018-06-11 18:06:38 +02:00
Ville Skyttä 90b89bb9f4 *: Spelling fixes 2018-01-25 09:52:12 +01:00
Marco Bascetta 74325b547a core,libmm-glib,cli,voice: Replaced 'SendTone' method and 'ToneReceived' signal with 'SendDtmf' and 'DtmfReceived' 2015-08-02 10:39:48 +02:00
Aleksander Morgado e75d888b51 core,voice: minor coding style fixes 2015-08-02 10:39:48 +02:00
Marco Bascetta 9874f10e1f base-call,iface-modem-voice:: handle DTMF 2015-08-02 10:39:47 +02:00
Riccardo Vangelisti 5a281dbd34 base-call: created an unique function to switch call's state and reason 2015-08-02 10:39:47 +02:00
Riccardo Vangelisti ec5c539f55 core: implemented new MMBaseCall object 2015-08-02 10:39:12 +02:00