aboutsummaryrefslogtreecommitdiff
path: root/src/mm-shared-qmi.h
AgeCommit message (Collapse)Author
2022-08-04broadband-modem-qmi,mm-shared-qmi: implement support for ↵Akash Aggarwal
'SetPacketServiceState()'
2021-11-17iface-modem: use external dispatcher to attempt FCC unlockAleksander Morgado
We remove the built-in FCC unlock procedures from the ModemManager, we will no longer run them automatically, and instead rely on external scripts/programs to do that. Packages providing the external FCC unlock tools can install them in ${pkglibdir}/fcc-unlock.d. Users manually enabling external FCC unlock tools can install them in ${pkgsysconfdir}/fcc-unlock.d. The user-enabled path takes precedence over the package-enabled one.
2021-05-23broadband-modem-qmi: setup FCC unlock stepAleksander Morgado
Use the new generic FCC unlock step instead of implementing it within the operating mode setup logic. The operation is implemented in the MMSharedQmi interface as it will also be used by the MBIM modem object.
2021-05-23shared-qmi: trivial coding style updateAleksander Morgado
2021-05-14broadband-modem-mbim: get model through QMI-over-MBIMFreedom Liu
move the modem_load_model() async method from mm-broadband-modem-qmi.c to mm-shared-qmi.c, and then make use of the method from both the QMI and MBIM implementations.
2020-09-28shared-qmi: implement SIM/profile change detectionTeijo Kinnunen
Implement eUICC change detection for QMI based modems using one of the following mechanisms (in order of preference): 1. If the modem supports "get slot status" operation, we monitor physical slot status indications from the modem for the active slot to detect when ICCID changes. 2. Use "refresh register all" to subscribe refresh indications when the eUICC triggers REFRESH operation following the enablement of a new profile. 3. Use "refresh register" to subscribe refresh indications (file path of EF_ICCID is used) in a similar way. This is used with older modems that do not support "refresh register all". If ICCID change is detected, the already existing SIM hot swap mechanism in MM is triggered.
2020-09-28Revert "shared-qmi: implement SIM/profile change detection"Aleksander Morgado
This reverts commit e91f2ef315526a1a8a1b451acb5a190686b05225. This was wrongly merged squashing multiple commits together. Reverting to merge separate commits.
2020-09-28shared-qmi: implement SIM/profile change detectionTeijo Kinnunen
Implement eUICC change detection for QMI based modems using one of the following mechanisms (in order of preference): 1. If the modem supports "get slot status" operation, we monitor physical slot status indications from the modem for the active slot to detect when ICCID changes. 2. Use "refresh register all" to subscribe refresh indications when the eUICC triggers REFRESH operation following the enablement of a new profile. 3. Use "refresh register" to subscribe refresh indications (file path of EF_ICCID is used) in a similar way. This is used with older modems that do not support "refresh register all". If ICCID change is detected, the already existing SIM hot swap mechanism in MM is triggered.
2020-09-19core: add autoptr cleanup methods to all internal typesAleksander Morgado
2020-08-28shared-qmi: implement SIM slot switchingAleksander Morgado
Using the 'UIM switch slot' operation, this commit introduces the ability to change which SIM slot to be active at any given time in a Multi-SIM Single-Standby setup. There is no validation done on whether the selected SIM slot has a valid SIM card inserted or not; if the user selects a slot without any SIM card, the newly probed modem object will start in Failed state right away.
2020-08-28shared-qmi: implement SIM slots loading during initializationAleksander Morgado
This commit introduces Multi-SIM Single-Standby support in all QMI capable devices that support multiple SIM slots. The 'UIM Get Slot Status' method is used to list all available physical slots as well as the availability of SIM cards in the different slots. This method also provides UICC already, so the SIM objects are created early and exposed early in DBus. Once all slots are listed, the logic will briefly make each of the available SIM cards active in order to read additional settings like IMSI, MCCMNC or the Operator name. This brief switching is required because in a Single-Standby setup only one SIM can be active at any given time. The last slot to probe is always the one that was active originally, making sure that the modem initialization logic can go on with the correct SIM slot.
2019-04-02api,modem: new 'CarrierConfigurationRevision' propertyAleksander Morgado
Which reports the version of the currently active carrier configuration. We also update the firmware 'version' reported in the firmware settings so that carrier-specific upgrades can be performed (e.g. when the firmware stays the same but the MCFG is updated).
2019-04-02shared-qmi: implement QMI PDC based carrier config supportAleksander Morgado
We implement both loading the current configuration in use, as well as automatically switching to a different one if a mapping file is available.
2018-09-12shared-qmi: reuse band management logic in MBIM whenever possibleAleksander Morgado
2018-09-12shared-qmi: implement 3GPP network registration logicAleksander Morgado
Ported from the broadband modem QMI implementation, keeping the logic in place. We will need this to integrate mode/capability switching in MBIM devices, for nothing else really (as MBIM already supports this operation).
2018-09-12shared-qmi: implement reworked mode and capabilities managementAleksander Morgado
This commit introduces several improvements and changes in the way modes and capabilities are managed in QMI capable devices. It is organized into a single commit, as all changes in all 6 operations (load current capabilities, load supported capabilities, set current capabilities, load supported modes, load current modes, set current modes) are related one to the other (given that the same QMI commands are used for both capabilities and mode management). The primary change is related to which capabilities are reported as supported for a given device. In the previous implementation we allowed switching between every combination possible for GSM/UMTS+LTE, CDMA/EVDO+LTE or GSM/UMTS+CDMA/EVDO+LTE devices. E.g. we would allow "LTE only" and "GSM/UMTS only" capabilities for GSM/UMTS+LTE devices, even if they would both be managed in exactly the same way. That setup wasn't ideal, because it meant that switching to a "LTE only" configuration would require a power cycle, as capability switching requires a power cycle, even if no change was expected in the exposed DBus interfaces (which is why we require the power cycle). So, instead of allowing every possible capability combination, we use capability switching logic exclusively for configuring GSM/UMTS+CDMA/EVDO devices (regardless of whether it has LTE or not) to add or remove the GSM/UMTS and CDMA/EVDO capabilities. E.g. for a GSM/UMTS+CDMA/EVDO+LTE device we would allow 3 combinatios: "GSM/UMTS+LTE", "CDMA/EVDO+LTE" and "GSM/UMTS+CDMA/EVDO+LTE". The "GSM/UMTS+CDMA/EVDO+LTE" is a special case because for this one we allow switching to "LTE only" capabilities while we forbid switching to "4G only" mode. As the same commands are used for mode and capability switching, if we didn't have "LTE only" and we allowed "4G only" mode instead and rebooted the device, we would end up not being able to know which other capabilities (GSM/UMTS or CDMA/EVDO or both) were also enabled. Now that we have capability switching confined to a very subset of combinations, we can use the mode switching logic to e.g. allow "4G only" configurations in all non multimode devices, as well as masks of allowed modes with one being preferred, which we didn't allow before. In the previous implementation all mode switching logic was disabled for LTE capable QMI devices. In the new implementation, we use the "Acquisition Order Preference" TLV in NAS Set System Selection Preference to define the full list of mode preferences for all supported modes. We also no longer just assume that NAS Technology Preference is always available and NAS System Selection Preference only after NAS >= 1.1. This logic is flawed, instead we're going to probe for those features once when loading current capabilities, and we then just implement the capabilities/mode switching logic based on that.
2018-09-12shared-qmi: reuse device factory reset logic in MBIM whenever possibleAleksander Morgado
2018-09-12shared-qmi: reuse device reset logic in MBIM whenever possibleAleksander Morgado
2018-08-21shared-qmi: support for Qualcomm gpsOneXTRA assistance dataAleksander Morgado
The gpsOneXTRA assistance data provides a convenient way to inject predicted orbit information into the module, without requiring to have an Internet connection in the module itself.
2018-08-21shared-qmi: import PDS-based GPS location supportAleksander Morgado
2018-08-21shared-qmi: new interface to handle common QMI implementationsAleksander Morgado
This new interface will include implementations that are shared between the MMBroadbandModemQmi and the MMBroadbandModemMbim. For now, it just provides a way to implement the common client allocation methods.