Commit Graph
123 Commits
Author SHA1 Message Date
Aleksander Morgado f710278b3d sierra: remove unneeded explicit casts 2017-09-18 21:21:59 -07:00
Aleksander Morgado fd508d7057 sierra: skip setting GError if not used
The return status of mm_base_modem_at_command_finish() already
specifies whether an error has happened or not, so skip creating the
GError if we don't care about the actual error details.
2017-09-18 20:50:45 -07:00
Ben Chan 4fbd88395d sierra: port get_detailed_registration_state to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 7ca5e8875a sierra: port modem_time_check_support to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 509ba7475a sierra: port setup_registration_checks to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 26be99b8a7 sierra: port modem_power_down to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 841d175961 sierra: port modem_create_bearer to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 7446e411c7 sierra: port modem_load_own_numbers to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 85915853e5 sierra: port modem_after_sim_unlock to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 228bd14a11 sierra: port set_current_modes to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 5dbf7f77e2 sierra: port load_current_modes to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan abff4adf62 sierra: port load_supported_modes to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 8f129d64ed sierra: port load_access_technologies to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan f663022aca sierra: port modem_create_bearer to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan d0dc8b97a7 sierra: port disconnect_3gpp to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 4c2ebaba16 sierra: port dial_3gpp to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 043645ea57 sierra: port mm_common_sierra_load_power_state to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 1eb51d96f7 sierra: port mm_common_sierra_modem_power_up to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan c401646db8 sierra: port mm_common_sierra_custom_init to use GTask 2017-09-18 20:39:03 -07:00
Ben Chan 8fb6f30f49 sierra: port load_sim_identifier to use GTask 2017-09-18 20:39:03 -07: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
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
Aleksander Morgado ae9ede926a core: use the kernel device object in the port object and the plugin interface
The mm_base_modem_grab_port() now receives a MMKernelDevice directly from the
plugin, which is then stored in the MMPort corresponding to the port.

This means that we have direct access to e.g. all properties set by udev rules
everywhere, and we don't need additional GUdevClient objects (e.g. like the one
used in the Huawei plugin to detect NDISDUP support during runtime).

For virtual ports (e.g. generated during unit tests), we have a new 'generic'
kernel device object which just provides the values from the kernel device
properties given during its creation.
2016-09-29 15:43:05 +02:00
Aleksander Morgado 1f813c4e96 core: allow identifying devices by a user-provided 'uid'
All ports of the same modem reported by the kernel will all be associated with
a common 'uid' (unique id), which uniquely identifies the physical device. This
logic was already in place, what we do now is avoid calling it  the 'sysfs
path' of the physical device, because we may not want to use that to identify
a device.

This logic now also enables the possibility of "naming" the modems in a unique
way by setting the "ID_MM_PHYSDEV_UID" property in the "usb_device" that owns
all the ports.

E.g. a custom device has 4 modems in 4 different USB ports. The device path of
each USB device will always be the same, so the naming rules could go like this:

    $ vim /usr/lib/udev/rules.d/78-mm-naming.rules

    ACTION!="add|change|move", GOTO="mm_naming_rules_end"
    DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.5/4-1.5.1", ENV{ID_MM_PHYSDEV_UID}="USB-MODEM-1"
    DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.5/4-1.5.2", ENV{ID_MM_PHYSDEV_UID}="USB-MODEM-2"
    DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.5/4-1.5.3", ENV{ID_MM_PHYSDEV_UID}="USB-MODEM-3"
    DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.5/4-1.5.4", ENV{ID_MM_PHYSDEV_UID}="USB-MODEM-4"
    LABEL="mm_naming_rules_end"

