Commit Graph
117 Commits
Author SHA1 Message Date
Aleksander Morgado 43db860c44 base-bearer: report connection error on network initiated disconnections
By default, fallback to "unknown" mobile equipment error when the
modem gets disconnected by the network and we don't have any way to
know a more detailed reason.
2021-05-23 01:22:07 +02:00
Aleksander Morgado 8da8fd0248 api: update MMMobileEquipmentError enum values
Update the list of mobile equipment error codes according to v17.1.0
of 3GPP TS 27.007 (March 2021).

A lot of the enum values that were prefixed with the 'GPRS_' keyword
have now been flagged as deprecated, and a new enum name given to the
corresponding value.

The deprecated symbol names are kept in the compat support to avoid
breaking API/ABI.
2021-05-22 22:58:37 +00:00
Aleksander Morgado 49b63cc62b icera: implement profile management support
Using AT%IPDPCFG for authentication related profile settings
management (querying, updating), and relying on the parent
implementation for the remaining ones.

And using AT%IPDPACT for activation status management (deactivate),
while relying on the parent implementation for the activated check.
2021-04-29 10:13:22 +00: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 5d176a1e61 base-modem: explicitly say if NET or TTY data ports are supported
A modem that creates exclusively bearer objects that work with NET
ports (e.g. all QMI or MBIM modems) must not add any TTY port in the
list of data ports.

A modem that creates exclusively bearer objects that work with TTY
ports (e.g. the generic modem) must not add any NET port in the
list of data ports.

A modem that may use both TTY and NET ports should add all in the list
of data ports.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/324
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/329
2021-03-04 18:03:28 +01:00
Aleksander Morgado 5d150ed23e core,plugins: consolidate connection/disconnection timeout values
Each different plugin or protocol had a different connection attempt
value. E.g. QMI and MBIM both used 60s max for the connection attempt,
while the u-blox plugin had up to 180s for ECM based connection
setups.

This commit consolidates all plugins and protocols to use the same
timeout values for commands that may take long to respond, e.g. a
connection atempt under low signal quality conditions.

A value of 180s for the connection attempt steps and 120s for a
disconnection attempt step is considered. Note, though, that in some
cases (like a IPv4v6 setup attempt using QMI) we may have more than
one such long step, so this doesn't mean that a connection attempt
will always take less than 180s.

Users of the connection/disconnection APIs should be able to handle
the case where the attempt times out in their side (e.g. with a lower
DBus request timeout), and which would not mean the actual request
they did really failed. E.g. a connection attempt with a DBus timeout
of 30s may fail in the user with a timeout error, but the attempt
would still go on for as much as the plugin/protocol needs.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/270
2020-11-14 09:41:43 +00:00
Giacinto Cifelli 4d58278d7f changed default authentication algorithm to CHAP
CHAP is almost universal nowadays, and so it is a better default
than PAP

