Commit Graph

5769 Commits

Author SHA1 Message Date
Ben Chan
ce7b3a7bb0 broadband-modem-qmi: port oma_start_client_initiated_session to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
311859d60f broadband-modem-qmi: port oma_accept_network_initiated_session to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
76bdaaba3e broadband-modem-qmi: port oma_load_features to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
f330ffdaa9 broadband-modem-qmi: port oma_setup to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
3455b01b57 broadband-modem-qmi: port modem_cdma_load_activation_state to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
e09e4692dc broadband-modem-qmi: port modem_cdma_run_registration_checks to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
d73f431987 broadband-modem-qmi: port modem_3gpp_{enable,disable}_unsolicited_registration_events to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
478232dc05 broadband-modem-qmi: port modem_3gpp_run_registration_checks to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
b6de1ad22e broadband-modem-qmi: port modem_3gpp_register_in_network to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
a3123cadd8 broadband-modem-qmi: port modem_3gpp_scan_networks to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
f3b2deadda broadband-modem-qmi: port modem_3gpp_load_enabled_facility_locks to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
8ad01d31ac broadband-modem-qmi: port common_setup_cleanup_unsolicited_registration_events to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
df0d2f9552 broadband-modem-qmi: port common_setup_cleanup_messaging_unsolicited_events to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
85eb5bdcbd broadband-modem-qmi: port common_setup_cleanup_unsolicited_events to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
baefe53ab9 broadband-modem-qmi: port common_enable_disable_unsolicited_events to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
c0669e98ae broadband-modem-qmi: port set_current_capabilities to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
bdc3729cba broadband-modem-qmi: port set_current_bands to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
4a53e7cc39 broadband-modem-qmi: port set_current_modes to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
7d8f0600e6 broadband-modem-qmi: port signal_load_values to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
8047f54083 broadband-modem-qmi: port load_power_state to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
0502fe042b broadband-modem-qmi: port load_signal_quality to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
77a875a1b0 broadband-modem-qmi: port load_current_modes to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
51ede979bf broadband-modem-qmi: port modem_load_equipment_identifier to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
6b14a1cf1b broadband-modem-qmi: port modem_load_current_bands to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
834674b21c broadband-modem-qmi: port modem_load_supported_bands to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
59c8ba8642 broadband-modem-qmi: port modem_load_own_numbers to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
4dc5652520 broadband-modem-qmi: port modem_load_hardware_revision to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
2f8a041122 broadband-modem-qmi: port modem_load_revision to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
3c17065636 broadband-modem-qmi: port modem_load_model to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
0bf2800d05 broadband-modem-qmi: port modem_load_manufacturer to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
dba8702952 broadband-modem-qmi: port modem_load_supported_capabilities to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
3e374e228a broadband-modem-qmi: port modem_load_current_capabilities to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
31c0da2825 broadband-modem-qmi: port common_power_up_down_off to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
71d21cba02 broadband-modem-qmi: port power_cycle to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
f52264d78a broadband-modem-qmi: port modem_reset to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
15ffa69d72 broadband-modem-qmi: port modem_factory_reset to use GTask 2018-06-02 17:56:59 +02:00
Ben Chan
641e1b8a43 broadband-modem-qmi: add a temporary assure_qmi_client() helper
ensure_qmi_client() uses g_simple_async_report_take_gerror_in_idle(),
which can't be mixed with GTask. To allow migrating remaining
MMBroadbandModemQmi code to use GTask in a series of smaller patches,
this patch adds a temporary assure_qmi_client() helper, which mimics
ensure_qmi_client() but uses g_task_report_new_error(). Once all the
MMBroadbandModemQmi code is migrated to use GTask, we will drop the old
ensure_qmi_client() and renames assure_qmi_client() back to
ensure_qmi_client().
2018-06-02 17:56:59 +02:00
Aleksander Morgado
0e770b13f8 base-modem: setup a maximum number of timeouts also for USB modems
We have a maximum number of timeouts that could be enabled for TTY
modems, e.g. to detect whether the modem is available in the RS232
port or has been unplugged. This was required because RS232 modems
aren't notified via udev, so there was no other way to check presence
of the modem.