Each of the modems found will have a unique UID retrieved from the previous list
of rules. Then, "mmcli" has also been updated to allow using the UID instead of
the modem DBus path or index, e.g.:

    $ sudo mmcli -m USB-MODEM-1
    /org/freedesktop/ModemManager1/Modem/0 (device id '988d83252c0598f670c2d69d5f41e077204a92fd')
      -------------------------
      Hardware |   manufacturer: 'ZTE CORPORATION'
               |          model: 'MF637'
               |       revision: 'BD_W7P673A3F3V1.0.0B04'
               |      supported: 'gsm-umts'
               |        current: 'gsm-umts'
               |   equipment id: '356516027657837'
      -------------------------
      System   |         device: 'USB-MODEM-1'
               |        drivers: 'option'
               |         plugin: 'ZTE'
               |   primary port: 'ttyUSB5'
               |          ports: 'ttyUSB5 (at)'
    ...

    $ sudo mmcli -m USB-MODEM-1 --enable
    ...
2016-09-29 15:41:21 +02:00
Ting-Yuan Huang 969189d42c plugin-manager: protect mm_plugin_{major,minor}_version
This patch makes declarations bind to definitions within the same module
to prevent the potential ambiguity if referenced directly.

AddressSanitizer think they violated one definition rule, although
those symbols are accessed by address through their modules and do
not depend on the order of the libararies loaded.
2016-05-28 13:59:54 +02:00
Aleksander Morgado ffde429843 core: use G_SOURCE_REMOVE and G_SOURCE_CONTINUE in GSourceFuncs 2015-12-02 17:07:39 +01:00
Dan Williams a8666bd98f sierra: fix build error when MBIM and QMI are disabled
Found by Jean-Christian de Rivaz
2015-09-24 14:17:03 -05:00
Aleksander Morgado 6bbc4c1746 sierra: move all the legacy Sierra support to a new 'sierra-legacy' plugin
In short:

  * The 'sierra-legacy' plugin will handle all the old AT based modems,
    including the DirectIP ones. This plugin is filtered by driver ('sierra' or
    'sierra_net') and forbidden-drivers ('qmi_wwan' and 'cdc_mbim'). This plugin
    should also grab HP and AT&T branded models if they are handled by the
    proper kernel driver.

  * The 'sierra' plugin will only handle QMI or MBIM based Sierra modems, which
    are really all the new ones. This plugin is filtered by VID (0x1199) and
    driver (qmi_wwan and cdc_mbim).

For this separation to work, the 'sierra' and 'sierra_net' plugins need to be
complementary to each other.
2015-02-16 17:33:37 +01:00
Aleksander Morgado b115945399 sierra: move custom init and port grabbing methods to separate source files 2015-02-16 17:30:38 +01:00
Aleksander Morgado 5358d6fea0 sim: rename 'MMSim' to 'MMBaseSim'
Just so that we don't have same header names in src/ and /libmm-glib.
2014-07-06 16:55:29 +02: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
Aleksander Morgado 7c347aa3ec port: store parent sysfs path in each MMPort 2014-06-23 18:12:27 +02:00
Dan Williams 6e5d013eb1 broadband-bearer-sierra: use Icera authentication for Icera devices
Devices with Icera chipsets (USB305) don't support the Qualcomm
proprietary $QCPDPP command, and we must use the Icera command
instead.  Otherwise authenticated bearer creation will fail.
2014-06-13 11:30:49 -05:00
Dan Williams 502a5dbaf5 broadband-bearer-sierra: use correct modem type when creating bearer
MMBroadbandModemSierraIcera is not a subclass of
MMBroadbandModemSierra, so we cannot cast it to that type when
passing it to bearer creation.  Luckily the bearer doesn't
care, so just downgrade the type to MMBroadbandModem.
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
Aleksander Morgado 0126eb6311 sierra: PCSTATE=0 needs to be treated as low-power mode
OFF only applies to a real shutdown, where the modem no longer replies.
2014-05-05 20:30:45 +02:00
Aleksander Morgado d4dfd661b9 port-serial-at: use GIO Async API like methods 2014-02-13 13:40:21 +01:00
Aleksander Morgado 6f235b9948 ports: rename 'MMAtSerialPort' to 'MMPortSerialAt' 2014-02-13 13:40:01 +01:00
Aleksander Morgado 95249239a2 sierra: fix leaked 'GStrv' with CDMA modems 2014-01-25 20:01:32 +01:00
Aleksander Morgado 85d5d96824 port: remove 'carrier-detect' property
It is no longer used since commit 736aa0d2d.
2013-11-15 17:25:33 +01:00
Ben Chan b5ef861d12 modem-helpers,sim: auto-detect if ICCID response is character swapped
This patch modifies mm_3gpp_parse_iccid() to auto-detect if an ICCID
response is character swapped or not by comparsing the major industry
identifier part of the ICCID response to the known value (89) for
telecommunication purposes. This addresses the issue where the same AT
command (e.g. AT^ICCID used by the huawei plugin) does not report ICCID
in a consistent format.
2013-09-26 20:23:51 +02:00
Dan Williams 11a7e3dfdf core: add helper for parsing and validating the ICCID 2013-09-10 09:42:36 +02:00
Aleksander Morgado 1c67d050cb api,introspection: merge 'AllowedModes' and 'SupportedMode' into 'CurrentModes'
We now have a single 'CurrentModes' property which contains both values in a
tuple with signature "(uu)".

