Commit Graph

7259 Commits

Author SHA1 Message Date
Aleksander Morgado
8b590721df charsets: don't allow quoting in byte_array_append()
There's no point in adding a quoting option to this method; if the
caller needs the appended string quoted, it should quote it before
passing it to this method.

It was nowhere used anyway.
2021-02-23 11:35:11 +00:00
Aleksander Morgado
38a4a9c842 charsets: remove HEX charset type
This is no real charset, it is the fake one we used to represent a
UCS2 hex-encoded string.
2021-02-23 11:35:10 +00:00
Aleksander Morgado
a025e83e5a charsets: define charset enum explicitly as flags 2021-02-23 11:35:10 +00:00
Aleksander Morgado
19e5d5f926 build: post-release version bump to 1.17.0 2021-02-23 12:20:53 +01:00
Aleksander Morgado
7a5a49b753 release: bump version to 1.16.0 2021-02-23 11:35:50 +01:00
Aleksander Morgado
7a5eae2a36 NEWS: update for 1.16.0 2021-02-23 11:22:50 +01:00
Aleksander Morgado
bbd3638d12 build: require libqmi 1.28.0 2021-02-23 11:22:50 +01:00
Aleksander Morgado
a546201470 bearer-mbim: IP type may be reported as deactivated and still have IP settings
If we were requesting for IPv4v6 and we only got IPv4 reported as
activated, we would right away ignore the IPv6 bits, even if we
received IPv6 settings later on when querying for them. Change that,
so that if an IP address of a given type is received, we assume the
corresponding context was really activated even if the modem didn't
report it in the connect set response.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/320
2021-02-23 09:29:29 +01:00
Aleksander Morgado
29d9dc7e0c api,introspection: flag as DEPRECATED the 'number' bearer setting
This setting is unused since some releases ago, and the corresponding
libmm-glib methods were already flagged as deprecated. Let's add an
explicit mention to this deprecation on the DBus API itself.
2021-02-17 23:53:51 +01:00
Aleksander Morgado
6dd5ced86d libmm-glib,simple-connect-properties: add missing APIs to get/set RM protocol
Probably not a big deal, since no one has asked for these in the past
years, but let's add them for completeness with the DBus API.
2021-02-17 23:41:24 +01:00
Aleksander Morgado
c4f215c9cb libmm-glib,bearer-properties: consume 'rm-protocol' setting 2021-02-17 23:40:59 +01:00
Yegor Yefremov
69926d9335 examples: modem-watcher: get rid of global variables
Move the code into the main() routine and pass main_loop as
a parameter to the signal handler.
2021-02-15 21:10:34 +01:00
Yegor Yefremov
e685ce9ce5 examples: ModemWatcher: convert comments in the doc strings
Move comments under the class and method definitions.

Also rework boolean handling.
2021-02-15 21:10:26 +01:00
Yaron Shahrabani
8bf1869f3c po: add Hebrew translation 2021-02-15 14:11:19 +00:00
Aleksander Morgado
b2f9771b85 broadband-modem-mbim: detect 5G support in custom data class
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/301
2021-02-15 00:43:15 +01:00
Yegor Yefremov
3a32409000 examples: network-scan: enable modem before the network scan
Otherwise we get the following exception:

Traceback (most recent call last):
  File "/root/network-scan-python", line 57, in <module>
    networks = modem3gpp.scan_sync()
gi.repository.GLib.Error: mm_core_error_quark: GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: Cannot scan networks: not enabled yet (8)
2021-02-14 23:35:54 +01:00
Yegor Yefremov
c7d0defdde examples: network-scan: resolve PEP8 issues
Use autopep8 utility to resolve issues like spaces before brackets
and wrong hanging indentation.

