aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2022-03-16modem-helpers: improve and fix COPS=? numeric fields parsingAleksander Morgado
The numeric fields in the +COPS=? response were relying on a very weak parsing logic, assuming that they were single-digit numeric values and not using the common string to integer conversion utilities. This commit improves the conversion from the 3GPP/ETSI defined network availability and access technology values to the MM defined ones, providing enum-based matches even if the numeric values are the same. The commit also fixes the parsing of access technology values > 10, required to report 5G related values.
2022-03-16modem-helpers: act given in COPS=? may have more than one digitAleksander Morgado
The new 5GNR related values are >= 10, so don't expect one single digit (\d), expect one or more (\d+).
2022-03-09modem-helpers: Consider minimum ID when choosing best profileSven Schwermer
+CGDCONT? may list profiles with IDs that are illegal to write, i.e. +CGDCONT=? returns a minimum ID larger than some of the existing profiles. E.g. for Fibocom L610-EU, +CGDCONT=? returns +CGDCONT: (1-7),"IP",,,(0-3),(0-4) +CGDCONT: (1-7),"IPV6",,,(0-3),(0-4) +CGDCONT: (1-7),"IPV4V6",,,(0-3),(0-4) +CGDCONT: (1-7),"PPP",,,(0-3),(0-4) +CGDCONT: (1-7),"Non-IP",,,(0-3),(0-4) while the default EPS bearer is established at profile 0: +CGDCONT: 0,"IP","xxx","xxx.xxx.xxx.xxx",0,0 [...] Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2022-03-09mm-shared-qmi: Return an error in load_current_capabilities() if none is found.Prakash Pabba
2022-03-08broadband-bearer: remove unused cid_selection_3gpp() methodAleksander Morgado
It was replaced by the profile management operations instead in the 1.18 release.
2022-03-07api: allow tagging AT ports as GPS controlAleksander Morgado
There are devices with multiple AT ports where only one of them is supposed to be used for GNSS control (and data).
2022-03-01build,meson: Fix daemon enums dependenciesIñigo Martínez
meson generates the `mm-daemon-enums-types` source and header files. These are used when building `ModemManager` executable and different plugins. However, these enums are only stated as dependencies on the `ModemManager` executable build. This has been fixed by also adding the generated files targets as dependencies in the required plugins.
2022-03-01plugins: Fix port enums includesIñigo Martínez
The `broadmobi`, `dlink`, `telit` and `tplink` plugins include the `mm-port-enums-types.h` header. However, they do not use any symbol defined there. The `huawei` plugin as includes the `mm-port-enums-types.h` header but it does not include the build targets as dependencies. These issues have been fixed by removing the unnecessary includes from `broadmobi`, `dlink`, `telit` and `tplink` plugins and by including the enums build target in the `huawei` target.
2022-02-28broadband-modem-qmi: avoid the deprecated ↵Aleksander Morgado
QmiMessageDmsGetStoredImageInfoInput type
2022-02-28shared-qmi: use the new QmiSlotEidElement typeAleksander Morgado
This type was introduced to avoid having GArrays of GArrays in libqmi.
2022-02-28shared-qmi: avoid the deprecated QmiConfigTypeAndId typeAleksander Morgado
This type was a JSON description bug in libqmi, it should have never been a struct by itself. This was changed in libqmi by the 1.31.3 snapshot, so let's use the new methods instead of the deprecated ones.
2022-02-17broadband-modem-mbim: include puk locks in facilitiesMichal Mazur
The MBIM command PIN LIST returns only status of pin locks and omits puk-locked facilities. This caused the pop-up window for unlocking PUK is not shown after reboot. Currenty active PUK lock has to be obtained using additional call for PIN command but only single facility is supported this way.
2022-02-17modem-helpers-mbim: add pin type to 3gpp facility converterMichal Mazur
2022-02-17charsets: set error if UTF-8 validation failsAleksander Morgado
Otherwise, mm_modem_charset_bytearray_to_utf8() may return NULL without error set, and that will trigger a crash in the caller. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/511
2022-02-16sim-mbim: report error if decoding EID from APDU response failsAleksander Morgado
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/510
2022-02-16iface-modem-signal: polling and thresholds only in effect if modem enabledAleksander Morgado
If the modem is disabled: * Polling is completely halted. * Thresholds are disabled. * The user is allowed to call Setup() or SetupThresholds() to change the settings, even if the actual polling or thresholds setup isn't in effect. When the modem is enabled: * Polling will be started if there is a existing polling rate. * Thresholds will be setup based on the existing threshold settings. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/504
2022-02-08iface-modem-firmware: expose device id builderDylan Van Assche
Expose the generic device id method as a public API for plugins. Plugins can call this method first and then add their own device ids on top in case the generic ones aren't specific enough like in the case of Quectel modems.
2022-02-01sim-mbim: don't crash if SIM IMSI not providedAleksander Morgado
E.g. if we have an eSIM without profiles.
2022-01-31broadband-modem-mbim: treat update in eSIM profiles list as a SIM hotplug eventAleksander Morgado
2022-01-31broadband-modem-mbim: minor alignment fixAleksander Morgado
2022-01-31shared-qmi: filter out modes not currently availableAleksander Morgado
Do not build the mask of "all" modes based only on the supported radio interfaces, also filter out those modes that would not be available based on the current capabilities enabled.
2022-01-31modem-helpers-qmi: multimode devices shouldn't always have 4G/5G only modesAleksander Morgado
In GSM/UMTS+CDMA/EVDO multimode devices, the 4G and 5G mode switching operations are exclusively limited to the capability selection that has LTE+5GNR exclusively. We cannot allow switching to 4G-only, 5G-only or 4G+5G if the current capabilities have GSM/UMTS or CDMA/EVDO. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/503
2022-01-31tests,modem-helpers-qmi: add tests for supported modes loadingAleksander Morgado
2022-01-31modem-helpers-qmi: new helper to build array of supported modesAleksander Morgado
2022-01-31tests,modem-helpers-qmi: add additional tests for supported capabilities loadingAleksander Morgado
Including tests for 5G-only and non-multimode 5G+4G and 5G+4G+3G devices.
2022-01-31tests,modem-helpers-qmi: add tests for supported capabilities loadingAleksander Morgado
2022-01-31modem-helpers-qmi: new helper to build array of supported capabilitiesAleksander Morgado
2022-01-31modem-helpers-qmi: refer explicitly to current capabilities in helper methodAleksander Morgado
The helper method for which we have unit tests available refers exclusively to the current capabilities loading, so rename it to clarify that.
2022-01-30test-modem-helpers-qmi: add unit test for generic 5g modemPrakash Pabba
2022-01-30test-modem-helpers-qmi: Fix tests for UML290Prakash Pabba
Change due to update in current capabilities loading logic.
2022-01-30mm-shared-qmi,mm-modem-helpers: Fix supported capabilities and modes for ↵Prakash Pabba
multimode device We use capability switching logic exclusively for configuring GSM/UMTS+CDMA/EVDO devices (regardless of whether it has LTE/5GNR or not) to add or remove the GSM/UMTS and CDMA/EVDO capabilities. Based on the same logic, we will allow 4 combinations for GSM/UMTS+CDMA/EVDO+LTE+5GNR device: "GSM/UMTS+CDMA/EVDO+LTE+5GNR", "GSM/UMTS+LTE+5GNR", "CDMA/EVDO+LTE+5GNR" and "LTE+5GNR" Similarly, we will allow 4 combinations for GSM/UMTS+CDMA/EVDO+LTE device: "GSM/UMTS+CDMA/EVDO+LTE", "GSM/UMTS+LTE", "CDMA/EVDO+LTE" and "LTE" And, we will allow 3 combinations for GSM/UMTS+CDMA/EVDO device: "GSM/UMTS+CDMA/EVDO", "GSM/UMTS" and "CDMA/EVDO" Also, supported combination modes should be based on current capabilities and not entirely upon supported radio interfaces. 1) If current capability has "gsm-umts" or "cdma-evdo" or both, do not support 4G only, 5G only, or 4G+5G combination modes 2) If current capability neither has "gsm-umts" nor "cdma-evdo", only support combination modes involving 4G and 5G.
2022-01-30mm-modem-helpers-qmi: Fix current capabilities for multimode devicePrakash Pabba
Keep LTE or 5GNR always in current capabilities if supported by device. Since capability switching logic is exclusively used for configuring GSM/UMTS+CDMA/EVDO devices, decide if to have GSM/UMTS or CDMA/EVDO or both or none when loading current capabilities.
2022-01-30iface-modem: make update_unlock_retries method staticMichal Mazur
2022-01-30sim-mbim,broadband-modem-mbim: store number of remaining attemptsMichal Mazur
On MBIM modems the type of PIN cannot be specified in MBIM_CID_PIN query command and the modem responds only remaining attempts for the currently active lock. If PIN1 is unlocked and user tries to disable (or enable) it, MM won't get an update of remaining attempts in response to PIN Query. This value is returned only after the Set command and MM need to store it in all (pin/puk)_set_(enter/enable/change)_ready functions. Previous solution was to call the mm_iface_modem_update_unlock_retries directly from these functions but it caused the notification to be send too early and invalid number was displayed to user sometimes. Instead of this MM will store numbers of remaining attempts and send them in a single notification from modem_load_unlock_retries.
2022-01-30Revert "mm-sim-mbim: Remove update of remaining attempts"Michal Mazur
This reverts commit 46c5cd8b7279e6139466664f87d744a0553fa1c3.
2022-01-26mm-kernel-device-helpers: fix memory leakNagi Marupaka
Newly refactored string manipulation function is leaking memory as per our tests. This submission fixes that memory leak.
2022-01-22plugin-manager: longer extra probing time when not using udevAleksander Morgado
When using udev, we rely on the kernel to timely report port additions in the same device. When not using udev, e.g. when using hotplug scripts in openwrt, we use mmcli --report-kernel-event operations to report the port additions, which may end up requiring much more time to process, especially during bootup as we would be reporting a lot of port addition events one after the other. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/493
2022-01-22broadband-modem-qmi: minor code reordering in profile manager ↵Aleksander Morgado
setup/cleanup/enable/disable The finish() method with the GTask result propagation must be in the same context as the GTask creation itself, not elsewhere. Code is reordered so that the async methods can be read from bottom to top, with the finish() method that includes the GTask result propagation at the very top.
2022-01-22mm-broadband-modem-qmi: implement ProfileManager.Updated signalFlorence Chan
This uses the PDC Refresh indication to notify clients that there is a new list of profiles.
2022-01-18broadband-modem-mbim: implement support for GetCellInfo()Aleksander Morgado
2022-01-18iface-modem: implement support for 'GetCellInfo()'Aleksander Morgado
2022-01-14broadband-modem-qmi: if UNSUPPORTED, ignore power update operationAleksander Morgado
We were returning success on this operation upon an UNSUPPORTED error, and we should keep on doing the same after all the indication support changes.
2022-01-14broadband-modem-qmi: setup operation context for power up/down/offAleksander Morgado
We must keep a valid QmiClient reference for as long as the operation runs, so that we can use it in all the request send operations we do, and also so that we can remove the indication id upon completing the operation. The timeout id and indication id, which are also part of a single power operation are also included in the operation context, because they don't have any other meaning out of it. The operation context is stored as task data.
2022-01-14broadband-modem-qmi: rework log and error messagesAleksander Morgado
2022-01-14broadband-modem-qmi: don't pass full reference to signal handlersAleksander Morgado
As in the case of the timeouts, we should not pass a full reference as data to the signal handler as we don't know how many times we'll receive the signal or if we'll ever receive it. We already make sure that the signal handler is disconnected when the operation ends, so we can be sure the self pointer is valid while the signal handler is connected.
2022-01-14broadband-modem-qmi: reorder code and minor coding style fixesAleksander Morgado
2022-01-11broadband-modem-qmi: don't pass full reference in timeoutsAleksander Morgado
The timeout may not be called if we remove it earlier (e.g. if the indication is received) and therefore we must not pass a full new reference, otherwise it may get leaked. There is no problem with the validity of the self pointer in timeout callbacks because we're removing the timeout as part of the operation teardown logic.
2022-01-11broadband-modem-qmi: remove paranoid assertAleksander Morgado
We just created the GTask and we just updated the stored pointer, checking for it being non-NULL at this point is a bit paranoid
2022-01-11broadband-modem-qmi: avoid capitalizing all words in error messageAleksander Morgado
2022-01-11broadband-modem-qmi: Handle DMS operating mode indicationsPrakash Pabba
If Mode online is triggered just after Mode LPM and Mode LPM processing is not complete in modem, modem will not process the next request and the device will be stuck in an unwanted modem power state. Thus, wait for a mode change indication from the modem before declaring that a power on/off has been successful.