But, the same kind of checks may be used in order to detect failed
broken modems. If we have a modem that gets into an unstable state
where no AT port command goes through and all get timed out, we can
definitely flag the modem as invalid and get rid of it. If we don't do
this, we would end up leaving the modem exposed and available for
users of the API, but in a non-working state.

    ....
    <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (registered -> connecting)
    <debug> Launching 3GPP connection attempt with APN 'telefonica.es'
    <debug> Looking for best CID...
    <debug> (ttyACM2) device open count is 2 (open)
    <debug> (ttyACM2): --> 'AT+CGDCONT?<CR>'
    <debug> Unexpected +CGDCONT? error: 'Serial command timed out'
    <warn>  (tty/ttyACM2) at port timed out 9 consecutive times
    <debug> Using empty CID 1 with PDP type 'ipv4'
    <debug> (ttyACM2) device open count is 3 (open)
    <debug> (ttyACM2) device open count is 2 (close)
    <debug> (ttyACM2): --> 'AT+CGDCONT=1,"IP","telefonica.es"<CR>'
    <warn>  Couldn't initialize PDP context with our APN: 'Serial command timed out'
    <debug> Couldn't connect bearer '/org/freedesktop/ModemManager1/Bearer/0': 'Serial command timed out'
    <info>  Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connecting -> registered)
    <debug> Couldn't connect bearer: 'Serial command timed out'
    <debug> (ttyACM2) device open count is 1 (close)
    <error> (tty/ttyACM2) at port timed out 10 consecutive times, marking modem '/org/freedesktop/ModemManager1/Modem/0' as invalid
    <debug> Removing from DBus bearer at '/org/freedesktop/ModemManager1/Bearer/0'
    <debug> [device /sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.5] unexported modem from path '/org/freedesktop/ModemManager1/Modem/0'
    <debug> Periodic signal checks disabled
    <debug> (ttyACM2) device open count is 0 (close)
    <debug> (ttyACM2) closing serial port...
    <debug> (ttyACM2) serial port closed
    <debug> (ttyACM2) forced to close port
    <debug> Modem (u-blox) '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.5' completely disposed
2018-06-02 17:54:54 +02:00
Aleksander Morgado
b4748ba674 build: post release version bump to 1.9.0 2018-06-02 17:46:48 +02:00
Aleksander Morgado
c187c5fef5 release: bump version to 1.8.0 2018-06-02 17:33:53 +02:00
Aleksander Morgado
01a5d8a294 NEWS: update for 1.8 2018-06-02 17:33:53 +02:00
Aleksander Morgado
c07382a486 udev: add tags also on bind action
When a new USB device is hotplugged, e.g. a USB<->RS232 converter that
exposes a single ttyUSB0, these udev events happen:

  add  /devices/pci0000:00/0000:00:14.0/usb2/2-1 (usb/usb-device)
  add  /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0 (usb/usb-interface)
  add  /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/ttyUSB0 (usb-serial)
  add  /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/ttyUSB0/tty/ttyUSB0 (tty)
  bind /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/ttyUSB0 (usb-serial)
  bind /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0 (usb/usb-interface)
  bind /devices/pci0000:00/0000:00:14.0/usb2/2-1 (usb/usb-device)

Our udev rules in MM only added tags in the 'add' events, and it looks
like the only ones 'persistent' after this sequence are those of the
last event happening on the specific path.

This meant that all TTY subsystem rules (e.g. ID_MM_CANDIDATE) would
be stored for later check (e.g. if ModemManager is started after these
rules have been applied), which was ok. "udevadm info -p ..." would
show these tags correctly always.

But this also meant that the 'bind' udev event happening for the USB
device didn't get any of our device-specific tags, and so we would be
missing them (e.g. ID_MM_DEVICE_MANUAL_SCAN_ONLY) if MM is started
after the last event has happened. "udevadm info -p ..." would
not show these tags.

