Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
The GSM supplementary services related changes, as well as the rework
done to manage calls per call id, is copyrighted by Purism SPC.
|
|
We will parse +CTZU URCs, which end up getting in the way of other
commands if we don't process them.
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/135
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
It will be set to TRUE if this call is part of a multiparty call.
|
|
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.
|
|
The in-call handlers will monitor events that report the call being
terminated.
|
|
The audio channel setup is shared between all ongoing calls, so it is
a modem-level feature, not specific to a single call.
|
|
E.g. if we want the modem-level in-call state management to provide
what audio settings are expected in all ongoing calls.
|
|
The URCs report the specific call index they apply to, so they should
be managed by the modem object and reported to the Voice interface.
|
|
If the URC reporting the DTMF does not specify the call index,
mark it as received in all active ones.
|
|
+UCALLSTAT is used to report the state of specific calls by index, and
therefore this is not an in-call URC.
|
|
Instead of providing a method to exclusively provide incoming call
updates, make it more generic so that we allow plugins to provide
state updates for any kind of call, not just incoming ones.
The logic to match the call info provided by URCs is updated so that
it can be reused also by the single call reports, in addition to the
full call list reports.
|
|
We cannot handle in-call state at call level because the state may
apply to multiple active calls at the same time:
* the modem is in-call if there is at least one ongoing call (>=1).
* the modem is not in-call if there are no ongoing calls (==0).
The new logic implements call state monitoring for all available call
objects, and whenever the state of one or more calls change, we'll go
over all of them to see how many of the calls can be considered to be
ongoing (i.e. not terminated, not unknown). If we have at least one
call ongoing, we'll setup the in-call state and otherwise, we'll clean
it up.
Setting up and cleaning up the in-call state involves unsolicited
message and audio channel settings management operations.
|
|
|
|
|
|
|
|
This method allows deflecting an incoming or waiting call to a
different number.
|
|
|
|
This method will join all active and held calls into a single
multiparty call, and then request the network to terminate the call on
the subscriber's end and transfer the control of the call to the
parties that are still in the call.
|
|
|
|
This method will terminate all ongoing calls.
|
|
|
|
This method will put the currently active call on hold, and right away
accept the next available call.
The user of the API does not need to specify explicitly which is the
next call to accept, because that is decided automatically:
* If there is any waiting call, it will accept it right away.
* If there is no waiting call but there is a held call, it will make
the held call active again.
|
|
|
|
This method will hangup the currently active call and right away
accept the next available call.
The user of the API does not need to specify explicitly which is the
next call to accept, because that is decided automatically:
* If there is any waiting call, it will accept it right away.
* If there is no waiting call but there is a held call, it will make
the held call active again.
|
|
E.g. we can hangup a waiting call without interfering with the active
one.
|
|
|
|
Early detect that ^SLCC is supported, and disable the call list
polling in the interface if so.
|
|
If the modem supports call list polling, we'll setup a timeout to poll
for the full call list periodically, in order to get detailed call
states.
The timeout is setup as soon as a new call is created, and it will be
kept enabled as long as there is a call being established (i.e. not
unknown, not terminated, not active).
|
|
|
|
|
|
This command will give us URCs whenever the extended list of current
calls changes, which includes information about the actual state of
each call, even for calls in waiting state.
Therefore, as this is a URC that applies to all calls, it's enabled
and disabled as part of the modem voice interface, instead of doing it
as part of the call object itself (i.e. not treated as an in-call URC).
|
|
|
|
The first two ports are AT control ports (application/modem). We rely
on AT^SQPORT to decide which one is which.
The last two ports are unknown and we explicitly ignore them to make
port probing much quicker.
|
|
E.g. as per the AT+CLCC output.
|
|
|
|
|
|
E.g. if the modem supports reporting incoming call updates explicitly.
|
|
|