Also treat objects like boolean variables to check whether they are
None or not.
2021-02-14 23:35:49 +01:00
Aleksander Morgado
f3f05f397a device: avoid trying to remove source multiple times
ModemManager[115879]: <debug> [1613341789.760031] [modem3] completely disposed

   (ModemManager:115879): GLib-CRITICAL **: 23:29:49.760: Source ID 2379 was not found when attempting to remove it

   Thread 1 "ModemManager" received signal SIGTRAP, Trace/breakpoint trap.
   0x00007ffff774b343 in g_logv () from /usr/lib/libglib-2.0.so.0
   (gdb)
   (gdb) bt
   #0  0x00007ffff774b343 in g_logv () at /usr/lib/libglib-2.0.so.0
   #1  0x00007ffff774b5c0 in g_log () at /usr/lib/libglib-2.0.so.0
   #2  0x00007ffff7741c9e in g_source_remove () at /usr/lib/libglib-2.0.so.0
   #3  0x00005555555aad02 in dispose (object=0x555555831260) at mm-device.c:802
   #4  0x00007ffff7843755 in g_object_unref () at /usr/lib/libgobject-2.0.so.0
   #5  0x00005555555a5107 in glib_autoptr_clear_MMDevice (_ptr=0x555555831260) at mm-device.h:63
   #6  0x00005555555a5125 in glib_autoptr_cleanup_MMDevice (_ptr=0x7fffffffe090) at mm-device.h:63
   #7  0x00005555555a59ab in device_removed (self=0x555555769220, subsystem=0x55555577dc50 "tty", name=0x555555869a40 "ttyUSB3") at mm-base-manager.c:237
   #8  0x00005555555a620d in handle_uevent (self=0x555555769220, action=0x5555558987b0 "remove", device=0x555555893840) at mm-base-manager.c:445
   #9  0x00007ffff7381acd in  () at /usr/lib/libffi.so.7
   #10 0x00007ffff738103a in  () at /usr/lib/libffi.so.7
   #11 0x00007ffff783c8fe in g_cclosure_marshal_generic () at /usr/lib/libgobject-2.0.so.0
   #12 0x00007ffff7837072 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
   #13 0x00007ffff785fa85 in  () at /usr/lib/libgobject-2.0.so.0
   #14 0x00007ffff78535dd in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
   #15 0x00007ffff7853b40 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
   #16 0x00007ffff7e792aa in  () at /usr/lib/libgudev-1.0.so.0
   #17 0x00007ffff7742b84 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
   #18 0x00007ffff7796c21 in  () at /usr/lib/libglib-2.0.so.0
   #19 0x00007ffff77420d3 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
   #20 0x00005555555a1df4 in main (argc=2, argv=0x7fffffffea88) at main.c:213
2021-02-14 23:34:36 +01:00
Dylan Van Assche
7159b8e27a context: add test-no-suspend-resume cli parameter
Disables suspend/resume support at runtime.
This is useful for modems which are never turned off
or suspended when the host suspends.
2021-02-14 12:27:42 +00:00
Aleksander Morgado
12329ac788 examples,python: ignore scan operation in modems without 3GPP interface
Traceback (most recent call last):
    File "/home/aleksander/Development/foss/ModemManager/examples/network-scan-python/./network-scan-python", line 46, in <module>
      modem3gpp.set_default_timeout(300000)
  AttributeError: 'NoneType' object has no attribute 'set_default_timeout'
2021-02-13 11:24:24 +01:00
Aleksander Morgado
dd3310132f examples,python: fix undefined NameError in modem watcher example
$ ./modem-watcher-python
  [ModemWatcher] ModemManager 1.15.0 service is available in bus
  [ModemWatcher] QUALCOMM INCORPORATED (0) modem managed by ModemManager [863974040050058]: /org/freedesktop/ModemManager1/Modem/0
  [ModemWatcher] Sierra Wireless Inc. (Sierra Wireless EM7345 4G LTE) modem managed by ModemManager [013937003110648]: /org/freedesktop/ModemManager1/Modem/1
  Traceback (most recent call last):
    File "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/./modem-watcher-python", line 35, in <module>
      watcher = ModemWatcher.ModemWatcher()
    File "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/ModemWatcher.py", line 48, in __init__
      self.on_name_owner(self.manager, None)
    File "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/ModemWatcher.py", line 85, in on_name_owner
      self.set_available()
    File "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/ModemWatcher.py", line 64, in set_available
      self.on_object_added(self.manager, obj)
    File "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/ModemWatcher.py", line 101, in on_object_added
      modem_index(obj.get_object_path()))
  NameError: name 'modem_index' is not defined
2021-02-13 11:12:49 +01:00
Yegor Yefremov
16d1cf3318 examples: rework imports
Remove unused imports and fix import sorting using isort utility.
2021-02-13 11:09:59 +01:00
Aleksander Morgado
6107774bb2 filter: add missing reference to rpmsg filter 2021-02-06 15:32:11 +01:00
Aleksander Morgado
8838546631 README: add CoC info 2021-02-05 14:56:59 +01:00
Andrew Lassalle
e732a9afcc broadband-modem-qmi: remove unused variables 2021-02-03 09:31:28 -08:00
Andrew Lassalle
52b44aeb49 cinterion: remove unused variables 2021-02-03 09:31:28 -08:00
Lukas Senger
66010ed17e simtech: fix updating bitmask during gps disabling
During disabling of gps sources the bitmask that keeps track of them is
updated incorrectly. Instead of removing the current source, all other
sources are removed from the mask.

