Merge cros/upstream to cros/main - 1.23.4-dev

Part of an uprev that contains the following commits:

" 6a8797927 build: unstable release version bump tp 1.23.4 (Aleksander Morgado)"
" 4d360e3b2 plugin: include MM_PLUGIN_ALLOWED_SINGLE_AT in port probing (Garfield Watkins)"
" 004450f9a base-modem: retry AT+CNUM a couple times if the SIM is busy (Dan Williams)"
" ded76a0ab base-modem-at: add optional wait before sending command in a sequence (Dan Williams)"
" b3708636b mtk: fix reported nw error in FM350 < 29.22.13 (Aleksander Morgado)"
" 8dffb76f1 broadband-modem-mbim: allow normalizing the nw error value (Aleksander Morgado)"
" b313a603a mtk: remove IP packet filters during connection in FM350 < 29.23.06 (Aleksander Morgado)"
" 2f306e8e7 mtk: multiplex support only available in FM350 >= 29.23.06 (Aleksander Morgado)"
" 2f5ebfade iface-modem: create bearer list after loading revision (Aleksander Morgado)"
" 1373ca7e5 mtk: expect async SLAAC only in FM350 >= 29.23.06 (Aleksander Morgado)"
" f31f42dda bearer-mbim: support async IP configuration indications reporting SLAAC result (Aleksander Morgado)"
" b0add8c03 broadband-modem-mbim: request IP configuration indications (Aleksander Morgado)"
" 1befca457 cinterion: disable periodic signal checks in MBIM modems (Aleksander Morgado)"
" 91828ecc6 quectel: disable periodic signal checks in MBIM modems (Aleksander Morgado)"
" 3c35212f7 telit: disable periodic signal checks in MBIM modems (Aleksander Morgado)"
" 29d237bcb .gitignore: ignore Visual Studio Code directory and file (Yegor Yefremov)"
" ef126455b plugins: mtk: Added MT6229 USB modem support. (RICCIARDI-Adrien)"
" b61adb162 iface-modem: also run disable on failed low power mode update (Aleksander Morgado)"
" f6795754b broadband-modem-qmi: change operator description priority (Florian Eckert)"
" 521349d5f broadband-modem-qmi: add debug messages on operator description set (Florian Eckert)"
" 778d953f5 broadband-modem-mbim: use MBIMEx to list profiles unconditionally if available (Aleksander Morgado)"
" c80e92e4a broadband-modem-mbim: don't ignore profiles with "none" context type (Aleksander Morgado)"
" 2ac4bda84 libmm-glib,3gpp-profile: fix loading roaming allowance in DBus dictionary (Aleksander Morgado)"
" 06eafc8c1 libmm-glib,3gpp-profile: fix loading profile source in DBus dictionary (Aleksander Morgado)"
" 97ce69fe9 broadband-modem-mbim: fix processing IP type from MbimProvisionedContextElementV2 (Aleksander Morgado)"
" a729a92e1 build: fix fs.copyfile usage for meson versions 0.64/0.64.1 (Yegor Yefremov)"

BUG=b:325923333
FIXED=b:325923333

TEST=CQ passes

Change-Id: I4a5deab14b9aac08c63b34f82c29733aa26e32a1
tree: e373e8c02955cb29b30d2f965f16c1a174f76603
  1. build-aux/
  2. cli/
  3. data/
  4. docs/
  5. examples/
  6. include/
  7. introspection/
  8. libmm-glib/
  9. libqcdm/
  10. po/
  11. src/
  12. test/
  13. tools/
  14. vapi/
  15. .editorconfig
  16. .gitignore
  17. .gitlab-ci.yml
  18. AUTHORS
  19. COPYING
  20. COPYING.LIB
  21. DIR_METADATA
  22. meson.build
  23. meson_options.txt
  24. NEWS
  25. OWNERS
  26. PRESUBMIT.cfg
  27. README.chromium
  28. README.md
  29. RELEASING
  30. unblocked_terms.txt
README.md

ModemManager

ModemManager provides a unified high level API for communicating with mobile broadband modems, regardless of the protocol used to communicate with the actual device (Generic AT, vendor-specific AT, QCDM, QMI, MBIM...).

Using

ModemManager is a system daemon and is not meant to be used directly from the command line. However, since it provides a DBus API, it is possible to use ‘dbus-send’ commands or the new ‘mmcli’ command line interface to control it from the terminal. The devices are queried from udev and automatically updated based on hardware events, although a manual re-scan can also be requested to look for RS232 modems.

Implementation

ModemManager is a DBus system bus activated service (meaning it's started automatically when a request arrives). It is written in C, using glib and gio. Several GInterfaces specify different features that the modems support, including the generic MMIfaceModem3gpp and MMIfaceModemCdma which provide basic operations for 3GPP (GSM, UMTS, LTE) or CDMA (CDMA1x, EV-DO) modems. If a given feature is not available in the modem, the specific interface will not be exported in DBus.

Plugins

Plugins are loaded on startup, and must implement the MMPlugin interface. It consists of a couple of methods which tell the daemon whether the plugin supports a port and to create custom MMBroadbandModem implementations. It most likely makes sense to derive custom modem implementations from one of the generic classes and just add (or override) operations which are not standard. There are multiple fully working plugins in the plugins/ directory that can be used as an example for writing new plugins. Writing new plugins is highly encouraged! The plugin API is open for changes, so if you're writing a plugin and need to add or change some public method, feel free to suggest it!

License

The ModemManager and mmcli binaries are both GPLv2+. The libmm-glib library is LGPLv2+.

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms, which you can find in the following link: https://www.freedesktop.org/wiki/CodeOfConduct

CoC issues may be raised to the project maintainers at the following address: modemmanager-devel-owner@lists.freedesktop.org