Commit Graph
207 Commits
Author SHA1 Message Date
Aleksander Morgado f9343692e3 broadband-modem: implement support for 'SetPacketServiceState()' 2021-11-02 09:50:17 +00:00
Frederic Martinsons 9d82d30978 cli, plugins: factorize usage of iso8601 datetime format
Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>

Includes updates by Aleksander Morgado to fix coding style issues.
2021-10-22 13:48:20 +02:00
Som_SP 19a11396dd sim-mbim: add support for loading eid via mbim protocol
Support is added to set eid dbus interface property using
MBIM protocol when the inserted sim is esim.
2021-09-19 09:09:35 +00:00
Dylan Van Assche 92ad38432c mm-modem-helpers: only parse calls in voice mode
Calls in a CLCC response in data-only or fax-only mode
do not count as actuall calls.
2021-09-08 07:59:16 +00:00
Teijo Kinnunen 948099bff0 modem-helpers: allow unquoted operator code in AT+CPOL? response
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/409
2021-08-02 12:39:38 +03:00
Aleksander Morgado 4cf12bb8bc helpers: skip g_warning() in mm_3gpp_parse_ws46_test_response()
Use mm_obj_warn() instead.
2021-06-16 11:59:51 +02:00
Teijo Kinnunen 14c4f27ae4 modem-helpers: add 3 digit MNC output to mm_3gpp_parse_operator_id()
MNC digit count information is lost on conversion to integers. Make it
possible for the caller to get this information through a separate
boolean.
2021-05-17 12:46:52 +03:00
Aleksander Morgado 887358663d broadband-bearer: rely on profile management for the cid selection
There is no longer need to perform all the CID selection logic in the
broadband bearer connection procedure, we can rely on the new profile
management operations to do the same thing.

We can do this because we're sure that all the MMBroadbandModem
objects implement the MMModem3gppProfileManager interface.

Additionally, given that we now provide the profile ID value as part
of the MMBearerConnectResult, we no longer need a custom
mm_broadband_bearer_get_3gpp_cid() as we can use the generic
mm_base_bearer_get_profile_id() for the same purpose.
2021-04-29 10:13:22 +00:00
Aleksander Morgado 62cbf7fa86 modem-helpers: new profile list helpers
The new helpers allow converting a PDP context list returned from the
+CGDCONT? parser to a list of 3GPP profile objects.

The new mm_3gpp_profile_list_find_best() method is equivalent to the
mm_3gpp_select_best_cid() one, but using profile objects as
input/output instead of specific settings.

The unit tests that were testing mm_3gpp_select_best_cid() are also
converted to use mm_3gpp_profile_list_find_best().
2021-04-29 10:13:22 +00:00
Aleksander Morgado 83a00a9457 modem-helpers: new helper to lookup range from CGDCONT=? response 2021-04-08 10:04:42 +00:00
Aleksander Morgado 851a708442 modem-helpers: ip family normalization doesn't need log_object 2021-04-01 11:24:42 +02:00
Aleksander Morgado 2c27a7aadc base-bearer: remove default IP family property
There is no point in providing a configurable default IP family in the
bearer object, because we can always assume IPv4 as being the only
default expected.

Simplify the logic and also provide a new method to get the normalize
the IP family, using IPv4 as default always.
2021-03-31 23:46:31 +02:00
Teijo Kinnunen 8b1ae5afab modem-helpers,mm-base-sim: Sim.SetPreferredNetworks AT implementation
Implement Sim.SetPreferredNetworks method by using the AT+CPOL command.
2021-03-09 16:33:45 +01:00
Teijo Kinnunen 816beeffcb libmm-glib,modem-helpers,mm-base-sim: implement Sim.PreferredNetworks
The ModemManager1.Sim.PreferredNetworks property contains the preferred
networks (and access technologies, if available) configured to the
SIM card.

This commit implements preferred networks reading with AT+CPOL.
2021-02-26 12:28:01 +01:00
Aleksander Morgado 16df1e17e6 helpers: rework normalize_operator() to use str_to_utf8()
Instead of blindly assuming that we can take whatever string given as
valid UTF-8, we'll always attempt to convert from the current modem
charset into UTF-8. Before we were doing this for hex-encoded UCS2,
but not for example for GSM-7.

