aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-07-15iface-modem-3gpp: make registered state checking a macroAleksander Morgado
2019-07-15iface-modem-3gpp: log how the consolidated registration state is builtAleksander Morgado
2019-07-13telit: additional port type hints for the ME910Aleksander Morgado
2019-07-12voice,call,cinterion: add Purism as copyright holderAleksander Morgado
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-11cinterion: setup/cleanup time unsolicited eventsAleksander Morgado
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
2019-07-11cinterion: new +CTZU URC parserAleksander Morgado
2019-07-11iface-modem-time: allow updating network timezone via URCsAleksander Morgado
2019-07-11huawei: cleanup/setup voice unsolicited eventsAleksander Morgado
2019-07-11base-call: use g_object_connect() to connect all handlersAleksander Morgado
2019-07-11iface-modem-voice: use g_object_connect() to connect all handlersAleksander Morgado
2019-07-11broadband-modem: implement LeaveMultiparty() with +CHLD=2xAleksander Morgado
2019-07-11broadband-modem: implement JoinMultiparty() with +CHLD=3Aleksander Morgado
2019-07-11api,call: new JoinMultiparty() and LeaveMultiparty() methodsAleksander Morgado
2019-07-11iface-modem-voice: disable special terminated match on multiparty callsAleksander Morgado
2019-07-11api,call: new Multiparty boolean propertyAleksander Morgado
It will be set to TRUE if this call is part of a multiparty call.
2019-07-11base-call: remove in-call event and audio settings logicAleksander Morgado
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-11broadband-modem: setup in-call unsolicited event handlingAleksander Morgado
The in-call handlers will monitor events that report the call being terminated.
2019-07-11huawei: audio channel setup at modem-levelAleksander Morgado
The audio channel setup is shared between all ongoing calls, so it is a modem-level feature, not specific to a single call.
2019-07-11base-call: allow updating audio settings from out of the call objectAleksander Morgado
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-11huawei: voice-related URCs are not in-callAleksander Morgado
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.
2019-07-11iface-modem-voice: allow reporting received DTMF by call indexAleksander Morgado
If the URC reporting the DTMF does not specify the call index, mark it as received in all active ones.
2019-07-11ublox: +UCALLSTAT as device-level URC, not in-callAleksander Morgado
+UCALLSTAT is used to report the state of specific calls by index, and therefore this is not an in-call URC.
2019-07-11iface-modem-voice: allow reporting state updates of any single callAleksander Morgado
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.
2019-07-11iface-modem-voice: handle in-call state at modem levelAleksander Morgado
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.
2019-07-11call-list: allow getting call object by DBus pathAleksander Morgado
2019-07-11iface-modem-voice: minor logging updateAleksander Morgado
2019-07-11base-call: implement Deflect() with +CTFRAleksander Morgado
2019-07-11api,call: new Deflect() methodAleksander Morgado
This method allows deflecting an incoming or waiting call to a different number.
2019-07-11broadband-modem: implement Transfer() with +CHLD=4Aleksander Morgado
2019-07-11api,voice: new Transfer() methodAleksander Morgado
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.
2019-07-11broadband-modem: implement HangupAll() with +CHUPAleksander Morgado
2019-07-11api,voice: new HangupAll() methodAleksander Morgado
This method will terminate all ongoing calls.
2019-07-11broadband-modem: implement HoldAndAccept() with +CHLD=2Aleksander Morgado
2019-07-11api,voice: new HoldAndAccept() methodAleksander Morgado
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.
2019-07-11broadband-modem: implement HangupAndAccept() with +CHLD=1Aleksander Morgado
2019-07-11api,voice: new HangupAndAccept() methodAleksander Morgado
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.
2019-07-11base-call: support hanging up specific callsAleksander Morgado
E.g. we can hangup a waiting call without interfering with the active one.
2019-07-11broadband-modem: implement call list polling with +CLCCAleksander Morgado
2019-07-11cinterion: disable call list polling if ^SLCC is supportedAleksander Morgado
Early detect that ^SLCC is supported, and disable the call list polling in the interface if so.
2019-07-11iface-modem-voice: setup full call list polling logicAleksander Morgado
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).
2019-07-11cinterion: when ^SLCC is supported, detailed call state updates are implicitAleksander Morgado
2019-07-11broadband-modem: if +CLCC is supported, call supports detailed eventsAleksander Morgado
2019-07-11cinterion: support ^SLCC URCs as part of voice managementAleksander Morgado
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).
2019-07-11cinterion: implement resetAleksander Morgado
2019-07-11cinterion: port type hints for the PLS8Aleksander Morgado
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.
2019-07-11iface-modem-voice: allow reporting the state of all ongoing callsAleksander Morgado
E.g. as per the AT+CLCC output.
2019-07-11helpers: new '+CLCC' test response parserAleksander Morgado
2019-07-11base-call: if incoming call is reported terminated, cleanup timeoutAleksander Morgado
2019-07-11base-call: allow skipping the timeout in incoming callsAleksander Morgado
E.g. if the modem supports reporting incoming call updates explicitly.
2019-07-11base-call: allow keeping ongoing call index for easy call matchingAleksander Morgado