Modify all our rules to also run at the 'bind' events.

See, for context:
  https://github.com/systemd/systemd/issues/8221
2018-06-02 16:54:37 +02:00
Aleksander Morgado
4bc7d6862d u-blox: wait 20s before probing TOBY-L200 ports
https://bugs.freedesktop.org/show_bug.cgi?id=106623
2018-06-02 16:51:07 +02:00
Aleksander Morgado
6c37488d4e broadband-modem-mbim: minor function renames for SMS read logic
There are two ways to report new received SMS messages:
  * For class 0 (flash) messages, MBIM_CID_SMS_READ are sent. The SMS
  comes in the MBIM indication itself.
  * For non-class 0 (standard) messages, a
  MBIM_CID_SMS_MESSAGE_STORE_STATUS notifications are sent, the SMS is
  stored and must be read with an additional MBIM request specifying
  storage index.

The names of the functions we had implied the opposite, we were
assuming flash/alert messages were reported via
MBIM_CID_SMS_MESSAGE_STORE_STATUS, not via MBIM_CID_SMS_READ.
2018-05-27 11:23:56 +02:00
Aleksander Morgado
fd3a4d8d8b filter: pci and sdio ports under the platform driver filter
Do not automatically probe serial ports under the 'pci' or 'sdio'
platform drivers unless explicitly tagged with
ID_MM_PLATFORM_DRIVER_PROBE.

  $ realpath /sys/class/tty/ttyS0/
  /sys/devices/pci0000:00/0000:00:16.3/tty/ttyS0
  $ basename $(realpath /sys/devices/pci0000:00/0000:00:16.3/subsystem)
  pci
2018-05-27 11:06:00 +02:00
Aleksander Morgado
38f9510a98 iface-modem-time: don't hold a ref while waiting to be registered
The logic implementing the network timezone loading was holding a
strong reference to the modem (inside the GTask) while waiting to
be registered.

This was triggering some possible memory leaks as the modem object
could have been left around even after the modem was disconnected.
E.g. if the modem booted without antennas plugged in, it was never
getting registered, and if we unplugged it right away in that state,
the network timezone logic would have left a modem reference around
without disposing it.

This issue, combined with e.g. other interfaces relying on disposing
its own logic with the last object reference (e.g. Signal interface
sets up its logic in a context bound to the lifetime of the object)
would mean that a lot of different logic blocks were kept running even
after the modem device was unplugged from the system.

We avoid this issue by making sure that no new additional reference is
taken by the logic in charge of updating the network timezone. We just
make the timezone update context be bound to the lifetime of the
object, as other interfaces do.

While doing this, we also remove the logic in charge of "cancelling"
the context, as it isn't needed. If the logic needs to be cancelled,
we would just remove any configured timeout, which is enough.

As part of the changes, the logic has also been improved so that the
network timezone isn't only updated the first time the modem gets
registered. If the modem gets unregistered and re-registered, we would
reload the network timezone information.
2018-05-27 11:01:42 +02:00
Dan Williams
67ecad51e1 filter: add 'nozomi' and 'qcaux' drivers to MM_FILTER_RULE_TTY_DRIVER
nozomi and qcaux only drive modems and thus should be included
in this filter rule.  Allows nozomi/qcaux devices to work
automatically with strict filter mode.
2018-05-24 10:00:10 -05:00
Dan Williams
aecc3e99a0 include: fix up whitespace 2018-05-24 10:00:10 -05:00
Dan Williams
b074a2b4a4 include: add more 3GPP errors
From 3GPP TS 27.007 version 11.6.0 Release 11, sections 9.2.1,
9.2.2.1, 9.2.2.2, and 9.2.2.3.
2018-05-22 12:03:28 -05:00
Matthew Stanger
ac5d068e37 broadband-modem: increase signal_quality_cind() poll CIND timeout
Gemalto's PLS8 may timeout on 3 second CIND query. Debug log shows
5 seconds should suffice.
2018-05-20 08:44:09 +02:00