Not changed for uBlox, that prefers an error if not specified,
and for Huawei, which uses NONE with user/pwd and has 2 CHAP choices
2020-07-24 16:34:40 +02:00
Aleksander Morgado 4b37b7d3cf base-modem,at: response processors return a more specific enum
Instead of using the FALSE return of the method to indicate either a
fatal error (if result_error was set) or the continuation request (if
result_error wasn't set), provide a enum that has explicit states for
all three possible values (failure, success or continue).
2020-06-28 15:07:34 +02:00
Aleksander Morgado e956bac47b log: common logging method definition for all testers and helpers 2020-04-08 17:53:42 +02:00
Aleksander Morgado fe78612d6d icera: port to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado a2b57474dc error-helpers: port to use object logging 2020-04-08 16:35:09 +02:00
Aleksander Morgado 9bcadea172 log: new object logging support
So that we can provide the specific object id in every log associated
to a given object.
2020-04-08 16:35:08 +02:00
Aleksander Morgado accd1a5841 base-modem: define new helper MMBaseModemAtCommandAlloc
It has the same exact format as MMBaseModemAtCommand, but its contents
are assumed heap allocated.

The only real purpose of this type is to allow defining static
constant MMBaseModemAtCommand variables without warnings when using
-Wdiscarded-qualifiers.
2020-01-31 15:18:35 +01:00
Aleksander Morgado 8d2fbc8429 icera: fix warnings with -Wsign-compare
icera/mm-broadband-modem-icera.c: In function ‘icera_band_to_mm’:
  icera/mm-broadband-modem-icera.c:1105:20: error: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Werror=sign-compare]
   1105 |     for (i = 0 ; i < G_N_ELEMENTS (modem_bands); i++) {
        |                    ^
2020-01-31 14:52:49 +01:00
Aleksander Morgado 7af58f3450 icera: fix warnings with -Wdiscarded-qualifiers
CC       icera/libmm_shared_icera_la-mm-broadband-modem-icera.lo
  icera/mm-broadband-modem-icera.c:1082:30: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   1082 |     { MM_MODEM_BAND_UTRAN_1, "FDD_BAND_I",    FALSE },
        |                              ^~~~~~~~~~~~
  icera/mm-broadband-modem-icera.c:1083:30: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   1083 |     { MM_MODEM_BAND_UTRAN_2, "FDD_BAND_II",   FALSE },
        |                              ^~~~~~~~~~~~~
  icera/mm-broadband-modem-icera.c:1084:30: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   1084 |     { MM_MODEM_BAND_UTRAN_3, "FDD_BAND_III",  FALSE },
        |                              ^~~~~~~~~~~~~~
  icera/mm-broadband-modem-icera.c:1085:30: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   1085 |     { MM_MODEM_BAND_UTRAN_4, "FDD_BAND_IV",   FALSE },
        |                              ^~~~~~~~~~~~~
  icera/mm-broadband-modem-icera.c:1086:30: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
   1086 |     { MM_MODEM_BAND_UTRAN_5, "FDD_BAND_V",    FALSE },
        |                              ^~~~~~~~~~~~
2020-01-31 14:52:49 +01:00
Aleksander Morgado 281f656000 icera: fix warnings with -Wshadow
icera/mm-broadband-modem-icera.c: In function ‘modem_create_bearer’:
  icera/mm-broadband-modem-icera.c:873:42: error: declaration of ‘properties’ shadows a global declaration [-Werror=shadow]
    873 |                      MMBearerProperties *properties,
        |                      ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
  icera/mm-broadband-modem-icera.c:57:20: note: shadowed declaration is here
     57 | static GParamSpec *properties[PROP_LAST];
        |                    ^~~~~~~~~~
2020-01-31 14:52:49 +01:00
Aleksander Morgado b0f9ddd295 icera: fix warnings with -Wsign-compare
icera/mm-modem-helpers-icera.c:256:13: error: comparison of integer expressions of different signedness: ‘gint’ {aka ‘int’} and ‘guint’ {aka ‘unsigned int’} [-Werror=sign-compare]
    256 |         num != expected_cid) {
        |             ^~
2020-01-31 14:52:49 +01:00
Aleksander Morgado a6d76cfceb icera: setup as loadable 'shared' utils 2019-11-27 10:11:43 +00:00
Aleksander Morgado d5d0ed0b24 tests: print MM logs only on verbose test mode
Therefore, avoid needing ENABLE_TEST_MESSAGE_TRACES build symbol.
2019-10-14 15:30:27 +02:00
Lubomir Rintel b39dd2ec05 all: drop unused variables
Keeps build with GCC 8 happy.

mm-base-call.c:758:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-base-call.c:822:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-base-sms.c:908:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
mm-sms-list.c:331:25: warning: variable 'ctx' set but not used [-Wunused-but-set-variable]
mm-iface-modem-messaging.c:1210:21: warning: variable 'storage_ctx' set but not used [-Wunused-but-set-variable]
huawei/mm-plugin-huawei.c:183:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
ublox/mm-plugin-ublox.c:161:24: warning: variable 'response' set but not used [-Wunused-but-set-variable]
ublox/mm-plugin-ublox.c:159:24: warning: variable 'ctx' set but not used [-Wunused-but-set-variable]
icera/mm-modem-helpers-icera.c:218:25: warning: variable 'first_free' set but not used [-Wunused-but-set-variable]
novatel/mm-common-novatel.c:50:18: warning: variable 'response' set but not used [-Wunused-but-set-variable]
2018-04-24 18:11:15 +02:00
Aleksander Morgado 4c8a3d0015 icera: port dial_3gpp() to GTask 2017-12-05 10:55:41 +01:00
Ben Chan b25b7723ec icera: port disconnect_3gpp to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan 533a53c38d icera: port get_ip_config_3gpp to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan f2853ac2f8 icera: port modem_3gpp_{enable,disable}_unsolicited_events to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan cffe686cb1 icera: port modem_3gpp_{setup,cleanup}_unsolicited_events to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan e612838814 icera: port modem_create_bearer to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan b7bfba3e54 icera: port modem_time_check_support to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan 18a55f6940 icera: port modem_power_up to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan d6bd83e5cf icera: port modem_set_current_bands to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan 6612ffcb8b icera: port modem_set_current_modes to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan aa2cd2288a icera: port modem_load_current_bands to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan f168ffd032 icera: port modem_load_supported_bands to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan 4ecc8a13fd icera: port modem_load_unlock_retries to use GTask 2017-09-13 16:36:49 +02:00
Ben Chan ce732e568c icera: port modem_load_access_technologies to use GTask 2017-09-13 16:36:49 +02:00
Aleksander Morgado 2c96b31590 icera: update frequency bands support
Updated to use the non-deprecated MMModemBand values.
2017-09-07 10:55:17 +02:00
Aleksander Morgado c44fa6c681 icera: fix async completion in 3gpp event handlers setting 2017-07-17 10:20:17 +02:00
Aleksander Morgado 2eb55d3224 plugins: use G_N_ELEMENTS when iterating ports array 2017-05-30 17:28:23 +02:00
Ben Chan 254f2e3412 plugins: remove explicit GDestroyNotify cast on g_free / g_object_unref
g_free and g_object_unref are in form of  `void (*)(gpointer)`, which
matches the GDestroyNotify signature. An explicit GDestroyNotify cast on
g_free and g_object_unref is thus not needed.
2017-03-29 10:22:18 +02:00
Ben Chan 31655bb5a5 glib: remove invocations of g_type_init()
g_type_init() has been deprecated (and also marked with the attribute
'deprecated') since glib 2.36 as the type system is automatically
initialized. Since the minimum version of glib required by ModemManager
is 2.36, calling g_type_init() isn't necessarily in the ModemManager
code.
2017-02-03 10:05:14 +01:00
Aleksander Morgado 37bd614212 broadband-modem: implement default connection monitoring logic
A default implementation to monitor the ongoing connection is provided in the
generic MMBroadbandModem, based on AT+CGACT? to check whether the PDP context
of the connection (identified by the cached cid) is active or not.

This commit also disables the connection monitoring logic in those plugins that
have custom connection methods.
2016-10-12 11:29:52 +02:00
Dan Williams 830b6ebca8 broadband-bearer-icera: deactivate context before authentication
If the modem thinks a PDP context is already active it'll return
583 errors from IPDPCFG and IPDPACT until the context is
deactivated.  Deactivation was previously done after authentication,
but needs to be done before any part of the connect process to
ensure the PDP context is inactive.

The previous approach worked only if the context was being
deactivated already (which can take a bit of time) because it would
be deactivated after a few seconds and the connect could continue.
This approach works for more cases (like a MM crash and restart
while the modem is connected).
2016-05-24 09:35:49 -05:00
Aleksander Morgado ffde429843 core: use G_SOURCE_REMOVE and G_SOURCE_CONTINUE in GSourceFuncs 2015-12-02 17:07:39 +01:00
Yunlian Jiang 977cf658a6 tests: fix memory leaks 2015-03-27 20:31:24 +01:00
Aleksander Morgado fd28a4d5cd icera: IPv6 '::' is a placeholder for 'no IPv6', so don't error out if found
Also, allow IPDPADDR returns where only DNS IPv6 is given (i.e. no IPv6 address
to set), and in that case default to DHCP method in the bearer.

https://bugs.freedesktop.org/show_bug.cgi?id=85012
2014-12-03 19:02:00 +01:00
Aleksander Morgado 3ca267b01f bearer: rename 'MMBearer' to 'MMBaseBearer'
Just so that we don't have same header names in src/ and /libmm-glib.
2014-07-06 16:55:29 +02:00
Ben Chan 9e50209019 icera: fix 'sometimes-uninitialized' variable issues 2014-06-18 08:14:53 -05:00
Dan Williams a416d8056c broadband-bearer-icera: add IPv6 support
Split out the %IPDPADDR parsing into a helper and add testcases for it,
and add support for IPv6 handling.  If the returned IPv6 is link-local,
the address should be assigned to the interface and SLAAC performed to
retrieve the actual IPv6 prefix and RDNSS/DNSSD information.
2014-06-13 11:30:49 -05:00
Dan Williams e9395d83e3 broadband-bearer: pass the IP family to subclasses when getting IP config
Subclasses may need to know which IP families were used for the setup
so they can return the correct IP configuration.  We can't just use
the MMBearer default_ip_family becuase that isn't the family that
was actually used during the connection.
2014-06-13 11:30:49 -05:00
Ben Chan 551197b4e5 plugins: remove unnecessary MM_BASE_MODEM() casts 2014-05-21 11:59:49 +02:00
Ben Chan f5d7213a3c icera: minor coding style fixes 2014-05-20 09:31:18 +02:00