aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-08-02cinterion: fix memory leak in common_test_ctzu_urc()Ben Chan
2019-08-02iface-modem-firmware: remove explicit GDestroyNotify cast on g_freeBen Chan
g_free is in form of `void (*)(gpointer)`, which matches the GDestroyNotify signature. An explicit GDestroyNotify cast on g_free is thus not needed.
2019-08-02charsets: use `G_N_ELEMENTS (t)' instead of `sizeof (t) / sizeof (t[0])'Ben Chan
2019-08-01quectel: Add port type hints for the Quectel EG91Sven Schwermer
Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2019-07-31test: untabifyBen Chan
2019-07-26shared-qmi: fix potentially uninitialized 'mcc' variableBen Chan
mm-shared-qmi.c:358:9: error: variable 'mcc' is used uninitialized whenever '&&' condition is false [-Werror,-Wsometimes-uninitialized] if (operator_id && !mm_3gpp_parse_operator_id (operator_id, &mcc, &mnc, &error)) { ^~~~~~~~~~~ mm-shared-qmi.c:367:9: note: uninitialized use occurs here if (mcc) { ^~~ mm-shared-qmi.c:358:9: note: remove the '&&' if its condition is always true if (operator_id && !mm_3gpp_parse_operator_id (operator_id, &mcc, &mnc, &error)) { ^~~~~~~~~~~~~~ mm-shared-qmi.c:339:51: note: initialize the variable 'mcc' to silence this warning guint16 mcc; ^ = 0
2019-07-22iface-modem: don't assume that setting modes is immediateAleksander Morgado
The modem may take the request to set modes and reply right away with a success before actually changing the current modes in use. Therefore, If we reload modes right after we receive the set response, we may still see the old modes instead of the new ones. Try to avoid this, by reloading current modes a couple of times after we have set them if they are not yet the expected ones.
2019-07-21iface-modem: don't assume that setting bands is immediateAleksander Morgado
The modem may take the request to set bands and reply right away with a success before actually changing the current bands in use. Therefore, If we reload bands right after we receive the set response, we may still see the old band mask instead of the new one. Try to avoid this, by reloading current bands a couple of times after we have set them if the band mask is not the expected one.
2019-07-19broadband-modem,voice: implement call waiting status setup/query with +CCWAAleksander Morgado
2019-07-19api,voice: new CallWaitingSetup() and CallWaitingQuery() methodsAleksander Morgado
These new methods allow querying and updating the status of the call waiting network service, as per 3GPP TS 22.083. The status of the service is not a property because we don't want to unconditionally load it on every boot, given that the process involves talking to the network (i.e. it is not a device setting).
2019-07-19sms: initialize common fields early for multipart messagesAleksander Morgado
Do not wait until all parts are received in order to initialize all fields that are common to all parts in the SMS message, do it as soon as the first part is received. https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/137
2019-07-17test: new 'mmsmsmonitor' tool to monitor SMS messagesAleksander Morgado
The tool monitors SMS message additions and SMS state updates, e.g.: $ sudo ./test/mmsmsmonitor [/org/freedesktop/ModemManager1/SMS/0] sms found: received [/org/freedesktop/ModemManager1/SMS/1] sms found: received [/org/freedesktop/ModemManager1/SMS/2] sms found: received [/org/freedesktop/ModemManager1/SMS/3] sms found: received [/org/freedesktop/ModemManager1/SMS/4] sms found: received [/org/freedesktop/ModemManager1/SMS/5] sms found: received [/org/freedesktop/ModemManager1/SMS/6] sms found: received [/org/freedesktop/ModemManager1/SMS/7] new sms: receiving [/org/freedesktop/ModemManager1/SMS/7] sms updated: received
2019-07-15test: new 'mmsmspdu' tool to parse PDUs given in hexAleksander Morgado
2019-07-15sms-list: improve logging of multipart related fieldsAleksander Morgado
We were not logging anywhere the "concat max" field for example.
2019-07-15shared-qmi: monitor attempt after NAS initiate network registerAleksander Morgado
The QMI NAS Initiate Network Register command will return a successful response when the request to register is received and accepted by the module, but this does not mean the requested registration has been completed yet. This issue was making e.g. manual registration attempts to a forbidden network report success right away, even if the actual registration would end up failing. In order to avoid that, the QMI based network registration relies on receiving QMI NAS Serving System indications after QMI NAS Initiate Network Register replies. As soon as we get a non-searching registration state in the indication, we'll report the operation as successful. Note that the 3GPP interface logic is anyway in charge of checking if the specific request was successful or not, no need to do that explicitly in the QMI implementation.
2019-07-15iface-modem-3gpp: denied if all reg states idle except for oneAleksander Morgado
If there is one registration state which is denied and the remaining ones are either unknown or idle, then report denied.
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.