Quectel emits "+QUSIM: 1" after eUICC reinitialization. Detect it
and perform SIM swap check if one is encountered.
The motivation here is that M2M eUICC profile switch causes eUICC
reset and this is one way to detect and handle profile switches
properly on Quectel modems. The existing SIM hot swap mechanism is
used as it appears to be suitable for handling profile switches as
well as physical swapping of SIM cards.
When we're reusing over and over the same bearer object, we can
provide statistical information about the number of connection
attempts that have been done and how many of them failed.
If the modem switches from one roaming operator to a different roaming
operator, the actual operator MCCMNC/description will change even if
the registration state keeps on being the same (roaming). Detect that,
and trigger operator info reloading explicitly.
If the modem switches from one roaming operator to a different roaming
operator, the actual operator MCCMNC/description will change even if
the registration state keeps on being the same (roaming). Detect that,
and trigger operator info reloading explicitly.
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/154
If the QMI device has autoconnect enabled, it will collide in one way
or another with the ModemManager triggered connection sequence,
usually because the user-requested settings are different to the
autoconnected ones.
So, detect whether autoconnect is enabled or not, and if it is,
explicitly disable it.
So that the logic looking for 3GPP related registration info works in
the QMI modem object when selected network is reported as 'unknown'
but still the radio interfaces list reports 5GNR.
<<<<<< TLV:
<<<<<< type = "Serving System" (0x01)
<<<<<< length = 6
<<<<<< value = 01:02:01:00:01:0C
<<<<<< translated = [ registration_state = 'registered' cs_attach_state = 'detached' ps_attach_state = 'attached' selected_network = 'unknown' radio_interfaces = '{ [0] = '5gnr '}' ]
This fixes the s8500 wave unit test, which was incorrectly parsing the
Act field reported as 'B' as "GSM" (strtol(B)=0)
Also, given that the generic parsing methods are able to parse numbers
from quoted strings, this change allows us to remove the Thuraya
specific CREG matching that just took into consideration quoted
strings. The Thuraya unit tests are also fixed up to provide proper
testing of the logic.
When a system only has one single modem, it's convenient to just look
for the first available modem or SIM object, instead of needing to
provide the full path or the exact index number.
This improvement allows users to use the "any" keyword, or any of its
substrings (e.g. "an" or even "a") to match the first available object
of the requested type.
E.g.:
$ mmcli -m a
--------------------------------
General | dbus path: /org/freedesktop/ModemManager1/Modem/0
| device id: 1a48f1180f1fb0166d91f7b139d027136b59ba63
--------------------------------
Hardware | manufacturer: Sierra Wireless Inc.
| model: Sierra Wireless EM7345 4G LTE
...
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/196
The user may specify DBus objects in several ways, e.g. with full
object paths, just with the object numeric ids, or in some other cases
with the full device UID.
Setup one single method to process this info for all object types, so
that it's also easier to add new lookup methods for all at the same
time.