Also, rename 'SetAllowedModes()' to 'SetCurrentModes()', and update the list of
arguments expected to have a single "(uu)" tuple.
2013-06-05 19:15:14 +02:00
Aleksander Morgado 45ceba7692 api,introspection: 'SupportedModes' is now a list of possible combinations
Instead of just a mask of MMModemMode values, we now provide a list of the
allowed and preferred mode combinations supported by the modem. E.g.:

$> sudo mmcli -m 0
  -------------------------
  Modes    |      supported: 'allowed: 2g; preferred: none
           |                  allowed: 3g; preferred: none
           |                  allowed: 2g, 3g; preferred: none
           |                  allowed: 2g, 3g; preferred: 2g
           |                  allowed: 2g, 3g; preferred: 3g
           |                  allowed: 4g; preferred: none
           |                  allowed: 2g, 3g, 4g; preferred: none'
2013-06-05 19:15:14 +02:00
Ben Chan 2eee2e48ba sierra: remove comparison of unsigned expression >= 0
This patch removes an unnecessary check of unsigned expression >= 0,
which also fixes the following clang warnings:

sierra/mm-broadband-modem-sierra.c:570:18: error: comparison of
unsigned expression >= 0 is always true
[-Werror,-Wtautological-compare]
            mode >= 0 &&
            ~~~~ ^  ~

Bug reported on https://code.google.com/p/chromium/issues/detail?id=235989
Patched by Yunlian Jiang <yunlian@chromium.org>
2013-05-06 09:36:53 +02:00
Dan Williams 2e8866c8b7 time: normalize GetNetworkTime() response to local time + timezone info (bgo #697372)
The GetNetworkTime() response is defined to be an ISO8601 string, which
is in turn defined to be in local time.  Make sure that's reflected in
the documentation, and append the timezone offset to UTC where we have
it.

Oddly, Icera devices return their time info in UTC with an offset to
the local timezone, so we have to jump through some hoops there to
convert the response to localtime based on the reported offset.

Some additional fixes by Aleksander Morgado <aleksander@lanedo.com>.

https://bugzilla.gnome.org/show_bug.cgi?id=697372
2013-04-25 15:14:14 -05:00
Dan Williams cabf53179e sierra: handle probing ERROR response better
The USB305 (Icera-based) apparently has a port that replies to everything
with ERROR, and that port is unusable.  Make sure it's ignored, otherwise
MM may claim it as the primary AT port since it technically speaks AT.
2013-04-25 09:18:53 -05:00
Aleksander Morgado 77d096bdac sierra: ensure error is set when !SELRAT response parser doesn't match 2013-04-25 09:36:51 +02:00
Aleksander Morgado 56387bb79c sierra: allow MBIM modems handled by the plugin 2013-04-17 15:19:50 +02:00