One problem that arises from this is, that when you enable GPS after it
has been disabled completely (e.g. by disabling all GPS sources), the
code will not send a "+CGPS=1,1" command because it incorrectly assumes
that GPS is still enabled on the device.
2021-01-18 09:15:08 +01:00
Aleksander Morgado
268bf4f98a core: update copyright years to 2021 2021-01-17 10:33:45 +01:00
Aleksander Morgado
6c0c67d6f0 doc: skip running gtkdoc-rebase on local install step
We can leave the relative paths to other books (e.g. '../glib' or
'../ModemManager') because running gtkdoc-rebase seems to be broken
since the 1.29 release, see:

  https://gitlab.gnome.org/GNOME/gtk-doc/-/issues/138
2021-01-16 17:57:48 +01:00
Aleksander Morgado
3826795228 docs: add 'online-location' references
So that the gtkdoc-rebase step fixes the URLs to contain the correct
links; e.g.:

   $ make dist V=s
   make[8]: Entering directory '/home/aleksander/Development/foss/ModemManager/docs/reference/libmm-glib'
   make  \
     top_distdir="../../../ModemManager-1.15.0" distdir="../../../ModemManager-1.15.0/docs/reference/libmm-glib" \
     dist-hook
   ../ModemManager/ -> https://www.freedesktop.org/software/ModemManager/doc/latest/ModemManager/ (914)
   ../gio/ -> https://developer.gnome.org/gio/unstable/ (2564)
   ../glib/ -> https://developer.gnome.org/glib/unstable/ (5534)
   ../gobject/ -> https://developer.gnome.org/gobject/unstable/ (499)
   make[8]: Leaving directory '/home/aleksander/Development/foss/ModemManager/docs/reference/libmm-glib'

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/298
2021-01-16 17:56:15 +01:00
Aleksander Morgado
d1bc679365 build: add new RELEASING doc explaining how releases are made 2021-01-16 15:37:35 +01:00
Louis-Alexis Eyraud
9c353cf6f0 zte: add 1 second delay after sim unlock to avoid IMSI reading issue
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/306

Signed-off-by: Louis-Alexis Eyraud <louis-alexis.eyraud@sigfox.com>
2021-01-16 10:27:58 +00:00
Frederic Martinsons
89cd1696c3 tools: add unit test for test-modemmanager-service.py
The tests spawn the service via GTestDBus framework and make
some test API call while checking libmm interface to verify
that informations are well propagated.

To be able to use the fresh built libmm typelib, I used a
wrapper script to set GI_TYPELIB_PATH (because DBus activation
process clean the environment so it is not possible to set
it directly in the file).

This requires also the install of libgirepository-dev and python3-gi
in the CI docker.

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2021-01-15 16:44:19 +00:00
Aleksander Morgado
17ea1dfa13 docs: add MMBearerPropertiesCmpFlags to ignored list 2021-01-15 11:38:08 +01:00
Aleksander Morgado
d12ab8a25a iface-modem: avoid leaking the MmGdbusModem when bearers are updated
See See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/302
2021-01-11 14:27:46 +01:00
Aleksander Morgado
102de14c15 telit: plug GPS data port leak
The _get_port_gps() returns a full reference, use _peek_port_gps()
instead.

See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/302
2021-01-11 14:13:28 +01:00
Timo Jyrinki
8f465d44a5 po: add Finnish translation
Translation by JRfi:
 https://l10n.gnome.org/vertimus/ModemManager/master/po/fi/
2021-01-08 21:23:25 +01:00
Andrew Lassalle
8ccd63ef64 test-sms-part-cdma: fix memory leak 2021-01-08 10:51:04 -08:00
Frederic Martinsons
18b72a046e mmcli: don't assume that mm_object_peek_modem or mm_object_get_modem return non null
This very peculiar case can happen when an intermediate initiliazition step
of a modem fails.

The ModemManager daemon should always expose the modem interface but let not
assume that in mmcli and protect these calls.

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2020-12-21 13:00:40 +00:00
Frederic Martinsons
2f53a08e5f iface-modem: don't consider charset setup failure as fatal.
On some modem (for example SORACOM SC-QGLC4-C1) , the character set setup
step fails with "Unknown error" when the SIM card is missing or locked.
This leads to not expose Modem interface and not being able to unlocked
the SIM.
We should not consider this step as fatal but just issue a warning to let
other steps continue (which will let modem in failed state anyway).

Closes #289

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2020-12-21 13:00:40 +00:00
Aleksander Morgado
3d4dd64dd0 broadband-modem-qmi: disable signal/access-tech polling if indications enabled
We can rely on QMI indications when the signal quality and access tech
changes happen, instead of doing explicit polling.