And due to the now applied GSM-7 conversion, the mf627a/mf627b +COPS
parsing unit tests are updated accordingly, because when converting
from an input string that contains byte 0x40 ('@' in UTF-8) as if it
were GSM-7, the 0x40 is taken as character '¡', encoded as 0xc2,0xa1
in UTF-8).
2021-02-23 11:35:11 +00:00
Aleksander Morgado 34de613dea libmm-glib,common-helpers: make hexstr2bin() return a guint8 array
It makes much more sense than returning a gchar array, as gchar is
signed.
2021-02-23 11:35:11 +00:00
Aleksander Morgado a211981d4a libmm-glib,common-helpers: make hexstr2bin() accept input string length
Optionally given explicitly, and -1 can be used to assume it's
NUL-terminated.
2021-02-23 11:35:11 +00:00
Aleksander Morgado 657cabcfce libmm-glib,common-helpers: make hexstr2bin() return a GError
This util method checks whether the input string is a valid hex
string, so make sure we return a GError on failure.
2021-02-23 11:35:11 +00:00
Eric Caruso 1800983b6c mm-modem-helpers: add low_nybble_first argument to mm_bcd_to_string
All BCD-encoded strings used by MM currently have the low nybble
of each byte come before the high nybble, but some strings (such
as the EID string returned by QMI Get Slot Status) are meant to
be read in order with the high nybble before the low one. As such,
extend mm_bcd_to_string to decode both.
2020-10-16 11:22:37 -07:00
Aleksander Morgado de23b53ee4 modem-helpers: ensure error is set in mm_3gpp_parse_cpms_test_response()
If splitting the +CPMS=? response in groups fails, make sure we set
the GError when returning FALSE.
2020-08-16 14:17:41 +02:00
Aleksander Morgado 3476e140ad modem-helpers: use GPtrArray to build a GStrv
So that we avoid errors when building on ARM due to increasing target
type alignment.

  mm-modem-helpers.c: In function 'mm_3gpp_parse_cnum_exec_response':
  mm-modem-helpers.c:3206:21: error: cast increases required alignment of target type [-Werror=cast-align]
       return (array ? (GStrv) g_array_free (array, FALSE) : NULL);
                       ^