The modem will run the signal quality retrieval once, and then just
rely on indications, with polling disabled:

  ModemManager[278759]: <debug> [1606862198.230492] [modem1] signal strength (lte): -79 dBm
  ModemManager[278759]: <debug> [1606862198.230520] [modem1] signal strength: -79 dBm --> 55%
  ModemManager[278759]: <debug> [1606862198.230583] [modem1] access technology changed (unknown -> lte)
  ModemManager[278759]: <debug> [1606862198.230654] [modem1] signal quality updated (55)
  ModemManager[278759]: <debug> [1606862198.230675] [modem1] periodic signal quality and access technology checks not rescheduled: unneeded or unsupported
  ModemManager[278759]: <debug> [1606862198.230692] [modem1] periodic signal checks disabled

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/231
2020-12-21 12:05:57 +00:00
Aleksander Morgado
47f39c9e1a broadband-modem-qmi: fix disabling of signal strength events
Attempting to disable the signal strength events was failing because
the protocol handler expects a valid set of thresholds also during the
disabling. So, just pass always the thresholds.

  ModemManager[274522]: [/dev/cdc-wdm1] sent generic request (translated)...
  <<<<<< QMUX:
  <<<<<<   length  = 17
  <<<<<<   flags   = 0x00
  <<<<<<   service = "nas"
  <<<<<<   client  = 3
  <<<<<< QMI:
  <<<<<<   flags       = "none"
  <<<<<<   transaction = 7
  <<<<<<   tlv_length  = 5
  <<<<<<   message     = "Set Event Report" (0x0002)
  <<<<<< TLV:
  <<<<<<   type       = "Signal Strength Indicator" (0x10)
  <<<<<<   length     = 2
  <<<<<<   value      = 00:00
  <<<<<<   translated = [ report = 'no' thresholds = '{}' ]

  ModemManager[274522]: [/dev/cdc-wdm1] received generic response (translated)...
  <<<<<< QMUX:
  <<<<<<   length  = 19
  <<<<<<   flags   = 0x80
  <<<<<<   service = "nas"
  <<<<<<   client  = 3
  <<<<<< QMI:
  <<<<<<   flags       = "response"
  <<<<<<   transaction = 7
  <<<<<<   tlv_length  = 7
  <<<<<<   message     = "Set Event Report" (0x0002)
  <<<<<< TLV:
  <<<<<<   type       = "Result" (0x02)
  <<<<<<   length     = 4
  <<<<<<   value      = 01:00:08:00
  <<<<<<   translated = FAILURE: NoThresholdsProvided
2020-12-21 12:05:57 +00:00
Aleksander Morgado
da15958799 broadband-modem-qmi: reload initial EPS bearer on data system updates 2020-12-21 12:05:57 +00:00
Aleksander Morgado
2d9b62d23b iface-modem-3gpp: allow requesting the reload of the initial EPS bearer 2020-12-21 12:05:57 +00:00
Aleksander Morgado
5629f47a59 libmm-glib,bearer-properties: allow loose comparisons
When comparing bearer properties provided by the user versus loaded
from the modem, we shouldn't be very strict, e.g.:
 * Password or other fields may not be readable from the device.
 * Some fields may not apply at all (e.g. RM protocol for EPS bearers)
 * NULL strings could be assumed equal to empty strings.
 * If no explicit IP type specified, an IPv4 default may be assumed.
 * If no explicit allowed auth specified, 'none' default may be
   assumed.

These loose comparisons are applied when managing the initial EPS
bearer settings and status, and we keep the strict comparison only
during the connection attempt lookup of a bearer with certain
settings, as those bearer objects are all created in the same place
with the same rules.
2020-12-21 12:05:57 +00:00
Aleksander Morgado
c99cc9210e iface-modem-3gpp: log requested/updates initial EPS bearer settings 2020-12-21 12:05:57 +00:00
Aleksander Morgado
5613215db8 broadband-modem-qmi: implement initial EPS bearer settings loading and setting 2020-12-21 12:05:57 +00:00
Aleksander Morgado
527b4e3232 broadband-modem-qmi: implement initial EPS bearer info loading 2020-12-21 12:05:57 +00:00
Aleksander Morgado
295400688a broadband-modem-qmi: allocate a generic WDS client
For generic WDS operations not tied to any connection attempt.
2020-12-21 12:05:57 +00:00
Aleksander Morgado
7b52efda34 build: require libqmi 1.27.3 to support initial EPS management 2020-12-21 12:05:57 +00:00