2020-05-19 13:44:23 +02:00
Aleksander Morgado 28b0e2b439 modem-helpers: simplify logic to create array of GRegex
Iterate over the list of available patterns, instead of adding
them one by one.
2020-04-09 12:38:50 +00:00
Aleksander Morgado c78da3de7e broadband-modem: run +C5GREG state checks
The generic CREG parser is improved to also allow parsing +C5GREG
responses and URCs.
2020-04-09 12:38:50 +00:00
Aleksander Morgado 040eb3880c helpers: use generic number parsing methods in CREG parser
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.
2020-04-09 12:38:50 +00:00
Aleksander Morgado 7eee214b8e helpers: add additional AcT values from 27.007 2020-04-09 12:38:50 +00:00
Aleksander Morgado 68917f502e api: new 'attached RLOS' registration state
Reporting the state when the UE attaches to access restricted local
operator services.
2020-04-09 12:38:50 +00:00
Aleksander Morgado 44ace9642c modem-helpers: improved +WS46 mode '25' handling
The mode '25' means different things on LTE-capable and
non-LTE-capable devices, so improve the logic to clarify that.
2020-04-09 12:38:50 +00:00
Aleksander Morgado 5db3fa88e9 api: new 5G mode 2020-04-09 12:38:50 +00:00
Aleksander Morgado 7004f97093 modem-helpers: make cpms test parser return error on failure 2020-04-08 16:35:09 +02:00
Aleksander Morgado 105cb31e8c modem-helpers: port ccwa service query parser to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado ecd766796a modem-helpers: port cesq response parser to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado ef1a570afe modem-helpers: port creg response parser to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado 39dd4c166d modem-helpers: port clcc list parser to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado 78cad902ef modem-helpers: remove unused supported capabilities filter 2020-04-08 16:35:09 +02:00
Aleksander Morgado 5b1b33a894 modem-helpers: port cmer test parser to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado 3747f9e669 modem-helpers: remove logging from cgdcont response parser 2020-04-08 16:35:09 +02:00
Aleksander Morgado 740827bde1 modem-helpers: parse cgdcont test parser to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado f76489cd81 modem-helpers: port cid selection helper to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado 2b23ef3fa6 modem-helpers: port cops test parser to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado fb61243b7d modem-helpers: port ifc test parser to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado 0f708daf0b modem-helpers: port supported modes filtering to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado fd1464cff0 modem-helpers: port device identifier to use object logging and autoptr 2020-04-08 16:35:09 +02:00
Aleksander Morgado 623443d50f modem-helpers: fix warnings with -Wswitch-enum
mm-modem-helpers.c: In function ‘mm_3gpp_get_pdp_type_from_ip_family’:
  mm-modem-helpers.c:4166:5: error: enumeration value ‘MM_BEARER_IP_FAMILY_NONE’ not handled in switch [-Werror=switch-enum]
   4166 |     switch (family) {
        |     ^~~~~~
  mm-modem-helpers.c:4166:5: error: enumeration value ‘MM_BEARER_IP_FAMILY_ANY’ not handled in switch [-Werror=switch-enum]
2020-01-31 14:52:49 +01:00
Aleksander Morgado 520a7ec7db modem-helpers: fix warnings with -Wdiscarded-qualifiers
mm-modem-helpers.c:4019:45: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   4019 |     { MM_MODEM_3GPP_FACILITY_SIM,           "SC" },
        |                                             ^~~~
  mm-modem-helpers.c:4020:45: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   4020 |     { MM_MODEM_3GPP_FACILITY_PH_SIM,        "PS" },
        |                                             ^~~~
  mm-modem-helpers.c:4021:45: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   4021 |     { MM_MODEM_3GPP_FACILITY_PH_FSIM,       "PF" },
        |                                             ^~~~
  mm-modem-helpers.c:4022:45: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   4022 |     { MM_MODEM_3GPP_FACILITY_FIXED_DIALING, "FD" },
        |                                             ^~~~
  mm-modem-helpers.c:4023:45: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   4023 |     { MM_MODEM_3GPP_FACILITY_NET_PERS,      "PN" },
        |                                             ^~~~
  mm-modem-helpers.c:4024:45: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   4024 |     { MM_MODEM_3GPP_FACILITY_NET_SUB_PERS,  "PU" },
        |                                             ^~~~
  mm-modem-helpers.c:4025:45: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   4025 |     { MM_MODEM_3GPP_FACILITY_PROVIDER_PERS, "PP" },
        |                                             ^~~~
  mm-modem-helpers.c:4026:45: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   4026 |     { MM_MODEM_3GPP_FACILITY_CORP_PERS,     "PC" }
        |                                             ^~~~
2020-01-31 14:52:49 +01:00
Aleksander Morgado 1f94d3f5f8 modem-helpers: fix warnings with -Wsign-compare
mm-modem-helpers.c: In function ‘parse_uint’:
  mm-modem-helpers.c:1953:36: error: comparison of integer expressions of different signedness: ‘gulong’ {aka ‘long unsigned int’} and ‘glong’ {aka ‘long int’} [-Werror=sign-compare]
   1953 |         if ((nmin == nmax) || (ret >= nmin && ret <= nmax))
        |                                    ^~
  mm-modem-helpers.c:1953:51: error: comparison of integer expressions of different signedness: ‘gulong’ {aka ‘long unsigned int’} and ‘glong’ {aka ‘long int’} [-Werror=sign-compare]
   1953 |         if ((nmin == nmax) || (ret >= nmin && ret <= nmax))
        |                                                   ^~
2020-01-31 14:52:49 +01:00
Aleksander Morgado 1722915f5e broadband-modem: +COPS=? response may give strings in UCS2
If the charset selected via CSCS is UCS2, the modem may decide to
return all the strings in the +COPS=? response in UCS2:

    <debug> (ttyACM0): --> 'AT+COPS=?<CR>'
    <debug> (ttyACM0): <-- '<CR><LF>+COPS: (2,"004D006F007600690073007400610072","004D006F007600690073007400610072","00320031003400300037",7)
    <debug> Found network '00320031003400300037' ('004D006F007600690073007400610072','004D006F007600690073007400610072'); availability: current, access tech: lte
2020-01-06 20:17:08 +00:00
Aleksander Morgado d6f9d5e9ec sim: load emergency numbers from EF_ECC 2019-10-17 10:51:50 +02:00
Aleksander Morgado 089faef88c modem-helpers: support reporting 'terminated' call state in +CLCC 2019-10-14 15:45:18 +02:00
Aleksander Morgado 137ece0f2f broadband-bearer: setup cid selection as a testable method
Rework how the broadband bearer runs CGDCONT? and CGDCONT=? and setup
a helper method to perform the CID selection logic.

Also, implement unit tests for the CID selection logic.
2019-09-13 18:13:26 +00:00
Aleksander Morgado f39dbe72e5 broadband-modem,voice: implement call waiting status setup/query with +CCWA 2019-07-19 17:47:51 +02:00