aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Trudel-Lapierre <mathieu-tl@ubuntu.com>2013-12-20 15:35:26 -0500
committerGuido Günther <agx@sigxcpu.org>2014-02-05 08:38:48 +0100
commit728e8593184b050a9f32bf98a3fce7c2aa321bef (patch)
treee24fbad7fb39bc941a57ba6f2fdc6474780ff3de
parentff30c94ae57db55d37453d4dd28d9eef2cfc5685 (diff)
parentafc4b839a31c530d73b91aa2483795f185eb7e52 (diff)
Imported Debian patch 1.0.0-1debian/1.0.0-1
-rw-r--r--AUTHORS3
-rw-r--r--Makefile.am4
-rw-r--r--Makefile.in30
-rw-r--r--NEWS18
-rw-r--r--README44
-rw-r--r--aclocal.m4443
-rw-r--r--build-aux/Makefile.in20
-rw-r--r--cli/Makefile.in20
-rw-r--r--cli/mmcli-modem-messaging.c1
-rw-r--r--cli/mmcli-modem.c13
-rw-r--r--cli/mmcli-sms.c2
-rwxr-xr-xconfig.guess144
-rw-r--r--config.h.in20
-rwxr-xr-xconfigure1073
-rw-r--r--configure.ac185
-rw-r--r--data/Makefile.am23
-rw-r--r--data/Makefile.in129
-rw-r--r--data/ModemManager.service.in1
-rw-r--r--data/org.freedesktop.ModemManager1.policy.in75
-rw-r--r--data/org.freedesktop.ModemManager1.policy.in.in (renamed from data/org.freedesktop.ModemManager1.policy)8
-rw-r--r--data/org.freedesktop.ModemManager1.service.in (renamed from data/org.freedesktop.ModemManager1.service.systemd.in)2
-rw-r--r--data/org.freedesktop.ModemManager1.service.nosystemd.in4
-rw-r--r--debian/changelog16
-rw-r--r--debian/control3
-rw-r--r--debian/libmm-glib0.symbols95
-rw-r--r--debian/patches/glib_fixes.patch20
-rw-r--r--debian/patches/series1
-rwxr-xr-xdebian/rules4
-rw-r--r--debian/watch2
-rwxr-xr-xdepcomp3
-rw-r--r--docs/Makefile.in20
-rw-r--r--docs/man/Makefile.in20
-rw-r--r--docs/man/mmcli.811
-rw-r--r--docs/reference/Makefile.in20
-rw-r--r--docs/reference/api/Makefile.am3
-rw-r--r--docs/reference/api/Makefile.in24
-rw-r--r--docs/reference/api/ModemManager-dbus-reference.xml8
-rw-r--r--docs/reference/api/ModemManager-docs.xml11
-rw-r--r--docs/reference/api/ModemManager-migration-reference.xml156
-rw-r--r--docs/reference/api/ModemManager-overview.xml38
-rw-r--r--docs/reference/api/ModemManager-sections.txt10
-rw-r--r--docs/reference/api/html/ModemManager-Errors.html8
-rw-r--r--docs/reference/api/html/ModemManager-Flags-and-Enumerations.html70
-rw-r--r--docs/reference/api/html/ModemManager-Version-checks.html122
-rw-r--r--docs/reference/api/html/ModemManager.devhelp251
-rw-r--r--docs/reference/api/html/ch02s02.html16
-rw-r--r--docs/reference/api/html/ch02s03.html2
-rw-r--r--docs/reference/api/html/ch03s02.html2
-rw-r--r--docs/reference/api/html/ch03s03.html2
-rw-r--r--docs/reference/api/html/ch03s04.html2
-rw-r--r--docs/reference/api/html/ch12.html65
-rw-r--r--docs/reference/api/html/ch12s02.html52
-rw-r--r--docs/reference/api/html/ch12s03.html70
-rw-r--r--docs/reference/api/html/ch12s04.html61
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html2
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html338
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html4
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html2
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html4
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html2
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html2
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html4
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html4
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html17
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html2
-rw-r--r--docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html6
-rw-r--r--docs/reference/api/html/index.html54
-rw-r--r--docs/reference/api/html/index.sgml29
-rw-r--r--docs/reference/api/html/ix01.html36
-rw-r--r--docs/reference/api/html/ref-common-types.html (renamed from docs/reference/api/html/ref-dbus-common-types.html)30
-rw-r--r--docs/reference/api/html/ref-dbus-bus-name.html4
-rw-r--r--docs/reference/api/html/ref-dbus-object-bearer.html6
-rw-r--r--docs/reference/api/html/ref-dbus-object-manager.html6
-rw-r--r--docs/reference/api/html/ref-dbus-object-modem.html5
-rw-r--r--docs/reference/api/html/ref-dbus-object-sim.html2
-rw-r--r--docs/reference/api/html/ref-dbus-object-sms.html2
-rw-r--r--docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html4
-rw-r--r--docs/reference/api/html/ref-dbus-standard-interfaces.html2
-rw-r--r--docs/reference/api/html/ref-dbus.html20
-rw-r--r--docs/reference/api/html/ref-migrating.html55
-rw-r--r--docs/reference/api/html/ref-overview-introduction.html38
-rw-r--r--docs/reference/api/html/ref-overview-modem-detection-and-setup.html12
-rw-r--r--docs/reference/api/html/ref-overview-modem-state-machine.html4
-rw-r--r--docs/reference/api/html/ref-overview-plugin-specific-modems.html4
-rw-r--r--docs/reference/api/html/ref-overview.html12
-rw-r--r--docs/reference/api/tmpl/mm-enums.sgml13
-rw-r--r--docs/reference/api/tmpl/mm-version.sgml (renamed from docs/reference/libmm-glib/tmpl/MmGdbusModemContactsSkeleton.sgml)26
-rw-r--r--docs/reference/libmm-glib/Makefile.in20
-rw-r--r--docs/reference/libmm-glib/html/MMLocationCdmaBs.html (renamed from docs/reference/libmm-glib/html/libmm-glib-MMLocationCdmaBs.html)47
-rw-r--r--docs/reference/libmm-glib/html/MMLocationGpsRaw.html4
-rw-r--r--docs/reference/libmm-glib/html/MMModem.html113
-rw-r--r--docs/reference/libmm-glib/html/MMModem3gpp.html4
-rw-r--r--docs/reference/libmm-glib/html/MMModem3gppUssd.html4
-rw-r--r--docs/reference/libmm-glib/html/MMModemCdma.html4
-rw-r--r--docs/reference/libmm-glib/html/MMModemLocation.html24
-rw-r--r--docs/reference/libmm-glib/html/MMSmsProperties.html2
-rw-r--r--docs/reference/libmm-glib/html/MMUnlockRetries.html4
-rw-r--r--docs/reference/libmm-glib/html/MmGdbusModem.html84
-rw-r--r--docs/reference/libmm-glib/html/MmGdbusModemContacts.html1426
-rw-r--r--docs/reference/libmm-glib/html/MmGdbusModemContactsProxy.html418
-rw-r--r--docs/reference/libmm-glib/html/MmGdbusModemContactsSkeleton.html104
-rw-r--r--docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html4
-rw-r--r--docs/reference/libmm-glib/html/MmGdbusModemSimple.html4
-rw-r--r--docs/reference/libmm-glib/html/MmGdbusObject.html74
-rw-r--r--docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html30
-rw-r--r--docs/reference/libmm-glib/html/api-index-full.html202
-rw-r--r--docs/reference/libmm-glib/html/ch01.html2
-rw-r--r--docs/reference/libmm-glib/html/ch02.html2
-rw-r--r--docs/reference/libmm-glib/html/ch03.html8
-rw-r--r--docs/reference/libmm-glib/html/ch03s02.html2
-rw-r--r--docs/reference/libmm-glib/html/ch03s03.html2
-rw-r--r--docs/reference/libmm-glib/html/ch03s04.html6
-rw-r--r--docs/reference/libmm-glib/html/ch03s05.html2
-rw-r--r--docs/reference/libmm-glib/html/ch03s06.html2
-rw-r--r--docs/reference/libmm-glib/html/ch04.html2
-rw-r--r--docs/reference/libmm-glib/html/ch05.html2
-rw-r--r--docs/reference/libmm-glib/html/ch06.html2
-rw-r--r--docs/reference/libmm-glib/html/index.html17
-rw-r--r--docs/reference/libmm-glib/html/index.sgml85
-rw-r--r--docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html26
-rw-r--r--docs/reference/libmm-glib/html/libmm-glib.devhelp262
-rw-r--r--docs/reference/libmm-glib/html/object-tree.html4
-rw-r--r--docs/reference/libmm-glib/html/pt01.html6
-rw-r--r--docs/reference/libmm-glib/html/pt02.html11
-rw-r--r--docs/reference/libmm-glib/libmm-glib-docs.xml4
-rw-r--r--docs/reference/libmm-glib/libmm-glib-sections.txt100
-rw-r--r--docs/reference/libmm-glib/libmm-glib.types32
-rw-r--r--docs/reference/libmm-glib/tmpl/MmGdbusModem.sgml24
-rw-r--r--docs/reference/libmm-glib/tmpl/MmGdbusModemContacts.sgml336
-rw-r--r--docs/reference/libmm-glib/tmpl/MmGdbusModemContactsProxy.sgml106
-rw-r--r--docs/reference/libmm-glib/tmpl/MmGdbusObject.sgml23
-rw-r--r--docs/reference/libmm-glib/tmpl/MmGdbusObjectSkeleton.sgml9
-rw-r--r--docs/reference/libmm-glib/tmpl/mm-enums-types.sgml9
-rw-r--r--docs/reference/libmm-glib/tmpl/mm-modem.sgml39
-rw-r--r--gtester.make91
-rw-r--r--include/Makefile.am4
-rw-r--r--include/Makefile.in30
-rw-r--r--include/ModemManager-enums.h22
-rw-r--r--include/ModemManager-names.h14
-rw-r--r--include/ModemManager-version.h69
-rw-r--r--include/ModemManager-version.h.in69
-rw-r--r--include/ModemManager.h9
-rw-r--r--introspection/Makefile.am2
-rw-r--r--introspection/Makefile.in22
-rw-r--r--introspection/all.xml3
-rw-r--r--introspection/org.freedesktop.ModemManager1.Bearer.xml9
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml9
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Location.xml8
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml8
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml8
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml8
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.ModemCdma.xml8
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Simple.xml8
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Time.xml7
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.xml18
-rw-r--r--introspection/org.freedesktop.ModemManager1.Sim.xml9
-rw-r--r--introspection/org.freedesktop.ModemManager1.Sms.xml9
-rw-r--r--introspection/org.freedesktop.ModemManager1.xml8
-rw-r--r--introspection/wip-org.freedesktop.ModemManager1.Modem.Contacts.xml (renamed from introspection/org.freedesktop.ModemManager1.Modem.Contacts.xml)8
-rw-r--r--libmm-glib/Makefile.am4
-rw-r--r--libmm-glib/Makefile.in43
-rw-r--r--libmm-glib/generated/Makefile.am3
-rw-r--r--libmm-glib/generated/Makefile.in23
-rw-r--r--libmm-glib/generated/mm-enums-types.h16
-rw-r--r--libmm-glib/generated/mm-gdbus-bearer.h2
-rw-r--r--libmm-glib/generated/mm-gdbus-manager.h2
-rw-r--r--libmm-glib/generated/mm-gdbus-modem.h330
-rw-r--r--libmm-glib/generated/mm-gdbus-sim.h2
-rw-r--r--libmm-glib/generated/mm-gdbus-sms.h2
-rw-r--r--libmm-glib/mm-common-helpers.c91
-rw-r--r--libmm-glib/mm-common-helpers.h10
-rw-r--r--libmm-glib/mm-firmware-properties.c2
-rw-r--r--libmm-glib/mm-helper-types.c41
-rw-r--r--libmm-glib/mm-helper-types.h16
-rw-r--r--libmm-glib/mm-manager.c2
-rw-r--r--libmm-glib/mm-modem.c123
-rw-r--r--libmm-glib/mm-modem.h7
-rw-r--r--libmm-glib/mm-sms-properties.c4
-rw-r--r--libmm-glib/tests/Makefile.am12
-rw-r--r--libmm-glib/tests/Makefile.in119
-rw-r--r--libqcdm/Makefile.in20
-rw-r--r--libqcdm/src/Makefile.in20
-rw-r--r--libqcdm/tests/Makefile.am15
-rw-r--r--libqcdm/tests/Makefile.in207
-rw-r--r--libqcdm/tests/test-qcdm.c5
-rw-r--r--libwmc/Makefile.in20
-rw-r--r--libwmc/src/Makefile.in20
-rw-r--r--libwmc/tests/Makefile.am18
-rw-r--r--libwmc/tests/Makefile.in181
-rw-r--r--libwmc/tests/test-wmc.c5
-rw-r--r--plugins/Makefile.am25
-rw-r--r--plugins/Makefile.in260
-rw-r--r--plugins/altair/mm-broadband-modem-altair-lte.c25
-rw-r--r--plugins/huawei/mm-broadband-bearer-huawei.c129
-rw-r--r--plugins/huawei/mm-modem-helpers-huawei.c100
-rw-r--r--plugins/huawei/mm-modem-helpers-huawei.h30
-rw-r--r--plugins/huawei/tests/test-modem-helpers-huawei.c103
-rw-r--r--plugins/icera/mm-broadband-modem-icera.c191
-rw-r--r--plugins/novatel/mm-broadband-modem-novatel-lte.c4
-rw-r--r--plugins/option/mm-broadband-bearer-hso.c1
-rw-r--r--plugins/option/mm-broadband-modem-hso.c34
-rw-r--r--plugins/x22x/77-mm-x22x-port-types.rules22
-rw-r--r--plugins/x22x/mm-plugin-x22x.c4
-rw-r--r--po/POTFILES.in2
-rw-r--r--po/POTFILES.skip1
-rw-r--r--src/Makefile.am2
-rw-r--r--src/Makefile.in46
-rw-r--r--src/mm-base-modem.c47
-rw-r--r--src/mm-base-modem.h6
-rw-r--r--src/mm-bearer-mbim.c14
-rw-r--r--src/mm-bearer-qmi.c79
-rw-r--r--src/mm-bearer.c16
-rw-r--r--src/mm-broadband-modem-mbim.c715
-rw-r--r--src/mm-broadband-modem-qmi.c318
-rw-r--r--src/mm-iface-modem.c146
-rw-r--r--src/mm-manager.c10
-rw-r--r--src/mm-modem-helpers-mbim.c19
-rw-r--r--src/mm-modem-helpers-mbim.h5
-rw-r--r--src/mm-modem-helpers-qmi.c6
-rw-r--r--src/mm-plugin-manager.c85
-rw-r--r--src/mm-port-probe.c2
-rw-r--r--src/mm-serial-parsers.c1
-rw-r--r--src/mm-serial-port.c16
-rw-r--r--src/mm-sms-mbim.c362
-rw-r--r--src/mm-sms-mbim.h49
-rw-r--r--src/mm-sms.c6
-rw-r--r--src/tests/Makefile.am18
-rw-r--r--src/tests/Makefile.in125
-rw-r--r--src/tests/test-charsets.c5
-rw-r--r--src/tests/test-modem-helpers-qmi.c2
-rw-r--r--src/tests/test-modem-helpers.c56
-rw-r--r--src/tests/test-qcdm-serial-port.c4
-rw-r--r--src/tests/test-sms-part.c2
-rw-r--r--test/Makefile.am30
-rw-r--r--test/Makefile.in169
-rwxr-xr-xtest/disable.py30
-rwxr-xr-xtest/disconnect.py30
-rwxr-xr-xtest/enable.py30
-rwxr-xr-xtest/info.py261
-rwxr-xr-xtest/list-modems.py54
-rwxr-xr-xtest/location.py60
-rw-r--r--test/mm-test-pppd-plugin.c264
-rwxr-xr-xtest/mm-test.py527
-rwxr-xr-xtest/mmcli-test-sms169
-rwxr-xr-xtest/modem-autoenable.py50
-rwxr-xr-xtest/scan.py89
-rwxr-xr-xtest/send-pin.py69
-rwxr-xr-xtest/sms-get.py80
-rwxr-xr-xtest/sms-send.py89
-rwxr-xr-xtest/ussd.py48
-rw-r--r--uml290/Makefile.in20
251 files changed, 5908 insertions, 8577 deletions
diff --git a/AUTHORS b/AUTHORS
index 12af19c..22d3b9e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,2 +1,3 @@
Tambet Ingo <tambet@gmail.com>
-
+Dan Williams <dcbw@redhat.com>
+Aleksander Morgado <aleksander@lanedo.com>
diff --git a/Makefile.am b/Makefile.am
index a8a7f67..59accbf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,7 +4,6 @@ SUBDIRS = . build-aux data include libqcdm libwmc libmm-glib src plugins cli int
DISTCHECK_CONFIGURE_FLAGS = \
--with-udev-base-dir="$$dc_install_base" \
--with-systemdsystemunitdir="$$dc_install_base/$(SYSTEMD_UNIT_DIR)" \
- --with-tests=yes \
--enable-gtk-doc=yes
INTLTOOL_FILES = \
@@ -20,6 +19,7 @@ DISTCLEANFILES = \
EXTRA_DIST = \
$(INTLTOOL_FILES) \
- autogen.sh
+ autogen.sh \
+ gtester.make
ACLOCAL_AMFLAGS = -I m4
diff --git a/Makefile.in b/Makefile.in
index 54c106a..3d80fbe 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -196,8 +196,8 @@ am__relativize = \
done; \
reldir="$$dir2"
GZIP_ENV = --best
-DIST_ARCHIVES = $(distdir).tar.bz2
-DIST_TARGETS = dist-bzip2
+DIST_ARCHIVES = $(distdir).tar.xz
+DIST_TARGETS = dist-xz
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -211,8 +211,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -236,7 +234,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -253,7 +250,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -285,14 +281,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -311,13 +313,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -390,7 +388,6 @@ SUBDIRS = . build-aux data include libqcdm libwmc libmm-glib src plugins cli int
DISTCHECK_CONFIGURE_FLAGS = \
--with-udev-base-dir="$$dc_install_base" \
--with-systemdsystemunitdir="$$dc_install_base/$(SYSTEMD_UNIT_DIR)" \
- --with-tests=yes \
--enable-gtk-doc=yes
INTLTOOL_FILES = \
@@ -406,7 +403,8 @@ DISTCLEANFILES = \
EXTRA_DIST = \
$(INTLTOOL_FILES) \
- autogen.sh
+ autogen.sh \
+ gtester.make
ACLOCAL_AMFLAGS = -I m4
all: config.h
@@ -645,6 +643,7 @@ distdir: $(DISTFILES)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__post_remove_distdir)
+
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
@@ -652,7 +651,6 @@ dist-bzip2: distdir
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__post_remove_distdir)
-
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
diff --git a/NEWS b/NEWS
index 4ba1aaa..5acc602 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,15 @@
-Overview of changes in ModemManager 0.8.0
+
+ModemManager 1.0.0
-------------------------------------------
-- More flexible D-Bus API that accounts for the capabilities of modern devices
-- Native support for Gobi and QMI-based Qualcomm devices via libqmi
-- Preliminary support for GPS-based Location Services with some devices
-- More complete messaging API
-- Fully-featured command-line client (mmcli)
+This is a new stable release of ModemManager. Notable changes include:
+* More flexible D-Bus API that accounts for the capabilities of modern devices
+* Native support for Gobi and QMI-based Qualcomm devices via libqmi
+* Native support for MBIM-based devices via libmbim
+* Preliminary support for GPS-based Location Services with some devices
+* More complete messaging API
+* New libmm-glib client library
+* New fully-featured command-line client (mmcli)
+* systemd integration
+* and much more...
diff --git a/README b/README
index a95b6db..6ad91ec 100644
--- a/README
+++ b/README
@@ -1,34 +1,32 @@
ModemManager.
-The problem ModemManager tries to solve is to provide a unified high level API
-for communicating with (mobile broadband) modems. While the basic commands are
-standardized, the more advanced operations (like signal quality monitoring
-while connected) varies a lot.
+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 DBus API, it is possible to use
-'dbus-send' command to control it from the terminal. There's an example
-program (tests/mm-test.py) that demonstrates the basic API usage.
+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. The devices are
-queried from udev and automatically updated based on hardware events. There's
-a GInterface (MMModem) that defines the modem interface and any device specific
-implementation must implement it. There are two generic MMModem implementations
-to support the basic operations (one for GSM, one for CDMA,) which are common
-for all cards.
+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 provice 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 MMModem 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's a
-fully working plugin in the plugins/ directory for Huawei cards that can be
+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!
-
-API.
-The 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!
+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!
diff --git a/aclocal.m4 b/aclocal.m4
index b9ce6aa..9ba7ff1 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.13.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
@@ -20,443 +20,6 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 1995-2002 Free Software Foundation, Inc.
-# Copyright (C) 2001-2003,2004 Red Hat, Inc.
-#
-# This file is free software, distributed under the terms of the GNU
-# General Public License. As a special exception to the GNU General
-# Public License, this file may be distributed as part of a program
-# that contains a configuration script generated by Autoconf, under
-# the same distribution terms as the rest of that program.
-#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-#
-# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
-#
-# Modified to never use included libintl.
-# Owen Taylor <otaylor@redhat.com>, 12/15/1998
-#
-# Major rework to remove unused code
-# Owen Taylor <otaylor@redhat.com>, 12/11/2002
-#
-# Added better handling of ALL_LINGUAS from GNU gettext version
-# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
-#
-# Modified to require ngettext
-# Matthias Clasen <mclasen@redhat.com> 08/06/2004
-#
-# We need this here as well, since someone might use autoconf-2.5x
-# to configure GLib then an older version to configure a package
-# using AM_GLIB_GNU_GETTEXT
-AC_PREREQ(2.53)
-
-dnl
-dnl We go to great lengths to make sure that aclocal won't
-dnl try to pull in the installed version of these macros
-dnl when running aclocal in the glib directory.
-dnl
-m4_copy([AC_DEFUN],[glib_DEFUN])
-m4_copy([AC_REQUIRE],[glib_REQUIRE])
-dnl
-dnl At the end, if we're not within glib, we'll define the public
-dnl definitions in terms of our private definitions.
-dnl
-
-# GLIB_LC_MESSAGES
-#--------------------
-glib_DEFUN([GLIB_LC_MESSAGES],
- [AC_CHECK_HEADERS([locale.h])
- if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your <locale.h> file defines LC_MESSAGES.])
- fi
- fi])
-
-# GLIB_PATH_PROG_WITH_TEST
-#----------------------------
-dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
-[# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- /*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word"
- break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-
-# GLIB_WITH_NLS
-#-----------------
-glib_DEFUN([GLIB_WITH_NLS],
- dnl NLS is obligatory
- [USE_NLS=yes
- AC_SUBST(USE_NLS)
-
- gt_cv_have_gettext=no
-
- CATOBJEXT=NONE
- XGETTEXT=:
- INTLLIBS=
-
- AC_CHECK_HEADER(libintl.h,
- [gt_cv_func_dgettext_libintl="no"
- libintl_extra_libs=""
-
- #
- # First check in libc
- #
- AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
- [AC_TRY_LINK([
-#include <libintl.h>
-],
- [return !ngettext ("","", 1)],
- gt_cv_func_ngettext_libc=yes,
- gt_cv_func_ngettext_libc=no)
- ])
-
- if test "$gt_cv_func_ngettext_libc" = "yes" ; then
- AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
- [AC_TRY_LINK([
-#include <libintl.h>
-],
- [return !dgettext ("","")],
- gt_cv_func_dgettext_libc=yes,
- gt_cv_func_dgettext_libc=no)
- ])
- fi
-
- if test "$gt_cv_func_ngettext_libc" = "yes" ; then
- AC_CHECK_FUNCS(bind_textdomain_codeset)
- fi
-
- #
- # If we don't have everything we want, check in libintl
- #
- if test "$gt_cv_func_dgettext_libc" != "yes" \
- || test "$gt_cv_func_ngettext_libc" != "yes" \
- || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
-
- AC_CHECK_LIB(intl, bindtextdomain,
- [AC_CHECK_LIB(intl, ngettext,
- [AC_CHECK_LIB(intl, dgettext,
- gt_cv_func_dgettext_libintl=yes)])])
-
- if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
- AC_MSG_CHECKING([if -liconv is needed to use gettext])
- AC_MSG_RESULT([])
- AC_CHECK_LIB(intl, ngettext,
- [AC_CHECK_LIB(intl, dcgettext,
- [gt_cv_func_dgettext_libintl=yes
- libintl_extra_libs=-liconv],
- :,-liconv)],
- :,-liconv)
- fi
-
- #
- # If we found libintl, then check in it for bind_textdomain_codeset();
- # we'll prefer libc if neither have bind_textdomain_codeset(),
- # and both have dgettext and ngettext
- #
- if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
- glib_save_LIBS="$LIBS"
- LIBS="$LIBS -lintl $libintl_extra_libs"
- unset ac_cv_func_bind_textdomain_codeset
- AC_CHECK_FUNCS(bind_textdomain_codeset)
- LIBS="$glib_save_LIBS"
-
- if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
- gt_cv_func_dgettext_libc=no
- else
- if test "$gt_cv_func_dgettext_libc" = "yes" \
- && test "$gt_cv_func_ngettext_libc" = "yes"; then
- gt_cv_func_dgettext_libintl=no
- fi
- fi
- fi
- fi
-
- if test "$gt_cv_func_dgettext_libc" = "yes" \
- || test "$gt_cv_func_dgettext_libintl" = "yes"; then
- gt_cv_have_gettext=yes
- fi
-
- if test "$gt_cv_func_dgettext_libintl" = "yes"; then
- INTLLIBS="-lintl $libintl_extra_libs"
- fi
-
- if test "$gt_cv_have_gettext" = "yes"; then
- AC_DEFINE(HAVE_GETTEXT,1,
- [Define if the GNU gettext() function is already present or preinstalled.])
- GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
- if test "$MSGFMT" != "no"; then
- glib_save_LIBS="$LIBS"
- LIBS="$LIBS $INTLLIBS"
- AC_CHECK_FUNCS(dcgettext)
- MSGFMT_OPTS=
- AC_MSG_CHECKING([if msgfmt accepts -c])
- GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: test 1.0\n"
-"PO-Revision-Date: 2007-02-15 12:01+0100\n"
-"Last-Translator: test <foo@bar.xx>\n"
-"Language-Team: C <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
- AC_SUBST(MSGFMT_OPTS)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr],
- [CATOBJEXT=.gmo
- DATADIRNAME=share],
- [case $host in
- *-*-solaris*)
- dnl On Solaris, if bind_textdomain_codeset is in libc,
- dnl GNU format message catalog is always supported,
- dnl since both are added to the libc all together.
- dnl Hence, we'd like to go with DATADIRNAME=share and
- dnl and CATOBJEXT=.gmo in this case.
- AC_CHECK_FUNC(bind_textdomain_codeset,
- [CATOBJEXT=.gmo
- DATADIRNAME=share],
- [CATOBJEXT=.mo
- DATADIRNAME=lib])
- ;;
- *-*-openbsd*)
- CATOBJEXT=.mo
- DATADIRNAME=share
- ;;
- *)
- CATOBJEXT=.mo
- DATADIRNAME=lib
- ;;
- esac])
- LIBS="$glib_save_LIBS"
- INSTOBJEXT=.mo
- else
- gt_cv_have_gettext=no
- fi
- fi
- ])
-
- if test "$gt_cv_have_gettext" = "yes" ; then
- AC_DEFINE(ENABLE_NLS, 1,
- [always defined to indicate that i18n is enabled])
- fi
-
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is not GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext program is not GNU xgettext; ignore it])
- XGETTEXT=":"
- fi
- fi
-
- # We need to process the po/ directory.
- POSUB=po
-
- AC_OUTPUT_COMMANDS(
- [case "$CONFIG_FILES" in *po/Makefile.in*)
- sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
- esac])
-
- dnl These rules are solely for the distribution goal. While doing this
- dnl we only have to keep exactly one list of the available catalogs
- dnl in configure.ac.
- for lang in $ALL_LINGUAS; do
- GMOFILES="$GMOFILES $lang.gmo"
- POFILES="$POFILES $lang.po"
- done
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST(CATALOGS)
- AC_SUBST(CATOBJEXT)
- AC_SUBST(DATADIRNAME)
- AC_SUBST(GMOFILES)
- AC_SUBST(INSTOBJEXT)
- AC_SUBST(INTLLIBS)
- AC_SUBST(PO_IN_DATADIR_TRUE)
- AC_SUBST(PO_IN_DATADIR_FALSE)
- AC_SUBST(POFILES)
- AC_SUBST(POSUB)
- ])
-
-# AM_GLIB_GNU_GETTEXT
-# -------------------
-# Do checks necessary for use of gettext. If a suitable implementation
-# of gettext is found in either in libintl or in the C library,
-# it will set INTLLIBS to the libraries needed for use of gettext
-# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
-# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
-# on various variables needed by the Makefile.in.in installed by
-# glib-gettextize.
-dnl
-glib_DEFUN([GLIB_GNU_GETTEXT],
- [AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
-
- GLIB_LC_MESSAGES
- GLIB_WITH_NLS
-
- if test "$gt_cv_have_gettext" = "yes"; then
- if test "x$ALL_LINGUAS" = "x"; then
- LINGUAS=
- else
- AC_MSG_CHECKING(for catalogs to be installed)
- NEW_LINGUAS=
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- NEW_LINGUAS="$NEW_LINGUAS $presentlang"
- fi
- done
- LINGUAS=$NEW_LINGUAS
- AC_MSG_RESULT($LINGUAS)
- fi
-
- dnl Construct list of names of catalog files to be constructed.
- if test -n "$LINGUAS"; then
- for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
- fi
- fi
-
- dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
- dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
- dnl Try to locate is.
- MKINSTALLDIRS=
- if test -n "$ac_aux_dir"; then
- MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
- fi
- if test -z "$MKINSTALLDIRS"; then
- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
- fi
- AC_SUBST(MKINSTALLDIRS)
-
- dnl Generate list of files to be processed by xgettext which will
- dnl be included in po/Makefile.
- test -d po || mkdir po
- if test "x$srcdir" != "x."; then
- if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
- posrcprefix="$srcdir/"
- else
- posrcprefix="../$srcdir/"
- fi
- else
- posrcprefix="../"
- fi
- rm -f po/POTFILES
- sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
- < $srcdir/po/POTFILES.in > po/POTFILES
- ])
-
-# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
-# -------------------------------
-# Define VARIABLE to the location where catalog files will
-# be installed by po/Makefile.
-glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
-[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
-glib_save_prefix="$prefix"
-glib_save_exec_prefix="$exec_prefix"
-glib_save_datarootdir="$datarootdir"
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-test "x$exec_prefix" = xNONE && exec_prefix=$prefix
-datarootdir=`eval echo "${datarootdir}"`
-if test "x$CATOBJEXT" = "x.mo" ; then
- localedir=`eval echo "${libdir}/locale"`
-else
- localedir=`eval echo "${datadir}/locale"`
-fi
-prefix="$glib_save_prefix"
-exec_prefix="$glib_save_exec_prefix"
-datarootdir="$glib_save_datarootdir"
-AC_DEFINE_UNQUOTED($1, "$localedir",
- [Define the location where the catalogs will be installed])
-])
-
-dnl
-dnl Now the definitions that aclocal will find
-dnl
-ifdef(glib_configure_ac,[],[
-AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
-AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
-])dnl
-
-# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL])
-#
-# Create a temporary file with TEST-FILE as its contents and pass the
-# file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with
-# 0 and perform ACTION-IF-FAIL for any other exit status.
-AC_DEFUN([GLIB_RUN_PROG],
-[cat >conftest.foo <<_ACEOF
-$2
-_ACEOF
-if AC_RUN_LOG([$1 conftest.foo]); then
- m4_ifval([$3], [$3], [:])
-m4_ifvaln([$4], [else $4])dnl
-echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD
-sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD
-fi])
-
-
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
# serial 1 (pkg-config-0.24)
#
@@ -672,7 +235,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.13'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.13.2], [],
+m4_if([$1], [1.13.4], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -688,7 +251,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.2])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/build-aux/Makefile.in b/build-aux/Makefile.in
index 4652db0..349c930 100644
--- a/build-aux/Makefile.in
+++ b/build-aux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -126,8 +126,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -151,7 +149,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -168,7 +165,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -200,14 +196,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -226,13 +228,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/cli/Makefile.in b/cli/Makefile.in
index 1cd45c6..23ba8ee 100644
--- a/cli/Makefile.in
+++ b/cli/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -190,8 +190,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -215,7 +213,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -232,7 +229,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -264,14 +260,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -290,13 +292,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/cli/mmcli-modem-messaging.c b/cli/mmcli-modem-messaging.c
index 604bf90..75cb41a 100644
--- a/cli/mmcli-modem-messaging.c
+++ b/cli/mmcli-modem-messaging.c
@@ -195,6 +195,7 @@ build_sms_properties_from_input (const gchar *properties_string,
g_object_unref (file);
mm_sms_properties_set_data (properties, (guint8 *)contents, contents_size);
+ g_free (contents);
}
return properties;
diff --git a/cli/mmcli-modem.c b/cli/mmcli-modem.c
index 0a7f151..18e7356 100644
--- a/cli/mmcli-modem.c
+++ b/cli/mmcli-modem.c
@@ -260,6 +260,9 @@ print_modem_info (void)
gchar *own_numbers_string;
MMModemBand *bands = NULL;
guint n_bands = 0;
+ MMModemPortInfo *ports = NULL;
+ guint n_ports = 0;
+ gchar *ports_string;
MMUnlockRetries *unlock_retries;
guint signal_quality = 0;
gboolean signal_quality_recent = FALSE;
@@ -288,6 +291,9 @@ print_modem_info (void)
mm_modem_get_supported_bands (ctx->modem, &bands, &n_bands);
supported_bands_string = mm_common_build_bands_string (bands, n_bands);
g_free (bands);
+ mm_modem_get_ports (ctx->modem, &ports, &n_ports);
+ ports_string = mm_common_build_ports_string (ports, n_ports);
+ mm_modem_port_info_array_free (ports, n_ports);
if (mm_modem_get_current_modes (ctx->modem, &allowed_modes, &preferred_mode)) {
allowed_modes_string = mm_modem_mode_build_string_from_mask (allowed_modes);
preferred_mode_string = mm_modem_mode_build_string_from_mask (preferred_mode);
@@ -371,11 +377,13 @@ print_modem_info (void)
" System | device: '%s'\n"
" | drivers: '%s'\n"
" | plugin: '%s'\n"
- " | primary port: '%s'\n",
+ " | primary port: '%s'\n"
+ " | ports: '%s'\n",
VALIDATE_UNKNOWN (mm_modem_get_device (ctx->modem)),
VALIDATE_UNKNOWN (drivers_string),
VALIDATE_UNKNOWN (mm_modem_get_plugin (ctx->modem)),
- VALIDATE_UNKNOWN (mm_modem_get_primary_port (ctx->modem)));
+ VALIDATE_UNKNOWN (mm_modem_get_primary_port (ctx->modem)),
+ VALIDATE_UNKNOWN (ports_string));
/* Numbers related stuff */
g_print (" -------------------------\n"
@@ -489,6 +497,7 @@ print_modem_info (void)
VALIDATE_PATH (mm_modem_get_sim_path (ctx->modem)));
g_print ("\n");
+ g_free (ports_string);
g_free (supported_ip_families_string);
g_free (current_bands_string);
g_free (supported_bands_string);
diff --git a/cli/mmcli-sms.c b/cli/mmcli-sms.c
index a9c2cb1..4124f66 100644
--- a/cli/mmcli-sms.c
+++ b/cli/mmcli-sms.c
@@ -190,7 +190,7 @@ print_sms_info (MMSms *sms)
g_print (" | validity (relative): '%u'\n",
mm_sms_get_validity_relative (sms));
- g_print (" | class: '%u'\n"
+ g_print (" | class: '%d'\n"
" | storage: '%s'\n",
mm_sms_get_class (sms),
mm_sms_storage_get_string (mm_sms_get_storage (sms)));
diff --git a/config.guess b/config.guess
index 2055429..b79252d 100755
--- a/config.guess
+++ b/config.guess
@@ -2,7 +2,7 @@
# Attempt to guess a canonical system name.
# Copyright 1992-2013 Free Software Foundation, Inc.
-timestamp='2013-04-24'
+timestamp='2013-06-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -132,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ ;;
+esac
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -853,21 +874,21 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -880,67 +901,54 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
- LIBC=gnu
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
- #else
- #include <features.h>
- #ifdef __UCLIBC__
- LIBC=uclibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@@ -959,59 +967,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
or1k:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
or32:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
+ echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
- LIBC=gnu
- test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1244,19 +1256,21 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- i386)
- eval $set_cc_for_build
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- UNAME_PROCESSOR="x86_64"
- fi
- fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
diff --git a/config.h.in b/config.h.in
index 57b9e8e..6b85da3 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,14 +1,12 @@
/* config.h.in. Generated from configure.ac by autoheader. */
-/* always defined to indicate that i18n is enabled */
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
#undef ENABLE_NLS
/* Gettext package */
#undef GETTEXT_PACKAGE
-/* Define to 1 if you have the `bind_textdomain_codeset' function. */
-#undef HAVE_BIND_TEXTDOMAIN_CODESET
-
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#undef HAVE_CFLOCALECOPYCURRENT
@@ -17,7 +15,8 @@
the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
-/* Define to 1 if you have the `dcgettext' function. */
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
#undef HAVE_DCGETTEXT
/* Define to 1 if you have the <dlfcn.h> header file. */
@@ -32,18 +31,9 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
-/* Define if your <locale.h> file defines LC_MESSAGES. */
-#undef HAVE_LC_MESSAGES
-
-/* Define to 1 if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
-/* Define to 1 if you have the <pppd/pppd.h> header file. */
-#undef HAVE_PPPD_PPPD_H
-
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
@@ -130,7 +120,7 @@
/* Define if we enable new QMI commands support */
#undef WITH_NEWEST_QMI_COMMANDS
-/* Define if you want to use PolicyKit */
+/* Define if you have PolicyKit support */
#undef WITH_POLKIT
/* Define if you want QMI support */
diff --git a/configure b/configure
index ea8d0d6..33f7870 100755
--- a/configure
+++ b/configure
@@ -1,8 +1,8 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ModemManager 0.7.991.
+# Generated by GNU Autoconf 2.69 for ModemManager 1.0.0.
#
-# Report bugs to <dcbw@redhat.com>.
+# Report bugs to <modemmanager-devel@lists.freedesktop.org>.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -274,11 +274,11 @@ fi
$as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
$as_echo "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and dcbw@redhat.com
-$0: about your system, including any error possibly output
-$0: before this message. Then install a modern shell, or
-$0: manually run the script under such a shell if you do
-$0: have one."
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: modemmanager-devel@lists.freedesktop.org about your
+$0: system, including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
fi
exit 1
fi
@@ -590,9 +590,9 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='ModemManager'
PACKAGE_TARNAME='ModemManager'
-PACKAGE_VERSION='0.7.991'
-PACKAGE_STRING='ModemManager 0.7.991'
-PACKAGE_BUGREPORT='dcbw@redhat.com'
+PACKAGE_VERSION='1.0.0'
+PACKAGE_STRING='ModemManager 1.0.0'
+PACKAGE_BUGREPORT='modemmanager-devel@lists.freedesktop.org'
PACKAGE_URL=''
# Factoring default headers for most tests.
@@ -646,28 +646,15 @@ QMI_LIBS
QMI_CFLAGS
WITH_QMI_FALSE
WITH_QMI_TRUE
-WITH_MBIM_FALSE
-WITH_MBIM_TRUE
MBIM_LIBS
MBIM_CFLAGS
-WITH_TESTS_FALSE
-WITH_TESTS_TRUE
-PPPD_PLUGIN_DIR
-HAVE_PPPD_H_FALSE
-HAVE_PPPD_H_TRUE
-MKINSTALLDIRS
-POFILES
-PO_IN_DATADIR_FALSE
-PO_IN_DATADIR_TRUE
-INSTOBJEXT
-GMOFILES
-CATOBJEXT
-CATALOGS
-MSGFMT_OPTS
-POLKIT_LIBS
-POLKIT_CFLAGS
+WITH_MBIM_FALSE
+WITH_MBIM_TRUE
WITH_POLKIT_FALSE
WITH_POLKIT_TRUE
+MM_DEFAULT_USER_POLICY
+POLKIT_LIBS
+POLKIT_CFLAGS
HAVE_SYSTEMD_FALSE
HAVE_SYSTEMD_TRUE
SYSTEMD_UNIT_DIR
@@ -752,6 +739,13 @@ GTKDOC_CHECK
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
+MM_GLIB_LT_AGE
+MM_GLIB_LT_REVISION
+MM_GLIB_LT_CURRENT
+MM_VERSION
+MM_MICRO_VERSION
+MM_MINOR_VERSION
+MM_MAJOR_VERSION
OTOOL64
OTOOL
LIPO
@@ -892,8 +886,6 @@ with_dbus_sys_dir
with_udev_base_dir
with_systemdsystemunitdir
with_polkit
-with_pppd_plugin_dir
-with_tests
with_mbim
with_qmi
with_newest_qmi_commands
@@ -1468,7 +1460,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures ModemManager 0.7.991 to adapt to many kinds of systems.
+\`configure' configures ModemManager 1.0.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1538,7 +1530,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of ModemManager 0.7.991:";;
+ short | recursive ) echo "Configuration of ModemManager 1.0.0:";;
esac
cat <<\_ACEOF
@@ -1586,10 +1578,8 @@ Optional Packages:
where udev base directory is
--with-systemdsystemunitdir=DIR
where systemd service files are
- --with-polkit Build with PolicyKit support
- --with-pppd-plugin-dir=DIR
- path to the pppd plugins directory
- --with-tests Build ModemManager tests
+ --with-polkit=(strict|permissive|none)
+ Enable PolicyKit support [[default=auto]]
--without-mbim Build without MBIM support
--without-qmi Build without QMI support
--with-newest-qmi-commands
@@ -1639,7 +1629,7 @@ Some influential environment variables:
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
-Report bugs to <dcbw@redhat.com>.
+Report bugs to <modemmanager-devel@lists.freedesktop.org>.
_ACEOF
ac_status=$?
fi
@@ -1702,7 +1692,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-ModemManager configure 0.7.991
+ModemManager configure 1.0.0
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1861,9 +1851,9 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------ ##
-## Report this to dcbw@redhat.com ##
-## ------------------------------ ##"
+( $as_echo "## ------------------------------------------------------- ##
+## Report this to modemmanager-devel@lists.freedesktop.org ##
+## ------------------------------------------------------- ##"
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
@@ -2071,7 +2061,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by ModemManager $as_me 0.7.991, which was
+It was created by ModemManager $as_me 1.0.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2935,7 +2925,7 @@ fi
# Define the identity of the package.
PACKAGE='ModemManager'
- VERSION='0.7.991'
+ VERSION='1.0.0'
cat >>confdefs.h <<_ACEOF
@@ -12595,6 +12585,22 @@ CC="$lt_save_CC"
+MM_MAJOR_VERSION=1
+MM_MINOR_VERSION=0
+MM_MICRO_VERSION=0
+MM_VERSION=1.0.0
+
+
+
+
+
+MM_GLIB_LT_CURRENT=0
+MM_GLIB_LT_REVISION=0
+MM_GLIB_LT_AGE=0
+
+
+
+
@@ -16038,23 +16044,6 @@ fi
# PolicyKit
-# Check whether --with-polkit was given.
-if test "${with_polkit+set}" = set; then :
- withval=$with_polkit;
-fi
-
- if test "x$with_polkit" = "xyes"; then
- WITH_POLKIT_TRUE=
- WITH_POLKIT_FALSE='#'
-else
- WITH_POLKIT_TRUE='#'
- WITH_POLKIT_FALSE=
-fi
-
-case $with_polkit in
- yes)
- with_polkit=yes
-
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for POLKIT" >&5
$as_echo_n "checking for POLKIT... " >&6; }
@@ -16113,835 +16102,96 @@ fi
# Put the nasty error message in config.log where it belongs
echo "$POLKIT_PKG_ERRORS" >&5
- as_fn_error $? "Package requirements (polkit-gobject-1 >= 0.97) were not met:
-
-$POLKIT_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables POLKIT_CFLAGS
-and POLKIT_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
+ have_polkit=no
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables POLKIT_CFLAGS
-and POLKIT_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+ have_polkit=no
else
POLKIT_CFLAGS=$pkg_cv_POLKIT_CFLAGS
POLKIT_LIBS=$pkg_cv_POLKIT_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-
-fi
-
-$as_echo "#define WITH_POLKIT 1" >>confdefs.h
-
-
-
-
-
- for ac_header in locale.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
-if test "x$ac_cv_header_locale_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LOCALE_H 1
-_ACEOF
-
-fi
-
-done
-
- if test $ac_cv_header_locale_h = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
-$as_echo_n "checking for LC_MESSAGES... " >&6; }
-if ${am_cv_val_LC_MESSAGES+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <locale.h>
-int
-main ()
-{
-return LC_MESSAGES
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_val_LC_MESSAGES=yes
-else
- am_cv_val_LC_MESSAGES=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
-$as_echo "$am_cv_val_LC_MESSAGES" >&6; }
- if test $am_cv_val_LC_MESSAGES = yes; then
-
-$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
-
- fi
- fi
- USE_NLS=yes
-
-
- gt_cv_have_gettext=no
-
- CATOBJEXT=NONE
- XGETTEXT=:
- INTLLIBS=
-
- ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
-if test "x$ac_cv_header_libintl_h" = xyes; then :
- gt_cv_func_dgettext_libintl="no"
- libintl_extra_libs=""
-
- #
- # First check in libc
- #
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5
-$as_echo_n "checking for ngettext in libc... " >&6; }
-if ${gt_cv_func_ngettext_libc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <libintl.h>
-
-int
-main ()
-{
-return !ngettext ("","", 1)
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_ngettext_libc=yes
-else
- gt_cv_func_ngettext_libc=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5
-$as_echo "$gt_cv_func_ngettext_libc" >&6; }
-
- if test "$gt_cv_func_ngettext_libc" = "yes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5
-$as_echo_n "checking for dgettext in libc... " >&6; }
-if ${gt_cv_func_dgettext_libc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <libintl.h>
-
-int
-main ()
-{
-return !dgettext ("","")
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_dgettext_libc=yes
-else
- gt_cv_func_dgettext_libc=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5
-$as_echo "$gt_cv_func_dgettext_libc" >&6; }
- fi
-
- if test "$gt_cv_func_ngettext_libc" = "yes" ; then
- for ac_func in bind_textdomain_codeset
-do :
- ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BIND_TEXTDOMAIN_CODESET 1
-_ACEOF
-
-fi
-done
-
- fi
-
- #
- # If we don't have everything we want, check in libintl
- #
- if test "$gt_cv_func_dgettext_libc" != "yes" \
- || test "$gt_cv_func_ngettext_libc" != "yes" \
- || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5
-$as_echo_n "checking for bindtextdomain in -lintl... " >&6; }
-if ${ac_cv_lib_intl_bindtextdomain+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char bindtextdomain ();
-int
-main ()
-{
-return bindtextdomain ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_intl_bindtextdomain=yes
-else
- ac_cv_lib_intl_bindtextdomain=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5
-$as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; }
-if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
-$as_echo_n "checking for ngettext in -lintl... " >&6; }
-if ${ac_cv_lib_intl_ngettext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char ngettext ();
-int
-main ()
-{
-return ngettext ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_intl_ngettext=yes
-else
- ac_cv_lib_intl_ngettext=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
-$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
-if test "x$ac_cv_lib_intl_ngettext" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5
-$as_echo_n "checking for dgettext in -lintl... " >&6; }
-if ${ac_cv_lib_intl_dgettext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dgettext ();
-int
-main ()
-{
-return dgettext ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_intl_dgettext=yes
-else
- ac_cv_lib_intl_dgettext=no
+ have_polkit=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5
-$as_echo "$ac_cv_lib_intl_dgettext" >&6; }
-if test "x$ac_cv_lib_intl_dgettext" = xyes; then :
- gt_cv_func_dgettext_libintl=yes
-fi
-
-fi
-
-fi
-
- if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5
-$as_echo_n "checking if -liconv is needed to use gettext... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5
-$as_echo_n "checking for ngettext in -lintl... " >&6; }
-if ${ac_cv_lib_intl_ngettext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl -liconv $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char ngettext ();
-int
-main ()
-{
-return ngettext ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_intl_ngettext=yes
-else
- ac_cv_lib_intl_ngettext=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5
-$as_echo "$ac_cv_lib_intl_ngettext" >&6; }
-if test "x$ac_cv_lib_intl_ngettext" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5
-$as_echo_n "checking for dcgettext in -lintl... " >&6; }
-if ${ac_cv_lib_intl_dcgettext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl -liconv $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dcgettext ();
-int
-main ()
-{
-return dcgettext ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_intl_dcgettext=yes
-else
- ac_cv_lib_intl_dcgettext=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5
-$as_echo "$ac_cv_lib_intl_dcgettext" >&6; }
-if test "x$ac_cv_lib_intl_dcgettext" = xyes; then :
- gt_cv_func_dgettext_libintl=yes
- libintl_extra_libs=-liconv
-else
- :
-fi
-
-else
- :
-fi
-
- fi
-
- #
- # If we found libintl, then check in it for bind_textdomain_codeset();
- # we'll prefer libc if neither have bind_textdomain_codeset(),
- # and both have dgettext and ngettext
- #
- if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
- glib_save_LIBS="$LIBS"
- LIBS="$LIBS -lintl $libintl_extra_libs"
- unset ac_cv_func_bind_textdomain_codeset
- for ac_func in bind_textdomain_codeset
-do :
- ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BIND_TEXTDOMAIN_CODESET 1
-_ACEOF
-
-fi
-done
-
- LIBS="$glib_save_LIBS"
-
- if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
- gt_cv_func_dgettext_libc=no
- else
- if test "$gt_cv_func_dgettext_libc" = "yes" \
- && test "$gt_cv_func_ngettext_libc" = "yes"; then
- gt_cv_func_dgettext_libintl=no
- fi
- fi
- fi
- fi
-
- if test "$gt_cv_func_dgettext_libc" = "yes" \
- || test "$gt_cv_func_dgettext_libintl" = "yes"; then
- gt_cv_have_gettext=yes
- fi
-
- if test "$gt_cv_func_dgettext_libintl" = "yes"; then
- INTLLIBS="-lintl $libintl_extra_libs"
- fi
-
- if test "$gt_cv_have_gettext" = "yes"; then
-
-$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
-
- # Extract the first word of "msgfmt", so it can be a program name with args.
-set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case "$MSGFMT" in
- /*)
- ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
- ac_cv_path_MSGFMT="$ac_dir/$ac_word"
- break
- fi
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
- ;;
-esac
-fi
-MSGFMT="$ac_cv_path_MSGFMT"
-if test "$MSGFMT" != "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-$as_echo "$MSGFMT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
- if test "$MSGFMT" != "no"; then
- glib_save_LIBS="$LIBS"
- LIBS="$LIBS $INTLLIBS"
- for ac_func in dcgettext
-do :
- ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
-if test "x$ac_cv_func_dcgettext" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DCGETTEXT 1
-_ACEOF
-
-fi
-done
-
- MSGFMT_OPTS=
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5
-$as_echo_n "checking if msgfmt accepts -c... " >&6; }
- cat >conftest.foo <<_ACEOF
-
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: test 1.0\n"
-"PO-Revision-Date: 2007-02-15 12:01+0100\n"
-"Last-Translator: test <foo@bar.xx>\n"
-"Language-Team: C <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-_ACEOF
-if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5
- ($MSGFMT -c -o /dev/null conftest.foo) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-echo "$as_me: failed input was:" >&5
-sed 's/^/| /' conftest.foo >&5
-fi
-
- # Extract the first word of "gmsgfmt", so it can be a program name with args.
-set dummy gmsgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GMSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $GMSGFMT in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
- ;;
-esac
-fi
-GMSGFMT=$ac_cv_path_GMSGFMT
-if test -n "$GMSGFMT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
-$as_echo "$GMSGFMT" >&6; }
+# Check whether --with-polkit was given.
+if test "${with_polkit+set}" = set; then :
+ withval=$with_polkit;
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ with_polkit=auto
fi
-
- # Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XGETTEXT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case "$XGETTEXT" in
- /*)
- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
- ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
- break
- fi
+# Handle 'auto' ('strict' if polkit found, 'none' otherwise),
+# 'yes' ('strict') and 'no' ('none')
+if test "x$with_polkit" = "xauto"; then
+ if test "x$have_polkit" = "xno"; then
+ with_polkit="none"
+ else
+ with_polkit="strict"
fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
- ;;
-esac
-fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test "$XGETTEXT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
-$as_echo "$XGETTEXT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+elif test "x$with_polkit" = "xno"; then
+ with_polkit=none
+elif test "x$with_polkit" = "xyes"; then
+ with_polkit=strict
fi
+# Build policies context
+if test "x$with_polkit" = "xnone"; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+$as_echo "#define WITH_POLKIT 0" >>confdefs.h
-int
-main ()
-{
-extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- CATOBJEXT=.gmo
- DATADIRNAME=share
else
- case $host in
- *-*-solaris*)
- ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
- CATOBJEXT=.gmo
- DATADIRNAME=share
-else
- CATOBJEXT=.mo
- DATADIRNAME=lib
-fi
-
- ;;
- *-*-openbsd*)
- CATOBJEXT=.mo
- DATADIRNAME=share
- ;;
- *)
- CATOBJEXT=.mo
- DATADIRNAME=lib
- ;;
- esac
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$glib_save_LIBS"
- INSTOBJEXT=.mo
- else
- gt_cv_have_gettext=no
+ if test "x$have_polkit" = "xno"; then
+ as_fn_error $? "PolicyKit development headers are required" "$LINENO" 5
fi
- fi
-
-fi
-
-
-
- if test "$gt_cv_have_gettext" = "yes" ; then
-
-$as_echo "#define ENABLE_NLS 1" >>confdefs.h
-
- fi
-
- if test "$XGETTEXT" != ":"; then
- if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
- : ;
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
-$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
- XGETTEXT=":"
- fi
- fi
-
- # We need to process the po/ directory.
- POSUB=po
-
- ac_config_commands="$ac_config_commands default-1"
-
-
- for lang in $ALL_LINGUAS; do
- GMOFILES="$GMOFILES $lang.gmo"
- POFILES="$POFILES $lang.po"
- done
-
-
-
-
-
-
-
-
+ case "x$with_polkit" in
+ "xpermissive")
+ MM_DEFAULT_USER_POLICY="yes"
+ ;;
+ "xstrict")
+ MM_DEFAULT_USER_POLICY="auth_self_keep"
+ ;;
+ *)
+ as_fn_error $? "Wrong value for --with-polkit: $with_polkit" "$LINENO" 5
+ ;;
+ esac
+$as_echo "#define WITH_POLKIT 1" >>confdefs.h
- if test "$gt_cv_have_gettext" = "yes"; then
- if test "x$ALL_LINGUAS" = "x"; then
- LINGUAS=
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
-$as_echo_n "checking for catalogs to be installed... " >&6; }
- NEW_LINGUAS=
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- NEW_LINGUAS="$NEW_LINGUAS $presentlang"
- fi
- done
- LINGUAS=$NEW_LINGUAS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
-$as_echo "$LINGUAS" >&6; }
- fi
-
- if test -n "$LINGUAS"; then
- for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
- fi
- fi
-
- MKINSTALLDIRS=
- if test -n "$ac_aux_dir"; then
- MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
- fi
- if test -z "$MKINSTALLDIRS"; then
- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
- fi
-
-
- test -d po || mkdir po
- if test "x$srcdir" != "x."; then
- if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
- posrcprefix="$srcdir/"
- else
- posrcprefix="../$srcdir/"
- fi
- else
- posrcprefix="../"
- fi
- rm -f po/POTFILES
- sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
- < $srcdir/po/POTFILES.in > po/POTFILES
- ;;
- *)
- with_polkit=no
- ;;
-esac
-# PPPD
-for ac_header in pppd/pppd.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "pppd/pppd.h" "ac_cv_header_pppd_pppd_h" "$ac_includes_default"
-if test "x$ac_cv_header_pppd_pppd_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PPPD_PPPD_H 1
-_ACEOF
- have_pppd_headers="yes"
-else
- have_pppd_headers="no"
fi
-done
-
- if test "x$have_pppd_headers" = "xyes"; then
- HAVE_PPPD_H_TRUE=
- HAVE_PPPD_H_FALSE='#'
+ if test "x$with_polkit" != "xnone" ; then
+ WITH_POLKIT_TRUE=
+ WITH_POLKIT_FALSE='#'
else
- HAVE_PPPD_H_TRUE='#'
- HAVE_PPPD_H_FALSE=
+ WITH_POLKIT_TRUE='#'
+ WITH_POLKIT_FALSE=
fi
-case $have_pppd_headers in
- yes) ;;
- *)
- have_pppd_headers=no
- ;;
-esac
-# Check whether --with-pppd-plugin-dir was given.
-if test "${with_pppd_plugin_dir+set}" = set; then :
- withval=$with_pppd_plugin_dir;
-fi
-
-
-if test -n "$with_pppd_plugin_dir" ; then
- PPPD_PLUGIN_DIR="$with_pppd_plugin_dir"
+# Check whether --with-mbim was given.
+if test "${with_mbim+set}" = set; then :
+ withval=$with_mbim;
else
- PPPD_PLUGIN_DIR="${libdir}/pppd/2.4.5"
-fi
-
-
-
-
-# Check whether --with-tests was given.
-if test "${with_tests+set}" = set; then :
- withval=$with_tests;
+ with_mbim=yes
fi
- if test "x$with_tests" = "xyes"; then
- WITH_TESTS_TRUE=
- WITH_TESTS_FALSE='#'
+ if test "x$with_mbim" = "xyes"; then
+ WITH_MBIM_TRUE=
+ WITH_MBIM_FALSE='#'
else
- WITH_TESTS_TRUE='#'
- WITH_TESTS_FALSE=
+ WITH_MBIM_TRUE='#'
+ WITH_MBIM_FALSE=
fi
-case $with_tests in
+case $with_mbim in
yes)
- with_tests=yes
- ;;
- *)
- with_tests=no
- ;;
-esac
-
-
-# Check whether --with-mbim was given.
-if test "${with_mbim+set}" = set; then :
- withval=$with_mbim;
-else
- with_mbim=auto
-fi
-
-if (test "${with_mbim}" != "no"); then
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MBIM" >&5
@@ -16951,12 +16201,12 @@ if test -n "$MBIM_CFLAGS"; then
pkg_cv_MBIM_CFLAGS="$MBIM_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mbim-glib >= 1.0.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "mbim-glib >= 1.0.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mbim-glib >= 1.4\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mbim-glib >= 1.4") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_MBIM_CFLAGS=`$PKG_CONFIG --cflags "mbim-glib >= 1.0.0" 2>/dev/null`
+ pkg_cv_MBIM_CFLAGS=`$PKG_CONFIG --cflags "mbim-glib >= 1.4" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -16968,12 +16218,12 @@ if test -n "$MBIM_LIBS"; then
pkg_cv_MBIM_LIBS="$MBIM_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mbim-glib >= 1.0.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "mbim-glib >= 1.0.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mbim-glib >= 1.4\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "mbim-glib >= 1.4") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_MBIM_LIBS=`$PKG_CONFIG --libs "mbim-glib >= 1.0.0" 2>/dev/null`
+ pkg_cv_MBIM_LIBS=`$PKG_CONFIG --libs "mbim-glib >= 1.4" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -16994,53 +16244,40 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- MBIM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "mbim-glib >= 1.0.0" 2>&1`
+ MBIM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "mbim-glib >= 1.4" 2>&1`
else
- MBIM_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "mbim-glib >= 1.0.0" 2>&1`
+ MBIM_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "mbim-glib >= 1.4" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$MBIM_PKG_ERRORS" >&5
- have_libmbim_glib=no
+ have_mbim=no
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- have_libmbim_glib=no
+ have_mbim=no
else
MBIM_CFLAGS=$pkg_cv_MBIM_CFLAGS
MBIM_LIBS=$pkg_cv_MBIM_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_libmbim_glib=yes
+ have_mbim=yes
fi
-
-
-
- if (test "${have_libmbim_glib}" = "no"); then
- if (test "${with_mbim}" = "yes"); then
- as_fn_error $? "Couldn't find libmbim-glib" "$LINENO" 5
+ if test "x$have_mbim" = "xno"; then
+ as_fn_error $? "Couldn't find libmbim-glib. Install it, or otherwise configure using --without-mbim to disable MBIM support." "$LINENO" 5
else
- with_mbim="no"
- fi
- else
- with_mbim="yes"
- fi
-fi
-
-if (test "${with_mbim}" = "yes"); then
$as_echo "#define WITH_MBIM 1" >>confdefs.h
-fi
- if test "${with_mbim}" = "yes"; then
- WITH_MBIM_TRUE=
- WITH_MBIM_FALSE='#'
-else
- WITH_MBIM_TRUE='#'
- WITH_MBIM_FALSE=
-fi
+ fi
+ ;;
+ *)
+ with_mbim=no
+ ;;
+esac
+
# Check whether --with-qmi was given.
if test "${with_qmi+set}" = set; then :
@@ -17068,12 +16305,12 @@ if test -n "$QMI_CFLAGS"; then
pkg_cv_QMI_CFLAGS="$QMI_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"qmi-glib\""; } >&5
- ($PKG_CONFIG --exists --print-errors "qmi-glib") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"qmi-glib >= 1.4\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "qmi-glib >= 1.4") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_QMI_CFLAGS=`$PKG_CONFIG --cflags "qmi-glib" 2>/dev/null`
+ pkg_cv_QMI_CFLAGS=`$PKG_CONFIG --cflags "qmi-glib >= 1.4" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -17085,12 +16322,12 @@ if test -n "$QMI_LIBS"; then
pkg_cv_QMI_LIBS="$QMI_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"qmi-glib\""; } >&5
- ($PKG_CONFIG --exists --print-errors "qmi-glib") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"qmi-glib >= 1.4\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "qmi-glib >= 1.4") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_QMI_LIBS=`$PKG_CONFIG --libs "qmi-glib" 2>/dev/null`
+ pkg_cv_QMI_LIBS=`$PKG_CONFIG --libs "qmi-glib >= 1.4" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -17111,50 +16348,34 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- QMI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "qmi-glib" 2>&1`
+ QMI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "qmi-glib >= 1.4" 2>&1`
else
- QMI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "qmi-glib" 2>&1`
+ QMI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "qmi-glib >= 1.4" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$QMI_PKG_ERRORS" >&5
- as_fn_error $? "Package requirements (qmi-glib) were not met:
-
-$QMI_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables QMI_CFLAGS
-and QMI_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
+ have_qmi=no
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables QMI_CFLAGS
-and QMI_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+ have_qmi=no
else
QMI_CFLAGS=$pkg_cv_QMI_CFLAGS
QMI_LIBS=$pkg_cv_QMI_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-
+ have_qmi=yes
fi
+ if test "x$have_qmi" = "xno"; then
+ as_fn_error $? "Couldn't find libqmi-glib. Install it, or otherwise configure using --without-qmi to disable QMI support." "$LINENO" 5
+ else
$as_echo "#define WITH_QMI 1" >>confdefs.h
+ fi
;;
*)
with_qmi=no
@@ -17281,7 +16502,7 @@ else
fi
-ac_config_files="$ac_config_files Makefile data/Makefile data/ModemManager.pc data/mm-glib.pc data/org.freedesktop.ModemManager1.policy include/Makefile build-aux/Makefile libqcdm/Makefile libqcdm/src/Makefile libqcdm/tests/Makefile libwmc/Makefile libwmc/src/Makefile libwmc/tests/Makefile src/Makefile src/tests/Makefile plugins/Makefile uml290/Makefile test/Makefile introspection/Makefile po/Makefile.in docs/Makefile docs/man/Makefile docs/reference/Makefile docs/reference/api/Makefile docs/reference/api/version.xml docs/reference/libmm-glib/Makefile docs/reference/libmm-glib/version.xml libmm-glib/Makefile libmm-glib/generated/Makefile libmm-glib/tests/Makefile cli/Makefile"
+ac_config_files="$ac_config_files Makefile data/Makefile data/ModemManager.pc data/mm-glib.pc data/org.freedesktop.ModemManager1.policy.in data/org.freedesktop.ModemManager1.service include/Makefile include/ModemManager-version.h build-aux/Makefile libqcdm/Makefile libqcdm/src/Makefile libqcdm/tests/Makefile libwmc/Makefile libwmc/src/Makefile libwmc/tests/Makefile src/Makefile src/tests/Makefile plugins/Makefile uml290/Makefile test/Makefile introspection/Makefile po/Makefile.in docs/Makefile docs/man/Makefile docs/reference/Makefile docs/reference/api/Makefile docs/reference/api/version.xml docs/reference/libmm-glib/Makefile docs/reference/libmm-glib/version.xml libmm-glib/Makefile libmm-glib/generated/Makefile libmm-glib/tests/Makefile cli/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -17456,14 +16677,6 @@ if test -z "${WITH_POLKIT_TRUE}" && test -z "${WITH_POLKIT_FALSE}"; then
as_fn_error $? "conditional \"WITH_POLKIT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_PPPD_H_TRUE}" && test -z "${HAVE_PPPD_H_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_PPPD_H\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_TESTS_TRUE}" && test -z "${WITH_TESTS_FALSE}"; then
- as_fn_error $? "conditional \"WITH_TESTS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${WITH_MBIM_TRUE}" && test -z "${WITH_MBIM_FALSE}"; then
as_fn_error $? "conditional \"WITH_MBIM\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -17881,7 +17094,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by ModemManager $as_me 0.7.991, which was
+This file was extended by ModemManager $as_me 1.0.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -17941,13 +17154,13 @@ $config_headers
Configuration commands:
$config_commands
-Report bugs to <dcbw@redhat.com>."
+Report bugs to <modemmanager-devel@lists.freedesktop.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-ModemManager config.status 0.7.991
+ModemManager config.status 1.0.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -18352,7 +17565,6 @@ fi
LINGUAS="${LINGUAS-%UNSET%}"
-
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -18365,13 +17577,14 @@ do
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
- "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
"data/ModemManager.pc") CONFIG_FILES="$CONFIG_FILES data/ModemManager.pc" ;;
"data/mm-glib.pc") CONFIG_FILES="$CONFIG_FILES data/mm-glib.pc" ;;
- "data/org.freedesktop.ModemManager1.policy") CONFIG_FILES="$CONFIG_FILES data/org.freedesktop.ModemManager1.policy" ;;
+ "data/org.freedesktop.ModemManager1.policy.in") CONFIG_FILES="$CONFIG_FILES data/org.freedesktop.ModemManager1.policy.in" ;;
+ "data/org.freedesktop.ModemManager1.service") CONFIG_FILES="$CONFIG_FILES data/org.freedesktop.ModemManager1.service" ;;
"include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+ "include/ModemManager-version.h") CONFIG_FILES="$CONFIG_FILES include/ModemManager-version.h" ;;
"build-aux/Makefile") CONFIG_FILES="$CONFIG_FILES build-aux/Makefile" ;;
"libqcdm/Makefile") CONFIG_FILES="$CONFIG_FILES libqcdm/Makefile" ;;
"libqcdm/src/Makefile") CONFIG_FILES="$CONFIG_FILES libqcdm/src/Makefile" ;;
@@ -19829,9 +19042,6 @@ fi
;;
esac
done ;;
- "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*)
- sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
- esac ;;
"po/stamp-it":C)
if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then
as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5
@@ -19903,7 +19113,6 @@ echo "
udev base directory: ${UDEV_BASE_DIR}
systemd unit directory: ${with_systemdsystemunitdir}
- PPP-enabled tests: ${have_pppd_headers}
PolicyKit support: ${with_polkit}
Documentation: ${enable_gtk_doc}
MBIM support: ${with_mbim}
diff --git a/configure.ac b/configure.ac
index f3d82ac..8679b3d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,27 @@
-AC_PREREQ([2.60])
-
-AC_INIT([ModemManager],[0.7.991],[dcbw@redhat.com],[ModemManager])
-AM_INIT_AUTOMAKE([1.9 subdir-objects tar-ustar no-dist-gzip dist-bzip2 -Wno-portability])
+AC_PREREQ([2.63])
+
+dnl The MM version number
+m4_define([mm_major_version], [1])
+m4_define([mm_minor_version], [0])
+m4_define([mm_micro_version], [0])
+m4_define([mm_version],
+ [mm_major_version.mm_minor_version.mm_micro_version])
+
+dnl libtool versioning for libmm-glib (-version-info c:r:a)
+dnl If the interface is unchanged, but the implementation has changed or
+dnl been fixed, then increment r.
+dnl Otherwise, increment c and zero r.
+dnl If the interface has grown (that is, the new library is compatible
+dnl with old code), increment a.
+dnl If the interface has changed in an incompatible way (that is,
+dnl functions have changed or been removed), then zero a.
+m4_define([mm_glib_lt_current], [0])
+m4_define([mm_glib_lt_revision], [0])
+m4_define([mm_glib_lt_age], [0])
+
+
+AC_INIT([ModemManager],[mm_version],[modemmanager-devel@lists.freedesktop.org],[ModemManager])
+AM_INIT_AUTOMAKE([1.9 subdir-objects tar-ustar no-dist-gzip dist-xz -Wno-portability])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AM_MAINTAINER_MODE([enable])
@@ -21,6 +41,24 @@ dnl Initialize libtool
LT_PREREQ([2.2])
LT_INIT
+dnl Version stuff
+MM_MAJOR_VERSION=mm_major_version
+MM_MINOR_VERSION=mm_minor_version
+MM_MICRO_VERSION=mm_micro_version
+MM_VERSION=mm_version
+AC_SUBST(MM_MAJOR_VERSION)
+AC_SUBST(MM_MINOR_VERSION)
+AC_SUBST(MM_MICRO_VERSION)
+AC_SUBST(MM_VERSION)
+
+dnl libtool version stuff
+MM_GLIB_LT_CURRENT=mm_glib_lt_current
+MM_GLIB_LT_REVISION=mm_glib_lt_revision
+MM_GLIB_LT_AGE=mm_glib_lt_age
+AC_SUBST(MM_GLIB_LT_CURRENT)
+AC_SUBST(MM_GLIB_LT_REVISION)
+AC_SUBST(MM_GLIB_LT_AGE)
+
dnl
dnl Documentation
dnl
@@ -99,96 +137,88 @@ fi
AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$SYSTEMD_UNIT_DIR" -a "$SYSTEMD_UNIT_DIR" != xno ])
# PolicyKit
-AC_ARG_WITH(polkit, AS_HELP_STRING([--with-polkit], [Build with PolicyKit support]))
-AM_CONDITIONAL(WITH_POLKIT, test "x$with_polkit" = "xyes")
-case $with_polkit in
- yes)
- with_polkit=yes
- PKG_CHECK_MODULES(POLKIT, polkit-gobject-1 >= 0.97)
- AC_DEFINE(WITH_POLKIT, 1, [Define if you want to use PolicyKit])
- AC_SUBST(POLKIT_CFLAGS)
- AC_SUBST(POLKIT_LIBS)
-
- AM_GLIB_GNU_GETTEXT
- ;;
- *)
- with_polkit=no
- ;;
-esac
-
-# PPPD
-AC_CHECK_HEADERS(pppd/pppd.h, have_pppd_headers="yes", have_pppd_headers="no")
-AM_CONDITIONAL(HAVE_PPPD_H, test "x$have_pppd_headers" = "xyes")
-case $have_pppd_headers in
- yes) ;;
- *)
- have_pppd_headers=no
- ;;
-esac
-
-AC_ARG_WITH([pppd-plugin-dir], AS_HELP_STRING([--with-pppd-plugin-dir=DIR], [path to the pppd plugins directory]))
-
-if test -n "$with_pppd_plugin_dir" ; then
- PPPD_PLUGIN_DIR="$with_pppd_plugin_dir"
+PKG_CHECK_MODULES(POLKIT, [polkit-gobject-1 >= 0.97], [have_polkit=yes],[have_polkit=no])
+AC_ARG_WITH(polkit,
+ AS_HELP_STRING([--with-polkit=(strict|permissive|none)],
+ [Enable PolicyKit support [[default=auto]]]),,
+ [with_polkit=auto])
+# Handle 'auto' ('strict' if polkit found, 'none' otherwise),
+# 'yes' ('strict') and 'no' ('none')
+if test "x$with_polkit" = "xauto"; then
+ if test "x$have_polkit" = "xno"; then
+ with_polkit="none"
+ else
+ with_polkit="strict"
+ fi
+elif test "x$with_polkit" = "xno"; then
+ with_polkit=none
+elif test "x$with_polkit" = "xyes"; then
+ with_polkit=strict
+fi
+# Build policies context
+if test "x$with_polkit" = "xnone"; then
+ AC_DEFINE(WITH_POLKIT, 0, [Define if you have PolicyKit support])
else
- PPPD_PLUGIN_DIR="${libdir}/pppd/2.4.5"
+ if test "x$have_polkit" = "xno"; then
+ AC_MSG_ERROR(PolicyKit development headers are required)
+ fi
+
+ case "x$with_polkit" in
+ "xpermissive")
+ MM_DEFAULT_USER_POLICY="yes"
+ ;;
+ "xstrict")
+ MM_DEFAULT_USER_POLICY="auth_self_keep"
+ ;;
+ *)
+ AC_MSG_ERROR([Wrong value for --with-polkit: $with_polkit])
+ ;;
+ esac
+
+ AC_DEFINE(WITH_POLKIT, 1, [Define if you have PolicyKit support])
+ AC_SUBST(POLKIT_CFLAGS)
+ AC_SUBST(POLKIT_LIBS)
+ AC_SUBST(MM_DEFAULT_USER_POLICY)
fi
-AC_SUBST(PPPD_PLUGIN_DIR)
+AM_CONDITIONAL(WITH_POLKIT, [test "x$with_polkit" != "xnone" ])
dnl
-dnl Tests
+dnl MBIM support (enabled by default)
dnl
-AC_ARG_WITH(tests, AS_HELP_STRING([--with-tests], [Build ModemManager tests]))
-AM_CONDITIONAL(WITH_TESTS, test "x$with_tests" = "xyes")
-case $with_tests in
+AC_ARG_WITH(mbim, AS_HELP_STRING([--without-mbim], [Build without MBIM support]), [], [with_mbim=yes])
+AM_CONDITIONAL(WITH_MBIM, test "x$with_mbim" = "xyes")
+case $with_mbim in
yes)
- with_tests=yes
+ PKG_CHECK_MODULES(MBIM, [mbim-glib >= 1.4], [have_mbim=yes],[have_mbim=no])
+ if test "x$have_mbim" = "xno"; then
+ AC_MSG_ERROR([Couldn't find libmbim-glib. Install it, or otherwise configure using --without-mbim to disable MBIM support.])
+ else
+ AC_DEFINE(WITH_MBIM, 1, [Define if you want MBIM support])
+ AC_SUBST(MBIM_CFLAGS)
+ AC_SUBST(MBIM_LIBS)
+ fi
;;
*)
- with_tests=no
+ with_mbim=no
;;
esac
dnl
-dnl MBIM support (auto by default)
-dnl
-AC_ARG_WITH(mbim, AS_HELP_STRING([--without-mbim], [Build without MBIM support]), [], [with_mbim=auto])
-if (test "${with_mbim}" != "no"); then
- PKG_CHECK_MODULES(MBIM,
- [mbim-glib >= 1.0.0],
- [have_libmbim_glib=yes],
- [have_libmbim_glib=no])
- AC_SUBST(MBIM_CFLAGS)
- AC_SUBST(MBIM_LIBS)
-
- if (test "${have_libmbim_glib}" = "no"); then
- if (test "${with_mbim}" = "yes"); then
- AC_MSG_ERROR([Couldn't find libmbim-glib])
- else
- with_mbim="no"
- fi
- else
- with_mbim="yes"
- fi
-fi
-
-if (test "${with_mbim}" = "yes"); then
- AC_DEFINE(WITH_MBIM, 1, [Define if you want MBIM support])
-fi
-AM_CONDITIONAL(WITH_MBIM, test "${with_mbim}" = "yes")
-
-dnl
dnl QMI support (enabled by default)
dnl
AC_ARG_WITH(qmi, AS_HELP_STRING([--without-qmi], [Build without QMI support]), [], [with_qmi=yes])
AM_CONDITIONAL(WITH_QMI, test "x$with_qmi" = "xyes")
case $with_qmi in
yes)
- PKG_CHECK_MODULES(QMI, qmi-glib)
- AC_DEFINE(WITH_QMI, 1, [Define if you want QMI support])
- AC_SUBST(QMI_CFLAGS)
- AC_SUBST(QMI_LIBS)
+ PKG_CHECK_MODULES(QMI, [qmi-glib >= 1.4], [have_qmi=yes],[have_qmi=no])
+ if test "x$have_qmi" = "xno"; then
+ AC_MSG_ERROR([Couldn't find libqmi-glib. Install it, or otherwise configure using --without-qmi to disable QMI support.])
+ else
+ AC_DEFINE(WITH_QMI, 1, [Define if you want QMI support])
+ AC_SUBST(QMI_CFLAGS)
+ AC_SUBST(QMI_LIBS)
+ fi
;;
*)
with_qmi=no
@@ -234,8 +264,10 @@ Makefile
data/Makefile
data/ModemManager.pc
data/mm-glib.pc
-data/org.freedesktop.ModemManager1.policy
+data/org.freedesktop.ModemManager1.policy.in
+data/org.freedesktop.ModemManager1.service
include/Makefile
+include/ModemManager-version.h
build-aux/Makefile
libqcdm/Makefile
libqcdm/src/Makefile
@@ -276,7 +308,6 @@ echo "
udev base directory: ${UDEV_BASE_DIR}
systemd unit directory: ${with_systemdsystemunitdir}
- PPP-enabled tests: ${have_pppd_headers}
PolicyKit support: ${with_polkit}
Documentation: ${enable_gtk_doc}
MBIM support: ${with_mbim}
diff --git a/data/Makefile.am b/data/Makefile.am
index 770f97d..3a31ec5 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -34,16 +34,7 @@ endif
# DBus Activation file
dbusactivationdir = $(datadir)/dbus-1/system-services
dbusactivation_DATA = org.freedesktop.ModemManager1.service
-dbusactivation_in_files_systemd = org.freedesktop.ModemManager1.service.systemd.in
-dbusactivation_in_files_nosystemd = org.freedesktop.ModemManager1.service.nosystemd.in
-if HAVE_SYSTEMD
-org.freedesktop.ModemManager1.service: org.freedesktop.ModemManager1.service.systemd.in
- $(edit) $< >$@
-else
-org.freedesktop.ModemManager1.service: org.freedesktop.ModemManager1.service.nosystemd.in
- $(edit) $< >$@
-endif
-
+dbusactivation_in_files = org.freedesktop.ModemManager1.service.in
# Icon
icondir=${datadir}/icons/hicolor/22x22/apps
@@ -65,10 +56,10 @@ diagrams = \
# Polkit
-dist_polkit_policy_in_files = org.freedesktop.ModemManager1.policy.in
+polkit_policy_in_in_files = org.freedesktop.ModemManager1.policy.in.in
if WITH_POLKIT
polkit_policydir = $(datadir)/polkit-1/actions
-dist_polkit_policy_DATA = $(dist_polkit_policy_in_files:.policy.in=.policy)
+polkit_policy_DATA = $(polkit_policy_in_in_files:.policy.in.in=.policy)
@INTLTOOL_POLICY_RULE@
endif
@@ -82,7 +73,8 @@ pkgconfig_DATA = \
DISTCLEANFILES = \
$(dbusactivation_DATA) \
- $(dbusservice_DATA)
+ $(dbusservice_DATA) \
+ $(polkit_policy_DATA)
if HAVE_SYSTEMD
DISTCLEANFILES += $(systemdsystemunit_DATA)
@@ -91,11 +83,10 @@ endif
EXTRA_DIST = \
$(systemdsystemunit_in_files) \
- $(dbusactivation_in_files_systemd) \
- $(dbusactivation_in_files_nosystemd) \
+ $(dbusactivation_in_files) \
$(dbusservice_file_polkit) \
$(dbusservice_file_nopolkit) \
$(icon_DATA) \
- $(dist_polkit_policy_in_files) \
+ $(polkit_policy_in_in_files) \
$(logos) \
$(diagrams)
diff --git a/data/Makefile.in b/data/Makefile.in
index f1a4d8b..34889fd 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -82,8 +82,8 @@ host_triplet = @host@
subdir = data
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(srcdir)/ModemManager.pc.in $(srcdir)/mm-glib.pc.in \
- $(srcdir)/org.freedesktop.ModemManager1.policy.in \
- $(am__dist_polkit_policy_DATA_DIST)
+ $(srcdir)/org.freedesktop.ModemManager1.policy.in.in \
+ $(srcdir)/org.freedesktop.ModemManager1.service.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
@@ -100,7 +100,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = ModemManager.pc mm-glib.pc \
- org.freedesktop.ModemManager1.policy
+ org.freedesktop.ModemManager1.policy.in \
+ org.freedesktop.ModemManager1.service
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -149,13 +150,11 @@ am__uninstall_files_from_dir = { \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(dbusactivationdir)" \
- "$(DESTDIR)$(dbusservicedir)" "$(DESTDIR)$(polkit_policydir)" \
- "$(DESTDIR)$(icondir)" "$(DESTDIR)$(pkgconfigdir)" \
+ "$(DESTDIR)$(dbusservicedir)" "$(DESTDIR)$(icondir)" \
+ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(polkit_policydir)" \
"$(DESTDIR)$(systemdsystemunitdir)"
-am__dist_polkit_policy_DATA_DIST = \
- org.freedesktop.ModemManager1.policy
-DATA = $(dbusactivation_DATA) $(dbusservice_DATA) \
- $(dist_polkit_policy_DATA) $(icon_DATA) $(pkgconfig_DATA) \
+DATA = $(dbusactivation_DATA) $(dbusservice_DATA) $(icon_DATA) \
+ $(pkgconfig_DATA) $(polkit_policy_DATA) \
$(systemdsystemunit_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -168,8 +167,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -193,7 +190,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -210,7 +206,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -242,14 +237,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -268,13 +269,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -364,8 +361,7 @@ systemdsystemunit_in_files = ModemManager.service.in
# DBus Activation file
dbusactivationdir = $(datadir)/dbus-1/system-services
dbusactivation_DATA = org.freedesktop.ModemManager1.service
-dbusactivation_in_files_systemd = org.freedesktop.ModemManager1.service.systemd.in
-dbusactivation_in_files_nosystemd = org.freedesktop.ModemManager1.service.nosystemd.in
+dbusactivation_in_files = org.freedesktop.ModemManager1.service.in
# Icon
icondir = ${datadir}/icons/hicolor/22x22/apps
@@ -386,9 +382,9 @@ diagrams = \
# Polkit
-dist_polkit_policy_in_files = org.freedesktop.ModemManager1.policy.in
+polkit_policy_in_in_files = org.freedesktop.ModemManager1.policy.in.in
@WITH_POLKIT_TRUE@polkit_policydir = $(datadir)/polkit-1/actions
-@WITH_POLKIT_TRUE@dist_polkit_policy_DATA = $(dist_polkit_policy_in_files:.policy.in=.policy)
+@WITH_POLKIT_TRUE@polkit_policy_DATA = $(polkit_policy_in_in_files:.policy.in.in=.policy)
# Set up pkg-config .pc files for exported libraries
pkgconfigdir = $(libdir)/pkgconfig
@@ -397,15 +393,14 @@ pkgconfig_DATA = \
mm-glib.pc
DISTCLEANFILES = $(dbusactivation_DATA) $(dbusservice_DATA) \
- $(am__append_1)
+ $(polkit_policy_DATA) $(am__append_1)
EXTRA_DIST = \
$(systemdsystemunit_in_files) \
- $(dbusactivation_in_files_systemd) \
- $(dbusactivation_in_files_nosystemd) \
+ $(dbusactivation_in_files) \
$(dbusservice_file_polkit) \
$(dbusservice_file_nopolkit) \
$(icon_DATA) \
- $(dist_polkit_policy_in_files) \
+ $(polkit_policy_in_in_files) \
$(logos) \
$(diagrams)
@@ -446,7 +441,9 @@ ModemManager.pc: $(top_builddir)/config.status $(srcdir)/ModemManager.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mm-glib.pc: $(top_builddir)/config.status $(srcdir)/mm-glib.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-org.freedesktop.ModemManager1.policy: $(top_builddir)/config.status $(srcdir)/org.freedesktop.ModemManager1.policy.in
+org.freedesktop.ModemManager1.policy.in: $(top_builddir)/config.status $(srcdir)/org.freedesktop.ModemManager1.policy.in.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+org.freedesktop.ModemManager1.service: $(top_builddir)/config.status $(srcdir)/org.freedesktop.ModemManager1.service.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mostlyclean-libtool:
@@ -496,27 +493,6 @@ uninstall-dbusserviceDATA:
@list='$(dbusservice_DATA)'; test -n "$(dbusservicedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(dbusservicedir)'; $(am__uninstall_files_from_dir)
-install-dist_polkit_policyDATA: $(dist_polkit_policy_DATA)
- @$(NORMAL_INSTALL)
- @list='$(dist_polkit_policy_DATA)'; test -n "$(polkit_policydir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(polkit_policydir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(polkit_policydir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(polkit_policydir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(polkit_policydir)" || exit $$?; \
- done
-
-uninstall-dist_polkit_policyDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(dist_polkit_policy_DATA)'; test -n "$(polkit_policydir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(polkit_policydir)'; $(am__uninstall_files_from_dir)
install-iconDATA: $(icon_DATA)
@$(NORMAL_INSTALL)
@list='$(icon_DATA)'; test -n "$(icondir)" || list=; \
@@ -559,6 +535,27 @@ uninstall-pkgconfigDATA:
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
+install-polkit_policyDATA: $(polkit_policy_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(polkit_policy_DATA)'; test -n "$(polkit_policydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(polkit_policydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(polkit_policydir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(polkit_policydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(polkit_policydir)" || exit $$?; \
+ done
+
+uninstall-polkit_policyDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(polkit_policy_DATA)'; test -n "$(polkit_policydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(polkit_policydir)'; $(am__uninstall_files_from_dir)
install-systemdsystemunitDATA: $(systemdsystemunit_DATA)
@$(NORMAL_INSTALL)
@list='$(systemdsystemunit_DATA)'; test -n "$(systemdsystemunitdir)" || list=; \
@@ -621,7 +618,7 @@ check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
- for dir in "$(DESTDIR)$(dbusactivationdir)" "$(DESTDIR)$(dbusservicedir)" "$(DESTDIR)$(polkit_policydir)" "$(DESTDIR)$(icondir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(systemdsystemunitdir)"; do \
+ for dir in "$(DESTDIR)$(dbusactivationdir)" "$(DESTDIR)$(dbusservicedir)" "$(DESTDIR)$(icondir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(polkit_policydir)" "$(DESTDIR)$(systemdsystemunitdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
@@ -676,8 +673,8 @@ info: info-am
info-am:
install-data-am: install-dbusactivationDATA install-dbusserviceDATA \
- install-dist_polkit_policyDATA install-iconDATA \
- install-pkgconfigDATA install-systemdsystemunitDATA
+ install-iconDATA install-pkgconfigDATA \
+ install-polkit_policyDATA install-systemdsystemunitDATA
install-dvi: install-dvi-am
@@ -722,8 +719,8 @@ ps: ps-am
ps-am:
uninstall-am: uninstall-dbusactivationDATA uninstall-dbusserviceDATA \
- uninstall-dist_polkit_policyDATA uninstall-iconDATA \
- uninstall-pkgconfigDATA uninstall-systemdsystemunitDATA
+ uninstall-iconDATA uninstall-pkgconfigDATA \
+ uninstall-polkit_policyDATA uninstall-systemdsystemunitDATA
.MAKE: install-am install-strip
@@ -731,18 +728,18 @@ uninstall-am: uninstall-dbusactivationDATA uninstall-dbusserviceDATA \
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
- install-dbusactivationDATA install-dbusserviceDATA \
- install-dist_polkit_policyDATA install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-iconDATA install-info install-info-am install-man \
- install-pdf install-pdf-am install-pkgconfigDATA install-ps \
- install-ps-am install-strip install-systemdsystemunitDATA \
- installcheck installcheck-am installdirs maintainer-clean \
+ install-dbusactivationDATA install-dbusserviceDATA install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-iconDATA install-info install-info-am \
+ install-man install-pdf install-pdf-am install-pkgconfigDATA \
+ install-polkit_policyDATA install-ps install-ps-am \
+ install-strip install-systemdsystemunitDATA installcheck \
+ installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
uninstall-am uninstall-dbusactivationDATA \
- uninstall-dbusserviceDATA uninstall-dist_polkit_policyDATA \
- uninstall-iconDATA uninstall-pkgconfigDATA \
+ uninstall-dbusserviceDATA uninstall-iconDATA \
+ uninstall-pkgconfigDATA uninstall-polkit_policyDATA \
uninstall-systemdsystemunitDATA
@@ -752,10 +749,6 @@ uninstall-am: uninstall-dbusactivationDATA uninstall-dbusserviceDATA \
@WITH_POLKIT_FALSE@ cp -f $(top_srcdir)/data/$(dbusservice_file_nopolkit) $(dbusservice_DATA)
@HAVE_SYSTEMD_TRUE@ModemManager.service: ModemManager.service.in
@HAVE_SYSTEMD_TRUE@ $(edit) $< >$@
-@HAVE_SYSTEMD_TRUE@org.freedesktop.ModemManager1.service: org.freedesktop.ModemManager1.service.systemd.in
-@HAVE_SYSTEMD_TRUE@ $(edit) $< >$@
-@HAVE_SYSTEMD_FALSE@org.freedesktop.ModemManager1.service: org.freedesktop.ModemManager1.service.nosystemd.in
-@HAVE_SYSTEMD_FALSE@ $(edit) $< >$@
@WITH_POLKIT_TRUE@@INTLTOOL_POLICY_RULE@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/data/ModemManager.service.in b/data/ModemManager.service.in
index b59caea..9fe3a3b 100644
--- a/data/ModemManager.service.in
+++ b/data/ModemManager.service.in
@@ -7,6 +7,7 @@ Type=dbus
BusName=org.freedesktop.ModemManager1
ExecStart=@sbindir@/ModemManager
StandardError=null
+Restart=on-abort
[Install]
WantedBy=multi-user.target
diff --git a/data/org.freedesktop.ModemManager1.policy.in b/data/org.freedesktop.ModemManager1.policy.in
deleted file mode 100644
index 9f58e6a..0000000
--- a/data/org.freedesktop.ModemManager1.policy.in
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE policyconfig PUBLIC
- "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
-
-<policyconfig>
-
- <vendor>ModemManager</vendor>
- <vendor_url>http://www.freedesktop.org/wiki/ModemManager</vendor_url>
- <icon_name>ModemManager</icon_name>
-
- <action id="org.freedesktop.ModemManager1.Control">
- <_description>Control the Modem Manager daemon</_description>
- <_message>System policy prevents controlling the Modem Manager.</_message>
- <defaults>
- <allow_inactive>no</allow_inactive>
- <allow_active>auth_admin</allow_active>
- </defaults>
- </action>
-
- <action id="org.freedesktop.ModemManager1.Device.Control">
- <_description>Unlock and control a mobile broadband device</_description>
- <_message>System policy prevents unlocking or controlling the mobile broadband device.</_message>
- <defaults>
- <allow_inactive>no</allow_inactive>
- <allow_active>auth_self_keep</allow_active>
- </defaults>
- </action>
-
- <action id="org.freedesktop.ModemManager1.Contacts">
- <_description>Add, modify, and delete mobile broadband contacts</_description>
- <_message>System policy prevents adding, modifying, or deleting this device's contacts.</_message>
- <defaults>
- <allow_inactive>no</allow_inactive>
- <allow_active>auth_self_keep</allow_active>
- </defaults>
- </action>
-
- <action id="org.freedesktop.ModemManager1.Messaging">
- <_description>Send, save, modify, and delete text messages</_description>
- <_message>System policy prevents sending or maniuplating this device's text messages.</_message>
- <defaults>
- <allow_inactive>no</allow_inactive>
- <allow_active>auth_self_keep</allow_active>
- </defaults>
- </action>
-
- <action id="org.freedesktop.ModemManager1.Location">
- <_description>Enable and view geographic location and positioning information</_description>
- <_message>System policy prevents enabling or viewing geographic location information.</_message>
- <defaults>
- <allow_inactive>no</allow_inactive>
- <allow_active>auth_self_keep</allow_active>
- </defaults>
- </action>
-
- <action id="org.freedesktop.ModemManager1.USSD">
- <_description>Query and utilize network information and services</_description>
- <_message>System policy prevents querying or utilizing network information and services.</_message>
- <defaults>
- <allow_inactive>no</allow_inactive>
- <allow_active>yes</allow_active>
- </defaults>
- </action>
-
- <action id="org.freedesktop.ModemManager1.Firmware">
- <_description>Query and manage firmware on a mobile broadband device</_description>
- <_message>System policy prevents querying or managing this device's firmware.</_message>
- <defaults>
- <allow_inactive>no</allow_inactive>
- <allow_active>auth_admin</allow_active>
- </defaults>
- </action>
-
-</policyconfig>
diff --git a/data/org.freedesktop.ModemManager1.policy b/data/org.freedesktop.ModemManager1.policy.in.in
index 9f58e6a..7b3a22a 100644
--- a/data/org.freedesktop.ModemManager1.policy
+++ b/data/org.freedesktop.ModemManager1.policy.in.in
@@ -23,7 +23,7 @@
<_message>System policy prevents unlocking or controlling the mobile broadband device.</_message>
<defaults>
<allow_inactive>no</allow_inactive>
- <allow_active>auth_self_keep</allow_active>
+ <allow_active>@MM_DEFAULT_USER_POLICY@</allow_active>
</defaults>
</action>
@@ -32,7 +32,7 @@
<_message>System policy prevents adding, modifying, or deleting this device's contacts.</_message>
<defaults>
<allow_inactive>no</allow_inactive>
- <allow_active>auth_self_keep</allow_active>
+ <allow_active>@MM_DEFAULT_USER_POLICY@</allow_active>
</defaults>
</action>
@@ -41,7 +41,7 @@
<_message>System policy prevents sending or maniuplating this device's text messages.</_message>
<defaults>
<allow_inactive>no</allow_inactive>
- <allow_active>auth_self_keep</allow_active>
+ <allow_active>@MM_DEFAULT_USER_POLICY@</allow_active>
</defaults>
</action>
@@ -50,7 +50,7 @@
<_message>System policy prevents enabling or viewing geographic location information.</_message>
<defaults>
<allow_inactive>no</allow_inactive>
- <allow_active>auth_self_keep</allow_active>
+ <allow_active>@MM_DEFAULT_USER_POLICY@</allow_active>
</defaults>
</action>
diff --git a/data/org.freedesktop.ModemManager1.service.systemd.in b/data/org.freedesktop.ModemManager1.service.in
index f4e2b26..175f3dd 100644
--- a/data/org.freedesktop.ModemManager1.service.systemd.in
+++ b/data/org.freedesktop.ModemManager1.service.in
@@ -6,6 +6,6 @@
[D-BUS Service]
Name=org.freedesktop.ModemManager1
-Exec=/bin/false
+Exec=@sbindir@/ModemManager
User=root
SystemdService=dbus-org.freedesktop.ModemManager1.service
diff --git a/data/org.freedesktop.ModemManager1.service.nosystemd.in b/data/org.freedesktop.ModemManager1.service.nosystemd.in
deleted file mode 100644
index 4e3a273..0000000
--- a/data/org.freedesktop.ModemManager1.service.nosystemd.in
+++ /dev/null
@@ -1,4 +0,0 @@
-[D-BUS Service]
-Name=org.freedesktop.ModemManager1
-Exec=@sbindir@/ModemManager
-User=root
diff --git a/debian/changelog b/debian/changelog
index d97c972..cfbae0f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,19 @@
+modemmanager (1.0.0-1) experimental; urgency=low
+
+ * New upstream release. (Closes: #728214, #728215)
+ * debian/control: add a versioned dependency for libqmi -- we need at least
+ version 1.4.
+ * debian/control: build-depends on libmbim-glib-dev 1.4
+ * debian/rules: run the local autogen.sh rather than gnome-autogen.sh.
+ * debian/rules: drop --with-tests.
+ * debian/rules: clean up after gtk-doc files left around.
+ * debian/patches/glib_fixes.patch: link against glib explicitly for the
+ huawei modem helper tests.
+ * debian/libmm-glib0.symbols: updated symbols.
+ * debian/watch: update watch file for new location of upstream source.
+
+ -- Mathieu Trudel-Lapierre <mathieu-tl@ubuntu.com> Fri, 20 Dec 2013 15:35:26 -0500
+
modemmanager (0.7.991-1) experimental; urgency=low
[ Mathieu Trudel-Lapierre ]
diff --git a/debian/control b/debian/control
index 311ee89..4cb3439 100644
--- a/debian/control
+++ b/debian/control
@@ -12,7 +12,8 @@ Build-Depends: debhelper (>= 9),
gnome-common,
libglib2.0-dev (>= 2.30.2),
libgudev-1.0-dev (>= 147),
- libqmi-glib-dev,
+ libqmi-glib-dev (>= 1.4),
+ libmbim-glib-dev (>= 1.4),
libglib2.0-doc,
Standards-Version: 3.9.4
Vcs-Bzr: https://code.launchpad.net/~modemmanager/modemmanager/ubuntu
diff --git a/debian/libmm-glib0.symbols b/debian/libmm-glib0.symbols
index 1d451ec..1012d47 100644
--- a/debian/libmm-glib0.symbols
+++ b/debian/libmm-glib0.symbols
@@ -80,6 +80,7 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_common_build_capability_combinations_none@Base 0.7.991
mm_common_build_mode_combinations_default@Base 0.7.991
mm_common_build_mode_combinations_string@Base 0.7.991
+ mm_common_build_ports_string@Base 1.0.0
mm_common_build_sms_storages_string@Base 0.7.991
mm_common_capability_combinations_array_to_variant@Base 0.7.991
mm_common_capability_combinations_garray_to_variant@Base 0.7.991
@@ -98,6 +99,10 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_common_mode_combinations_variant_to_array@Base 0.7.991
mm_common_mode_combinations_variant_to_garray@Base 0.7.991
mm_common_parse_key_value_string@Base 0.7.991
+ mm_common_ports_array_to_variant@Base 1.0.0
+ mm_common_ports_garray_to_variant@Base 1.0.0
+ mm_common_ports_variant_to_array@Base 1.0.0
+ mm_common_ports_variant_to_garray@Base 1.0.0
mm_common_sms_storages_array_to_variant@Base 0.7.991
mm_common_sms_storages_garray_to_variant@Base 0.7.991
mm_common_sms_storages_variant_to_array@Base 0.7.991
@@ -308,44 +313,44 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_gdbus_modem_complete_set_current_capabilities@Base 0.7.991
mm_gdbus_modem_complete_set_current_modes@Base 0.7.991
mm_gdbus_modem_complete_set_power_state@Base 0.7.991
- mm_gdbus_modem_contacts_call_add@Base 0.7.991
- mm_gdbus_modem_contacts_call_add_finish@Base 0.7.991
- mm_gdbus_modem_contacts_call_add_sync@Base 0.7.991
- mm_gdbus_modem_contacts_call_delete@Base 0.7.991
- mm_gdbus_modem_contacts_call_delete_finish@Base 0.7.991
- mm_gdbus_modem_contacts_call_delete_sync@Base 0.7.991
- mm_gdbus_modem_contacts_call_find@Base 0.7.991
- mm_gdbus_modem_contacts_call_find_finish@Base 0.7.991
- mm_gdbus_modem_contacts_call_find_sync@Base 0.7.991
- mm_gdbus_modem_contacts_call_get@Base 0.7.991
- mm_gdbus_modem_contacts_call_get_count@Base 0.7.991
- mm_gdbus_modem_contacts_call_get_count_finish@Base 0.7.991
- mm_gdbus_modem_contacts_call_get_count_sync@Base 0.7.991
- mm_gdbus_modem_contacts_call_get_finish@Base 0.7.991
- mm_gdbus_modem_contacts_call_get_sync@Base 0.7.991
- mm_gdbus_modem_contacts_call_list@Base 0.7.991
- mm_gdbus_modem_contacts_call_list_finish@Base 0.7.991
- mm_gdbus_modem_contacts_call_list_sync@Base 0.7.991
- mm_gdbus_modem_contacts_complete_add@Base 0.7.991
- mm_gdbus_modem_contacts_complete_delete@Base 0.7.991
- mm_gdbus_modem_contacts_complete_find@Base 0.7.991
- mm_gdbus_modem_contacts_complete_get@Base 0.7.991
- mm_gdbus_modem_contacts_complete_get_count@Base 0.7.991
- mm_gdbus_modem_contacts_complete_list@Base 0.7.991
- mm_gdbus_modem_contacts_emit_added@Base 0.7.991
- mm_gdbus_modem_contacts_emit_deleted@Base 0.7.991
- mm_gdbus_modem_contacts_get_type@Base 0.7.991
- mm_gdbus_modem_contacts_interface_info@Base 0.7.991
- mm_gdbus_modem_contacts_override_properties@Base 0.7.991
- mm_gdbus_modem_contacts_proxy_get_type@Base 0.7.991
- mm_gdbus_modem_contacts_proxy_new@Base 0.7.991
- mm_gdbus_modem_contacts_proxy_new_finish@Base 0.7.991
- mm_gdbus_modem_contacts_proxy_new_for_bus@Base 0.7.991
- mm_gdbus_modem_contacts_proxy_new_for_bus_finish@Base 0.7.991
- mm_gdbus_modem_contacts_proxy_new_for_bus_sync@Base 0.7.991
- mm_gdbus_modem_contacts_proxy_new_sync@Base 0.7.991
- mm_gdbus_modem_contacts_skeleton_get_type@Base 0.7.991
- mm_gdbus_modem_contacts_skeleton_new@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_add@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_add_finish@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_add_sync@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_delete@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_delete_finish@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_delete_sync@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_find@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_find_finish@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_find_sync@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_get@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_get_count@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_get_count_finish@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_get_count_sync@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_get_finish@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_get_sync@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_list@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_list_finish@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_call_list_sync@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_complete_add@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_complete_delete@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_complete_find@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_complete_get@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_complete_get_count@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_complete_list@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_emit_added@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_emit_deleted@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_get_type@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_interface_info@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_override_properties@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_proxy_get_type@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_proxy_new@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_proxy_new_finish@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_proxy_new_for_bus@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_proxy_new_for_bus_finish@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_proxy_new_for_bus_sync@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_proxy_new_sync@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_skeleton_get_type@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_modem_contacts_skeleton_new@Base 0.7.991
mm_gdbus_modem_dup_current_bands@Base 0.7.991
mm_gdbus_modem_dup_current_modes@Base 0.7.991
mm_gdbus_modem_dup_device@Base 0.7.991
@@ -356,6 +361,7 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_gdbus_modem_dup_model@Base 0.7.991
mm_gdbus_modem_dup_own_numbers@Base 0.7.991
mm_gdbus_modem_dup_plugin@Base 0.7.991
+ mm_gdbus_modem_dup_ports@Base 1.0.0
mm_gdbus_modem_dup_primary_port@Base 0.7.991
mm_gdbus_modem_dup_revision@Base 0.7.991
mm_gdbus_modem_dup_signal_quality@Base 0.7.991
@@ -399,6 +405,7 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_gdbus_modem_get_model@Base 0.7.991
mm_gdbus_modem_get_own_numbers@Base 0.7.991
mm_gdbus_modem_get_plugin@Base 0.7.991
+ mm_gdbus_modem_get_ports@Base 1.0.0
mm_gdbus_modem_get_power_state@Base 0.7.991
mm_gdbus_modem_get_primary_port@Base 0.7.991
mm_gdbus_modem_get_revision@Base 0.7.991
@@ -496,6 +503,7 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_gdbus_modem_set_model@Base 0.7.991
mm_gdbus_modem_set_own_numbers@Base 0.7.991
mm_gdbus_modem_set_plugin@Base 0.7.991
+ mm_gdbus_modem_set_ports@Base 1.0.0
mm_gdbus_modem_set_power_state@Base 0.7.991
mm_gdbus_modem_set_primary_port@Base 0.7.991
mm_gdbus_modem_set_revision@Base 0.7.991
@@ -559,7 +567,7 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_gdbus_object_get_modem3gpp_ussd@Base 0.7.991
mm_gdbus_object_get_modem@Base 0.7.991
mm_gdbus_object_get_modem_cdma@Base 0.7.991
- mm_gdbus_object_get_modem_contacts@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_object_get_modem_contacts@Base 0.7.991
mm_gdbus_object_get_modem_firmware@Base 0.7.991
mm_gdbus_object_get_modem_location@Base 0.7.991
mm_gdbus_object_get_modem_messaging@Base 0.7.991
@@ -578,7 +586,7 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_gdbus_object_peek_modem3gpp_ussd@Base 0.7.991
mm_gdbus_object_peek_modem@Base 0.7.991
mm_gdbus_object_peek_modem_cdma@Base 0.7.991
- mm_gdbus_object_peek_modem_contacts@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_object_peek_modem_contacts@Base 0.7.991
mm_gdbus_object_peek_modem_firmware@Base 0.7.991
mm_gdbus_object_peek_modem_location@Base 0.7.991
mm_gdbus_object_peek_modem_messaging@Base 0.7.991
@@ -592,7 +600,7 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_gdbus_object_skeleton_set_modem3gpp_ussd@Base 0.7.991
mm_gdbus_object_skeleton_set_modem@Base 0.7.991
mm_gdbus_object_skeleton_set_modem_cdma@Base 0.7.991
- mm_gdbus_object_skeleton_set_modem_contacts@Base 0.7.991
+#MISSING: 1.0.0# mm_gdbus_object_skeleton_set_modem_contacts@Base 0.7.991
mm_gdbus_object_skeleton_set_modem_firmware@Base 0.7.991
mm_gdbus_object_skeleton_set_modem_location@Base 0.7.991
mm_gdbus_object_skeleton_set_modem_messaging@Base 0.7.991
@@ -902,6 +910,7 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_modem_get_own_numbers@Base 0.7.991
mm_modem_get_path@Base 0.7.991
mm_modem_get_plugin@Base 0.7.991
+ mm_modem_get_ports@Base 1.0.0
mm_modem_get_power_state@Base 0.7.991
mm_modem_get_primary_port@Base 0.7.991
mm_modem_get_revision@Base 0.7.991
@@ -968,10 +977,14 @@ libmm-glib.so.0 libmm-glib0 #MINVER#
mm_modem_mode_build_string_from_mask@Base 0.7.991
mm_modem_mode_get_type@Base 0.7.991
mm_modem_peek_current_bands@Base 0.7.991
+ mm_modem_peek_ports@Base 1.0.0
mm_modem_peek_supported_bands@Base 0.7.991
mm_modem_peek_supported_capabilities@Base 0.7.991
mm_modem_peek_supported_modes@Base 0.7.991
mm_modem_peek_unlock_retries@Base 0.7.991
+ mm_modem_port_info_array_free@Base 1.0.0
+ mm_modem_port_type_get_string@Base 1.0.0
+ mm_modem_port_type_get_type@Base 1.0.0
mm_modem_power_state_get_string@Base 0.7.991
mm_modem_power_state_get_type@Base 0.7.991
mm_modem_reset@Base 0.7.991
diff --git a/debian/patches/glib_fixes.patch b/debian/patches/glib_fixes.patch
new file mode 100644
index 0000000..7b6b96e
--- /dev/null
+++ b/debian/patches/glib_fixes.patch
@@ -0,0 +1,20 @@
+From: Mathieu Trudel-Lapierre <mathieu.tl@gmail.com>
+Subject: Link against glib for huawei modem helper tests.
+
+---
+ plugins/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: b/plugins/Makefile.am
+===================================================================
+--- a/plugins/Makefile.am
++++ b/plugins/Makefile.am
+@@ -127,7 +127,7 @@ test_modem_helpers_huawei_SOURCES = \
+ test_modem_helpers_huawei_CPPFLAGS = \
+ -I$(top_srcdir)/plugins/huawei \
+ $(PLUGIN_COMMON_COMPILER_FLAGS)
+-test_modem_helpers_huawei_LDFLAGS = $(top_builddir)/libmm-glib/libmm-glib.la
++test_modem_helpers_huawei_LDFLAGS = $(MM_LIBS) $(top_builddir)/libmm-glib/libmm-glib.la
+
+
+ # MBM
diff --git a/debian/patches/series b/debian/patches/series
index d26cb49..a25ed0e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,3 +2,4 @@
lp700316_usb_blacklist.patch
arduino-blacklist.patch
linux-default-usb-id.patch
+glib_fixes.patch
diff --git a/debian/rules b/debian/rules
index c292bbb..c60f6a9 100755
--- a/debian/rules
+++ b/debian/rules
@@ -12,15 +12,15 @@ export NOCONFIGURE=true
dh $@ --with autoreconf
override_dh_autoreconf:
- dh_autoreconf -- gnome-autogen.sh
+ dh_autoreconf -- ./autogen.sh
override_dh_auto_clean:
rm -f $(CURDIR)/debian/modemmanager.upstart
+ rm -f gtk-doc.make m4/gtk-doc.m4
dh_auto_clean
override_dh_auto_configure:
dh_auto_configure -- \
- --with-tests \
--enable-gtk-doc
override_dh_makeshlibs:
diff --git a/debian/watch b/debian/watch
index 1dd4f4d..8a447bd 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,2 +1,2 @@
version=3
-http://ftp.gnome.org/pub/gnome/sources/ModemManager/([\d\.]+)/ModemManager-(.*)\.tar\.xz
+http://www.freedesktop.org/software/ModemManager/ModemManager-(.*)\.tar\.xz
diff --git a/depcomp b/depcomp
index 06b0882..4ebd5b3 100755
--- a/depcomp
+++ b/depcomp
@@ -1,7 +1,7 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2012-10-18.11; # UTC
+scriptversion=2013-05-30.07; # UTC
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
@@ -552,6 +552,7 @@ $ {
G
p
}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 1c14ccb..e593b08 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -186,8 +186,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -211,7 +209,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -228,7 +225,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -260,14 +256,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -286,13 +288,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/docs/man/Makefile.in b/docs/man/Makefile.in
index 13520a9..ab6fa88 100644
--- a/docs/man/Makefile.in
+++ b/docs/man/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -157,8 +157,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -182,7 +180,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -199,7 +196,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -231,14 +227,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -257,13 +259,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/docs/man/mmcli.8 b/docs/man/mmcli.8
index 6ebef6a..24488ce 100644
--- a/docs/man/mmcli.8
+++ b/docs/man/mmcli.8
@@ -250,7 +250,7 @@ Request a given modem to register in its home network.
This registers with the default network(s) specified by the modem,
.TP
-.B \-\-3gpp\-register\-in\-operation=MCCMNC
+.B \-\-3gpp\-register\-in\-operator=MCCMNC
Request a given modem to register on the network of the given
\fBMCCMNC\fR (Mobile Country Code, Mobile Network Code) based
operator. This code is used for GSM/LTE, CDMA, iDEN, TETRA and UMTS
@@ -298,15 +298,6 @@ SIM-PIN unlock code.
.TP
\fB'operator-id'\fR
ETSI MCC-MNC of a network to force registration.
-.TP
-\fB'bands'\fR
-List of MMModemBand values, to specify all the bands allowed in the modem.
-.TP
-\fB'allowed-modes'\fR
-Bitmask of MMModemMode values, to specify all the modes allowed in the modem.
-.TP
-\fB'preferred-mode'\fR
-Specific MMModemMode preferred among the ones allowed, if any.
.RE
.TP
.B \-\-simple\-disconnect
diff --git a/docs/reference/Makefile.in b/docs/reference/Makefile.in
index 59585b9..b412be2 100644
--- a/docs/reference/Makefile.in
+++ b/docs/reference/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -186,8 +186,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -211,7 +209,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -228,7 +225,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -260,14 +256,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -286,13 +288,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/docs/reference/api/Makefile.am b/docs/reference/api/Makefile.am
index c8b58a0..33c28e2 100644
--- a/docs/reference/api/Makefile.am
+++ b/docs/reference/api/Makefile.am
@@ -63,6 +63,7 @@ content_files = \
expand_content_files = \
ModemManager-overview.xml \
ModemManager-dbus-reference.xml \
+ ModemManager-migration-reference.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Sim.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Sms.xml \
@@ -72,7 +73,6 @@ expand_content_files = \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
- $(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
@@ -92,6 +92,7 @@ endif
EXTRA_DIST += \
ModemManager-overview.xml \
ModemManager-dbus-reference.xml \
+ ModemManager-migration-reference.xml \
version.xml.in \
$(DIAGRAMS) \
$(NULL)
diff --git a/docs/reference/api/Makefile.in b/docs/reference/api/Makefile.in
index bde73a8..c6707df 100644
--- a/docs/reference/api/Makefile.in
+++ b/docs/reference/api/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -133,8 +133,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -158,7 +156,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -175,7 +172,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -207,14 +203,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -233,13 +235,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -377,6 +375,7 @@ content_files = \
expand_content_files = \
ModemManager-overview.xml \
ModemManager-dbus-reference.xml \
+ ModemManager-migration-reference.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Sim.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Sms.xml \
@@ -386,7 +385,6 @@ expand_content_files = \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
- $(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
$(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
@@ -418,10 +416,12 @@ extra_files = \
@ENABLE_GTK_DOC_FALSE@EXTRA_DIST = ModemManager-overview.xml \
@ENABLE_GTK_DOC_FALSE@ ModemManager-dbus-reference.xml \
+@ENABLE_GTK_DOC_FALSE@ ModemManager-migration-reference.xml \
@ENABLE_GTK_DOC_FALSE@ version.xml.in $(DIAGRAMS) $(NULL)
@ENABLE_GTK_DOC_TRUE@EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) \
@ENABLE_GTK_DOC_TRUE@ ModemManager-overview.xml \
@ENABLE_GTK_DOC_TRUE@ ModemManager-dbus-reference.xml \
+@ENABLE_GTK_DOC_TRUE@ ModemManager-migration-reference.xml \
@ENABLE_GTK_DOC_TRUE@ version.xml.in $(DIAGRAMS) $(NULL)
@ENABLE_GTK_DOC_TRUE@DOC_STAMPS = setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
@ENABLE_GTK_DOC_TRUE@ html-build.stamp pdf-build.stamp \
diff --git a/docs/reference/api/ModemManager-dbus-reference.xml b/docs/reference/api/ModemManager-dbus-reference.xml
index c84e459..f6f7d32 100644
--- a/docs/reference/api/ModemManager-dbus-reference.xml
+++ b/docs/reference/api/ModemManager-dbus-reference.xml
@@ -75,12 +75,6 @@
</section>
</chapter>
- <chapter id="ref-dbus-common-types">
- <title>Common types</title>
- <xi:include href="mm-enums.xml"/>
- <xi:include href="mm-errors.xml"/>
- </chapter>
-
<chapter id="ref-dbus-object-manager">
<title>The <literal>/org/freedesktop/ModemManager1</literal> object</title>
<para>
@@ -142,7 +136,7 @@
<xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml"/>
<xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml"/>
<xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml"/>
- <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml"/>
+ <!--xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml"/-->
</chapter>
<chapter id="ref-dbus-object-bearer">
diff --git a/docs/reference/api/ModemManager-docs.xml b/docs/reference/api/ModemManager-docs.xml
index 97654fb..d321a5a 100644
--- a/docs/reference/api/ModemManager-docs.xml
+++ b/docs/reference/api/ModemManager-docs.xml
@@ -44,6 +44,7 @@
<year>2010</year>
<year>2011</year>
<year>2012</year>
+ <year>2013</year>
<holder>The ModemManager Authors</holder>
</copyright>
@@ -72,9 +73,19 @@
<!-- Part 1, overview -->
<xi:include href="xml/ModemManager-overview.xml"/>
+ <part id="ref-common-types">
+ <title>Common types and definitions</title>
+ <xi:include href="xml/mm-version.xml"/>
+ <xi:include href="xml/mm-enums.xml"/>
+ <xi:include href="xml/mm-errors.xml"/>
+ </part>
+
<!-- Part 2, DBus reference -->
<xi:include href="xml/ModemManager-dbus-reference.xml"/>
+ <!-- Part 3, Migration reference -->
+ <xi:include href="xml/ModemManager-migration-reference.xml"/>
+
<index>
<title>Index</title>
</index>
diff --git a/docs/reference/api/ModemManager-migration-reference.xml b/docs/reference/api/ModemManager-migration-reference.xml
new file mode 100644
index 0000000..89670b5
--- /dev/null
+++ b/docs/reference/api/ModemManager-migration-reference.xml
@@ -0,0 +1,156 @@
+<?xml version="1.0"?>
+<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+]>
+<part id="ref-migrating" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <title>Migrating from ModemManager 0.6 to ModemManager 1.0</title>
+ <partintro>
+ <para>
+ ModemManager 1.0 is a new major version of ModemManager that breaks both
+ API and ABI compared to previous versions. These changes allow better
+ managing new types of devices (e.g. those with multiple capabilities),
+ or those not based in AT commands for operation (e.g. QMI or MBIM modems).
+ </para>
+ <para>
+ This section provides an introduction to the changes done in the DBus interface
+ with respect to the main operations performed with modems through ModemManager.
+ </para>
+ </partintro>
+
+ <chapter>
+ <section>
+ <title>Listing available modems</title>
+ <para>
+ The D-Bus name <literal>org.freedesktop.ModemManager1</literal>
+ on the system bus is the new name used by the ModemManager 1.0 daemon, and it
+ implements several standard DBus interfaces, including the new
+ <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager">
+ <literal>org.freedesktop.DBus.ObjectManager</literal>
+ </ulink>
+ interface, which allows to list available modem objects and get notifications
+ where new ones are added or when existing ones are removed. There are therefore
+ neither a custom method to enumerate devices as in the old 0.6 interface, nor
+ custom signals to notify about added or removed modems.
+ </para>
+ <para>
+ Modems which are found but are not usable will be flagged with a
+ <link linkend="MM-MODEM-STATE-FAILED:CAPS"><constant>MM_MODEM_STATE_FAILED</constant></link>
+ state in the
+ <link linkend="gdbus-property-org-freedesktop-ModemManager1-Modem.State">
+ <literal>State</literal>
+ </link>
+ property, and a more detailed reason about the failure will be given in the
+ <link linkend="gdbus-property-org-freedesktop-ModemManager1-Modem.StateFailedReason">
+ <literal>StateFailedReason</literal>
+ </link>
+ property. The most common case of failure is to have the SIM missing in a modem which
+ requires one for operation.
+ </para>
+ </section>
+
+ <section>
+ <title>PIN unlocking</title>
+ <para>
+ The process of PIN unlocking the modem is now performed with the
+ <link linkend="gdbus-method-org-freedesktop-ModemManager1-Sim.SendPin">
+ <literal>SendPin()</literal>
+ </link>
+ method in the
+ <link linkend="gdbus-org.freedesktop.ModemManager1.Sim">
+ <literal>org.freedesktop.ModemManager1.Sim</literal>
+ </link>
+ interface.
+ </para>
+ <para>
+ The path of the SIM object is specified in the
+ <link linkend="gdbus-property-org-freedesktop-ModemManager1-Modem.Sim">
+ <literal>Sim</literal>
+ </link>
+ property of the
+ <link linkend="gdbus-org.freedesktop.ModemManager1.Modem">
+ <literal>org.freedesktop.ModemManager1.Modem</literal>
+ </link>
+ interface. If the modem doesn't have a SIM, no object path will be given.
+ </para>
+ </section>
+
+ <section>
+ <title>Connection and disconnection</title>
+ <para>
+ The process of requesting to connect or disconnect the modem is now split into
+ two operations: creating a bearer with
+ <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer">
+ <literal>CreateBearer()</literal>
+ </link>
+ in the
+ <link linkend="gdbus-org.freedesktop.ModemManager1.Modem">
+ <literal>org.freedesktop.ModemManager1.Modem</literal>
+ </link>
+ interface and getting the bearer connected with
+ <link linkend="gdbus-method-org-freedesktop-ModemManager1-Bearer.Connect">
+ <literal>Connect()</literal>
+ </link>
+ in the
+ <link linkend="gdbus-org.freedesktop.ModemManager1.Bearer">
+ <literal>org.freedesktop.ModemManager1.Bearer</literal>
+ </link>
+ interface. These two steps are equivalent to the old <literal>Connect()</literal>
+ method in the previous <literal>org.freedesktop.ModemManager.Modem</literal>
+ interface.
+ </para>
+ <para>
+ The old <literal>Disconnect()</literal>
+ method in the previous <literal>org.freedesktop.ModemManager.Modem</literal>
+ interface is therefore also applied in a per-bearer basis through the new
+ <link linkend="gdbus-method-org-freedesktop-ModemManager1-Bearer.Disconnect">
+ <literal>Disconnect()</literal>
+ </link>
+ in the
+ <link linkend="gdbus-org.freedesktop.ModemManager1.Bearer">
+ <literal>org.freedesktop.ModemManager1.Bearer</literal>
+ </link>
+ interface.
+ </para>
+ <para>
+ This logic of splitting the connection logic allows ModemManager to create
+ multiple bearers that may be connected to e.g. different access points (if
+ the modem allows it).
+ </para>
+ </section>
+
+ <section>
+ <title>Simple connection</title>
+ <para>
+ In order to simplify the whole sequence to get the modem connected, ModemManager
+ still exposes a Simple interface, renamed as:
+ <link linkend="gdbus-org.freedesktop.ModemManager1.Modem.Simple">
+ <literal>org.freedesktop.ModemManager1.Modem.Simple</literal>
+ </link>.
+ </para>
+ <para>
+ The
+ <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem-Simple.Connect">
+ <literal>Connect()</literal>
+ </link>
+ method will create a single bearer with the parameters specified in the call an get
+ it connected, while the
+ <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem-Simple.Disconnect">
+ <literal>Disconnect()</literal>
+ </link>
+ method will disconnect all available bearers.
+ </para>
+ <para>
+ One of the main differences with respect to the 0.6 interface, is that
+ <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem-Simple.Connect">
+ <literal>Connect()</literal>
+ </link>
+ doesn't support to change allowed modes or bands. Instead, these operations should
+ be done through the methods in the
+ <link linkend="gdbus-org.freedesktop.ModemManager1.Modem">
+ <literal>org.freedesktop.ModemManager1.Modem</literal>
+ </link>
+ interface.
+ </para>
+ </section>
+ </chapter>
+</part>
diff --git a/docs/reference/api/ModemManager-overview.xml b/docs/reference/api/ModemManager-overview.xml
index 751dc68..7dad85a 100644
--- a/docs/reference/api/ModemManager-overview.xml
+++ b/docs/reference/api/ModemManager-overview.xml
@@ -8,30 +8,31 @@
<chapter id="ref-overview-introduction">
<title>Introduction</title>
<para>
- ModemManager provides a unified high level API for communicating with
- (mobile broadband) modems. While the basic commands are standardized,
- the more advanced operations (like signal quality monitoring while
- connected) varies a lot.
+ 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...).
</para>
<formalpara>
<title>Using</title>
<para>
ModemManager is a system daemon and is not meant to be used directly from
- the command line. However, a command line client (mmcli) is provided, which
- may be used to test the different functionality provided during plugin
- development.
+ 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.
</para>
</formalpara>
<formalpara>
<title>Implementation</title>
<para>
ModemManager is a DBus system bus activated service (meaning it's started
- automatically when a request arrives). It is written in C. The devices are
- queried from udev and automatically updated based on hardware events. There are
- DBus-interface specific GInterfaces, which should be implemented by any device
- specific implementation. There is a generic MMBroadbandModem implementation that
- provides a generic implementation of the most common operations in both GSM and
- CDMA modems.
+ 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 provice 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.
</para>
</formalpara>
<formalpara>
@@ -39,10 +40,13 @@
<para>
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 modem 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. Writing
- new plugins is highly encouraged!
+ 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!
</para>
</formalpara>
</chapter>
diff --git a/docs/reference/api/ModemManager-sections.txt b/docs/reference/api/ModemManager-sections.txt
index 94cc033..f2d0ded 100644
--- a/docs/reference/api/ModemManager-sections.txt
+++ b/docs/reference/api/ModemManager-sections.txt
@@ -1,4 +1,13 @@
<SECTION>
+<FILE>mm-version</FILE>
+<TITLE>Version checks</TITLE>
+MM_MAJOR_VERSION
+MM_MINOR_VERSION
+MM_MICRO_VERSION
+MM_CHECK_VERSION
+</SECTION>
+
+<SECTION>
<FILE>mm-enums</FILE>
<TITLE>Flags and Enumerations</TITLE>
MMBearerIpFamily
@@ -23,6 +32,7 @@ MMModemState
MMModemStateFailedReason
MMModemStateChangeReason
MMModemPowerState
+MMModemPortType
MMSmsPduType
MMSmsState
MMSmsDeliveryState
diff --git a/docs/reference/api/html/ModemManager-Errors.html b/docs/reference/api/html/ModemManager-Errors.html
index b570b89..a5f69d0 100644
--- a/docs/reference/api/html/ModemManager-Errors.html
+++ b/docs/reference/api/html/ModemManager-Errors.html
@@ -5,9 +5,9 @@
<title>Errors</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus-common-types.html" title="Common types">
+<link rel="up" href="ref-common-types.html" title="Part II. Common types and definitions">
<link rel="prev" href="ModemManager-Flags-and-Enumerations.html" title="Flags and Enumerations">
-<link rel="next" href="ref-dbus-object-manager.html" title="The /org/freedesktop/ModemManager1 object">
+<link rel="next" href="ref-dbus.html" title="Part III. D-Bus Reference">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -15,10 +15,10 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="ModemManager-Flags-and-Enumerations.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ref-dbus-common-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ref-common-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
-<td><a accesskey="n" href="ref-dbus-object-manager.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ref-dbus.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#ModemManager-Errors.synopsis" class="shortcut">Top</a>
diff --git a/docs/reference/api/html/ModemManager-Flags-and-Enumerations.html b/docs/reference/api/html/ModemManager-Flags-and-Enumerations.html
index 8581c79..0d20495 100644
--- a/docs/reference/api/html/ModemManager-Flags-and-Enumerations.html
+++ b/docs/reference/api/html/ModemManager-Flags-and-Enumerations.html
@@ -5,8 +5,8 @@
<title>Flags and Enumerations</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus-common-types.html" title="Common types">
-<link rel="prev" href="ref-dbus-common-types.html" title="Common types">
+<link rel="up" href="ref-common-types.html" title="Part II. Common types and definitions">
+<link rel="prev" href="ModemManager-Version-checks.html" title="Version checks">
<link rel="next" href="ModemManager-Errors.html" title="Errors">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
@@ -14,8 +14,8 @@
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
-<td><a accesskey="p" href="ref-dbus-common-types.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ref-dbus-common-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ModemManager-Version-checks.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ref-common-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
<td><a accesskey="n" href="ModemManager-Errors.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
@@ -59,6 +59,7 @@ enum <a class="link" href="ModemManager-Flags-and-Enumerations.ht
enum <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMModemStateFailedReason" title="enum MMModemStateFailedReason">MMModemStateFailedReason</a>;
enum <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMModemStateChangeReason" title="enum MMModemStateChangeReason">MMModemStateChangeReason</a>;
enum <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMModemPowerState" title="enum MMModemPowerState">MMModemPowerState</a>;
+enum <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMModemPortType" title="enum MMModemPortType">MMModemPortType</a>;
enum <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMSmsPduType" title="enum MMSmsPduType">MMSmsPduType</a>;
enum <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMSmsState" title="enum MMSmsState">MMSmsState</a>;
enum <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMSmsDeliveryState" title="enum MMSmsDeliveryState">MMSmsDeliveryState</a>;
@@ -1759,6 +1760,67 @@ Power state of the modem.
</div>
<hr>
<div class="refsect2">
+<a name="MMModemPortType"></a><h3>enum MMModemPortType</h3>
+<pre class="programlisting">typedef enum {
+ /*&lt; underscore_name=mm_modem_port_type &gt;*/
+ MM_MODEM_PORT_TYPE_UNKNOWN = 1,
+ MM_MODEM_PORT_TYPE_NET = 2,
+ MM_MODEM_PORT_TYPE_AT = 3,
+ MM_MODEM_PORT_TYPE_QCDM = 4,
+ MM_MODEM_PORT_TYPE_GPS = 5,
+ MM_MODEM_PORT_TYPE_QMI = 6,
+ MM_MODEM_PORT_TYPE_MBIM = 7
+} MMModemPortType;
+</pre>
+<p>
+Type of modem port.
+</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><a name="MM-MODEM-PORT-TYPE-UNKNOWN:CAPS"></a><span class="term"><code class="literal">MM_MODEM_PORT_TYPE_UNKNOWN</code></span></p></td>
+<td>Unknown.
+</td>
+</tr>
+<tr>
+<td><p><a name="MM-MODEM-PORT-TYPE-NET:CAPS"></a><span class="term"><code class="literal">MM_MODEM_PORT_TYPE_NET</code></span></p></td>
+<td>Net port.
+</td>
+</tr>
+<tr>
+<td><p><a name="MM-MODEM-PORT-TYPE-AT:CAPS"></a><span class="term"><code class="literal">MM_MODEM_PORT_TYPE_AT</code></span></p></td>
+<td>AT port.
+</td>
+</tr>
+<tr>
+<td><p><a name="MM-MODEM-PORT-TYPE-QCDM:CAPS"></a><span class="term"><code class="literal">MM_MODEM_PORT_TYPE_QCDM</code></span></p></td>
+<td>QCDM port.
+</td>
+</tr>
+<tr>
+<td><p><a name="MM-MODEM-PORT-TYPE-GPS:CAPS"></a><span class="term"><code class="literal">MM_MODEM_PORT_TYPE_GPS</code></span></p></td>
+<td>GPS port.
+</td>
+</tr>
+<tr>
+<td><p><a name="MM-MODEM-PORT-TYPE-QMI:CAPS"></a><span class="term"><code class="literal">MM_MODEM_PORT_TYPE_QMI</code></span></p></td>
+<td>QMI port.
+</td>
+</tr>
+<tr>
+<td><p><a name="MM-MODEM-PORT-TYPE-MBIM:CAPS"></a><span class="term"><code class="literal">MM_MODEM_PORT_TYPE_MBIM</code></span></p></td>
+<td>MBIM port.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
<a name="MMSmsPduType"></a><h3>enum MMSmsPduType</h3>
<pre class="programlisting">typedef enum {
/*&lt; underscore_name=mm_sms_pdu_type &gt;*/
diff --git a/docs/reference/api/html/ModemManager-Version-checks.html b/docs/reference/api/html/ModemManager-Version-checks.html
new file mode 100644
index 0000000..1dafb8d
--- /dev/null
+++ b/docs/reference/api/html/ModemManager-Version-checks.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Version checks</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="ModemManager Reference Manual">
+<link rel="up" href="ref-common-types.html" title="Part II. Common types and definitions">
+<link rel="prev" href="ref-common-types.html" title="Part II. Common types and definitions">
+<link rel="next" href="ModemManager-Flags-and-Enumerations.html" title="Flags and Enumerations">
+<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="ref-common-types.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ref-common-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">ModemManager Reference Manual</th>
+<td><a accesskey="n" href="ModemManager-Flags-and-Enumerations.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#ModemManager-Version-checks.synopsis" class="shortcut">Top</a>
+  | 
+ <a href="#ModemManager-Version-checks.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="ModemManager-Version-checks"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="ModemManager-Version-checks.top_of_page"></a>Version checks</span></h2>
+<p>Version checks — Version information in the API.</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="ModemManager-Version-checks.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">#define <a class="link" href="ModemManager-Version-checks.html#MM-MAJOR-VERSION:CAPS" title="MM_MAJOR_VERSION">MM_MAJOR_VERSION</a>
+#define <a class="link" href="ModemManager-Version-checks.html#MM-MINOR-VERSION:CAPS" title="MM_MINOR_VERSION">MM_MINOR_VERSION</a>
+#define <a class="link" href="ModemManager-Version-checks.html#MM-MICRO-VERSION:CAPS" title="MM_MICRO_VERSION">MM_MICRO_VERSION</a>
+#define <a class="link" href="ModemManager-Version-checks.html#MM-CHECK-VERSION:CAPS" title="MM_CHECK_VERSION()">MM_CHECK_VERSION</a> (major,
+ minor,
+ micro)
+</pre>
+</div>
+<div class="refsect1">
+<a name="ModemManager-Version-checks.description"></a><h2>Description</h2>
+<p>
+This section defines types that are used to identify the ModemManager version.
+</p>
+</div>
+<div class="refsect1">
+<a name="ModemManager-Version-checks.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="MM-MAJOR-VERSION:CAPS"></a><h3>MM_MAJOR_VERSION</h3>
+<pre class="programlisting">#define MM_MAJOR_VERSION (1)
+</pre>
+<p>
+Evaluates to the major version number of ModemManager which this source
+is compiled against.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="MM-MINOR-VERSION:CAPS"></a><h3>MM_MINOR_VERSION</h3>
+<pre class="programlisting">#define MM_MINOR_VERSION (0)
+</pre>
+<p>
+Evaluates to the minor version number of ModemManager which this source
+is compiled against.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="MM-MICRO-VERSION:CAPS"></a><h3>MM_MICRO_VERSION</h3>
+<pre class="programlisting">#define MM_MICRO_VERSION (0)
+</pre>
+<p>
+Evaluates to the micro version number of ModemManager which this source
+compiled against.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="MM-CHECK-VERSION:CAPS"></a><h3>MM_CHECK_VERSION()</h3>
+<pre class="programlisting">#define MM_CHECK_VERSION(major,minor,micro)</pre>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>major</code></em> :</span></p></td>
+<td>major version (e.g. 1 for version 1.2.5)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>minor</code></em> :</span></p></td>
+<td>minor version (e.g. 2 for version 1.2.5)</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>micro</code></em> :</span></p></td>
+<td>micro version (e.g. 5 for version 1.2.5)</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the version of the ModemManager header files
+is the same as or newer than the passed-in version.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/reference/api/html/ModemManager.devhelp2 b/docs/reference/api/html/ModemManager.devhelp2
index 0dc9752..8daac50 100644
--- a/docs/reference/api/html/ModemManager.devhelp2
+++ b/docs/reference/api/html/ModemManager.devhelp2
@@ -5,23 +5,28 @@
<sub name="ModemManager Overview" link="ref-overview.html">
<sub name="Introduction" link="ref-overview-introduction.html"/>
<sub name="Modem detection and setup" link="ref-overview-modem-detection-and-setup.html">
- <sub name="Detection mechanisms" link="ref-overview-modem-detection-and-setup.html#idm266935804880"/>
+ <sub name="Detection mechanisms" link="ref-overview-modem-detection-and-setup.html#idm211863910672"/>
<sub name="Probing" link="ch02s02.html">
- <sub name="Pre-probing filters" link="ch02s02.html#idm266943579776"/>
- <sub name="Probing sequence" link="ch02s02.html#idm266934295312"/>
- <sub name="Post-probing filters" link="ch02s02.html#idm266943548864"/>
- <sub name="Probing setup examples" link="ch02s02.html#idm266936589872"/>
+ <sub name="Pre-probing filters" link="ch02s02.html#idm211863905456"/>
+ <sub name="Probing sequence" link="ch02s02.html#idm211854553632"/>
+ <sub name="Post-probing filters" link="ch02s02.html#idm211864004288"/>
+ <sub name="Probing setup examples" link="ch02s02.html#idm211856775152"/>
</sub>
<sub name="Port grabbing and Modem object creation" link="ch02s03.html"/>
</sub>
<sub name="Modem state machine" link="ref-overview-modem-state-machine.html">
- <sub name="Initialization" link="ref-overview-modem-state-machine.html#idm266936574096"/>
+ <sub name="Initialization" link="ref-overview-modem-state-machine.html#idm211856759264"/>
<sub name="Enabling" link="ch03s02.html"/>
<sub name="Connection &amp; disconnection" link="ch03s03.html"/>
<sub name="Disabling" link="ch03s04.html"/>
</sub>
<sub name="Plugin-specific Modems" link="ref-overview-plugin-specific-modems.html"/>
</sub>
+ <sub name="Common types and definitions" link="ref-common-types.html">
+ <sub name="Version checks" link="ModemManager-Version-checks.html"/>
+ <sub name="Flags and Enumerations" link="ModemManager-Flags-and-Enumerations.html"/>
+ <sub name="Errors" link="ModemManager-Errors.html"/>
+ </sub>
<sub name="D-Bus Reference" link="ref-dbus.html">
<sub name="The org.freedesktop.ModemManager1 bus name" link="ref-dbus-bus-name.html"/>
<sub name="Standard interfaces" link="ref-dbus-standard-interfaces.html">
@@ -29,10 +34,6 @@
<sub name="org.freedesktop.DBus.Introspectable" link="ref-dbus-standard-interfaces-introspectables.html"/>
<sub name="org.freedesktop.DBus.ObjectManager" link="ref-dbus-standard-interfaces-objectmanager.html"/>
</sub>
- <sub name="Common types" link="ref-dbus-common-types.html">
- <sub name="Flags and Enumerations" link="ModemManager-Flags-and-Enumerations.html"/>
- <sub name="Errors" link="ModemManager-Errors.html"/>
- </sub>
<sub name="The /org/freedesktop/ModemManager1 object" link="ref-dbus-object-manager.html">
<sub name="org.freedesktop.ModemManager1" link="gdbus-org.freedesktop.ModemManager1.html"/>
</sub>
@@ -46,7 +47,6 @@
<sub name="org.freedesktop.ModemManager1.Modem.Location" link="gdbus-org.freedesktop.ModemManager1.Modem.Location.html"/>
<sub name="org.freedesktop.ModemManager1.Modem.Time" link="gdbus-org.freedesktop.ModemManager1.Modem.Time.html"/>
<sub name="org.freedesktop.ModemManager1.Modem.Firmware" link="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html"/>
- <sub name="org.freedesktop.ModemManager1.Modem.Contacts" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html"/>
</sub>
<sub name="The /org/freedesktop/ModemManager/Bearers objects" link="ref-dbus-object-bearer.html">
<sub name="org.freedesktop.ModemManager1.Bearer" link="gdbus-org.freedesktop.ModemManager1.Bearer.html"/>
@@ -58,9 +58,21 @@
<sub name="org.freedesktop.ModemManager1.Sms" link="gdbus-org.freedesktop.ModemManager1.Sms.html"/>
</sub>
</sub>
+ <sub name="Migrating from ModemManager 0.6 to ModemManager 1.0" link="ref-migrating.html">
+ <sub name="" link="ch12.html">
+ <sub name="Listing available modems" link="ch12.html#idm211850989168"/>
+ <sub name="PIN unlocking" link="ch12s02.html"/>
+ <sub name="Connection and disconnection" link="ch12s03.html"/>
+ <sub name="Simple connection" link="ch12s04.html"/>
+ </sub>
+ </sub>
<sub name="Index" link="ix01.html"/>
</chapters>
<functions>
+ <keyword type="macro" name="MM_MAJOR_VERSION" link="ModemManager-Version-checks.html#MM-MAJOR-VERSION:CAPS"/>
+ <keyword type="macro" name="MM_MINOR_VERSION" link="ModemManager-Version-checks.html#MM-MINOR-VERSION:CAPS"/>
+ <keyword type="macro" name="MM_MICRO_VERSION" link="ModemManager-Version-checks.html#MM-MICRO-VERSION:CAPS"/>
+ <keyword type="macro" name="MM_CHECK_VERSION()" link="ModemManager-Version-checks.html#MM-CHECK-VERSION:CAPS"/>
<keyword type="enum" name="enum MMBearerIpFamily" link="ModemManager-Flags-and-Enumerations.html#MMBearerIpFamily"/>
<keyword type="enum" name="enum MMBearerIpMethod" link="ModemManager-Flags-and-Enumerations.html#MMBearerIpMethod"/>
<keyword type="enum" name="enum MMBearerAllowedAuth" link="ModemManager-Flags-and-Enumerations.html#MMBearerAllowedAuth"/>
@@ -83,6 +95,7 @@
<keyword type="enum" name="enum MMModemStateFailedReason" link="ModemManager-Flags-and-Enumerations.html#MMModemStateFailedReason"/>
<keyword type="enum" name="enum MMModemStateChangeReason" link="ModemManager-Flags-and-Enumerations.html#MMModemStateChangeReason"/>
<keyword type="enum" name="enum MMModemPowerState" link="ModemManager-Flags-and-Enumerations.html#MMModemPowerState"/>
+ <keyword type="enum" name="enum MMModemPortType" link="ModemManager-Flags-and-Enumerations.html#MMModemPortType"/>
<keyword type="enum" name="enum MMSmsPduType" link="ModemManager-Flags-and-Enumerations.html#MMSmsPduType"/>
<keyword type="enum" name="enum MMSmsState" link="ModemManager-Flags-and-Enumerations.html#MMSmsState"/>
<keyword type="enum" name="enum MMSmsDeliveryState" link="ModemManager-Flags-and-Enumerations.html#MMSmsDeliveryState"/>
@@ -121,6 +134,7 @@
<keyword type="property" name="The &quot;Drivers&quot; property" link="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Drivers"/>
<keyword type="property" name="The &quot;Plugin&quot; property" link="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Plugin"/>
<keyword type="property" name="The &quot;PrimaryPort&quot; property" link="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.PrimaryPort"/>
+ <keyword type="property" name="The &quot;Ports&quot; property" link="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Ports"/>
<keyword type="property" name="The &quot;EquipmentIdentifier&quot; property" link="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.EquipmentIdentifier"/>
<keyword type="property" name="The &quot;UnlockRequired&quot; property" link="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.UnlockRequired"/>
<keyword type="property" name="The &quot;UnlockRetries&quot; property" link="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.UnlockRetries"/>
@@ -179,14 +193,6 @@
<keyword type="property" name="The &quot;NetworkTimezone&quot; property" link="gdbus-org.freedesktop.ModemManager1.Modem.Time.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Time.NetworkTimezone"/>
<keyword type="method" name="The List() method" link="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Firmware.List"/>
<keyword type="method" name="The Select() method" link="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Firmware.Select"/>
- <keyword type="method" name="The Add() method" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add"/>
- <keyword type="method" name="The Delete() method" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete"/>
- <keyword type="method" name="The Get() method" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get"/>
- <keyword type="method" name="The List() method" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List"/>
- <keyword type="method" name="The Find() method" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find"/>
- <keyword type="method" name="The GetCount() method" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount"/>
- <keyword type="signal" name="The &quot;Added&quot; signal" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Added"/>
- <keyword type="signal" name="The &quot;Deleted&quot; signal" link="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Deleted"/>
<keyword type="method" name="The Connect() method" link="gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-method-org-freedesktop-ModemManager1-Bearer.Connect"/>
<keyword type="method" name="The Disconnect() method" link="gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-method-org-freedesktop-ModemManager1-Bearer.Disconnect"/>
<keyword type="property" name="The &quot;Interface&quot; property" link="gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-property-org-freedesktop-ModemManager1-Bearer.Interface"/>
@@ -429,6 +435,13 @@
<keyword type="constant" name="MM_MODEM_POWER_STATE_OFF" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-POWER-STATE-OFF:CAPS"/>
<keyword type="constant" name="MM_MODEM_POWER_STATE_LOW" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-POWER-STATE-LOW:CAPS"/>
<keyword type="constant" name="MM_MODEM_POWER_STATE_ON" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-POWER-STATE-ON:CAPS"/>
+ <keyword type="constant" name="MM_MODEM_PORT_TYPE_UNKNOWN" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-UNKNOWN:CAPS"/>
+ <keyword type="constant" name="MM_MODEM_PORT_TYPE_NET" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-NET:CAPS"/>
+ <keyword type="constant" name="MM_MODEM_PORT_TYPE_AT" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-AT:CAPS"/>
+ <keyword type="constant" name="MM_MODEM_PORT_TYPE_QCDM" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-QCDM:CAPS"/>
+ <keyword type="constant" name="MM_MODEM_PORT_TYPE_GPS" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-GPS:CAPS"/>
+ <keyword type="constant" name="MM_MODEM_PORT_TYPE_QMI" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-QMI:CAPS"/>
+ <keyword type="constant" name="MM_MODEM_PORT_TYPE_MBIM" link="ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-MBIM:CAPS"/>
<keyword type="constant" name="MM_SMS_PDU_TYPE_UNKNOWN" link="ModemManager-Flags-and-Enumerations.html#MM-SMS-PDU-TYPE-UNKNOWN:CAPS"/>
<keyword type="constant" name="MM_SMS_PDU_TYPE_DELIVER" link="ModemManager-Flags-and-Enumerations.html#MM-SMS-PDU-TYPE-DELIVER:CAPS"/>
<keyword type="constant" name="MM_SMS_PDU_TYPE_SUBMIT" link="ModemManager-Flags-and-Enumerations.html#MM-SMS-PDU-TYPE-SUBMIT:CAPS"/>
diff --git a/docs/reference/api/html/ch02s02.html b/docs/reference/api/html/ch02s02.html
index 59ac2e3..4d01761 100644
--- a/docs/reference/api/html/ch02s02.html
+++ b/docs/reference/api/html/ch02s02.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266935749600"></a>Probing</h2></div></div></div>
+<a name="idm211863907456"></a>Probing</h2></div></div></div>
<p>
Whenever a new device is detected by ModemManager, port probing process will
get started, so that we can determine which kind of ports we have, and also
@@ -37,7 +37,7 @@
</p>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idm266943579776"></a>Pre-probing filters</h3></div></div></div>
+<a name="idm211863905456"></a>Pre-probing filters</h3></div></div></div>
<p>
Pre-probing filters are those which control whether the probing, as
requested by the specific plugin, takes place.
@@ -127,7 +127,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idm266934295312"></a>Probing sequence</h3></div></div></div>
+<a name="idm211854553632"></a>Probing sequence</h3></div></div></div>
<p>
Whenever all pre-probing filters of a given plugin pass, ModemManager will run
the probing sequence as requested by the specific plugin. The main purpose of the
@@ -216,7 +216,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idm266943548864"></a>Post-probing filters</h3></div></div></div>
+<a name="idm211864004288"></a>Post-probing filters</h3></div></div></div>
<p>
Post-probing filters are required to identify whether a plugin can handle a given
modem, in special cases where the information retrieved from udev is either not
@@ -294,9 +294,9 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idm266936589872"></a>Probing setup examples</h3></div></div></div>
+<a name="idm211856775152"></a>Probing setup examples</h3></div></div></div>
<div class="example">
-<a name="idm266936589136"></a><p class="title"><b>Example 1. Probing setup for a plugin requiring udev-based vendor/product checks</b></p>
+<a name="idm211856774416"></a><p class="title"><b>Example 1. Probing setup for a plugin requiring udev-based vendor/product checks</b></p>
<div class="example-contents">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -358,7 +358,7 @@
</div>
<br class="example-break"><div class="example">
-<a name="idm266936586704"></a><p class="title"><b>Example 2. Probing setup for a plugin requiring AT-probed vendor/product checks</b></p>
+<a name="idm211856771984"></a><p class="title"><b>Example 2. Probing setup for a plugin requiring AT-probed vendor/product checks</b></p>
<div class="example-contents">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -414,7 +414,7 @@
</div>
<br class="example-break"><div class="example">
-<a name="idm266936584304"></a><p class="title"><b>Example 3. Probing setup for a plugin with custom initialization requirements</b></p>
+<a name="idm211856769584"></a><p class="title"><b>Example 3. Probing setup for a plugin with custom initialization requirements</b></p>
<div class="example-contents">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
diff --git a/docs/reference/api/html/ch02s03.html b/docs/reference/api/html/ch02s03.html
index 8aa0872..89fc5b3 100644
--- a/docs/reference/api/html/ch02s03.html
+++ b/docs/reference/api/html/ch02s03.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266936581152"></a>Port grabbing and Modem object creation</h2></div></div></div>
+<a name="idm211856766320"></a>Port grabbing and Modem object creation</h2></div></div></div>
<p>
Once a port passes all probing filters of a given plugin, the plugin will grab
the port. When the first port of a given device is grabbed, the plugin will create
diff --git a/docs/reference/api/html/ch03s02.html b/docs/reference/api/html/ch03s02.html
index ba1ddfe..664cc69 100644
--- a/docs/reference/api/html/ch03s02.html
+++ b/docs/reference/api/html/ch03s02.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266936557056"></a>Enabling</h2></div></div></div>
+<a name="idm211856742224"></a>Enabling</h2></div></div></div>
<p>
Modem enabling is the user-requested sequence with the sole purpose of bringing
the modem to a state where it can get connected.
diff --git a/docs/reference/api/html/ch03s03.html b/docs/reference/api/html/ch03s03.html
index be6334e..cc62014 100644
--- a/docs/reference/api/html/ch03s03.html
+++ b/docs/reference/api/html/ch03s03.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266936542224"></a>Connection &amp; disconnection</h2></div></div></div>
+<a name="idm211856727392"></a>Connection &amp; disconnection</h2></div></div></div>
<p>
Connecting the Modem is done through the <span class="emphasis"><em>Bearer</em></span> objects. Once such an
object is created, the user can request to get the given bearer connected.
diff --git a/docs/reference/api/html/ch03s04.html b/docs/reference/api/html/ch03s04.html
index a661b4e..388da75 100644
--- a/docs/reference/api/html/ch03s04.html
+++ b/docs/reference/api/html/ch03s04.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266936538208"></a>Disabling</h2></div></div></div>
+<a name="idm211856723376"></a>Disabling</h2></div></div></div>
<p>
Users can disable the modems, which will bring them to a state where they are in low power
mode (e.g. RF switched off) and not registered in any network.
diff --git a/docs/reference/api/html/ch12.html b/docs/reference/api/html/ch12.html
new file mode 100644
index 0000000..3ec9d85
--- /dev/null
+++ b/docs/reference/api/html/ch12.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title></title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="ModemManager Reference Manual">
+<link rel="up" href="ref-migrating.html" title="Part IV. Migrating from ModemManager 0.6 to ModemManager 1.0">
+<link rel="prev" href="ref-migrating.html" title="Part IV. Migrating from ModemManager 0.6 to ModemManager 1.0">
+<link rel="next" href="ch12s02.html" title="PIN unlocking">
+<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ref-migrating.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ref-migrating.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">ModemManager Reference Manual</th>
+<td><a accesskey="n" href="ch12s02.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="ch12.html#idm211850989168">Listing available modems</a></span></dt>
+<dt><span class="section"><a href="ch12s02.html">PIN unlocking</a></span></dt>
+<dt><span class="section"><a href="ch12s03.html">Connection and disconnection</a></span></dt>
+<dt><span class="section"><a href="ch12s04.html">Simple connection</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="idm211850989168"></a>Listing available modems</h2></div></div></div>
+<p>
+ The D-Bus name <code class="literal">org.freedesktop.ModemManager1</code>
+ on the system bus is the new name used by the ModemManager 1.0 daemon, and it
+ implements several standard DBus interfaces, including the new
+ <a class="ulink" href="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager" target="_top">
+ <code class="literal">org.freedesktop.DBus.ObjectManager</code>
+ </a>
+ interface, which allows to list available modem objects and get notifications
+ where new ones are added or when existing ones are removed. There are therefore
+ neither a custom method to enumerate devices as in the old 0.6 interface, nor
+ custom signals to notify about added or removed modems.
+ </p>
+<p>
+ Modems which are found but are not usable will be flagged with a
+ <a class="link" href="ModemManager-Flags-and-Enumerations.html#MM-MODEM-STATE-FAILED:CAPS"><code class="constant">MM_MODEM_STATE_FAILED</code></a>
+ state in the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.State" title='The "State" property'>
+ <code class="literal">State</code>
+ </a>
+ property, and a more detailed reason about the failure will be given in the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.StateFailedReason" title='The "StateFailedReason" property'>
+ <code class="literal">StateFailedReason</code>
+ </a>
+ property. The most common case of failure is to have the SIM missing in a modem which
+ requires one for operation.
+ </p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/reference/api/html/ch12s02.html b/docs/reference/api/html/ch12s02.html
new file mode 100644
index 0000000..3d4d66a
--- /dev/null
+++ b/docs/reference/api/html/ch12s02.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>PIN unlocking</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="ModemManager Reference Manual">
+<link rel="up" href="ch12.html" title="">
+<link rel="prev" href="ch12.html" title="">
+<link rel="next" href="ch12s03.html" title="Connection and disconnection">
+<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ch12.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch12.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">ModemManager Reference Manual</th>
+<td><a accesskey="n" href="ch12s03.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="idm211856200960"></a>PIN unlocking</h2></div></div></div>
+<p>
+ The process of PIN unlocking the modem is now performed with the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Sim.html#gdbus-method-org-freedesktop-ModemManager1-Sim.SendPin" title="The SendPin() method">
+ <code class="function">SendPin()</code>
+ </a>
+ method in the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Sim.html" title="org.freedesktop.ModemManager1.Sim">
+ <code class="literal">org.freedesktop.ModemManager1.Sim</code>
+ </a>
+ interface.
+ </p>
+<p>
+ The path of the SIM object is specified in the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Sim" title='The "Sim" property'>
+ <code class="literal">Sim</code>
+ </a>
+ property of the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html" title="org.freedesktop.ModemManager1.Modem">
+ <code class="literal">org.freedesktop.ModemManager1.Modem</code>
+ </a>
+ interface. If the modem doesn't have a SIM, no object path will be given.
+ </p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/reference/api/html/ch12s03.html b/docs/reference/api/html/ch12s03.html
new file mode 100644
index 0000000..b22ae7a
--- /dev/null
+++ b/docs/reference/api/html/ch12s03.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Connection and disconnection</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="ModemManager Reference Manual">
+<link rel="up" href="ch12.html" title="">
+<link rel="prev" href="ch12s02.html" title="PIN unlocking">
+<link rel="next" href="ch12s04.html" title="Simple connection">
+<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ch12s02.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch12.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">ModemManager Reference Manual</th>
+<td><a accesskey="n" href="ch12s04.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="idm211855470720"></a>Connection and disconnection</h2></div></div></div>
+<p>
+ The process of requesting to connect or disconnect the modem is now split into
+ two operations: creating a bearer with
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer" title="The CreateBearer() method">
+ <code class="function">CreateBearer()</code>
+ </a>
+ in the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html" title="org.freedesktop.ModemManager1.Modem">
+ <code class="literal">org.freedesktop.ModemManager1.Modem</code>
+ </a>
+ interface and getting the bearer connected with
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-method-org-freedesktop-ModemManager1-Bearer.Connect" title="The Connect() method">
+ <code class="function">Connect()</code>
+ </a>
+ in the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Bearer.html" title="org.freedesktop.ModemManager1.Bearer">
+ <code class="literal">org.freedesktop.ModemManager1.Bearer</code>
+ </a>
+ interface. These two steps are equivalent to the old <code class="literal"><code class="function">Connect()</code></code>
+ method in the previous <code class="literal">org.freedesktop.ModemManager.Modem</code>
+ interface.
+ </p>
+<p>
+ The old <code class="literal"><code class="function">Disconnect()</code></code>
+ method in the previous <code class="literal">org.freedesktop.ModemManager.Modem</code>
+ interface is therefore also applied in a per-bearer basis through the new
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-method-org-freedesktop-ModemManager1-Bearer.Disconnect" title="The Disconnect() method">
+ <code class="function">Disconnect()</code>
+ </a>
+ in the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Bearer.html" title="org.freedesktop.ModemManager1.Bearer">
+ <code class="literal">org.freedesktop.ModemManager1.Bearer</code>
+ </a>
+ interface.
+ </p>
+<p>
+ This logic of splitting the connection logic allows ModemManager to create
+ multiple bearers that may be connected to e.g. different access points (if
+ the modem allows it).
+ </p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/reference/api/html/ch12s04.html b/docs/reference/api/html/ch12s04.html
new file mode 100644
index 0000000..68fc85f
--- /dev/null
+++ b/docs/reference/api/html/ch12s04.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Simple connection</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="ModemManager Reference Manual">
+<link rel="up" href="ch12.html" title="">
+<link rel="prev" href="ch12s03.html" title="Connection and disconnection">
+<link rel="next" href="ix01.html" title="Index">
+<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ch12s03.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch12.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">ModemManager Reference Manual</th>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="idm211857333392"></a>Simple connection</h2></div></div></div>
+<p>
+ In order to simplify the whole sequence to get the modem connected, ModemManager
+ still exposes a Simple interface, renamed as:
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Simple.html" title="org.freedesktop.ModemManager1.Modem.Simple">
+ <code class="literal">org.freedesktop.ModemManager1.Modem.Simple</code>
+ </a>.
+ </p>
+<p>
+ The
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Simple.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Simple.Connect" title="The Connect() method">
+ <code class="function">Connect()</code>
+ </a>
+ method will create a single bearer with the parameters specified in the call an get
+ it connected, while the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Simple.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Simple.Disconnect" title="The Disconnect() method">
+ <code class="function">Disconnect()</code>
+ </a>
+ method will disconnect all available bearers.
+ </p>
+<p>
+ One of the main differences with respect to the 0.6 interface, is that
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Simple.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Simple.Connect" title="The Connect() method">
+ <code class="function">Connect()</code>
+ </a>
+ doesn't support to change allowed modes or bands. Instead, these operations should
+ be done through the methods in the
+ <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html" title="org.freedesktop.ModemManager1.Modem">
+ <code class="literal">org.freedesktop.ModemManager1.Modem</code>
+ </a>
+ interface.
+ </p>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html
index cf44c78..9563e62 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html
@@ -45,7 +45,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266931416432"></a><h2>Properties</h2>
+<a name="idm211849419184"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-property-org-freedesktop-ModemManager1-Bearer.Interface" title='The "Interface" property'>Interface</a> readable s
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-property-org-freedesktop-ModemManager1-Bearer.Connected" title='The "Connected" property'>Connected</a> readable b
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html
deleted file mode 100644
index dac9708..0000000
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html
+++ /dev/null
@@ -1,338 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.ModemManager1.Modem.Contacts</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus-object-modem.html" title="The /org/freedesktop/ModemManager/Modems objects">
-<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html" title="org.freedesktop.ModemManager1.Modem.Firmware">
-<link rel="next" href="ref-dbus-object-bearer.html" title="The /org/freedesktop/ModemManager/Bearers objects">
-<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ref-dbus-object-modem.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">ModemManager Reference Manual</th>
-<td><a accesskey="n" href="ref-dbus-object-bearer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#gdbus-org.freedesktop.ModemManager1.Modem.Contacts.synopsis" class="shortcut">Top</a>
-  | 
- <a href="#gdbus-org.freedesktop.ModemManager1.Modem.Contacts.description" class="shortcut">Description</a>
-  | 
- <a href="#gdbus-org.freedesktop.ModemManager1.Modem.Contacts.signals" class="shortcut">Signals</a>
-</td></tr>
-</table>
-<div class="refentry">
-<a name="gdbus-org.freedesktop.ModemManager1.Modem.Contacts"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gdbus-interface-org-freedesktop-ModemManager1-Modem-Contacts.top_of_page"></a>org.freedesktop.ModemManager1.Modem.Contacts</span></h2>
-<p>org.freedesktop.ModemManager1.Modem.Contacts — The ModemManager Contacts interface.</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv">
-<h2>Methods</h2>
-<pre class="synopsis">
-<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add" title="The Add() method">Add</a> (IN a{sv} properties,
- OUT u index);
-<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete" title="The Delete() method">Delete</a> (IN u index);
-<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get" title="The Get() method">Get</a> (IN u index,
- OUT a{sv} properties);
-<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List" title="The List() method">List</a> (OUT aa{sv} results);
-<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find" title="The Find() method">Find</a> (IN s pattern,
- OUT aa{sv} results);
-<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount" title="The GetCount() method">GetCount</a> (OUT u count);
-</pre>
-</div>
-<div class="refsect1">
-<a name="idm266930928400"></a><h2>Signals</h2>
-<pre class="synopsis">
-<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Added" title='The "Added" signal'>Added</a> (u index,
- a{sv} properties);
-<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Deleted" title='The "Deleted" signal'>Deleted</a> (u index);
-</pre>
-</div>
-<div class="refsect1">
-<a name="gdbus-interface-org-freedesktop-ModemManager1-Modem-Contacts"></a><h2>Description</h2>
-<p> This interface provides access to contacts stored in various locations,
- including SIM cards, device storage, and other locations. Operations
- generally operate on all contacts regardless of their actual storage
- location.
-</p>
-<p> Contacts are referred to by index numbers, which are internal to
- ModemManager and do not represent indexes of SIM cards or the device.
- Indexes may not be contiguous.
-</p>
-</div>
-<div class="refsect1">
-<a name="gdbus-methods-org.freedesktop.ModemManager1.Modem.Contacts"></a><h2>Method Details</h2>
-<div class="refsect2">
-<a name="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add"></a><h3>The Add() method</h3>
-<pre class="programlisting">
-Add (IN a{sv} properties,
- OUT u index);
-</pre>
-<p> Add a new contact.
-</p>
-<p> If any of the property in <em class="parameter"><code>properties</code></em> exceeds the modem's size limit,
- that property will be truncated to fit.
-</p>
-<p> Known properties are:
- </p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><code class="literal">"name"</code></span></p></td>
-<td>
- Full name of the contact, given as a string value
- (signature <code class="literal">"s"</code>).
- </td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">"number"</code></span></p></td>
-<td>
- Telephone number, given as a string value
- (signature <code class="literal">"s"</code>).
- </td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">"email"</code></span></p></td>
-<td>
- Email address, given as a string value
- (signature <code class="literal">"s"</code>).
- </td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">"group"</code></span></p></td>
-<td>
- Group this contact belongs to, given as a string value
- (signature <code class="literal">"s"</code>).
- </td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">"name2"</code></span></p></td>
-<td>
- Additional contact name, given as a string value
- (signature <code class="literal">"s"</code>).
- </td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">"number2"</code></span></p></td>
-<td>
- Additional contact telephone number, given as a string value
- (signature <code class="literal">"s"</code>).
- </td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">"hidden"</code></span></p></td>
-<td>
- Boolean flag to specify whether this entry is hidden or not,
- (signature <code class="literal">"b"</code>).
- </td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">"storage"</code></span></p></td>
-<td>
- Phonebook in which the contact is stored, given as a
- <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMModemContactsStorage" title="enum MMModemContactsStorage">MMModemContactsStorage</a>,
- (signature <code class="literal">"u"</code>).
- </td>
-</tr>
-</tbody>
-</table></div>
-<p>
-</p>
-<p> The <em class="parameter"><code>index</code></em> number is an internal private number to ModemManager and does
- not correspond to the index of the contact in the modem or SIM itself.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><code class="literal">IN a{sv} <em class="parameter"><code>properties</code></em></code>:</span></p></td>
-<td><p>Dictionary of properties describing the contact.</p></td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">OUT u <em class="parameter"><code>index</code></em></code>:</span></p></td>
-<td><p>The index number of the new contact</p></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete"></a><h3>The Delete() method</h3>
-<pre class="programlisting">
-Delete (IN u index);
-</pre>
-<p> Delete a contact.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody><tr>
-<td><p><span class="term"><code class="literal">IN u <em class="parameter"><code>index</code></em></code>:</span></p></td>
-<td><p>The index of the contact to delete.</p></td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get"></a><h3>The Get() method</h3>
-<pre class="programlisting">
-Get (IN u index,
- OUT a{sv} properties);
-</pre>
-<p> Retrieve a contact.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><code class="literal">IN u <em class="parameter"><code>index</code></em></code>:</span></p></td>
-<td><p>The index of the contact.</p></td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">OUT a{sv} <em class="parameter"><code>properties</code></em></code>:</span></p></td>
-<td><p>The properties of the contact.</p></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List"></a><h3>The List() method</h3>
-<pre class="programlisting">
-List (OUT aa{sv} results);
-</pre>
-<p> List all contacts.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody><tr>
-<td><p><span class="term"><code class="literal">OUT aa{sv} <em class="parameter"><code>results</code></em></code>:</span></p></td>
-<td><p>An array of dictionaries, each dictionary representing a contact.</p></td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find"></a><h3>The Find() method</h3>
-<pre class="programlisting">
-Find (IN s pattern,
- OUT aa{sv} results);
-</pre>
-<p> Find a contact.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><code class="literal">IN s <em class="parameter"><code>pattern</code></em></code>:</span></p></td>
-<td><p>The pattern to search for.</p></td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">OUT aa{sv} <em class="parameter"><code>results</code></em></code>:</span></p></td>
-<td><p>An array of dictionaries, each dictionary representing a contact.</p></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount"></a><h3>The GetCount() method</h3>
-<pre class="programlisting">
-GetCount (OUT u count);
-</pre>
-<p> Get the number of contacts.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody><tr>
-<td><p><span class="term"><code class="literal">OUT u <em class="parameter"><code>count</code></em></code>:</span></p></td>
-<td><p>The number of contacts.</p></td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gdbus-signals-org.freedesktop.ModemManager1.Modem.Contacts"></a><h2>Signal Details</h2>
-<div class="refsect2">
-<a name="gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Added"></a><h3>The "Added" signal</h3>
-<pre class="programlisting">
-Added (u index,
- a{sv} properties);
-</pre>
-<p> Emitted when a new contact is added.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><code class="literal">u <em class="parameter"><code>index</code></em></code>:</span></p></td>
-<td><p>The index number of the new contact.</p></td>
-</tr>
-<tr>
-<td><p><span class="term"><code class="literal">a{sv} <em class="parameter"><code>properties</code></em></code>:</span></p></td>
-<td><p>The properties of the contact.</p></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Deleted"></a><h3>The "Deleted" signal</h3>
-<pre class="programlisting">
-Deleted (u index);
-</pre>
-<p> Emitted when a new contact has been deleted.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody><tr>
-<td><p><span class="term"><code class="literal">u <em class="parameter"><code>index</code></em></code>:</span></p></td>
-<td><p>The index number of the now deleted contact.</p></td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.18.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html
index b9f99cc..0663fad 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="ModemManager Reference Manual">
<link rel="up" href="ref-dbus-object-modem.html" title="The /org/freedesktop/ModemManager/Modems objects">
<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.Modem.Time.html" title="org.freedesktop.ModemManager1.Modem.Time">
-<link rel="next" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html" title="org.freedesktop.ModemManager1.Modem.Contacts">
+<link rel="next" href="ref-dbus-object-bearer.html" title="The /org/freedesktop/ModemManager/Bearers objects">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -18,7 +18,7 @@
<td><a accesskey="u" href="ref-dbus-object-modem.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
-<td><a accesskey="n" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ref-dbus-object-bearer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#gdbus-org.freedesktop.ModemManager1.Modem.Firmware.synopsis" class="shortcut">Top</a>
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html
index 6ea804b..7e6cf75 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html
@@ -46,7 +46,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266931584784"></a><h2>Properties</h2>
+<a name="idm211857531456"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Location.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Location.Capabilities" title='The "Capabilities" property'>Capabilities</a> readable u
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Location.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Location.Enabled" title='The "Enabled" property'>Enabled</a> readable u
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html
index fae8796..45d9b7d 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html
@@ -49,7 +49,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266933889056"></a><h2>Signals</h2>
+<a name="idm211849157856"></a><h2>Signals</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Messaging.Added" title='The "Added" signal'>Added</a> (o path,
b received);
@@ -57,7 +57,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266933017440"></a><h2>Properties</h2>
+<a name="idm211850974416"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Messaging.SupportedStorages" title='The "SupportedStorages" property'>SupportedStorages</a> readable au
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Messaging.DefaultStorage" title='The "DefaultStorage" property'>DefaultStorage</a> readable u
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html
index 6a24839..e0c1fa6 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html
@@ -48,7 +48,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266931120224"></a><h2>Properties</h2>
+<a name="idm211849574576"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Modem3gpp-Ussd.State" title='The "State" property'>State</a> readable u
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Modem3gpp-Ussd.NetworkNotification" title='The "NetworkNotification" property'>NetworkNotification</a> readable s
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html
index 8a11a5e..f542f2e 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html
@@ -45,7 +45,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266930283696"></a><h2>Properties</h2>
+<a name="idm211849150832"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Modem3gpp.Imei" title='The "Imei" property'>Imei</a> readable s
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Modem3gpp.RegistrationState" title='The "RegistrationState" property'>RegistrationState</a> readable u
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html
index 2ff39ea..c8c4aa0 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html
@@ -47,7 +47,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266930845344"></a><h2>Signals</h2>
+<a name="idm211849006752"></a><h2>Signals</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-ModemCdma.ActivationStateChanged" title='The "ActivationStateChanged" signal'>ActivationStateChanged</a> (u activation_state,
u activation_error,
@@ -55,7 +55,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266929185104"></a><h2>Properties</h2>
+<a name="idm211850177040"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html#gdbus-property-org-freedesktop-ModemManager1-Modem-ModemCdma.ActivationState" title='The "ActivationState" property'>ActivationState</a> readable u
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html#gdbus-property-org-freedesktop-ModemManager1-Modem-ModemCdma.Meid" title='The "Meid" property'>Meid</a> readable s
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html
index 0ceea8c..05189c4 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html
@@ -46,13 +46,13 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266929702128"></a><h2>Signals</h2>
+<a name="idm211848200064"></a><h2>Signals</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Time.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Time.NetworkTimeChanged" title='The "NetworkTimeChanged" signal'>NetworkTimeChanged</a> (s time);
</pre>
</div>
<div class="refsect1">
-<a name="idm266932813568"></a><h2>Properties</h2>
+<a name="idm211853110096"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Time.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Time.NetworkTimezone" title='The "NetworkTimezone" property'>NetworkTimezone</a> readable a{sv}
</pre>
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html
index eb6c5df..4d34dce 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html
@@ -59,7 +59,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266931107200"></a><h2>Signals</h2>
+<a name="idm211852023552"></a><h2>Signals</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-signal-org-freedesktop-ModemManager1-Modem.StateChanged" title='The "StateChanged" signal'>StateChanged</a> (i old,
i new,
@@ -67,7 +67,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266931445968"></a><h2>Properties</h2>
+<a name="idm211850417072"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Sim" title='The "Sim" property'>Sim</a> readable o
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.SupportedCapabilities" title='The "SupportedCapabilities" property'>SupportedCapabilities</a> readable au
@@ -82,6 +82,7 @@
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Drivers" title='The "Drivers" property'>Drivers</a> readable as
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Plugin" title='The "Plugin" property'>Plugin</a> readable s
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.PrimaryPort" title='The "PrimaryPort" property'>PrimaryPort</a> readable s
+<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Ports" title='The "Ports" property'>Ports</a> readable a(su)
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.EquipmentIdentifier" title='The "EquipmentIdentifier" property'>EquipmentIdentifier</a> readable s
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.UnlockRequired" title='The "UnlockRequired" property'>UnlockRequired</a> readable u
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.UnlockRetries" title='The "UnlockRetries" property'>UnlockRetries</a> readable a{uu}
@@ -585,6 +586,18 @@ PrimaryPort readable s
</div>
<hr>
<div class="refsect2">
+<a name="gdbus-property-org-freedesktop-ModemManager1-Modem.Ports"></a><h3>The "Ports" property</h3>
+<pre class="programlisting">
+Ports readable a(su)
+</pre>
+<p> The list of ports in the modem, given as an array of string and unsigned
+ integer pairs. The string is the port name or path, and the integer is
+ the port type given as a
+ <a class="link" href="ModemManager-Flags-and-Enumerations.html#MMModemPortType" title="enum MMModemPortType">MMModemPortType</a> value.
+</p>
+</div>
+<hr>
+<div class="refsect2">
<a name="gdbus-property-org-freedesktop-ModemManager1-Modem.EquipmentIdentifier"></a><h3>The "EquipmentIdentifier" property</h3>
<pre class="programlisting">
EquipmentIdentifier readable s
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html
index d9b03f9..db23dd6 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html
@@ -50,7 +50,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266929225280"></a><h2>Properties</h2>
+<a name="idm211853113248"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Sim.html#gdbus-property-org-freedesktop-ModemManager1-Sim.SimIdentifier" title='The "SimIdentifier" property'>SimIdentifier</a> readable s
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Sim.html#gdbus-property-org-freedesktop-ModemManager1-Sim.Imsi" title='The "Imsi" property'>Imsi</a> readable s
diff --git a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html
index a209606..9e9df3a 100644
--- a/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html
+++ b/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="ModemManager Reference Manual">
<link rel="up" href="ref-dbus-object-sms.html" title="The /org/freedesktop/ModemManager/SMSs objects">
<link rel="prev" href="ref-dbus-object-sms.html" title="The /org/freedesktop/ModemManager/SMSs objects">
-<link rel="next" href="ix01.html" title="Index">
+<link rel="next" href="ref-migrating.html" title="Part IV. Migrating from ModemManager 0.6 to ModemManager 1.0">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -18,7 +18,7 @@
<td><a accesskey="u" href="ref-dbus-object-sms.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
-<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ref-migrating.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#gdbus-org.freedesktop.ModemManager1.Sms.synopsis" class="shortcut">Top</a>
@@ -45,7 +45,7 @@
</pre>
</div>
<div class="refsect1">
-<a name="idm266929424032"></a><h2>Properties</h2>
+<a name="idm211852063152"></a><h2>Properties</h2>
<pre class="synopsis">
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Sms.html#gdbus-property-org-freedesktop-ModemManager1-Sms.State" title='The "State" property'>State</a> readable u
<a class="link" href="gdbus-org.freedesktop.ModemManager1.Sms.html#gdbus-property-org-freedesktop-ModemManager1-Sms.PduType" title='The "PduType" property'>PduType</a> readable u
diff --git a/docs/reference/api/html/index.html b/docs/reference/api/html/index.html
index 4025e07..ba407c1 100644
--- a/docs/reference/api/html/index.html
+++ b/docs/reference/api/html/index.html
@@ -36,12 +36,12 @@
</div>
</div></div>
<div><p class="releaseinfo">
- For ModemManager version 0.7.991
+ For ModemManager version 1.0.0
</p></div>
-<div><p class="copyright">Copyright © 2008, 2009, 2010, 2011, 2012 The ModemManager Authors</p></div>
+<div><p class="copyright">Copyright © 2008, 2009, 2010, 2011, 2012, 2013 The ModemManager Authors</p></div>
<div><div class="legalnotice">
-<a name="idm266943528256"></a><p>
+<a name="idm211863716176"></a><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the <em class="citetitle">GNU Free
Documentation License</em>, Version 1.3 or any later
@@ -70,43 +70,46 @@
<dt><span class="chapter"><a href="ref-overview-introduction.html">Introduction</a></span></dt>
<dt><span class="chapter"><a href="ref-overview-modem-detection-and-setup.html">Modem detection and setup</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="ref-overview-modem-detection-and-setup.html#idm266935804880">Detection mechanisms</a></span></dt>
+<dt><span class="section"><a href="ref-overview-modem-detection-and-setup.html#idm211863910672">Detection mechanisms</a></span></dt>
<dt><span class="section"><a href="ch02s02.html">Probing</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="ch02s02.html#idm266943579776">Pre-probing filters</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266934295312">Probing sequence</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266943548864">Post-probing filters</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266936589872">Probing setup examples</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211863905456">Pre-probing filters</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211854553632">Probing sequence</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211864004288">Post-probing filters</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211856775152">Probing setup examples</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="ch02s03.html">Port grabbing and Modem object creation</a></span></dt>
</dl></dd>
<dt><span class="chapter"><a href="ref-overview-modem-state-machine.html">Modem state machine</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="ref-overview-modem-state-machine.html#idm266936574096">Initialization</a></span></dt>
+<dt><span class="section"><a href="ref-overview-modem-state-machine.html#idm211856759264">Initialization</a></span></dt>
<dt><span class="section"><a href="ch03s02.html">Enabling</a></span></dt>
<dt><span class="section"><a href="ch03s03.html">Connection &amp; disconnection</a></span></dt>
<dt><span class="section"><a href="ch03s04.html">Disabling</a></span></dt>
</dl></dd>
<dt><span class="chapter"><a href="ref-overview-plugin-specific-modems.html">Plugin-specific Modems</a></span></dt>
</dl></dd>
-<dt><span class="part"><a href="ref-dbus.html">II. D-Bus Reference</a></span></dt>
-<dd><dl>
-<dt><span class="chapter"><a href="ref-dbus-bus-name.html">The <code class="literal">org.freedesktop.ModemManager1</code> bus name</a></span></dt>
-<dt><span class="chapter"><a href="ref-dbus-standard-interfaces.html">Standard interfaces</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="ref-dbus-standard-interfaces.html#ref-dbus-standard-interfaces-properties">org.freedesktop.DBus.Properties</a></span></dt>
-<dt><span class="section"><a href="ref-dbus-standard-interfaces-introspectables.html">org.freedesktop.DBus.Introspectable</a></span></dt>
-<dt><span class="section"><a href="ref-dbus-standard-interfaces-objectmanager.html">org.freedesktop.DBus.ObjectManager</a></span></dt>
-</dl></dd>
-<dt><span class="chapter"><a href="ref-dbus-common-types.html">Common types</a></span></dt>
+<dt><span class="part"><a href="ref-common-types.html">II. Common types and definitions</a></span></dt>
<dd><dl>
<dt>
+<span class="refentrytitle"><a href="ModemManager-Version-checks.html">Version checks</a></span><span class="refpurpose"> — Version information in the API.</span>
+</dt>
+<dt>
<span class="refentrytitle"><a href="ModemManager-Flags-and-Enumerations.html">Flags and Enumerations</a></span><span class="refpurpose"> — Common enumerations and types in the API.</span>
</dt>
<dt>
<span class="refentrytitle"><a href="ModemManager-Errors.html">Errors</a></span><span class="refpurpose"> — Common errors in the API.</span>
</dt>
</dl></dd>
+<dt><span class="part"><a href="ref-dbus.html">III. D-Bus Reference</a></span></dt>
+<dd><dl>
+<dt><span class="chapter"><a href="ref-dbus-bus-name.html">The <code class="literal">org.freedesktop.ModemManager1</code> bus name</a></span></dt>
+<dt><span class="chapter"><a href="ref-dbus-standard-interfaces.html">Standard interfaces</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ref-dbus-standard-interfaces.html#ref-dbus-standard-interfaces-properties">org.freedesktop.DBus.Properties</a></span></dt>
+<dt><span class="section"><a href="ref-dbus-standard-interfaces-introspectables.html">org.freedesktop.DBus.Introspectable</a></span></dt>
+<dt><span class="section"><a href="ref-dbus-standard-interfaces-objectmanager.html">org.freedesktop.DBus.ObjectManager</a></span></dt>
+</dl></dd>
<dt><span class="chapter"><a href="ref-dbus-object-manager.html">The <code class="literal">/org/freedesktop/ModemManager1</code> object</a></span></dt>
<dd><dl><dt>
<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.html">org.freedesktop.ModemManager1</a></span><span class="refpurpose"> — The ModemManager Manager interface.</span>
@@ -140,9 +143,6 @@
<dt>
<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html">org.freedesktop.ModemManager1.Modem.Firmware</a></span><span class="refpurpose"> — The ModemManager Firmware interface.</span>
</dt>
-<dt>
-<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html">org.freedesktop.ModemManager1.Modem.Contacts</a></span><span class="refpurpose"> — The ModemManager Contacts interface.</span>
-</dt>
</dl></dd>
<dt><span class="chapter"><a href="ref-dbus-object-bearer.html">The <code class="literal">/org/freedesktop/ModemManager/Bearers</code> objects</a></span></dt>
<dd><dl><dt>
@@ -157,6 +157,16 @@
<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.Sms.html">org.freedesktop.ModemManager1.Sms</a></span><span class="refpurpose"> — The ModemManager SMS interface.</span>
</dt></dl></dd>
</dl></dd>
+<dt><span class="part"><a href="ref-migrating.html">IV. Migrating from ModemManager 0.6 to ModemManager 1.0</a></span></dt>
+<dd><dl>
+<dt><span class="chapter"><a href="ch12.html"></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ch12.html#idm211850989168">Listing available modems</a></span></dt>
+<dt><span class="section"><a href="ch12s02.html">PIN unlocking</a></span></dt>
+<dt><span class="section"><a href="ch12s03.html">Connection and disconnection</a></span></dt>
+<dt><span class="section"><a href="ch12s04.html">Simple connection</a></span></dt>
+</dl></dd>
+</dl></dd>
<dt><span class="index"><a href="ix01.html">Index</a></span></dt>
</dl></div>
</div>
diff --git a/docs/reference/api/html/index.sgml b/docs/reference/api/html/index.sgml
index 3fc4ea1..dd3638d 100644
--- a/docs/reference/api/html/index.sgml
+++ b/docs/reference/api/html/index.sgml
@@ -1,3 +1,11 @@
+<ANCHOR id="ModemManager-Version-checks" href="ModemManager/ModemManager-Version-checks.html">
+<ANCHOR id="ModemManager-Version-checks.synopsis" href="ModemManager/ModemManager-Version-checks.html#ModemManager-Version-checks.synopsis">
+<ANCHOR id="ModemManager-Version-checks.description" href="ModemManager/ModemManager-Version-checks.html#ModemManager-Version-checks.description">
+<ANCHOR id="ModemManager-Version-checks.details" href="ModemManager/ModemManager-Version-checks.html#ModemManager-Version-checks.details">
+<ANCHOR id="MM-MAJOR-VERSION:CAPS" href="ModemManager/ModemManager-Version-checks.html#MM-MAJOR-VERSION:CAPS">
+<ANCHOR id="MM-MINOR-VERSION:CAPS" href="ModemManager/ModemManager-Version-checks.html#MM-MINOR-VERSION:CAPS">
+<ANCHOR id="MM-MICRO-VERSION:CAPS" href="ModemManager/ModemManager-Version-checks.html#MM-MICRO-VERSION:CAPS">
+<ANCHOR id="MM-CHECK-VERSION:CAPS" href="ModemManager/ModemManager-Version-checks.html#MM-CHECK-VERSION:CAPS">
<ANCHOR id="ModemManager-Flags-and-Enumerations" href="ModemManager/ModemManager-Flags-and-Enumerations.html">
<ANCHOR id="ModemManager-Flags-and-Enumerations.synopsis" href="ModemManager/ModemManager-Flags-and-Enumerations.html#ModemManager-Flags-and-Enumerations.synopsis">
<ANCHOR id="ModemManager-Flags-and-Enumerations.description" href="ModemManager/ModemManager-Flags-and-Enumerations.html#ModemManager-Flags-and-Enumerations.description">
@@ -233,6 +241,14 @@
<ANCHOR id="MM-MODEM-POWER-STATE-OFF:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-POWER-STATE-OFF:CAPS">
<ANCHOR id="MM-MODEM-POWER-STATE-LOW:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-POWER-STATE-LOW:CAPS">
<ANCHOR id="MM-MODEM-POWER-STATE-ON:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-POWER-STATE-ON:CAPS">
+<ANCHOR id="MMModemPortType" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MMModemPortType">
+<ANCHOR id="MM-MODEM-PORT-TYPE-UNKNOWN:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-UNKNOWN:CAPS">
+<ANCHOR id="MM-MODEM-PORT-TYPE-NET:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-NET:CAPS">
+<ANCHOR id="MM-MODEM-PORT-TYPE-AT:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-AT:CAPS">
+<ANCHOR id="MM-MODEM-PORT-TYPE-QCDM:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-QCDM:CAPS">
+<ANCHOR id="MM-MODEM-PORT-TYPE-GPS:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-GPS:CAPS">
+<ANCHOR id="MM-MODEM-PORT-TYPE-QMI:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-QMI:CAPS">
+<ANCHOR id="MM-MODEM-PORT-TYPE-MBIM:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-MODEM-PORT-TYPE-MBIM:CAPS">
<ANCHOR id="MMSmsPduType" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MMSmsPduType">
<ANCHOR id="MM-SMS-PDU-TYPE-UNKNOWN:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-SMS-PDU-TYPE-UNKNOWN:CAPS">
<ANCHOR id="MM-SMS-PDU-TYPE-DELIVER:CAPS" href="ModemManager/ModemManager-Flags-and-Enumerations.html#MM-SMS-PDU-TYPE-DELIVER:CAPS">
@@ -444,6 +460,7 @@
<ANCHOR id="gdbus-property-org-freedesktop-ModemManager1-Modem.Drivers" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Drivers">
<ANCHOR id="gdbus-property-org-freedesktop-ModemManager1-Modem.Plugin" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Plugin">
<ANCHOR id="gdbus-property-org-freedesktop-ModemManager1-Modem.PrimaryPort" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.PrimaryPort">
+<ANCHOR id="gdbus-property-org-freedesktop-ModemManager1-Modem.Ports" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Ports">
<ANCHOR id="gdbus-property-org-freedesktop-ModemManager1-Modem.EquipmentIdentifier" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.EquipmentIdentifier">
<ANCHOR id="gdbus-property-org-freedesktop-ModemManager1-Modem.UnlockRequired" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.UnlockRequired">
<ANCHOR id="gdbus-property-org-freedesktop-ModemManager1-Modem.UnlockRetries" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.UnlockRetries">
@@ -535,18 +552,6 @@
<ANCHOR id="gdbus-methods-org.freedesktop.ModemManager1.Modem.Firmware" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html#gdbus-methods-org.freedesktop.ModemManager1.Modem.Firmware">
<ANCHOR id="gdbus-method-org-freedesktop-ModemManager1-Modem-Firmware.List" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Firmware.List">
<ANCHOR id="gdbus-method-org-freedesktop-ModemManager1-Modem-Firmware.Select" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Firmware.Select">
-<ANCHOR id="gdbus-org.freedesktop.ModemManager1.Modem.Contacts" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html">
-<ANCHOR id="gdbus-interface-org-freedesktop-ModemManager1-Modem-Contacts" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-interface-org-freedesktop-ModemManager1-Modem-Contacts">
-<ANCHOR id="gdbus-methods-org.freedesktop.ModemManager1.Modem.Contacts" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-methods-org.freedesktop.ModemManager1.Modem.Contacts">
-<ANCHOR id="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add">
-<ANCHOR id="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete">
-<ANCHOR id="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get">
-<ANCHOR id="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List">
-<ANCHOR id="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find">
-<ANCHOR id="gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount">
-<ANCHOR id="gdbus-signals-org.freedesktop.ModemManager1.Modem.Contacts" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signals-org.freedesktop.ModemManager1.Modem.Contacts">
-<ANCHOR id="gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Added" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Added">
-<ANCHOR id="gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Deleted" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Deleted">
<ANCHOR id="gdbus-org.freedesktop.ModemManager1.Bearer" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Bearer.html">
<ANCHOR id="gdbus-interface-org-freedesktop-ModemManager1-Bearer" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-interface-org-freedesktop-ModemManager1-Bearer">
<ANCHOR id="gdbus-methods-org.freedesktop.ModemManager1.Bearer" href="ModemManager/gdbus-org.freedesktop.ModemManager1.Bearer.html#gdbus-methods-org.freedesktop.ModemManager1.Bearer">
diff --git a/docs/reference/api/html/ix01.html b/docs/reference/api/html/ix01.html
index f254905..a41d6e6 100644
--- a/docs/reference/api/html/ix01.html
+++ b/docs/reference/api/html/ix01.html
@@ -6,13 +6,13 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
<link rel="up" href="index.html" title="ModemManager Reference Manual">
-<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.Sms.html" title="org.freedesktop.ModemManager1.Sms">
+<link rel="prev" href="ch12s04.html" title="Simple connection">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="gdbus-org.freedesktop.ModemManager1.Sms.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="ch12s04.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td> </td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
@@ -20,7 +20,7 @@
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h1 class="title">
-<a name="idm266943367152"></a>Index</h1></div></div></div>
+<a name="idm211863868880"></a>Index</h1></div></div></div>
<div class="index">
<div class="indexdiv">
<h3>B</h3>
@@ -58,6 +58,8 @@
<dl>
<dt>MMCdmaActivationError, <a class="indexterm" href="ModemManager-Errors.html#MMCdmaActivationError">enum MMCdmaActivationError</a>
</dt>
+<dt>MM_CHECK_VERSION, <a class="indexterm" href="ModemManager-Version-checks.html#MM-CHECK-VERSION:CAPS">MM_CHECK_VERSION()</a>
+</dt>
<dt>MMConnectionError, <a class="indexterm" href="ModemManager-Errors.html#MMConnectionError">enum MMConnectionError</a>
</dt>
<dt>MMCoreError, <a class="indexterm" href="ModemManager-Errors.html#MMCoreError">enum MMCoreError</a>
@@ -72,32 +74,20 @@
<div class="indexdiv">
<h3>M</h3>
<dl>
+<dt>MM_MAJOR_VERSION, <a class="indexterm" href="ModemManager-Version-checks.html#MM-MAJOR-VERSION:CAPS">MM_MAJOR_VERSION</a>
+</dt>
<dt>MMMessageError, <a class="indexterm" href="ModemManager-Errors.html#MMMessageError">enum MMMessageError</a>
</dt>
+<dt>MM_MICRO_VERSION, <a class="indexterm" href="ModemManager-Version-checks.html#MM-MICRO-VERSION:CAPS">MM_MICRO_VERSION</a>
+</dt>
+<dt>MM_MINOR_VERSION, <a class="indexterm" href="ModemManager-Version-checks.html#MM-MINOR-VERSION:CAPS">MM_MINOR_VERSION</a>
+</dt>
<dt>MMMobileEquipmentError, <a class="indexterm" href="ModemManager-Errors.html#MMMobileEquipmentError">enum MMMobileEquipmentError</a>
</dt>
<dt>org.freedesktop.ModemManager1.Modem, <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-interface-org-freedesktop-ModemManager1-Modem.top_of_page">org.freedesktop.ModemManager1.Modem</a>
</dt>
<dt>org.freedesktop.ModemManager1.Modem.Command(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-method-org-freedesktop-ModemManager1-Modem.Command">The Command() method</a>
</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts, <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-interface-org-freedesktop-ModemManager1-Modem-Contacts.top_of_page">org.freedesktop.ModemManager1.Modem.Contacts</a>
-</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts.Add(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add">The Add() method</a>
-</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts.Delete(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete">The Delete() method</a>
-</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts.Find(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find">The Find() method</a>
-</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts.Get(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get">The Get() method</a>
-</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts.GetCount(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount">The GetCount() method</a>
-</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts.List(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List">The List() method</a>
-</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts::Added, <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Added">The "Added" signal</a>
-</dt>
-<dt>org.freedesktop.ModemManager1.Modem.Contacts::Deleted, <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Deleted">The "Deleted" signal</a>
-</dt>
<dt>org.freedesktop.ModemManager1.Modem.CreateBearer(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer">The CreateBearer() method</a>
</dt>
<dt>org.freedesktop.ModemManager1.Modem.DeleteBearer(), <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-method-org-freedesktop-ModemManager1-Modem.DeleteBearer">The DeleteBearer() method</a>
@@ -238,6 +228,8 @@
</dt>
<dt>org.freedesktop.ModemManager1.Modem:Plugin, <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Plugin">The "Plugin" property</a>
</dt>
+<dt>org.freedesktop.ModemManager1.Modem:Ports, <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Ports">The "Ports" property</a>
+</dt>
<dt>org.freedesktop.ModemManager1.Modem:PowerState, <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.PowerState">The "PowerState" property</a>
</dt>
<dt>org.freedesktop.ModemManager1.Modem:PrimaryPort, <a class="indexterm" href="gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.PrimaryPort">The "PrimaryPort" property</a>
@@ -306,6 +298,8 @@
</dt>
<dt>MMModemMode, <a class="indexterm" href="ModemManager-Flags-and-Enumerations.html#MMModemMode">enum MMModemMode</a>
</dt>
+<dt>MMModemPortType, <a class="indexterm" href="ModemManager-Flags-and-Enumerations.html#MMModemPortType">enum MMModemPortType</a>
+</dt>
<dt>MMModemPowerState, <a class="indexterm" href="ModemManager-Flags-and-Enumerations.html#MMModemPowerState">enum MMModemPowerState</a>
</dt>
<dt>MMModemState, <a class="indexterm" href="ModemManager-Flags-and-Enumerations.html#MMModemState">enum MMModemState</a>
diff --git a/docs/reference/api/html/ref-dbus-common-types.html b/docs/reference/api/html/ref-common-types.html
index ed6e18c..d5b79a9 100644
--- a/docs/reference/api/html/ref-dbus-common-types.html
+++ b/docs/reference/api/html/ref-common-types.html
@@ -2,34 +2,40 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Common types</title>
+<title>Part II. Common types and definitions</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus.html" title="Part II. D-Bus Reference">
-<link rel="prev" href="ref-dbus-standard-interfaces-objectmanager.html" title="org.freedesktop.DBus.ObjectManager">
-<link rel="next" href="ModemManager-Flags-and-Enumerations.html" title="Flags and Enumerations">
+<link rel="up" href="index.html" title="ModemManager Reference Manual">
+<link rel="prev" href="ref-overview-plugin-specific-modems.html" title="Plugin-specific Modems">
+<link rel="next" href="ModemManager-Version-checks.html" title="Version checks">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="ref-dbus-standard-interfaces-objectmanager.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ref-dbus.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ref-overview-plugin-specific-modems.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
-<td><a accesskey="n" href="ModemManager-Flags-and-Enumerations.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ModemManager-Version-checks.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
-<div class="chapter">
-<div class="titlepage"><div><div><h2 class="title">
-<a name="ref-dbus-common-types"></a>Common types</h2></div></div></div>
-<div class="toc"><dl class="toc">
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="ref-common-types"></a>Part II. Common types and definitions</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt>
+<span class="refentrytitle"><a href="ModemManager-Version-checks.html">Version checks</a></span><span class="refpurpose"> — Version information in the API.</span>
+</dt>
<dt>
<span class="refentrytitle"><a href="ModemManager-Flags-and-Enumerations.html">Flags and Enumerations</a></span><span class="refpurpose"> — Common enumerations and types in the API.</span>
</dt>
<dt>
<span class="refentrytitle"><a href="ModemManager-Errors.html">Errors</a></span><span class="refpurpose"> — Common errors in the API.</span>
</dt>
-</dl></div>
+</dl>
+</div>
</div>
<div class="footer">
<hr>
diff --git a/docs/reference/api/html/ref-dbus-bus-name.html b/docs/reference/api/html/ref-dbus-bus-name.html
index a77bfbc..b288136 100644
--- a/docs/reference/api/html/ref-dbus-bus-name.html
+++ b/docs/reference/api/html/ref-dbus-bus-name.html
@@ -5,8 +5,8 @@
<title>The org.freedesktop.ModemManager1 bus name</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus.html" title="Part II. D-Bus Reference">
-<link rel="prev" href="ref-dbus.html" title="Part II. D-Bus Reference">
+<link rel="up" href="ref-dbus.html" title="Part III. D-Bus Reference">
+<link rel="prev" href="ref-dbus.html" title="Part III. D-Bus Reference">
<link rel="next" href="ref-dbus-standard-interfaces.html" title="Standard interfaces">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
diff --git a/docs/reference/api/html/ref-dbus-object-bearer.html b/docs/reference/api/html/ref-dbus-object-bearer.html
index eec5cfe..4246389 100644
--- a/docs/reference/api/html/ref-dbus-object-bearer.html
+++ b/docs/reference/api/html/ref-dbus-object-bearer.html
@@ -5,15 +5,15 @@
<title>The /org/freedesktop/ModemManager/Bearers objects</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus.html" title="Part II. D-Bus Reference">
-<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html" title="org.freedesktop.ModemManager1.Modem.Contacts">
+<link rel="up" href="ref-dbus.html" title="Part III. D-Bus Reference">
+<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html" title="org.freedesktop.ModemManager1.Modem.Firmware">
<link rel="next" href="gdbus-org.freedesktop.ModemManager1.Bearer.html" title="org.freedesktop.ModemManager1.Bearer">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="ref-dbus.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
diff --git a/docs/reference/api/html/ref-dbus-object-manager.html b/docs/reference/api/html/ref-dbus-object-manager.html
index ffb332c..f7e271d 100644
--- a/docs/reference/api/html/ref-dbus-object-manager.html
+++ b/docs/reference/api/html/ref-dbus-object-manager.html
@@ -5,15 +5,15 @@
<title>The /org/freedesktop/ModemManager1 object</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus.html" title="Part II. D-Bus Reference">
-<link rel="prev" href="ModemManager-Errors.html" title="Errors">
+<link rel="up" href="ref-dbus.html" title="Part III. D-Bus Reference">
+<link rel="prev" href="ref-dbus-standard-interfaces-objectmanager.html" title="org.freedesktop.DBus.ObjectManager">
<link rel="next" href="gdbus-org.freedesktop.ModemManager1.html" title="org.freedesktop.ModemManager1">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="ModemManager-Errors.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="ref-dbus-standard-interfaces-objectmanager.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="ref-dbus.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
diff --git a/docs/reference/api/html/ref-dbus-object-modem.html b/docs/reference/api/html/ref-dbus-object-modem.html
index 004f8f3..abdb953 100644
--- a/docs/reference/api/html/ref-dbus-object-modem.html
+++ b/docs/reference/api/html/ref-dbus-object-modem.html
@@ -5,7 +5,7 @@
<title>The /org/freedesktop/ModemManager/Modems objects</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus.html" title="Part II. D-Bus Reference">
+<link rel="up" href="ref-dbus.html" title="Part III. D-Bus Reference">
<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.html" title="org.freedesktop.ModemManager1">
<link rel="next" href="gdbus-org.freedesktop.ModemManager1.Modem.html" title="org.freedesktop.ModemManager1.Modem">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
@@ -50,9 +50,6 @@
<dt>
<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html">org.freedesktop.ModemManager1.Modem.Firmware</a></span><span class="refpurpose"> — The ModemManager Firmware interface.</span>
</dt>
-<dt>
-<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html">org.freedesktop.ModemManager1.Modem.Contacts</a></span><span class="refpurpose"> — The ModemManager Contacts interface.</span>
-</dt>
</dl></div>
<p>
Modem objects are exported in DBus with the following path base:
diff --git a/docs/reference/api/html/ref-dbus-object-sim.html b/docs/reference/api/html/ref-dbus-object-sim.html
index 10c19a9..b6c5f3b 100644
--- a/docs/reference/api/html/ref-dbus-object-sim.html
+++ b/docs/reference/api/html/ref-dbus-object-sim.html
@@ -5,7 +5,7 @@
<title>The /org/freedesktop/ModemManager/SIMs objects</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus.html" title="Part II. D-Bus Reference">
+<link rel="up" href="ref-dbus.html" title="Part III. D-Bus Reference">
<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.Bearer.html" title="org.freedesktop.ModemManager1.Bearer">
<link rel="next" href="gdbus-org.freedesktop.ModemManager1.Sim.html" title="org.freedesktop.ModemManager1.Sim">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
diff --git a/docs/reference/api/html/ref-dbus-object-sms.html b/docs/reference/api/html/ref-dbus-object-sms.html
index 20fc14d..fc1b96c 100644
--- a/docs/reference/api/html/ref-dbus-object-sms.html
+++ b/docs/reference/api/html/ref-dbus-object-sms.html
@@ -5,7 +5,7 @@
<title>The /org/freedesktop/ModemManager/SMSs objects</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus.html" title="Part II. D-Bus Reference">
+<link rel="up" href="ref-dbus.html" title="Part III. D-Bus Reference">
<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.Sim.html" title="org.freedesktop.ModemManager1.Sim">
<link rel="next" href="gdbus-org.freedesktop.ModemManager1.Sms.html" title="org.freedesktop.ModemManager1.Sms">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
diff --git a/docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html b/docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html
index 2f2e358..6a2ad5c 100644
--- a/docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html
+++ b/docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="ModemManager Reference Manual">
<link rel="up" href="ref-dbus-standard-interfaces.html" title="Standard interfaces">
<link rel="prev" href="ref-dbus-standard-interfaces-introspectables.html" title="org.freedesktop.DBus.Introspectable">
-<link rel="next" href="ref-dbus-common-types.html" title="Common types">
+<link rel="next" href="ref-dbus-object-manager.html" title="The /org/freedesktop/ModemManager1 object">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -17,7 +17,7 @@
<td><a accesskey="u" href="ref-dbus-standard-interfaces.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
-<td><a accesskey="n" href="ref-dbus-common-types.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ref-dbus-object-manager.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
diff --git a/docs/reference/api/html/ref-dbus-standard-interfaces.html b/docs/reference/api/html/ref-dbus-standard-interfaces.html
index 3186093..e860bf0 100644
--- a/docs/reference/api/html/ref-dbus-standard-interfaces.html
+++ b/docs/reference/api/html/ref-dbus-standard-interfaces.html
@@ -5,7 +5,7 @@
<title>Standard interfaces</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
-<link rel="up" href="ref-dbus.html" title="Part II. D-Bus Reference">
+<link rel="up" href="ref-dbus.html" title="Part III. D-Bus Reference">
<link rel="prev" href="ref-dbus-bus-name.html" title="The org.freedesktop.ModemManager1 bus name">
<link rel="next" href="ref-dbus-standard-interfaces-introspectables.html" title="org.freedesktop.DBus.Introspectable">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
diff --git a/docs/reference/api/html/ref-dbus.html b/docs/reference/api/html/ref-dbus.html
index 24ebe7e..530c078 100644
--- a/docs/reference/api/html/ref-dbus.html
+++ b/docs/reference/api/html/ref-dbus.html
@@ -2,18 +2,18 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Part II. D-Bus Reference</title>
+<title>Part III. D-Bus Reference</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="ModemManager Reference Manual">
<link rel="up" href="index.html" title="ModemManager Reference Manual">
-<link rel="prev" href="ref-overview-plugin-specific-modems.html" title="Plugin-specific Modems">
+<link rel="prev" href="ModemManager-Errors.html" title="Errors">
<link rel="next" href="ref-dbus-bus-name.html" title="The org.freedesktop.ModemManager1 bus name">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="ref-overview-plugin-specific-modems.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="ModemManager-Errors.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td> </td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
@@ -21,7 +21,7 @@
</tr></table>
<div class="part">
<div class="titlepage"><div><div><h1 class="title">
-<a name="ref-dbus"></a>Part II. D-Bus Reference</h1></div></div></div>
+<a name="ref-dbus"></a>Part III. D-Bus Reference</h1></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl class="toc">
@@ -32,15 +32,6 @@
<dt><span class="section"><a href="ref-dbus-standard-interfaces-introspectables.html">org.freedesktop.DBus.Introspectable</a></span></dt>
<dt><span class="section"><a href="ref-dbus-standard-interfaces-objectmanager.html">org.freedesktop.DBus.ObjectManager</a></span></dt>
</dl></dd>
-<dt><span class="chapter"><a href="ref-dbus-common-types.html">Common types</a></span></dt>
-<dd><dl>
-<dt>
-<span class="refentrytitle"><a href="ModemManager-Flags-and-Enumerations.html">Flags and Enumerations</a></span><span class="refpurpose"> — Common enumerations and types in the API.</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="ModemManager-Errors.html">Errors</a></span><span class="refpurpose"> — Common errors in the API.</span>
-</dt>
-</dl></dd>
<dt><span class="chapter"><a href="ref-dbus-object-manager.html">The <code class="literal">/org/freedesktop/ModemManager1</code> object</a></span></dt>
<dd><dl><dt>
<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.html">org.freedesktop.ModemManager1</a></span><span class="refpurpose"> — The ModemManager Manager interface.</span>
@@ -74,9 +65,6 @@
<dt>
<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html">org.freedesktop.ModemManager1.Modem.Firmware</a></span><span class="refpurpose"> — The ModemManager Firmware interface.</span>
</dt>
-<dt>
-<span class="refentrytitle"><a href="gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html">org.freedesktop.ModemManager1.Modem.Contacts</a></span><span class="refpurpose"> — The ModemManager Contacts interface.</span>
-</dt>
</dl></dd>
<dt><span class="chapter"><a href="ref-dbus-object-bearer.html">The <code class="literal">/org/freedesktop/ModemManager/Bearers</code> objects</a></span></dt>
<dd><dl><dt>
diff --git a/docs/reference/api/html/ref-migrating.html b/docs/reference/api/html/ref-migrating.html
new file mode 100644
index 0000000..23ea8a1
--- /dev/null
+++ b/docs/reference/api/html/ref-migrating.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part IV. Migrating from ModemManager 0.6 to ModemManager 1.0</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="ModemManager Reference Manual">
+<link rel="up" href="index.html" title="ModemManager Reference Manual">
+<link rel="prev" href="gdbus-org.freedesktop.ModemManager1.Sms.html" title="org.freedesktop.ModemManager1.Sms">
+<link rel="next" href="ch12.html" title="">
+<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gdbus-org.freedesktop.ModemManager1.Sms.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">ModemManager Reference Manual</th>
+<td><a accesskey="n" href="ch12.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="ref-migrating"></a>Part IV. Migrating from ModemManager 0.6 to ModemManager 1.0</h1></div></div></div>
+<div class="partintro">
+<div></div>
+<p>
+ ModemManager 1.0 is a new major version of ModemManager that breaks both
+ API and ABI compared to previous versions. These changes allow better
+ managing new types of devices (e.g. those with multiple capabilities),
+ or those not based in AT commands for operation (e.g. QMI or MBIM modems).
+ </p>
+<p>
+ This section provides an introduction to the changes done in the DBus interface
+ with respect to the main operations performed with modems through ModemManager.
+ </p>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="chapter"><a href="ch12.html"></a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="ch12.html#idm211850989168">Listing available modems</a></span></dt>
+<dt><span class="section"><a href="ch12s02.html">PIN unlocking</a></span></dt>
+<dt><span class="section"><a href="ch12s03.html">Connection and disconnection</a></span></dt>
+<dt><span class="section"><a href="ch12s04.html">Simple connection</a></span></dt>
+</dl></dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.18.1</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/reference/api/html/ref-overview-introduction.html b/docs/reference/api/html/ref-overview-introduction.html
index 540168b..8fbd86a 100644
--- a/docs/reference/api/html/ref-overview-introduction.html
+++ b/docs/reference/api/html/ref-overview-introduction.html
@@ -23,33 +23,37 @@
<div class="titlepage"><div><div><h2 class="title">
<a name="ref-overview-introduction"></a>Introduction</h2></div></div></div>
<p>
- ModemManager provides a unified high level API for communicating with
- (mobile broadband) modems. While the basic commands are standardized,
- the more advanced operations (like signal quality monitoring while
- connected) varies a lot.
+ 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...).
</p>
<p><b>Using. </b>
ModemManager is a system daemon and is not meant to be used directly from
- the command line. However, a command line client (mmcli) is provided, which
- may be used to test the different functionality provided during plugin
- development.
+ 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.
</p>
<p><b>Implementation. </b>
ModemManager is a DBus system bus activated service (meaning it's started
- automatically when a request arrives). It is written in C. The devices are
- queried from udev and automatically updated based on hardware events. There are
- DBus-interface specific GInterfaces, which should be implemented by any device
- specific implementation. There is a generic MMBroadbandModem implementation that
- provides a generic implementation of the most common operations in both GSM and
- CDMA modems.
+ 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 provice 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.
</p>
<p><b>Plugins. </b>
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 modem 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. Writing
- new plugins is highly encouraged!
+ 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!
</p>
</div>
<div class="footer">
diff --git a/docs/reference/api/html/ref-overview-modem-detection-and-setup.html b/docs/reference/api/html/ref-overview-modem-detection-and-setup.html
index f683956..a8a1dd9 100644
--- a/docs/reference/api/html/ref-overview-modem-detection-and-setup.html
+++ b/docs/reference/api/html/ref-overview-modem-detection-and-setup.html
@@ -23,19 +23,19 @@
<div class="titlepage"><div><div><h2 class="title">
<a name="ref-overview-modem-detection-and-setup"></a>Modem detection and setup</h2></div></div></div>
<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="ref-overview-modem-detection-and-setup.html#idm266935804880">Detection mechanisms</a></span></dt>
+<dt><span class="section"><a href="ref-overview-modem-detection-and-setup.html#idm211863910672">Detection mechanisms</a></span></dt>
<dt><span class="section"><a href="ch02s02.html">Probing</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="ch02s02.html#idm266943579776">Pre-probing filters</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266934295312">Probing sequence</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266943548864">Post-probing filters</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266936589872">Probing setup examples</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211863905456">Pre-probing filters</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211854553632">Probing sequence</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211864004288">Post-probing filters</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211856775152">Probing setup examples</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="ch02s03.html">Port grabbing and Modem object creation</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266935804880"></a>Detection mechanisms</h2></div></div></div>
+<a name="idm211863910672"></a>Detection mechanisms</h2></div></div></div>
<p>
ModemManager requires <span class="emphasis"><em>udev</em></span>-powered Linux kernels in order
to get notified of possible available Modems. udev will report each of the ports
diff --git a/docs/reference/api/html/ref-overview-modem-state-machine.html b/docs/reference/api/html/ref-overview-modem-state-machine.html
index 8695ea7..10e87a1 100644
--- a/docs/reference/api/html/ref-overview-modem-state-machine.html
+++ b/docs/reference/api/html/ref-overview-modem-state-machine.html
@@ -23,7 +23,7 @@
<div class="titlepage"><div><div><h2 class="title">
<a name="ref-overview-modem-state-machine"></a>Modem state machine</h2></div></div></div>
<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="ref-overview-modem-state-machine.html#idm266936574096">Initialization</a></span></dt>
+<dt><span class="section"><a href="ref-overview-modem-state-machine.html#idm211856759264">Initialization</a></span></dt>
<dt><span class="section"><a href="ch03s02.html">Enabling</a></span></dt>
<dt><span class="section"><a href="ch03s03.html">Connection &amp; disconnection</a></span></dt>
<dt><span class="section"><a href="ch03s04.html">Disabling</a></span></dt>
@@ -43,7 +43,7 @@
</p>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266936574096"></a>Initialization</h2></div></div></div>
+<a name="idm211856759264"></a>Initialization</h2></div></div></div>
<p>
The modem initialization sequence starts only when all ports
have been probed and grabbed by a given plugin. This is done so that the proper
diff --git a/docs/reference/api/html/ref-overview-plugin-specific-modems.html b/docs/reference/api/html/ref-overview-plugin-specific-modems.html
index d86d8be..b1bba5f 100644
--- a/docs/reference/api/html/ref-overview-plugin-specific-modems.html
+++ b/docs/reference/api/html/ref-overview-plugin-specific-modems.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="ModemManager Reference Manual">
<link rel="up" href="ref-overview.html" title="Part I. ModemManager Overview">
<link rel="prev" href="ch03s04.html" title="Disabling">
-<link rel="next" href="ref-dbus.html" title="Part II. D-Bus Reference">
+<link rel="next" href="ref-common-types.html" title="Part II. Common types and definitions">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -17,7 +17,7 @@
<td><a accesskey="u" href="ref-overview.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">ModemManager Reference Manual</th>
-<td><a accesskey="n" href="ref-dbus.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ref-common-types.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
diff --git a/docs/reference/api/html/ref-overview.html b/docs/reference/api/html/ref-overview.html
index ccf8fb5..aaa56be 100644
--- a/docs/reference/api/html/ref-overview.html
+++ b/docs/reference/api/html/ref-overview.html
@@ -28,19 +28,19 @@
<dt><span class="chapter"><a href="ref-overview-introduction.html">Introduction</a></span></dt>
<dt><span class="chapter"><a href="ref-overview-modem-detection-and-setup.html">Modem detection and setup</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="ref-overview-modem-detection-and-setup.html#idm266935804880">Detection mechanisms</a></span></dt>
+<dt><span class="section"><a href="ref-overview-modem-detection-and-setup.html#idm211863910672">Detection mechanisms</a></span></dt>
<dt><span class="section"><a href="ch02s02.html">Probing</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="ch02s02.html#idm266943579776">Pre-probing filters</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266934295312">Probing sequence</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266943548864">Post-probing filters</a></span></dt>
-<dt><span class="section"><a href="ch02s02.html#idm266936589872">Probing setup examples</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211863905456">Pre-probing filters</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211854553632">Probing sequence</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211864004288">Post-probing filters</a></span></dt>
+<dt><span class="section"><a href="ch02s02.html#idm211856775152">Probing setup examples</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="ch02s03.html">Port grabbing and Modem object creation</a></span></dt>
</dl></dd>
<dt><span class="chapter"><a href="ref-overview-modem-state-machine.html">Modem state machine</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="ref-overview-modem-state-machine.html#idm266936574096">Initialization</a></span></dt>
+<dt><span class="section"><a href="ref-overview-modem-state-machine.html#idm211856759264">Initialization</a></span></dt>
<dt><span class="section"><a href="ch03s02.html">Enabling</a></span></dt>
<dt><span class="section"><a href="ch03s03.html">Connection &amp; disconnection</a></span></dt>
<dt><span class="section"><a href="ch03s04.html">Disabling</a></span></dt>
diff --git a/docs/reference/api/tmpl/mm-enums.sgml b/docs/reference/api/tmpl/mm-enums.sgml
index e179e4d..8cbe3b1 100644
--- a/docs/reference/api/tmpl/mm-enums.sgml
+++ b/docs/reference/api/tmpl/mm-enums.sgml
@@ -363,6 +363,19 @@ Flags and Enumerations
@MM_MODEM_POWER_STATE_LOW:
@MM_MODEM_POWER_STATE_ON:
+<!-- ##### ENUM MMModemPortType ##### -->
+<para>
+
+</para>
+
+@MM_MODEM_PORT_TYPE_UNKNOWN:
+@MM_MODEM_PORT_TYPE_NET:
+@MM_MODEM_PORT_TYPE_AT:
+@MM_MODEM_PORT_TYPE_QCDM:
+@MM_MODEM_PORT_TYPE_GPS:
+@MM_MODEM_PORT_TYPE_QMI:
+@MM_MODEM_PORT_TYPE_MBIM:
+
<!-- ##### ENUM MMSmsPduType ##### -->
<para>
diff --git a/docs/reference/libmm-glib/tmpl/MmGdbusModemContactsSkeleton.sgml b/docs/reference/api/tmpl/mm-version.sgml
index 56eaed4..3a8ca45 100644
--- a/docs/reference/libmm-glib/tmpl/MmGdbusModemContactsSkeleton.sgml
+++ b/docs/reference/api/tmpl/mm-version.sgml
@@ -1,5 +1,5 @@
<!-- ##### SECTION Title ##### -->
-MmGdbusModemContactsSkeleton
+Version checks
<!-- ##### SECTION Short_Description ##### -->
@@ -22,18 +22,34 @@ MmGdbusModemContactsSkeleton
<!-- ##### SECTION Image ##### -->
-<!-- ##### STRUCT MmGdbusModemContactsSkeleton ##### -->
+<!-- ##### MACRO MM_MAJOR_VERSION ##### -->
<para>
</para>
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_skeleton_new ##### -->
+
+<!-- ##### MACRO MM_MINOR_VERSION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO MM_MICRO_VERSION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO MM_CHECK_VERSION ##### -->
<para>
</para>
-@void:
-@Returns:
+@major:
+@minor:
+@micro:
diff --git a/docs/reference/libmm-glib/Makefile.in b/docs/reference/libmm-glib/Makefile.in
index bdeb497..53330bb 100644
--- a/docs/reference/libmm-glib/Makefile.in
+++ b/docs/reference/libmm-glib/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -133,8 +133,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -158,7 +156,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -175,7 +172,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -207,14 +203,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -233,13 +235,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/docs/reference/libmm-glib/html/libmm-glib-MMLocationCdmaBs.html b/docs/reference/libmm-glib/html/MMLocationCdmaBs.html
index 26decb1..fc197d4 100644
--- a/docs/reference/libmm-glib/html/libmm-glib-MMLocationCdmaBs.html
+++ b/docs/reference/libmm-glib/html/MMLocationCdmaBs.html
@@ -21,32 +21,41 @@
<td><a accesskey="n" href="ch03s04.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
-<a href="#libmm-glib-MMLocationCdmaBs.synopsis" class="shortcut">Top</a>
+<a href="#MMLocationCdmaBs.synopsis" class="shortcut">Top</a>
 | 
- <a href="#libmm-glib-MMLocationCdmaBs.description" class="shortcut">Description</a>
+ <a href="#MMLocationCdmaBs.description" class="shortcut">Description</a>
+  | 
+ <a href="#MMLocationCdmaBs.object-hierarchy" class="shortcut">Object Hierarchy</a>
</td></tr>
</table>
<div class="refentry">
-<a name="libmm-glib-MMLocationCdmaBs"></a><div class="titlepage"></div>
+<a name="MMLocationCdmaBs"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
-<h2><span class="refentrytitle"><a name="libmm-glib-MMLocationCdmaBs.top_of_page"></a>MMLocationCdmaBs</span></h2>
+<h2><span class="refentrytitle"><a name="MMLocationCdmaBs.top_of_page"></a>MMLocationCdmaBs</span></h2>
<p>MMLocationCdmaBs — Helper object to handle CDMA Base Station location information.</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
-<a name="libmm-glib-MMLocationCdmaBs.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">struct <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs">MMLocationCdmaBs</a>;
+<a name="MMLocationCdmaBs.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">struct <a class="link" href="MMLocationCdmaBs.html#MMLocationCdmaBs-struct" title="struct MMLocationCdmaBs">MMLocationCdmaBs</a>;
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="libmm-glib-MMLocationCdmaBs.html#mm-location-cdma-bs-get-latitude" title="mm_location_cdma_bs_get_latitude ()">mm_location_cdma_bs_get_latitude</a> (<em class="parameter"><code><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> *self</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="libmm-glib-MMLocationCdmaBs.html#mm-location-cdma-bs-get-longitude" title="mm_location_cdma_bs_get_longitude ()">mm_location_cdma_bs_get_longitude</a> (<em class="parameter"><code><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> *self</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="MMLocationCdmaBs.html#mm-location-cdma-bs-get-latitude" title="mm_location_cdma_bs_get_latitude ()">mm_location_cdma_bs_get_latitude</a> (<em class="parameter"><code><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> *self</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> <a class="link" href="MMLocationCdmaBs.html#mm-location-cdma-bs-get-longitude" title="mm_location_cdma_bs_get_longitude ()">mm_location_cdma_bs_get_longitude</a> (<em class="parameter"><code><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> *self</code></em>);
</pre>
</div>
<div class="refsect1">
-<a name="libmm-glib-MMLocationCdmaBs.description"></a><h2>Description</h2>
+<a name="MMLocationCdmaBs.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+ <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+ +----MMLocationCdmaBs
+</pre>
+</div>
+<div class="refsect1">
+<a name="MMLocationCdmaBs.description"></a><h2>Description</h2>
<p>
-The <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> is an object handling the location information of the
+The <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> is an object handling the location information of the
CDMA base station in which the modem is registered.
</p>
<p>
@@ -56,21 +65,19 @@ This object is retrieved with either <a class="link" href="MMModemLocation.html#
</p>
</div>
<div class="refsect1">
-<a name="libmm-glib-MMLocationCdmaBs.details"></a><h2>Details</h2>
+<a name="MMLocationCdmaBs.details"></a><h2>Details</h2>
<div class="refsect2">
-<a name="MMLocationCdmaBs"></a><h3>struct MMLocationCdmaBs</h3>
-<pre class="programlisting">struct MMLocationCdmaBs {
-};
-</pre>
+<a name="MMLocationCdmaBs-struct"></a><h3>struct MMLocationCdmaBs</h3>
+<pre class="programlisting">struct MMLocationCdmaBs;</pre>
<p>
-The <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> structure contains private data and should
+The <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> structure contains private data and should
only be accessed using the provided API.
</p>
</div>
<hr>
<div class="refsect2">
<a name="mm-location-cdma-bs-get-latitude"></a><h3>mm_location_cdma_bs_get_latitude ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> mm_location_cdma_bs_get_latitude (<em class="parameter"><code><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> *self</code></em>);</pre>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> mm_location_cdma_bs_get_latitude (<em class="parameter"><code><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> *self</code></em>);</pre>
<p>
Gets the latitude, in the [-90,90] range.
</p>
@@ -82,7 +89,7 @@ Gets the latitude, in the [-90,90] range.
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
-<td>a <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a>.</td>
+<td>a <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a>.</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
@@ -94,7 +101,7 @@ Gets the latitude, in the [-90,90] range.
<hr>
<div class="refsect2">
<a name="mm-location-cdma-bs-get-longitude"></a><h3>mm_location_cdma_bs_get_longitude ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> mm_location_cdma_bs_get_longitude (<em class="parameter"><code><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> *self</code></em>);</pre>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a> mm_location_cdma_bs_get_longitude (<em class="parameter"><code><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> *self</code></em>);</pre>
<p>
Gets the longitude, in the [-180,180] range.
</p>
@@ -106,7 +113,7 @@ Gets the longitude, in the [-180,180] range.
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
-<td>a <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a>.</td>
+<td>a <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a>.</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
diff --git a/docs/reference/libmm-glib/html/MMLocationGpsRaw.html b/docs/reference/libmm-glib/html/MMLocationGpsRaw.html
index a45836d..f61dd99 100644
--- a/docs/reference/libmm-glib/html/MMLocationGpsRaw.html
+++ b/docs/reference/libmm-glib/html/MMLocationGpsRaw.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
<link rel="up" href="ch03s03.html" title="Location support">
<link rel="prev" href="MMLocationGpsNmea.html" title="MMLocationGpsNmea">
-<link rel="next" href="libmm-glib-MMLocationCdmaBs.html" title="MMLocationCdmaBs">
+<link rel="next" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -18,7 +18,7 @@
<td><a accesskey="u" href="ch03s03.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
-<td><a accesskey="n" href="libmm-glib-MMLocationCdmaBs.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="MMLocationCdmaBs.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#MMLocationGpsRaw.synopsis" class="shortcut">Top</a>
diff --git a/docs/reference/libmm-glib/html/MMModem.html b/docs/reference/libmm-glib/html/MMModem.html
index 171d617..4ecd058 100644
--- a/docs/reference/libmm-glib/html/MMModem.html
+++ b/docs/reference/libmm-glib/html/MMModem.html
@@ -5,7 +5,7 @@
<title>MMModem</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
-<link rel="up" href="ch03.html#idm266932738048" title="Generic interfaces">
+<link rel="up" href="ch03.html#idm211869297872" title="Generic interfaces">
<link rel="prev" href="MMObject.html" title="MMObject">
<link rel="next" href="MMModem3gpp.html" title="MMModem3gpp">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
@@ -15,7 +15,7 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="MMObject.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch03.html#idm266932738048"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch03.html#idm211869297872"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
<td><a accesskey="n" href="MMModem3gpp.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
@@ -43,6 +43,7 @@
<a name="MMModem.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">struct <a class="link" href="MMModem.html#MMModem-struct" title="struct MMModem">MMModem</a>;
<a class="link" href="MMModem.html#MMModemModeCombination" title="MMModemModeCombination">MMModemModeCombination</a>;
+ <a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo">MMModemPortInfo</a>;
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MMModem.html#mm-modem-get-path" title="mm_modem_get_path ()">mm_modem_get_path</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MMModem.html#mm-modem-dup-path" title="mm_modem_dup_path ()">mm_modem_dup_path</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);
@@ -70,6 +71,12 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.htm
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MMModem.html#mm-modem-dup-plugin" title="mm_modem_dup_plugin ()">mm_modem_dup_plugin</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MMModem.html#mm-modem-get-primary-port" title="mm_modem_get_primary_port ()">mm_modem_get_primary_port</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MMModem.html#mm-modem-dup-primary-port" title="mm_modem_dup_primary_port ()">mm_modem_dup_primary_port</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MMModem.html#mm-modem-peek-ports" title="mm_modem_peek_ports ()">mm_modem_peek_ports</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>,
+ <em class="parameter"><code>const <a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> **ports</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *n_ports</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MMModem.html#mm-modem-get-ports" title="mm_modem_get_ports ()">mm_modem_get_ports</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>,
+ <em class="parameter"><code><a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> **ports</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *n_ports</code></em>);
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MMModem.html#mm-modem-get-device" title="mm_modem_get_device ()">mm_modem_get_device</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MMModem.html#mm-modem-dup-device" title="mm_modem_dup_device ()">mm_modem_dup_device</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MMModem.html#mm-modem-get-equipment-identifier" title="mm_modem_get_equipment_identifier ()">mm_modem_get_equipment_identifier</a> (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);
@@ -268,6 +275,9 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.htm
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> timeout</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
+
+<span class="returnvalue">void</span> <a class="link" href="MMModem.html#mm-modem-port-info-array-free" title="mm_modem_port_info_array_free ()">mm_modem_port_info_array_free</a> (<em class="parameter"><code><a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> *array</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> array_size</code></em>);
</pre>
</div>
<div class="refsect1">
@@ -336,6 +346,34 @@ using the provided API.
</div>
<hr>
<div class="refsect2">
+<a name="MMModemPortInfo"></a><h3>MMModemPortInfo</h3>
+<pre class="programlisting">typedef struct {
+ gchar *name;
+ MMModemPortType type;
+} MMModemPortInfo;
+</pre>
+<p>
+Information of a given port.
+</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="MMModemPortInfo.name"></a>name</code></em>;</span></p></td>
+<td>Name of the port.</td>
+</tr>
+<tr>
+<td><p><span class="term"><a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModemPortType"><span class="type">MMModemPortType</span></a> <em class="structfield"><code><a name="MMModemPortInfo.type"></a>type</code></em>;</span></p></td>
+<td>A <a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModemPortType"><span class="type">MMModemPortType</span></a> value.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
<a name="mm-modem-get-path"></a><h3>mm_modem_get_path ()</h3>
<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * mm_modem_get_path (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);</pre>
<p>
@@ -915,6 +953,52 @@ Gets a copy of the name of the primary port controlling this <a class="link" hre
</div>
<hr>
<div class="refsect2">
+<a name="mm-modem-peek-ports"></a><h3>mm_modem_peek_ports ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_modem_peek_ports (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>,
+ <em class="parameter"><code>const <a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> **ports</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *n_ports</code></em>);</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="mm-modem-get-ports"></a><h3>mm_modem_get_ports ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_modem_get_ports (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>,
+ <em class="parameter"><code><a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> **ports</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *n_ports</code></em>);</pre>
+<p>
+Gets the list of ports in the modem.
+</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>A <a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ports</code></em> :</span></p></td>
+<td>Return location for the array of <a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> values. The returned array should be freed with <a class="link" href="MMModem.html#mm-modem-port-info-array-free" title="mm_modem_port_info_array_free ()"><code class="function">mm_modem_port_info_array_free()</code></a> when no longer needed. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=n_ports]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>n_ports</code></em> :</span></p></td>
+<td>Return location for the number of values in <em class="parameter"><code>ports</code></em>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>
+<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>ports</code></em> and <em class="parameter"><code>n_ports</code></em> are set, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
<a name="mm-modem-get-device"></a><h3>mm_modem_get_device ()</h3>
<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * mm_modem_get_device (<em class="parameter"><code><a class="link" href="MMModem.html" title="MMModem"><span class="type">MMModem</span></a> *self</code></em>);</pre>
<p>
@@ -3412,6 +3496,31 @@ for the asynchronous version of this method.
</tbody>
</table></div>
</div>
+<hr>
+<div class="refsect2">
+<a name="mm-modem-port-info-array-free"></a><h3>mm_modem_port_info_array_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> mm_modem_port_info_array_free (<em class="parameter"><code><a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> *array</code></em>,
+ <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> array_size</code></em>);</pre>
+<p>
+Frees an array of <a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> values.
+</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>array</code></em> :</span></p></td>
+<td>an array of <a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo"><span class="type">MMModemPortInfo</span></a> values.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>array_size</code></em> :</span></p></td>
+<td>length of <em class="parameter"><code>array</code></em>.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
</div>
</div>
<div class="footer">
diff --git a/docs/reference/libmm-glib/html/MMModem3gpp.html b/docs/reference/libmm-glib/html/MMModem3gpp.html
index 91aa9d1..2c43a9e 100644
--- a/docs/reference/libmm-glib/html/MMModem3gpp.html
+++ b/docs/reference/libmm-glib/html/MMModem3gpp.html
@@ -5,7 +5,7 @@
<title>MMModem3gpp</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
-<link rel="up" href="ch03.html#idm266932738048" title="Generic interfaces">
+<link rel="up" href="ch03.html#idm211869297872" title="Generic interfaces">
<link rel="prev" href="MMModem.html" title="MMModem">
<link rel="next" href="MMModem3gppUssd.html" title="MMModem3gppUssd">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
@@ -15,7 +15,7 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="MMModem.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch03.html#idm266932738048"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch03.html#idm211869297872"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
<td><a accesskey="n" href="MMModem3gppUssd.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
diff --git a/docs/reference/libmm-glib/html/MMModem3gppUssd.html b/docs/reference/libmm-glib/html/MMModem3gppUssd.html
index 74c3d2d..c164ca3 100644
--- a/docs/reference/libmm-glib/html/MMModem3gppUssd.html
+++ b/docs/reference/libmm-glib/html/MMModem3gppUssd.html
@@ -5,7 +5,7 @@
<title>MMModem3gppUssd</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
-<link rel="up" href="ch03.html#idm266932738048" title="Generic interfaces">
+<link rel="up" href="ch03.html#idm211869297872" title="Generic interfaces">
<link rel="prev" href="MMModem3gpp.html" title="MMModem3gpp">
<link rel="next" href="MMModemCdma.html" title="MMModemCdma">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
@@ -15,7 +15,7 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="MMModem3gpp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch03.html#idm266932738048"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch03.html#idm211869297872"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
<td><a accesskey="n" href="MMModemCdma.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
diff --git a/docs/reference/libmm-glib/html/MMModemCdma.html b/docs/reference/libmm-glib/html/MMModemCdma.html
index 20ee930..a091931 100644
--- a/docs/reference/libmm-glib/html/MMModemCdma.html
+++ b/docs/reference/libmm-glib/html/MMModemCdma.html
@@ -5,7 +5,7 @@
<title>MMModemCdma</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
-<link rel="up" href="ch03.html#idm266932738048" title="Generic interfaces">
+<link rel="up" href="ch03.html#idm211869297872" title="Generic interfaces">
<link rel="prev" href="MMModem3gppUssd.html" title="MMModem3gppUssd">
<link rel="next" href="MMUnlockRetries.html" title="MMUnlockRetries">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
@@ -15,7 +15,7 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="MMModem3gppUssd.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch03.html#idm266932738048"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch03.html#idm211869297872"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
<td><a accesskey="n" href="MMUnlockRetries.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
diff --git a/docs/reference/libmm-glib/html/MMModemLocation.html b/docs/reference/libmm-glib/html/MMModemLocation.html
index 4ab6297..75b5ac9 100644
--- a/docs/reference/libmm-glib/html/MMModemLocation.html
+++ b/docs/reference/libmm-glib/html/MMModemLocation.html
@@ -103,11 +103,11 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.htm
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="returnvalue">MMLocationCdmaBs</span></a> * <a class="link" href="MMModemLocation.html#mm-modem-location-get-cdma-bs-finish" title="mm_modem_location_get_cdma_bs_finish ()">mm_modem_location_get_cdma_bs_finish</a>
+<a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="returnvalue">MMLocationCdmaBs</span></a> * <a class="link" href="MMModemLocation.html#mm-modem-location-get-cdma-bs-finish" title="mm_modem_location_get_cdma_bs_finish ()">mm_modem_location_get_cdma_bs_finish</a>
(<em class="parameter"><code><a class="link" href="MMModemLocation.html" title="MMModemLocation"><span class="type">MMModemLocation</span></a> *self</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="returnvalue">MMLocationCdmaBs</span></a> * <a class="link" href="MMModemLocation.html#mm-modem-location-get-cdma-bs-sync" title="mm_modem_location_get_cdma_bs_sync ()">mm_modem_location_get_cdma_bs_sync</a> (<em class="parameter"><code><a class="link" href="MMModemLocation.html" title="MMModemLocation"><span class="type">MMModemLocation</span></a> *self</code></em>,
+<a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="returnvalue">MMLocationCdmaBs</span></a> * <a class="link" href="MMModemLocation.html#mm-modem-location-get-cdma-bs-sync" title="mm_modem_location_get_cdma_bs_sync ()">mm_modem_location_get_cdma_bs_sync</a> (<em class="parameter"><code><a class="link" href="MMModemLocation.html" title="MMModemLocation"><span class="type">MMModemLocation</span></a> *self</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
<span class="returnvalue">void</span> <a class="link" href="MMModemLocation.html#mm-modem-location-get-full" title="mm_modem_location_get_full ()">mm_modem_location_get_full</a> (<em class="parameter"><code><a class="link" href="MMModemLocation.html" title="MMModemLocation"><span class="type">MMModemLocation</span></a> *self</code></em>,
@@ -119,13 +119,13 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.htm
<em class="parameter"><code><a class="link" href="MMLocation3gpp.html" title="MMLocation3gpp"><span class="type">MMLocation3gpp</span></a> **location_3gpp</code></em>,
<em class="parameter"><code><a class="link" href="MMLocationGpsNmea.html" title="MMLocationGpsNmea"><span class="type">MMLocationGpsNmea</span></a> **location_gps_nmea</code></em>,
<em class="parameter"><code><a class="link" href="MMLocationGpsRaw.html" title="MMLocationGpsRaw"><span class="type">MMLocationGpsRaw</span></a> **location_gps_raw</code></em>,
- <em class="parameter"><code><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> **location_cdma_bs</code></em>,
+ <em class="parameter"><code><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> **location_cdma_bs</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MMModemLocation.html#mm-modem-location-get-full-sync" title="mm_modem_location_get_full_sync ()">mm_modem_location_get_full_sync</a> (<em class="parameter"><code><a class="link" href="MMModemLocation.html" title="MMModemLocation"><span class="type">MMModemLocation</span></a> *self</code></em>,
<em class="parameter"><code><a class="link" href="MMLocation3gpp.html" title="MMLocation3gpp"><span class="type">MMLocation3gpp</span></a> **location_3gpp</code></em>,
<em class="parameter"><code><a class="link" href="MMLocationGpsNmea.html" title="MMLocationGpsNmea"><span class="type">MMLocationGpsNmea</span></a> **location_gps_nmea</code></em>,
<em class="parameter"><code><a class="link" href="MMLocationGpsRaw.html" title="MMLocationGpsRaw"><span class="type">MMLocationGpsRaw</span></a> **location_gps_raw</code></em>,
- <em class="parameter"><code><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> **location_cdma_bs</code></em>,
+ <em class="parameter"><code><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> **location_cdma_bs</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
</pre>
@@ -841,7 +841,7 @@ See <a class="link" href="MMModemLocation.html#mm-modem-location-get-cdma-bs-syn
<hr>
<div class="refsect2">
<a name="mm-modem-location-get-cdma-bs-finish"></a><h3>mm_modem_location_get_cdma_bs_finish ()</h3>
-<pre class="programlisting"><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="returnvalue">MMLocationCdmaBs</span></a> * mm_modem_location_get_cdma_bs_finish
+<pre class="programlisting"><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="returnvalue">MMLocationCdmaBs</span></a> * mm_modem_location_get_cdma_bs_finish
(<em class="parameter"><code><a class="link" href="MMModemLocation.html" title="MMModemLocation"><span class="type">MMModemLocation</span></a> *self</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
@@ -868,7 +868,7 @@ Finishes an operation started with <a class="link" href="MMModemLocation.html#mm
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>(transfer full) A <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if not available. The returned value should be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
+<td>(transfer full) A <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if not available. The returned value should be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
</tr>
</tbody>
</table></div>
@@ -876,7 +876,7 @@ Finishes an operation started with <a class="link" href="MMModemLocation.html#mm
<hr>
<div class="refsect2">
<a name="mm-modem-location-get-cdma-bs-sync"></a><h3>mm_modem_location_get_cdma_bs_sync ()</h3>
-<pre class="programlisting"><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="returnvalue">MMLocationCdmaBs</span></a> * mm_modem_location_get_cdma_bs_sync (<em class="parameter"><code><a class="link" href="MMModemLocation.html" title="MMModemLocation"><span class="type">MMModemLocation</span></a> *self</code></em>,
+<pre class="programlisting"><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="returnvalue">MMLocationCdmaBs</span></a> * mm_modem_location_get_cdma_bs_sync (<em class="parameter"><code><a class="link" href="MMModemLocation.html" title="MMModemLocation"><span class="type">MMModemLocation</span></a> *self</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
@@ -907,7 +907,7 @@ for the asynchronous version of this method.
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>(transfer full) A <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if not available. The returned value should be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
+<td>(transfer full) A <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a>, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if not available. The returned value should be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
</tr>
</tbody>
</table></div>
@@ -963,7 +963,7 @@ See <a class="link" href="MMModemLocation.html#mm-modem-location-get-full-sync"
<em class="parameter"><code><a class="link" href="MMLocation3gpp.html" title="MMLocation3gpp"><span class="type">MMLocation3gpp</span></a> **location_3gpp</code></em>,
<em class="parameter"><code><a class="link" href="MMLocationGpsNmea.html" title="MMLocationGpsNmea"><span class="type">MMLocationGpsNmea</span></a> **location_gps_nmea</code></em>,
<em class="parameter"><code><a class="link" href="MMLocationGpsRaw.html" title="MMLocationGpsRaw"><span class="type">MMLocationGpsRaw</span></a> **location_gps_raw</code></em>,
- <em class="parameter"><code><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> **location_cdma_bs</code></em>,
+ <em class="parameter"><code><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> **location_cdma_bs</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Finishes an operation started with <a class="link" href="MMModemLocation.html#mm-modem-location-get-full" title="mm_modem_location_get_full ()"><code class="function">mm_modem_location_get_full()</code></a>.
@@ -999,7 +999,7 @@ Finishes an operation started with <a class="link" href="MMModemLocation.html#mm
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>location_cdma_bs</code></em> :</span></p></td>
-<td>Return location for a <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> if CDMA Base Station location is requested, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if not required. The returned value should be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+<td>Return location for a <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> if CDMA Base Station location is requested, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if not required. The returned value should be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
</td>
</tr>
<tr>
@@ -1021,7 +1021,7 @@ Finishes an operation started with <a class="link" href="MMModemLocation.html#mm
<em class="parameter"><code><a class="link" href="MMLocation3gpp.html" title="MMLocation3gpp"><span class="type">MMLocation3gpp</span></a> **location_3gpp</code></em>,
<em class="parameter"><code><a class="link" href="MMLocationGpsNmea.html" title="MMLocationGpsNmea"><span class="type">MMLocationGpsNmea</span></a> **location_gps_nmea</code></em>,
<em class="parameter"><code><a class="link" href="MMLocationGpsRaw.html" title="MMLocationGpsRaw"><span class="type">MMLocationGpsRaw</span></a> **location_gps_raw</code></em>,
- <em class="parameter"><code><a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> **location_cdma_bs</code></em>,
+ <em class="parameter"><code><a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> **location_cdma_bs</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
@@ -1058,7 +1058,7 @@ for the asynchronous version of this method.
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>location_cdma_bs</code></em> :</span></p></td>
-<td>Return location for a <a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> if CDMA Base Station location is requested, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if not required. The returned value should be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+<td>Return location for a <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs"><span class="type">MMLocationCdmaBs</span></a> if CDMA Base Station location is requested, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><span class="type">NULL</span></a> if not required. The returned value should be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
</td>
</tr>
<tr>
diff --git a/docs/reference/libmm-glib/html/MMSmsProperties.html b/docs/reference/libmm-glib/html/MMSmsProperties.html
index 3d60983..e73d6ea 100644
--- a/docs/reference/libmm-glib/html/MMSmsProperties.html
+++ b/docs/reference/libmm-glib/html/MMSmsProperties.html
@@ -284,7 +284,7 @@ Gets the message data.
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GByteArray"><span class="type">GByteArray</span></a> with the message data, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if it doesn't contain any (e.g. contains text instead). The returned value should be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#g-byte-array-unref"><code class="function">g_byte_array_unref()</code></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+<td>A <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#GByteArray"><span class="type">GByteArray</span></a> with the message data, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if it doesn't contain any (e.g. contains text instead). The returned value should be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.html#g-byte-array-unref"><code class="function">g_byte_array_unref()</code></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
</td>
</tr>
</tbody>
diff --git a/docs/reference/libmm-glib/html/MMUnlockRetries.html b/docs/reference/libmm-glib/html/MMUnlockRetries.html
index 6fedc0f..1c4e067 100644
--- a/docs/reference/libmm-glib/html/MMUnlockRetries.html
+++ b/docs/reference/libmm-glib/html/MMUnlockRetries.html
@@ -5,7 +5,7 @@
<title>MMUnlockRetries</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
-<link rel="up" href="ch03.html#idm266932738048" title="Generic interfaces">
+<link rel="up" href="ch03.html#idm211869297872" title="Generic interfaces">
<link rel="prev" href="MMModemCdma.html" title="MMModemCdma">
<link rel="next" href="ch03s02.html" title="Simple interface support">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
@@ -15,7 +15,7 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="MMModemCdma.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="ch03.html#idm266932738048"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch03.html#idm211869297872"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
<td><a accesskey="n" href="ch03s02.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
diff --git a/docs/reference/libmm-glib/html/MmGdbusModem.html b/docs/reference/libmm-glib/html/MmGdbusModem.html
index 04bfd9b..cc42e07 100644
--- a/docs/reference/libmm-glib/html/MmGdbusModem.html
+++ b/docs/reference/libmm-glib/html/MmGdbusModem.html
@@ -84,6 +84,8 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.htm
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-get-power-state" title="mm_gdbus_modem_get_power_state ()">mm_gdbus_modem_get_power_state</a> (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-get-primary-port" title="mm_gdbus_modem_get_primary_port ()">mm_gdbus_modem_get_primary_port</a> (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-dup-primary-port" title="mm_gdbus_modem_dup_primary_port ()">mm_gdbus_modem_dup_primary_port</a> (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-get-ports" title="mm_gdbus_modem_get_ports ()">mm_gdbus_modem_get_ports</a> (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);
+<a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-dup-ports" title="mm_gdbus_modem_dup_ports ()">mm_gdbus_modem_dup_ports</a> (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-get-revision" title="mm_gdbus_modem_get_revision ()">mm_gdbus_modem_get_revision</a> (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-dup-revision" title="mm_gdbus_modem_dup_revision ()">mm_gdbus_modem_dup_revision</a> (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-get-signal-quality" title="mm_gdbus_modem_get_signal_quality ()">mm_gdbus_modem_get_signal_quality</a> (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);
@@ -300,6 +302,7 @@ MmGdbusModem is implemented by
"<a class="link" href="MmGdbusModem.html#MmGdbusModem--model" title='The "model" property'>model</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
"<a class="link" href="MmGdbusModem.html#MmGdbusModem--own-numbers" title='The "own-numbers" property'>own-numbers</a>" <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Boxed-Types.html#GStrv"><span class="type">GStrv</span></a> : Read / Write
"<a class="link" href="MmGdbusModem.html#MmGdbusModem--plugin" title='The "plugin" property'>plugin</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
+ "<a class="link" href="MmGdbusModem.html#MmGdbusModem--ports" title='The "ports" property'>ports</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a>* : Read / Write
"<a class="link" href="MmGdbusModem.html#MmGdbusModem--power-state" title='The "power-state" property'>power-state</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write
"<a class="link" href="MmGdbusModem.html#MmGdbusModem--primary-port" title='The "primary-port" property'>primary-port</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
"<a class="link" href="MmGdbusModem.html#MmGdbusModem--revision" title='The "revision" property'>revision</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write
@@ -437,6 +440,8 @@ Abstract interface type for the D-Bus interface org.freedesktop.ModemManager1.Mo
const gchar * (*get_plugin) (MmGdbusModem *object);
+ GVariant * (*get_ports) (MmGdbusModem *object);
+
guint (*get_power_state) (MmGdbusModem *object);
const gchar * (*get_primary_port) (MmGdbusModem *object);
@@ -584,6 +589,10 @@ Virtual table for the D-Bus interface org.freedesktop.ModemManager1.Modem.
<td>Getter for the <a class="link" href="MmGdbusModem.html#MmGdbusModem--plugin" title='The "plugin" property'><span class="type">"plugin"</span></a> property.</td>
</tr>
<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemIface.get-ports"></a>get_ports</code></em> ()</span></p></td>
+<td>Getter for the <a class="link" href="MmGdbusModem.html#MmGdbusModem--ports" title='The "ports" property'><span class="type">"ports"</span></a> property.</td>
+</tr>
+<tr>
<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemIface.get-power-state"></a>get_power_state</code></em> ()</span></p></td>
<td>Getter for the <a class="link" href="MmGdbusModem.html#MmGdbusModem--power-state" title='The "power-state" property'><span class="type">"power-state"</span></a> property.</td>
</tr>
@@ -1468,6 +1477,68 @@ Since this D-Bus property is readable, it is meaningful to use this function on
</div>
<hr>
<div class="refsect2">
+<a name="mm-gdbus-modem-get-ports"></a><h3>mm_gdbus_modem_get_ports ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * mm_gdbus_modem_get_ports (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);</pre>
+<p>
+Gets the value of the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Ports">"Ports"</a> D-Bus property.
+</p>
+<p>
+Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+</p>
+<p>
+</p>
+<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Warning</h3>The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where <em class="parameter"><code>object</code></em> was constructed. Use <a class="link" href="MmGdbusModem.html#mm-gdbus-modem-dup-ports" title="mm_gdbus_modem_dup_ports ()"><code class="function">mm_gdbus_modem_dup_ports()</code></a> if on another thread.</div>
+<p>
+</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The property value or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the property is not set. Do not free the returned value, it belongs to <em class="parameter"><code>object</code></em>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="mm-gdbus-modem-dup-ports"></a><h3>mm_gdbus_modem_dup_ports ()</h3>
+<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * mm_gdbus_modem_dup_ports (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);</pre>
+<p>
+Gets a copy of the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Ports">"Ports"</a> D-Bus property.
+</p>
+<p>
+Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
+<td>A <a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a>.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The property value or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the property is not set. The returned value should be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#g-variant-unref"><code class="function">g_variant_unref()</code></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
<a name="mm-gdbus-modem-get-revision"></a><h3>mm_gdbus_modem_get_revision ()</h3>
<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * mm_gdbus_modem_get_revision (<em class="parameter"><code><a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a> *object</code></em>);</pre>
<p>
@@ -3626,6 +3697,19 @@ Since the D-Bus property for this <a href="http://library.gnome.org/devel/gobjec
</div>
<hr>
<div class="refsect2">
+<a name="MmGdbusModem--ports"></a><h3>The <code class="literal">"ports"</code> property</h3>
+<pre class="programlisting"> "ports" <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a>* : Read / Write</pre>
+<p>
+Represents the D-Bus property <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.html#gdbus-property-org-freedesktop-ModemManager1-Modem.Ports">"Ports"</a>.
+</p>
+<p>
+Since the D-Bus property for this <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
+</p>
+<p>Allowed values: GVariant&lt;a(su)&gt;</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
<a name="MmGdbusModem--power-state"></a><h3>The <code class="literal">"power-state"</code> property</h3>
<pre class="programlisting"> "power-state" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre>
<p>
diff --git a/docs/reference/libmm-glib/html/MmGdbusModemContacts.html b/docs/reference/libmm-glib/html/MmGdbusModemContacts.html
deleted file mode 100644
index 1b991d1..0000000
--- a/docs/reference/libmm-glib/html/MmGdbusModemContacts.html
+++ /dev/null
@@ -1,1426 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>MmGdbusModemContacts</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="libmm-glib Reference Manual">
-<link rel="up" href="pt02.html" title="Part II. Low level API">
-<link rel="prev" href="MmGdbusModemFirmwareSkeleton.html" title="MmGdbusModemFirmwareSkeleton">
-<link rel="next" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">
-<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="MmGdbusModemFirmwareSkeleton.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">libmm-glib Reference Manual</th>
-<td><a accesskey="n" href="MmGdbusModemContactsProxy.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#MmGdbusModemContacts.synopsis" class="shortcut">Top</a>
-  | 
- <a href="#MmGdbusModemContacts.description" class="shortcut">Description</a>
-  | 
- <a href="#MmGdbusModemContacts.object-hierarchy" class="shortcut">Object Hierarchy</a>
-  | 
- <a href="#MmGdbusModemContacts.prerequisites" class="shortcut">Prerequisites</a>
-  | 
- <a href="#MmGdbusModemContacts.implementations" class="shortcut">Known Implementations</a>
-  | 
- <a href="#MmGdbusModemContacts.signals" class="shortcut">Signals</a>
-</td></tr>
-</table>
-<div class="refentry">
-<a name="MmGdbusModemContacts"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="MmGdbusModemContacts.top_of_page"></a>MmGdbusModemContacts</span></h2>
-<p>MmGdbusModemContacts — Generated C code for the org.freedesktop.ModemManager1.Modem.Contacts D-Bus interface</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv">
-<a name="MmGdbusModemContacts.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis"> <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-struct" title="MmGdbusModemContacts">MmGdbusModemContacts</a>;
-struct <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContactsIface" title="struct MmGdbusModemContactsIface">MmGdbusModemContactsIface</a>;
-
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add" title="mm_gdbus_modem_contacts_call_add ()">mm_gdbus_modem_contacts_call_add</a> (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *arg_properties</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-finish" title="mm_gdbus_modem_contacts_call_add_finish ()">mm_gdbus_modem_contacts_call_add_finish</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *out_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-sync" title="mm_gdbus_modem_contacts_call_add_sync ()">mm_gdbus_modem_contacts_call_add_sync</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *arg_properties</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *out_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete" title="mm_gdbus_modem_contacts_call_delete ()">mm_gdbus_modem_contacts_call_delete</a> (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-finish" title="mm_gdbus_modem_contacts_call_delete_finish ()">mm_gdbus_modem_contacts_call_delete_finish</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-sync" title="mm_gdbus_modem_contacts_call_delete_sync ()">mm_gdbus_modem_contacts_call_delete_sync</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find" title="mm_gdbus_modem_contacts_call_find ()">mm_gdbus_modem_contacts_call_find</a> (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg_pattern</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-finish" title="mm_gdbus_modem_contacts_call_find_finish ()">mm_gdbus_modem_contacts_call_find_finish</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_results</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-sync" title="mm_gdbus_modem_contacts_call_find_sync ()">mm_gdbus_modem_contacts_call_find_sync</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg_pattern</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_results</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get" title="mm_gdbus_modem_contacts_call_get ()">mm_gdbus_modem_contacts_call_get</a> (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-finish" title="mm_gdbus_modem_contacts_call_get_finish ()">mm_gdbus_modem_contacts_call_get_finish</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_properties</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-sync" title="mm_gdbus_modem_contacts_call_get_sync ()">mm_gdbus_modem_contacts_call_get_sync</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_properties</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count" title="mm_gdbus_modem_contacts_call_get_count ()">mm_gdbus_modem_contacts_call_get_count</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-finish" title="mm_gdbus_modem_contacts_call_get_count_finish ()">mm_gdbus_modem_contacts_call_get_count_finish</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *out_count</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-sync" title="mm_gdbus_modem_contacts_call_get_count_sync ()">mm_gdbus_modem_contacts_call_get_count_sync</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *out_count</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list" title="mm_gdbus_modem_contacts_call_list ()">mm_gdbus_modem_contacts_call_list</a> (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-finish" title="mm_gdbus_modem_contacts_call_list_finish ()">mm_gdbus_modem_contacts_call_list_finish</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_results</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-sync" title="mm_gdbus_modem_contacts_call_list_sync ()">mm_gdbus_modem_contacts_call_list_sync</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_results</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-</pre>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContacts.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="synopsis">
- GInterface
- +----MmGdbusModemContacts
-</pre>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContacts.prerequisites"></a><h2>Prerequisites</h2>
-<p>
-MmGdbusModemContacts requires
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>.</p>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContacts.implementations"></a><h2>Known Implementations</h2>
-<p>
-MmGdbusModemContacts is implemented by
- <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a> and <a class="link" href="MmGdbusModemContactsSkeleton.html" title="MmGdbusModemContactsSkeleton">MmGdbusModemContactsSkeleton</a>.</p>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContacts.signals"></a><h2>Signals</h2>
-<pre class="synopsis">
- "<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-added" title='The "added" signal'>added</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-deleted" title='The "deleted" signal'>deleted</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-add" title='The "handle-add" signal'>handle-add</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-delete" title='The "handle-delete" signal'>handle-delete</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-find" title='The "handle-find" signal'>handle-find</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get" title='The "handle-get" signal'>handle-get</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get-count" title='The "handle-get-count" signal'>handle-get-count</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
- "<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-list" title='The "handle-list" signal'>handle-list</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
-</pre>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContacts.description"></a><h2>Description</h2>
-<p>
-This section contains code for working with the org.freedesktop.ModemManager1.Modem.Contacts D-Bus interface in C.
-</p>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContacts.details"></a><h2>Details</h2>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-struct"></a><h3>MmGdbusModemContacts</h3>
-<pre class="programlisting">typedef struct _MmGdbusModemContacts MmGdbusModemContacts;</pre>
-<p>
-Abstract interface type for the D-Bus interface org.freedesktop.ModemManager1.Modem.Contacts.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MmGdbusModemContactsIface"></a><h3>struct MmGdbusModemContactsIface</h3>
-<pre class="programlisting">struct MmGdbusModemContactsIface {
- GTypeInterface parent_iface;
-
-
- gboolean (*handle_add) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- GVariant *arg_properties);
-
- gboolean (*handle_delete) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- guint arg_index);
-
- gboolean (*handle_find) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- const gchar *arg_pattern);
-
- gboolean (*handle_get) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- guint arg_index);
-
- gboolean (*handle_get_count) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation);
-
- gboolean (*handle_list) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation);
-
- void (*added) (
- MmGdbusModemContacts *object,
- guint arg_index,
- GVariant *arg_properties);
-
- void (*deleted) (
- MmGdbusModemContacts *object,
- guint arg_index);
-};
-</pre>
-<p>
-Virtual table for the D-Bus interface org.freedesktop.ModemManager1.Modem.Contacts.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GTypeInterface"><span class="type">GTypeInterface</span></a> <em class="structfield"><code><a name="MmGdbusModemContactsIface.parent-iface"></a>parent_iface</code></em>;</span></p></td>
-<td>The parent interface.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemContactsIface.handle-add"></a>handle_add</code></em> ()</span></p></td>
-<td>Handler for the <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-add" title='The "handle-add" signal'><span class="type">"handle-add"</span></a> signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemContactsIface.handle-delete"></a>handle_delete</code></em> ()</span></p></td>
-<td>Handler for the <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-delete" title='The "handle-delete" signal'><span class="type">"handle-delete"</span></a> signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemContactsIface.handle-find"></a>handle_find</code></em> ()</span></p></td>
-<td>Handler for the <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-find" title='The "handle-find" signal'><span class="type">"handle-find"</span></a> signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemContactsIface.handle-get"></a>handle_get</code></em> ()</span></p></td>
-<td>Handler for the <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get" title='The "handle-get" signal'><span class="type">"handle-get"</span></a> signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemContactsIface.handle-get-count"></a>handle_get_count</code></em> ()</span></p></td>
-<td>Handler for the <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get-count" title='The "handle-get-count" signal'><span class="type">"handle-get-count"</span></a> signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemContactsIface.handle-list"></a>handle_list</code></em> ()</span></p></td>
-<td>Handler for the <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-list" title='The "handle-list" signal'><span class="type">"handle-list"</span></a> signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemContactsIface.added"></a>added</code></em> ()</span></p></td>
-<td>Handler for the <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-added" title='The "added" signal'><span class="type">"added"</span></a> signal.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="structfield"><code><a name="MmGdbusModemContactsIface.deleted"></a>deleted</code></em> ()</span></p></td>
-<td>Handler for the <a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-deleted" title='The "deleted" signal'><span class="type">"deleted"</span></a> signal.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-add"></a><h3>mm_gdbus_modem_contacts_call_add ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_modem_contacts_call_add (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *arg_properties</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>
-Asynchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add"><GTKDOCLINK HREF="Add"><code class="function">Add()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>.
-When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked in the <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a> of the thread you are calling this method from.
-You can then call <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-finish" title="mm_gdbus_modem_contacts_call_add_finish ()"><code class="function">mm_gdbus_modem_contacts_call_add_finish()</code></a> to get the result of the operation.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-sync" title="mm_gdbus_modem_contacts_call_add_sync ()"><code class="function">mm_gdbus_modem_contacts_call_add_sync()</code></a> for the synchronous, blocking version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_properties</code></em> :</span></p></td>
-<td>Argument to pass with the method invocation.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-add-finish"></a><h3>mm_gdbus_modem_contacts_call_add_finish ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_add_finish
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *out_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Finishes an operation started with <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add" title="mm_gdbus_modem_contacts_call_add ()"><code class="function">mm_gdbus_modem_contacts_call_add()</code></a>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_index</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
-<td>The <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> obtained from the <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add" title="mm_gdbus_modem_contacts_call_add ()"><code class="function">mm_gdbus_modem_contacts_call_add()</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-add-sync"></a><h3>mm_gdbus_modem_contacts_call_add_sync ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_add_sync
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *arg_properties</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *out_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Synchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add"><GTKDOCLINK HREF="Add"><code class="function">Add()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>. The calling thread is blocked until a reply is received.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add" title="mm_gdbus_modem_contacts_call_add ()"><code class="function">mm_gdbus_modem_contacts_call_add()</code></a> for the asynchronous version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_properties</code></em> :</span></p></td>
-<td>Argument to pass with the method invocation.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_index</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-delete"></a><h3>mm_gdbus_modem_contacts_call_delete ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_modem_contacts_call_delete (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>
-Asynchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete"><GTKDOCLINK HREF="Delete"><code class="function">Delete()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>.
-When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked in the <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a> of the thread you are calling this method from.
-You can then call <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-finish" title="mm_gdbus_modem_contacts_call_delete_finish ()"><code class="function">mm_gdbus_modem_contacts_call_delete_finish()</code></a> to get the result of the operation.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-sync" title="mm_gdbus_modem_contacts_call_delete_sync ()"><code class="function">mm_gdbus_modem_contacts_call_delete_sync()</code></a> for the synchronous, blocking version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_index</code></em> :</span></p></td>
-<td>Argument to pass with the method invocation.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-delete-finish"></a><h3>mm_gdbus_modem_contacts_call_delete_finish ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_delete_finish
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Finishes an operation started with <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete" title="mm_gdbus_modem_contacts_call_delete ()"><code class="function">mm_gdbus_modem_contacts_call_delete()</code></a>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
-<td>The <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> obtained from the <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete" title="mm_gdbus_modem_contacts_call_delete ()"><code class="function">mm_gdbus_modem_contacts_call_delete()</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-delete-sync"></a><h3>mm_gdbus_modem_contacts_call_delete_sync ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_delete_sync
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Synchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete"><GTKDOCLINK HREF="Delete"><code class="function">Delete()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>. The calling thread is blocked until a reply is received.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete" title="mm_gdbus_modem_contacts_call_delete ()"><code class="function">mm_gdbus_modem_contacts_call_delete()</code></a> for the asynchronous version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_index</code></em> :</span></p></td>
-<td>Argument to pass with the method invocation.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-find"></a><h3>mm_gdbus_modem_contacts_call_find ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_modem_contacts_call_find (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg_pattern</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>
-Asynchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find"><GTKDOCLINK HREF="Find"><code class="function">Find()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>.
-When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked in the <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a> of the thread you are calling this method from.
-You can then call <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-finish" title="mm_gdbus_modem_contacts_call_find_finish ()"><code class="function">mm_gdbus_modem_contacts_call_find_finish()</code></a> to get the result of the operation.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-sync" title="mm_gdbus_modem_contacts_call_find_sync ()"><code class="function">mm_gdbus_modem_contacts_call_find_sync()</code></a> for the synchronous, blocking version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_pattern</code></em> :</span></p></td>
-<td>Argument to pass with the method invocation.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-find-finish"></a><h3>mm_gdbus_modem_contacts_call_find_finish ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_find_finish
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_results</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Finishes an operation started with <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find" title="mm_gdbus_modem_contacts_call_find ()"><code class="function">mm_gdbus_modem_contacts_call_find()</code></a>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_results</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
-<td>The <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> obtained from the <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find" title="mm_gdbus_modem_contacts_call_find ()"><code class="function">mm_gdbus_modem_contacts_call_find()</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-find-sync"></a><h3>mm_gdbus_modem_contacts_call_find_sync ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_find_sync
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg_pattern</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_results</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Synchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find"><GTKDOCLINK HREF="Find"><code class="function">Find()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>. The calling thread is blocked until a reply is received.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find" title="mm_gdbus_modem_contacts_call_find ()"><code class="function">mm_gdbus_modem_contacts_call_find()</code></a> for the asynchronous version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_pattern</code></em> :</span></p></td>
-<td>Argument to pass with the method invocation.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_results</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-get"></a><h3>mm_gdbus_modem_contacts_call_get ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_modem_contacts_call_get (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>
-Asynchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get"><GTKDOCLINK HREF="Get"><code class="function">Get()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>.
-When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked in the <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a> of the thread you are calling this method from.
-You can then call <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-finish" title="mm_gdbus_modem_contacts_call_get_finish ()"><code class="function">mm_gdbus_modem_contacts_call_get_finish()</code></a> to get the result of the operation.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-sync" title="mm_gdbus_modem_contacts_call_get_sync ()"><code class="function">mm_gdbus_modem_contacts_call_get_sync()</code></a> for the synchronous, blocking version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_index</code></em> :</span></p></td>
-<td>Argument to pass with the method invocation.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-get-finish"></a><h3>mm_gdbus_modem_contacts_call_get_finish ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_get_finish
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_properties</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Finishes an operation started with <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get" title="mm_gdbus_modem_contacts_call_get ()"><code class="function">mm_gdbus_modem_contacts_call_get()</code></a>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_properties</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
-<td>The <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> obtained from the <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get" title="mm_gdbus_modem_contacts_call_get ()"><code class="function">mm_gdbus_modem_contacts_call_get()</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-get-sync"></a><h3>mm_gdbus_modem_contacts_call_get_sync ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_get_sync
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_properties</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Synchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get"><GTKDOCLINK HREF="Get"><code class="function">Get()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>. The calling thread is blocked until a reply is received.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get" title="mm_gdbus_modem_contacts_call_get ()"><code class="function">mm_gdbus_modem_contacts_call_get()</code></a> for the asynchronous version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_index</code></em> :</span></p></td>
-<td>Argument to pass with the method invocation.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_properties</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-get-count"></a><h3>mm_gdbus_modem_contacts_call_get_count ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_modem_contacts_call_get_count
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>
-Asynchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount"><GTKDOCLINK HREF="GetCount"><code class="function">GetCount()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>.
-When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked in the <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a> of the thread you are calling this method from.
-You can then call <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-finish" title="mm_gdbus_modem_contacts_call_get_count_finish ()"><code class="function">mm_gdbus_modem_contacts_call_get_count_finish()</code></a> to get the result of the operation.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-sync" title="mm_gdbus_modem_contacts_call_get_count_sync ()"><code class="function">mm_gdbus_modem_contacts_call_get_count_sync()</code></a> for the synchronous, blocking version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-get-count-finish"></a><h3>mm_gdbus_modem_contacts_call_get_count_finish ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_get_count_finish
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *out_count</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Finishes an operation started with <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count" title="mm_gdbus_modem_contacts_call_get_count ()"><code class="function">mm_gdbus_modem_contacts_call_get_count()</code></a>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_count</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
-<td>The <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> obtained from the <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count" title="mm_gdbus_modem_contacts_call_get_count ()"><code class="function">mm_gdbus_modem_contacts_call_get_count()</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-get-count-sync"></a><h3>mm_gdbus_modem_contacts_call_get_count_sync ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_get_count_sync
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *out_count</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Synchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount"><GTKDOCLINK HREF="GetCount"><code class="function">GetCount()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>. The calling thread is blocked until a reply is received.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count" title="mm_gdbus_modem_contacts_call_get_count ()"><code class="function">mm_gdbus_modem_contacts_call_get_count()</code></a> for the asynchronous version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_count</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-list"></a><h3>mm_gdbus_modem_contacts_call_list ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_modem_contacts_call_list (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>
-Asynchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List"><GTKDOCLINK HREF="List"><code class="function">List()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>.
-When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked in the <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a> of the thread you are calling this method from.
-You can then call <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-finish" title="mm_gdbus_modem_contacts_call_list_finish ()"><code class="function">mm_gdbus_modem_contacts_call_list_finish()</code></a> to get the result of the operation.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-sync" title="mm_gdbus_modem_contacts_call_list_sync ()"><code class="function">mm_gdbus_modem_contacts_call_list_sync()</code></a> for the synchronous, blocking version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-list-finish"></a><h3>mm_gdbus_modem_contacts_call_list_finish ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_list_finish
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_results</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Finishes an operation started with <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list" title="mm_gdbus_modem_contacts_call_list ()"><code class="function">mm_gdbus_modem_contacts_call_list()</code></a>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_results</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
-<td>The <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> obtained from the <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list" title="mm_gdbus_modem_contacts_call_list ()"><code class="function">mm_gdbus_modem_contacts_call_list()</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-call-list-sync"></a><h3>mm_gdbus_modem_contacts_call_list_sync ()</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> mm_gdbus_modem_contacts_call_list_sync
- (<em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *proxy</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> **out_results</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Synchronously invokes the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List"><GTKDOCLINK HREF="List"><code class="function">List()</code></a></GTKDOCLINK> D-Bus method on <em class="parameter"><code>proxy</code></em>. The calling thread is blocked until a reply is received.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list" title="mm_gdbus_modem_contacts_call_list ()"><code class="function">mm_gdbus_modem_contacts_call_list()</code></a> for the asynchronous version of this method.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>proxy</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>out_results</code></em> :</span></p></td>
-<td>Return location for return parameter or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the call succeded, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContacts.signal-details"></a><h2>Signal Details</h2>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-added"></a><h3>The <code class="literal">"added"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *object,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *arg_properties,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-On the client-side, this signal is emitted whenever the D-Bus signal <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Added">"Added"</a> is received.
-</p>
-<p>
-On the service-side, this signal can be used with e.g. <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#g-signal-emit-by-name"><code class="function">g_signal_emit_by_name()</code></a> to make the object emit the D-Bus signal.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_index</code></em> :</span></p></td>
-<td>Argument.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_properties</code></em> :</span></p></td>
-<td>Argument.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-deleted"></a><h3>The <code class="literal">"deleted"</code> signal</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *object,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-On the client-side, this signal is emitted whenever the D-Bus signal <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-signal-org-freedesktop-ModemManager1-Modem-Contacts.Deleted">"Deleted"</a> is received.
-</p>
-<p>
-On the service-side, this signal can be used with e.g. <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#g-signal-emit-by-name"><code class="function">g_signal_emit_by_name()</code></a> to make the object emit the D-Bus signal.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_index</code></em> :</span></p></td>
-<td>Argument.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-handle-add"></a><h3>The <code class="literal">"handle-add"</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *object,
- <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a> *invocation,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *arg_properties,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-Signal emitted when a remote caller is invoking the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Add"><GTKDOCLINK HREF="Add"><code class="function">Add()</code></a></GTKDOCLINK> D-Bus method.
-</p>
-<p>
-If a signal handler returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, it means the signal handler will handle the invocation (e.g. take a reference to <em class="parameter"><code>invocation</code></em> and eventually call <code class="function">mm_gdbus_modem_contacts_complete_add()</code> or e.g. <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html#g-dbus-method-invocation-return-error"><code class="function">g_dbus_method_invocation_return_error()</code></a> on it) and no order signal handlers will run. If no signal handler handles the invocation, the <a href="http://library.gnome.org/devel/gio/unstable/gio-GDBusError.html#G-DBUS-ERROR-UNKNOWN-METHOD:CAPS"><code class="literal">G_DBUS_ERROR_UNKNOWN_METHOD</code></a> error is returned.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>invocation</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_properties</code></em> :</span></p></td>
-<td>Argument passed by remote caller.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the invocation was handled, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to let other signal handlers run.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-handle-delete"></a><h3>The <code class="literal">"handle-delete"</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *object,
- <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a> *invocation,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-Signal emitted when a remote caller is invoking the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Delete"><GTKDOCLINK HREF="Delete"><code class="function">Delete()</code></a></GTKDOCLINK> D-Bus method.
-</p>
-<p>
-If a signal handler returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, it means the signal handler will handle the invocation (e.g. take a reference to <em class="parameter"><code>invocation</code></em> and eventually call <code class="function">mm_gdbus_modem_contacts_complete_delete()</code> or e.g. <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html#g-dbus-method-invocation-return-error"><code class="function">g_dbus_method_invocation_return_error()</code></a> on it) and no order signal handlers will run. If no signal handler handles the invocation, the <a href="http://library.gnome.org/devel/gio/unstable/gio-GDBusError.html#G-DBUS-ERROR-UNKNOWN-METHOD:CAPS"><code class="literal">G_DBUS_ERROR_UNKNOWN_METHOD</code></a> error is returned.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>invocation</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_index</code></em> :</span></p></td>
-<td>Argument passed by remote caller.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the invocation was handled, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to let other signal handlers run.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-handle-find"></a><h3>The <code class="literal">"handle-find"</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *object,
- <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a> *invocation,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg_pattern,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-Signal emitted when a remote caller is invoking the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Find"><GTKDOCLINK HREF="Find"><code class="function">Find()</code></a></GTKDOCLINK> D-Bus method.
-</p>
-<p>
-If a signal handler returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, it means the signal handler will handle the invocation (e.g. take a reference to <em class="parameter"><code>invocation</code></em> and eventually call <code class="function">mm_gdbus_modem_contacts_complete_find()</code> or e.g. <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html#g-dbus-method-invocation-return-error"><code class="function">g_dbus_method_invocation_return_error()</code></a> on it) and no order signal handlers will run. If no signal handler handles the invocation, the <a href="http://library.gnome.org/devel/gio/unstable/gio-GDBusError.html#G-DBUS-ERROR-UNKNOWN-METHOD:CAPS"><code class="literal">G_DBUS_ERROR_UNKNOWN_METHOD</code></a> error is returned.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>invocation</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_pattern</code></em> :</span></p></td>
-<td>Argument passed by remote caller.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the invocation was handled, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to let other signal handlers run.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-handle-get"></a><h3>The <code class="literal">"handle-get"</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *object,
- <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a> *invocation,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg_index,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-Signal emitted when a remote caller is invoking the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.Get"><GTKDOCLINK HREF="Get"><code class="function">Get()</code></a></GTKDOCLINK> D-Bus method.
-</p>
-<p>
-If a signal handler returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, it means the signal handler will handle the invocation (e.g. take a reference to <em class="parameter"><code>invocation</code></em> and eventually call <code class="function">mm_gdbus_modem_contacts_complete_get()</code> or e.g. <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html#g-dbus-method-invocation-return-error"><code class="function">g_dbus_method_invocation_return_error()</code></a> on it) and no order signal handlers will run. If no signal handler handles the invocation, the <a href="http://library.gnome.org/devel/gio/unstable/gio-GDBusError.html#G-DBUS-ERROR-UNKNOWN-METHOD:CAPS"><code class="literal">G_DBUS_ERROR_UNKNOWN_METHOD</code></a> error is returned.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>invocation</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>arg_index</code></em> :</span></p></td>
-<td>Argument passed by remote caller.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the invocation was handled, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to let other signal handlers run.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-handle-get-count"></a><h3>The <code class="literal">"handle-get-count"</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *object,
- <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a> *invocation,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-Signal emitted when a remote caller is invoking the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.GetCount"><GTKDOCLINK HREF="GetCount"><code class="function">GetCount()</code></a></GTKDOCLINK> D-Bus method.
-</p>
-<p>
-If a signal handler returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, it means the signal handler will handle the invocation (e.g. take a reference to <em class="parameter"><code>invocation</code></em> and eventually call <code class="function">mm_gdbus_modem_contacts_complete_get_count()</code> or e.g. <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html#g-dbus-method-invocation-return-error"><code class="function">g_dbus_method_invocation_return_error()</code></a> on it) and no order signal handlers will run. If no signal handler handles the invocation, the <a href="http://library.gnome.org/devel/gio/unstable/gio-GDBusError.html#G-DBUS-ERROR-UNKNOWN-METHOD:CAPS"><code class="literal">G_DBUS_ERROR_UNKNOWN_METHOD</code></a> error is returned.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>invocation</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the invocation was handled, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to let other signal handlers run.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MmGdbusModemContacts-handle-list"></a><h3>The <code class="literal">"handle-list"</code> signal</h3>
-<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *object,
- <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a> *invocation,
- <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
-<p>
-Signal emitted when a remote caller is invoking the <a href="/usr/share/gtk-doc/html/ModemManager/gdbus-org.freedesktop.ModemManager1.Modem.Contacts.html#gdbus-method-org-freedesktop-ModemManager1-Modem-Contacts.List"><GTKDOCLINK HREF="List"><code class="function">List()</code></a></GTKDOCLINK> D-Bus method.
-</p>
-<p>
-If a signal handler returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, it means the signal handler will handle the invocation (e.g. take a reference to <em class="parameter"><code>invocation</code></em> and eventually call <code class="function">mm_gdbus_modem_contacts_complete_list()</code> or e.g. <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html#g-dbus-method-invocation-return-error"><code class="function">g_dbus_method_invocation_return_error()</code></a> on it) and no order signal handlers will run. If no signal handler handles the invocation, the <a href="http://library.gnome.org/devel/gio/unstable/gio-GDBusError.html#G-DBUS-ERROR-UNKNOWN-METHOD:CAPS"><code class="literal">G_DBUS_ERROR_UNKNOWN_METHOD</code></a> error is returned.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>invocation</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusMethodInvocation.html"><span class="type">GDBusMethodInvocation</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>user data set when the signal handler was connected.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>
-<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the invocation was handled, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to let other signal handlers run.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.18.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/reference/libmm-glib/html/MmGdbusModemContactsProxy.html b/docs/reference/libmm-glib/html/MmGdbusModemContactsProxy.html
deleted file mode 100644
index ea0813a..0000000
--- a/docs/reference/libmm-glib/html/MmGdbusModemContactsProxy.html
+++ /dev/null
@@ -1,418 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>MmGdbusModemContactsProxy</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="libmm-glib Reference Manual">
-<link rel="up" href="pt02.html" title="Part II. Low level API">
-<link rel="prev" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">
-<link rel="next" href="MmGdbusModemContactsSkeleton.html" title="MmGdbusModemContactsSkeleton">
-<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="MmGdbusModemContacts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">libmm-glib Reference Manual</th>
-<td><a accesskey="n" href="MmGdbusModemContactsSkeleton.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#MmGdbusModemContactsProxy.synopsis" class="shortcut">Top</a>
-  | 
- <a href="#MmGdbusModemContactsProxy.description" class="shortcut">Description</a>
-  | 
- <a href="#MmGdbusModemContactsProxy.object-hierarchy" class="shortcut">Object Hierarchy</a>
-  | 
- <a href="#MmGdbusModemContactsProxy.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
-</td></tr>
-</table>
-<div class="refentry">
-<a name="MmGdbusModemContactsProxy"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="MmGdbusModemContactsProxy.top_of_page"></a>MmGdbusModemContactsProxy</span></h2>
-<p>MmGdbusModemContactsProxy</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv">
-<a name="MmGdbusModemContactsProxy.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">struct <a class="link" href="MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy-struct" title="struct MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>;
-
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new" title="mm_gdbus_modem_contacts_proxy_new ()">mm_gdbus_modem_contacts_proxy_new</a> (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html"><span class="type">GDBusConnection</span></a> *connection</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> flags</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-finish" title="mm_gdbus_modem_contacts_proxy_new_finish ()">mm_gdbus_modem_contacts_proxy_new_finish</a>
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus" title="mm_gdbus_modem_contacts_proxy_new_for_bus ()">mm_gdbus_modem_contacts_proxy_new_for_bus</a>
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html#GBusType"><span class="type">GBusType</span></a> bus_type</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> flags</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
-<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-finish" title="mm_gdbus_modem_contacts_proxy_new_for_bus_finish ()">mm_gdbus_modem_contacts_proxy_new_for_bus_finish</a>
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-sync" title="mm_gdbus_modem_contacts_proxy_new_for_bus_sync ()">mm_gdbus_modem_contacts_proxy_new_for_bus_sync</a>
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html#GBusType"><span class="type">GBusType</span></a> bus_type</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> flags</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-sync" title="mm_gdbus_modem_contacts_proxy_new_sync ()">mm_gdbus_modem_contacts_proxy_new_sync</a>
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html"><span class="type">GDBusConnection</span></a> *connection</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> flags</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
-</pre>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContactsProxy.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="synopsis">
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
- +----<a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html">GDBusProxy</a>
- +----MmGdbusModemContactsProxy
-</pre>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContactsProxy.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
-<p>
-MmGdbusModemContactsProxy implements
- <a href="http://library.gnome.org/devel/gio/unstable/GDBusInterface.html">GDBusInterface</a>, <a href="http://library.gnome.org/devel/gio/unstable/GInitable.html">GInitable</a>, <a href="http://library.gnome.org/devel/gio/unstable/GAsyncInitable.html">GAsyncInitable</a> and <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>.</p>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContactsProxy.description"></a><h2>Description</h2>
-<p>
-</p>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContactsProxy.details"></a><h2>Details</h2>
-<div class="refsect2">
-<a name="MmGdbusModemContactsProxy-struct"></a><h3>struct MmGdbusModemContactsProxy</h3>
-<pre class="programlisting">struct MmGdbusModemContactsProxy;</pre>
-<p>
-The <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy"><span class="type">MmGdbusModemContactsProxy</span></a> structure contains only private data and should only be accessed using the provided API.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-proxy-new"></a><h3>mm_gdbus_modem_contacts_proxy_new ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_modem_contacts_proxy_new (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html"><span class="type">GDBusConnection</span></a> *connection</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> flags</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>
-Asynchronously creates a proxy for the D-Bus interface org.freedesktop.ModemManager1.Modem.Contacts. See <a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#g-dbus-proxy-new"><code class="function">g_dbus_proxy_new()</code></a> for more details.
-</p>
-<p>
-When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked in the <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a> of the thread you are calling this method from.
-You can then call <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-finish" title="mm_gdbus_modem_contacts_proxy_new_finish ()"><code class="function">mm_gdbus_modem_contacts_proxy_new_finish()</code></a> to get the result of the operation.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-sync" title="mm_gdbus_modem_contacts_proxy_new_sync ()"><code class="function">mm_gdbus_modem_contacts_proxy_new_sync()</code></a> for the synchronous, blocking version of this constructor.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html"><span class="type">GDBusConnection</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
-<td>Flags from the <a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> enumeration.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
-<td>A bus name (well-known or unique) or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>connection</code></em> is not a message bus connection. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
-<td>An object path.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-proxy-new-finish"></a><h3>mm_gdbus_modem_contacts_proxy_new_finish ()</h3>
-<pre class="programlisting"><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * mm_gdbus_modem_contacts_proxy_new_finish
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Finishes an operation started with <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new" title="mm_gdbus_modem_contacts_proxy_new ()"><code class="function">mm_gdbus_modem_contacts_proxy_new()</code></a>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
-<td>The <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> obtained from the <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new" title="mm_gdbus_modem_contacts_proxy_new ()"><code class="function">mm_gdbus_modem_contacts_proxy_new()</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>The constructed proxy object or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Override the parsed C type with given type."><span class="acronym">type</span></acronym> MmGdbusModemContactsProxy]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-proxy-new-for-bus"></a><h3>mm_gdbus_modem_contacts_proxy_new_for_bus ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_modem_contacts_proxy_new_for_bus
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html#GBusType"><span class="type">GBusType</span></a> bus_type</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> flags</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>
-Like <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new" title="mm_gdbus_modem_contacts_proxy_new ()"><code class="function">mm_gdbus_modem_contacts_proxy_new()</code></a> but takes a <a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html#GBusType"><span class="type">GBusType</span></a> instead of a <a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html"><span class="type">GDBusConnection</span></a>.
-</p>
-<p>
-When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked in the <a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a> of the thread you are calling this method from.
-You can then call <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-finish" title="mm_gdbus_modem_contacts_proxy_new_for_bus_finish ()"><code class="function">mm_gdbus_modem_contacts_proxy_new_for_bus_finish()</code></a> to get the result of the operation.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-sync" title="mm_gdbus_modem_contacts_proxy_new_for_bus_sync ()"><code class="function">mm_gdbus_modem_contacts_proxy_new_for_bus_sync()</code></a> for the synchronous, blocking version of this constructor.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>bus_type</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html#GBusType"><span class="type">GBusType</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
-<td>Flags from the <a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> enumeration.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
-<td>A bus name (well-known or unique).</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
-<td>An object path.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
-<td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-proxy-new-for-bus-finish"></a><h3>mm_gdbus_modem_contacts_proxy_new_for_bus_finish ()</h3>
-<pre class="programlisting"><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * mm_gdbus_modem_contacts_proxy_new_for_bus_finish
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> *res</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Finishes an operation started with <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus" title="mm_gdbus_modem_contacts_proxy_new_for_bus ()"><code class="function">mm_gdbus_modem_contacts_proxy_new_for_bus()</code></a>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
-<td>The <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html"><span class="type">GAsyncResult</span></a> obtained from the <a href="http://library.gnome.org/devel/gio/unstable/GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus" title="mm_gdbus_modem_contacts_proxy_new_for_bus ()"><code class="function">mm_gdbus_modem_contacts_proxy_new_for_bus()</code></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>The constructed proxy object or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Override the parsed C type with given type."><span class="acronym">type</span></acronym> MmGdbusModemContactsProxy]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-proxy-new-for-bus-sync"></a><h3>mm_gdbus_modem_contacts_proxy_new_for_bus_sync ()</h3>
-<pre class="programlisting"><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * mm_gdbus_modem_contacts_proxy_new_for_bus_sync
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html#GBusType"><span class="type">GBusType</span></a> bus_type</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> flags</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Like <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-sync" title="mm_gdbus_modem_contacts_proxy_new_sync ()"><code class="function">mm_gdbus_modem_contacts_proxy_new_sync()</code></a> but takes a <a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html#GBusType"><span class="type">GBusType</span></a> instead of a <a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html"><span class="type">GDBusConnection</span></a>.
-</p>
-<p>
-The calling thread is blocked until a reply is received.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus" title="mm_gdbus_modem_contacts_proxy_new_for_bus ()"><code class="function">mm_gdbus_modem_contacts_proxy_new_for_bus()</code></a> for the asynchronous version of this constructor.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>bus_type</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html#GBusType"><span class="type">GBusType</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
-<td>Flags from the <a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> enumeration.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
-<td>A bus name (well-known or unique).</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
-<td>An object path.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>The constructed proxy object or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Override the parsed C type with given type."><span class="acronym">type</span></acronym> MmGdbusModemContactsProxy]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-proxy-new-sync"></a><h3>mm_gdbus_modem_contacts_proxy_new_sync ()</h3>
-<pre class="programlisting"><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * mm_gdbus_modem_contacts_proxy_new_sync
- (<em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html"><span class="type">GDBusConnection</span></a> *connection</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> flags</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>,
- <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> *cancellable</code></em>,
- <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>
-Synchronously creates a proxy for the D-Bus interface org.freedesktop.ModemManager1.Modem.Contacts. See <a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#g-dbus-proxy-new-sync"><code class="function">g_dbus_proxy_new_sync()</code></a> for more details.
-</p>
-<p>
-The calling thread is blocked until a reply is received.
-</p>
-<p>
-See <a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new" title="mm_gdbus_modem_contacts_proxy_new ()"><code class="function">mm_gdbus_modem_contacts_proxy_new()</code></a> for the asynchronous version of this constructor.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GDBusConnection.html"><span class="type">GDBusConnection</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
-<td>Flags from the <a href="http://library.gnome.org/devel/gio/unstable/GDBusProxy.html#GDBusProxyFlags"><span class="type">GDBusProxyFlags</span></a> enumeration.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
-<td>A bus name (well-known or unique) or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>connection</code></em> is not a message bus connection. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
-<td>An object path.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
-<td>A <a href="http://library.gnome.org/devel/gio/unstable/GCancellable.html"><span class="type">GCancellable</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
-<td>Return location for error or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>The constructed proxy object or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Override the parsed C type with given type."><span class="acronym">type</span></acronym> MmGdbusModemContactsProxy]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.18.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/reference/libmm-glib/html/MmGdbusModemContactsSkeleton.html b/docs/reference/libmm-glib/html/MmGdbusModemContactsSkeleton.html
deleted file mode 100644
index 046bfb3..0000000
--- a/docs/reference/libmm-glib/html/MmGdbusModemContactsSkeleton.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>MmGdbusModemContactsSkeleton</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="libmm-glib Reference Manual">
-<link rel="up" href="pt02.html" title="Part II. Low level API">
-<link rel="prev" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">
-<link rel="next" href="MmGdbusModemSimple.html" title="MmGdbusModemSimple">
-<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-<tr valign="middle">
-<td><a accesskey="p" href="MmGdbusModemContactsProxy.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">libmm-glib Reference Manual</th>
-<td><a accesskey="n" href="MmGdbusModemSimple.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-</tr>
-<tr><td colspan="5" class="shortcuts">
-<a href="#MmGdbusModemContactsSkeleton.synopsis" class="shortcut">Top</a>
-  | 
- <a href="#MmGdbusModemContactsSkeleton.description" class="shortcut">Description</a>
-  | 
- <a href="#MmGdbusModemContactsSkeleton.object-hierarchy" class="shortcut">Object Hierarchy</a>
-  | 
- <a href="#MmGdbusModemContactsSkeleton.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
-</td></tr>
-</table>
-<div class="refentry">
-<a name="MmGdbusModemContactsSkeleton"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="MmGdbusModemContactsSkeleton.top_of_page"></a>MmGdbusModemContactsSkeleton</span></h2>
-<p>MmGdbusModemContactsSkeleton</p>
-</td>
-<td valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsynopsisdiv">
-<a name="MmGdbusModemContactsSkeleton.synopsis"></a><h2>Synopsis</h2>
-<pre class="synopsis">struct <a class="link" href="MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton-struct" title="struct MmGdbusModemContactsSkeleton">MmGdbusModemContactsSkeleton</a>;
-
-<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * <a class="link" href="MmGdbusModemContactsSkeleton.html#mm-gdbus-modem-contacts-skeleton-new" title="mm_gdbus_modem_contacts_skeleton_new ()">mm_gdbus_modem_contacts_skeleton_new</a>
- (<em class="parameter"><code><span class="type">void</span></code></em>);
-</pre>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContactsSkeleton.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="synopsis">
- <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
- +----<a href="http://library.gnome.org/devel/gio/unstable/GDBusInterfaceSkeleton.html">GDBusInterfaceSkeleton</a>
- +----MmGdbusModemContactsSkeleton
-</pre>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContactsSkeleton.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
-<p>
-MmGdbusModemContactsSkeleton implements
- <a href="http://library.gnome.org/devel/gio/unstable/GDBusInterface.html">GDBusInterface</a> and <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>.</p>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContactsSkeleton.description"></a><h2>Description</h2>
-<p>
-</p>
-</div>
-<div class="refsect1">
-<a name="MmGdbusModemContactsSkeleton.details"></a><h2>Details</h2>
-<div class="refsect2">
-<a name="MmGdbusModemContactsSkeleton-struct"></a><h3>struct MmGdbusModemContactsSkeleton</h3>
-<pre class="programlisting">struct MmGdbusModemContactsSkeleton;</pre>
-<p>
-The <a class="link" href="MmGdbusModemContactsSkeleton.html" title="MmGdbusModemContactsSkeleton"><span class="type">MmGdbusModemContactsSkeleton</span></a> structure contains only private data and should only be accessed using the provided API.
-</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-modem-contacts-skeleton-new"></a><h3>mm_gdbus_modem_contacts_skeleton_new ()</h3>
-<pre class="programlisting"><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * mm_gdbus_modem_contacts_skeleton_new
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>
-Creates a skeleton object for the D-Bus interface org.freedesktop.ModemManager1.Modem.Contacts.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody><tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>The skeleton object. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Override the parsed C type with given type."><span class="acronym">type</span></acronym> MmGdbusModemContactsSkeleton]</span>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>
- Generated by GTK-Doc V1.18.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html b/docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html
index c1213f9..5e6f18c 100644
--- a/docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html
+++ b/docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
<link rel="up" href="pt02.html" title="Part II. Low level API">
<link rel="prev" href="MmGdbusModemFirmwareProxy.html" title="MmGdbusModemFirmwareProxy">
-<link rel="next" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">
+<link rel="next" href="MmGdbusModemSimple.html" title="MmGdbusModemSimple">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -18,7 +18,7 @@
<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
-<td><a accesskey="n" href="MmGdbusModemContacts.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="MmGdbusModemSimple.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#MmGdbusModemFirmwareSkeleton.synopsis" class="shortcut">Top</a>
diff --git a/docs/reference/libmm-glib/html/MmGdbusModemSimple.html b/docs/reference/libmm-glib/html/MmGdbusModemSimple.html
index 2456260..52a5c09 100644
--- a/docs/reference/libmm-glib/html/MmGdbusModemSimple.html
+++ b/docs/reference/libmm-glib/html/MmGdbusModemSimple.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
<link rel="up" href="pt02.html" title="Part II. Low level API">
-<link rel="prev" href="MmGdbusModemContactsSkeleton.html" title="MmGdbusModemContactsSkeleton">
+<link rel="prev" href="MmGdbusModemFirmwareSkeleton.html" title="MmGdbusModemFirmwareSkeleton">
<link rel="next" href="MmGdbusModemSimpleProxy.html" title="MmGdbusModemSimpleProxy">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
@@ -14,7 +14,7 @@
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
-<td><a accesskey="p" href="MmGdbusModemContactsSkeleton.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="MmGdbusModemFirmwareSkeleton.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="pt02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
diff --git a/docs/reference/libmm-glib/html/MmGdbusObject.html b/docs/reference/libmm-glib/html/MmGdbusObject.html
index 5403bf8..3511415 100644
--- a/docs/reference/libmm-glib/html/MmGdbusObject.html
+++ b/docs/reference/libmm-glib/html/MmGdbusObject.html
@@ -72,10 +72,6 @@ struct <a class="link" href="MmGdbusObject.html#MmGdbusObjectIface"
(<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);
<a class="link" href="MmGdbusModemFirmware.html" title="MmGdbusModemFirmware"><span class="returnvalue">MmGdbusModemFirmware</span></a> * <a class="link" href="MmGdbusObject.html#mm-gdbus-object-get-modem-firmware" title="mm_gdbus_object_get_modem_firmware ()">mm_gdbus_object_get_modem_firmware</a>
(<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);
-<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * <a class="link" href="MmGdbusObject.html#mm-gdbus-object-peek-modem-contacts" title="mm_gdbus_object_peek_modem_contacts ()">mm_gdbus_object_peek_modem_contacts</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);
-<a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * <a class="link" href="MmGdbusObject.html#mm-gdbus-object-get-modem-contacts" title="mm_gdbus_object_get_modem_contacts ()">mm_gdbus_object_get_modem_contacts</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);
<a class="link" href="MmGdbusModemSimple.html" title="MmGdbusModemSimple"><span class="returnvalue">MmGdbusModemSimple</span></a> * <a class="link" href="MmGdbusObject.html#mm-gdbus-object-peek-modem-simple" title="mm_gdbus_object_peek_modem_simple ()">mm_gdbus_object_peek_modem_simple</a> (<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);
<a class="link" href="MmGdbusModemSimple.html" title="MmGdbusModemSimple"><span class="returnvalue">MmGdbusModemSimple</span></a> * <a class="link" href="MmGdbusObject.html#mm-gdbus-object-get-modem-simple" title="mm_gdbus_object_get_modem_simple ()">mm_gdbus_object_get_modem_simple</a> (<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);
</pre>
@@ -104,7 +100,6 @@ MmGdbusObject is implemented by
<pre class="synopsis">
"<a class="link" href="MmGdbusObject.html#MmGdbusObject--modem" title='The "modem" property'>modem</a>" <a class="link" href="MmGdbusModem.html" title="MmGdbusModem"><span class="type">MmGdbusModem</span></a>* : Read / Write
"<a class="link" href="MmGdbusObject.html#MmGdbusObject--modem-cdma" title='The "modem-cdma" property'>modem-cdma</a>" <a class="link" href="MmGdbusModemCdma.html" title="MmGdbusModemCdma"><span class="type">MmGdbusModemCdma</span></a>* : Read / Write
- "<a class="link" href="MmGdbusObject.html#MmGdbusObject--modem-contacts" title='The "modem-contacts" property'>modem-contacts</a>" <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>* : Read / Write
"<a class="link" href="MmGdbusObject.html#MmGdbusObject--modem-firmware" title='The "modem-firmware" property'>modem-firmware</a>" <a class="link" href="MmGdbusModemFirmware.html" title="MmGdbusModemFirmware"><span class="type">MmGdbusModemFirmware</span></a>* : Read / Write
"<a class="link" href="MmGdbusObject.html#MmGdbusObject--modem-location" title='The "modem-location" property'>modem-location</a>" <a class="link" href="MmGdbusModemLocation.html" title="MmGdbusModemLocation"><span class="type">MmGdbusModemLocation</span></a>* : Read / Write
"<a class="link" href="MmGdbusObject.html#MmGdbusObject--modem-messaging" title='The "modem-messaging" property'>modem-messaging</a>" <a class="link" href="MmGdbusModemMessaging.html" title="MmGdbusModemMessaging"><span class="type">MmGdbusModemMessaging</span></a>* : Read / Write
@@ -608,64 +603,6 @@ Gets the <a class="link" href="MmGdbusModemFirmware.html" title="MmGdbusModemFir
</div>
<hr>
<div class="refsect2">
-<a name="mm-gdbus-object-peek-modem-contacts"></a><h3>mm_gdbus_object_peek_modem_contacts ()</h3>
-<pre class="programlisting"><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * mm_gdbus_object_peek_modem_contacts
- (<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);</pre>
-<p>
-Like <a class="link" href="MmGdbusObject.html#mm-gdbus-object-get-modem-contacts" title="mm_gdbus_object_get_modem_contacts ()"><code class="function">mm_gdbus_object_get_modem_contacts()</code></a> but doesn't increase the reference count on the returned object.
-</p>
-<p>
-</p>
-<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Warning</h3>It is not safe to use the returned object if you are on another thread than the one where the <a href="http://library.gnome.org/devel/gio/unstable/GDBusObjectManagerClient.html"><span class="type">GDBusObjectManagerClient</span></a> or <a href="http://library.gnome.org/devel/gio/unstable/GDBusObjectManagerServer.html"><span class="type">GDBusObjectManagerServer</span></a> for <em class="parameter"><code>object</code></em> is running.</div>
-<p>
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>object</code></em> does not implement the interface. Do not free the returned object, it is owned by <em class="parameter"><code>object</code></em>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="mm-gdbus-object-get-modem-contacts"></a><h3>mm_gdbus_object_get_modem_contacts ()</h3>
-<pre class="programlisting"><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="returnvalue">MmGdbusModemContacts</span></a> * mm_gdbus_object_get_modem_contacts
- (<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);</pre>
-<p>
-Gets the <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Contacts on <em class="parameter"><code>object</code></em>, if any.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> that must be freed with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>object</code></em> does not implement the interface. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
<a name="mm-gdbus-object-peek-modem-simple"></a><h3>mm_gdbus_object_peek_modem_simple ()</h3>
<pre class="programlisting"><a class="link" href="MmGdbusModemSimple.html" title="MmGdbusModemSimple"><span class="returnvalue">MmGdbusModemSimple</span></a> * mm_gdbus_object_peek_modem_simple (<em class="parameter"><code><a class="link" href="MmGdbusObject.html" title="MmGdbusObject"><span class="type">MmGdbusObject</span></a> *object</code></em>);</pre>
<p>
@@ -746,17 +683,6 @@ Connect to the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-
</div>
<hr>
<div class="refsect2">
-<a name="MmGdbusObject--modem-contacts"></a><h3>The <code class="literal">"modem-contacts"</code> property</h3>
-<pre class="programlisting"> "modem-contacts" <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a>* : Read / Write</pre>
-<p>
-The <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> instance corresponding to the D-Bus interface org.freedesktop.ModemManager1.Modem.Contacts, if any.
-</p>
-<p>
-Connect to the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject-notify"><span class="type">"notify"</span></a> signal to get informed of property changes.
-</p>
-</div>
-<hr>
-<div class="refsect2">
<a name="MmGdbusObject--modem-firmware"></a><h3>The <code class="literal">"modem-firmware"</code> property</h3>
<pre class="programlisting"> "modem-firmware" <a class="link" href="MmGdbusModemFirmware.html" title="MmGdbusModemFirmware"><span class="type">MmGdbusModemFirmware</span></a>* : Read / Write</pre>
<p>
diff --git a/docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html b/docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html
index 86aa076..8097235 100644
--- a/docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html
+++ b/docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html
@@ -56,9 +56,6 @@
<span class="returnvalue">void</span> <a class="link" href="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-cdma" title="mm_gdbus_object_skeleton_set_modem_cdma ()">mm_gdbus_object_skeleton_set_modem_cdma</a>
(<em class="parameter"><code><a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton"><span class="type">MmGdbusObjectSkeleton</span></a> *object</code></em>,
<em class="parameter"><code><a class="link" href="MmGdbusModemCdma.html" title="MmGdbusModemCdma"><span class="type">MmGdbusModemCdma</span></a> *interface_</code></em>);
-<span class="returnvalue">void</span> <a class="link" href="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-contacts" title="mm_gdbus_object_skeleton_set_modem_contacts ()">mm_gdbus_object_skeleton_set_modem_contacts</a>
- (<em class="parameter"><code><a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton"><span class="type">MmGdbusObjectSkeleton</span></a> *object</code></em>,
- <em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *interface_</code></em>);
<span class="returnvalue">void</span> <a class="link" href="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-firmware" title="mm_gdbus_object_skeleton_set_modem_firmware ()">mm_gdbus_object_skeleton_set_modem_firmware</a>
(<em class="parameter"><code><a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton"><span class="type">MmGdbusObjectSkeleton</span></a> *object</code></em>,
<em class="parameter"><code><a class="link" href="MmGdbusModemFirmware.html" title="MmGdbusModemFirmware"><span class="type">MmGdbusModemFirmware</span></a> *interface_</code></em>);
@@ -238,33 +235,6 @@ Sets the <a class="link" href="MmGdbusModemCdma.html" title="MmGdbusModemCdma"><
</div>
<hr>
<div class="refsect2">
-<a name="mm-gdbus-object-skeleton-set-modem-contacts"></a><h3>mm_gdbus_object_skeleton_set_modem_contacts ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_object_skeleton_set_modem_contacts
- (<em class="parameter"><code><a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton"><span class="type">MmGdbusObjectSkeleton</span></a> *object</code></em>,
- <em class="parameter"><code><a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> *interface_</code></em>);</pre>
-<p>
-Sets the <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Contacts on <em class="parameter"><code>object</code></em>.
-</p>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>object</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton"><span class="type">MmGdbusObjectSkeleton</span></a>.</td>
-</tr>
-<tr>
-<td><p><span class="term"><em class="parameter"><code>interface_</code></em> :</span></p></td>
-<td>A <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts"><span class="type">MmGdbusModemContacts</span></a> or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to clear the interface. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
<a name="mm-gdbus-object-skeleton-set-modem-firmware"></a><h3>mm_gdbus_object_skeleton_set_modem_firmware ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> mm_gdbus_object_skeleton_set_modem_firmware
(<em class="parameter"><code><a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton"><span class="type">MmGdbusObjectSkeleton</span></a> *object</code></em>,
diff --git a/docs/reference/libmm-glib/html/api-index-full.html b/docs/reference/libmm-glib/html/api-index-full.html
index 2acde2c..dc54521 100644
--- a/docs/reference/libmm-glib/html/api-index-full.html
+++ b/docs/reference/libmm-glib/html/api-index-full.html
@@ -515,6 +515,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="MmGdbusModem.html#MmGdbusModem--ports" title='The "ports" property'>MmGdbusModem:ports</a>, object property in <a class="link" href="MmGdbusModem.html" title="MmGdbusModem">MmGdbusModem</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="MmGdbusModem.html#MmGdbusModem--power-state" title='The "power-state" property'>MmGdbusModem:power-state</a>, object property in <a class="link" href="MmGdbusModem.html" title="MmGdbusModem">MmGdbusModem</a>
</dt>
<dd></dd>
@@ -623,54 +627,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-struct" title="MmGdbusModemContacts">MmGdbusModemContacts</a>, struct in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-added" title='The "added" signal'>MmGdbusModemContacts::added</a>, object signal in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-deleted" title='The "deleted" signal'>MmGdbusModemContacts::deleted</a>, object signal in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-add" title='The "handle-add" signal'>MmGdbusModemContacts::handle-add</a>, object signal in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-delete" title='The "handle-delete" signal'>MmGdbusModemContacts::handle-delete</a>, object signal in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-find" title='The "handle-find" signal'>MmGdbusModemContacts::handle-find</a>, object signal in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get" title='The "handle-get" signal'>MmGdbusModemContacts::handle-get</a>, object signal in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get-count" title='The "handle-get-count" signal'>MmGdbusModemContacts::handle-get-count</a>, object signal in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-list" title='The "handle-list" signal'>MmGdbusModemContacts::handle-list</a>, object signal in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#MmGdbusModemContactsIface" title="struct MmGdbusModemContactsIface">MmGdbusModemContactsIface</a>, struct in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy-struct" title="struct MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>, struct in <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton-struct" title="struct MmGdbusModemContactsSkeleton">MmGdbusModemContactsSkeleton</a>, struct in <a class="link" href="MmGdbusModemContactsSkeleton.html" title="MmGdbusModemContactsSkeleton">MmGdbusModemContactsSkeleton</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="MmGdbusModemFirmware.html#MmGdbusModemFirmware-struct" title="MmGdbusModemFirmware">MmGdbusModemFirmware</a>, struct in <a class="link" href="MmGdbusModemFirmware.html" title="MmGdbusModemFirmware">MmGdbusModemFirmware</a>
</dt>
<dd></dd>
@@ -859,10 +815,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="MmGdbusObject.html#MmGdbusObject--modem-contacts" title='The "modem-contacts" property'>MmGdbusObject:modem-contacts</a>, object property in <a class="link" href="MmGdbusObject.html" title="MmGdbusObject">MmGdbusObject</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="MmGdbusObject.html#MmGdbusObject--modem-firmware" title='The "modem-firmware" property'>MmGdbusObject:modem-firmware</a>, object property in <a class="link" href="MmGdbusObject.html" title="MmGdbusObject">MmGdbusObject</a>
</dt>
<dd></dd>
@@ -1543,106 +1495,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add" title="mm_gdbus_modem_contacts_call_add ()">mm_gdbus_modem_contacts_call_add</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-finish" title="mm_gdbus_modem_contacts_call_add_finish ()">mm_gdbus_modem_contacts_call_add_finish</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-sync" title="mm_gdbus_modem_contacts_call_add_sync ()">mm_gdbus_modem_contacts_call_add_sync</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete" title="mm_gdbus_modem_contacts_call_delete ()">mm_gdbus_modem_contacts_call_delete</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-finish" title="mm_gdbus_modem_contacts_call_delete_finish ()">mm_gdbus_modem_contacts_call_delete_finish</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-sync" title="mm_gdbus_modem_contacts_call_delete_sync ()">mm_gdbus_modem_contacts_call_delete_sync</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find" title="mm_gdbus_modem_contacts_call_find ()">mm_gdbus_modem_contacts_call_find</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-finish" title="mm_gdbus_modem_contacts_call_find_finish ()">mm_gdbus_modem_contacts_call_find_finish</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-sync" title="mm_gdbus_modem_contacts_call_find_sync ()">mm_gdbus_modem_contacts_call_find_sync</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get" title="mm_gdbus_modem_contacts_call_get ()">mm_gdbus_modem_contacts_call_get</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count" title="mm_gdbus_modem_contacts_call_get_count ()">mm_gdbus_modem_contacts_call_get_count</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-finish" title="mm_gdbus_modem_contacts_call_get_count_finish ()">mm_gdbus_modem_contacts_call_get_count_finish</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-sync" title="mm_gdbus_modem_contacts_call_get_count_sync ()">mm_gdbus_modem_contacts_call_get_count_sync</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-finish" title="mm_gdbus_modem_contacts_call_get_finish ()">mm_gdbus_modem_contacts_call_get_finish</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-sync" title="mm_gdbus_modem_contacts_call_get_sync ()">mm_gdbus_modem_contacts_call_get_sync</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list" title="mm_gdbus_modem_contacts_call_list ()">mm_gdbus_modem_contacts_call_list</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-finish" title="mm_gdbus_modem_contacts_call_list_finish ()">mm_gdbus_modem_contacts_call_list_finish</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-sync" title="mm_gdbus_modem_contacts_call_list_sync ()">mm_gdbus_modem_contacts_call_list_sync</a>, function in <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new" title="mm_gdbus_modem_contacts_proxy_new ()">mm_gdbus_modem_contacts_proxy_new</a>, function in <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-finish" title="mm_gdbus_modem_contacts_proxy_new_finish ()">mm_gdbus_modem_contacts_proxy_new_finish</a>, function in <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus" title="mm_gdbus_modem_contacts_proxy_new_for_bus ()">mm_gdbus_modem_contacts_proxy_new_for_bus</a>, function in <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-finish" title="mm_gdbus_modem_contacts_proxy_new_for_bus_finish ()">mm_gdbus_modem_contacts_proxy_new_for_bus_finish</a>, function in <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-sync" title="mm_gdbus_modem_contacts_proxy_new_for_bus_sync ()">mm_gdbus_modem_contacts_proxy_new_for_bus_sync</a>, function in <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-sync" title="mm_gdbus_modem_contacts_proxy_new_sync ()">mm_gdbus_modem_contacts_proxy_new_sync</a>, function in <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="MmGdbusModemContactsSkeleton.html#mm-gdbus-modem-contacts-skeleton-new" title="mm_gdbus_modem_contacts_skeleton_new ()">mm_gdbus_modem_contacts_skeleton_new</a>, function in <a class="link" href="MmGdbusModemContactsSkeleton.html" title="MmGdbusModemContactsSkeleton">MmGdbusModemContactsSkeleton</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="MmGdbusModem.html#mm-gdbus-modem-dup-current-bands" title="mm_gdbus_modem_dup_current_bands ()">mm_gdbus_modem_dup_current_bands</a>, function in <a class="link" href="MmGdbusModem.html" title="MmGdbusModem">MmGdbusModem</a>
</dt>
<dd></dd>
@@ -1683,6 +1535,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="MmGdbusModem.html#mm-gdbus-modem-dup-ports" title="mm_gdbus_modem_dup_ports ()">mm_gdbus_modem_dup_ports</a>, function in <a class="link" href="MmGdbusModem.html" title="MmGdbusModem">MmGdbusModem</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="MmGdbusModem.html#mm-gdbus-modem-dup-primary-port" title="mm_gdbus_modem_dup_primary_port ()">mm_gdbus_modem_dup_primary_port</a>, function in <a class="link" href="MmGdbusModem.html" title="MmGdbusModem">MmGdbusModem</a>
</dt>
<dd></dd>
@@ -1823,6 +1679,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="MmGdbusModem.html#mm-gdbus-modem-get-ports" title="mm_gdbus_modem_get_ports ()">mm_gdbus_modem_get_ports</a>, function in <a class="link" href="MmGdbusModem.html" title="MmGdbusModem">MmGdbusModem</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="MmGdbusModem.html#mm-gdbus-modem-get-power-state" title="mm_gdbus_modem_get_power_state ()">mm_gdbus_modem_get_power_state</a>, function in <a class="link" href="MmGdbusModem.html" title="MmGdbusModem">MmGdbusModem</a>
</dt>
<dd></dd>
@@ -2179,10 +2039,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="MmGdbusObject.html#mm-gdbus-object-get-modem-contacts" title="mm_gdbus_object_get_modem_contacts ()">mm_gdbus_object_get_modem_contacts</a>, function in <a class="link" href="MmGdbusObject.html" title="MmGdbusObject">MmGdbusObject</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="MmGdbusObject.html#mm-gdbus-object-get-modem-firmware" title="mm_gdbus_object_get_modem_firmware ()">mm_gdbus_object_get_modem_firmware</a>, function in <a class="link" href="MmGdbusObject.html" title="MmGdbusObject">MmGdbusObject</a>
</dt>
<dd></dd>
@@ -2247,10 +2103,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="MmGdbusObject.html#mm-gdbus-object-peek-modem-contacts" title="mm_gdbus_object_peek_modem_contacts ()">mm_gdbus_object_peek_modem_contacts</a>, function in <a class="link" href="MmGdbusObject.html" title="MmGdbusObject">MmGdbusObject</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="MmGdbusObject.html#mm-gdbus-object-peek-modem-firmware" title="mm_gdbus_object_peek_modem_firmware ()">mm_gdbus_object_peek_modem_firmware</a>, function in <a class="link" href="MmGdbusObject.html" title="MmGdbusObject">MmGdbusObject</a>
</dt>
<dd></dd>
@@ -2295,10 +2147,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-contacts" title="mm_gdbus_object_skeleton_set_modem_contacts ()">mm_gdbus_object_skeleton_set_modem_contacts</a>, function in <a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton">MmGdbusObjectSkeleton</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-firmware" title="mm_gdbus_object_skeleton_set_modem_firmware ()">mm_gdbus_object_skeleton_set_modem_firmware</a>, function in <a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton">MmGdbusObjectSkeleton</a>
</dt>
<dd></dd>
@@ -2620,7 +2468,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs" title="struct MMLocationCdmaBs">MMLocationCdmaBs</a>, struct in <a class="link" href="libmm-glib-MMLocationCdmaBs.html" title="MMLocationCdmaBs">MMLocationCdmaBs</a>
+<a class="link" href="MMLocationCdmaBs.html#MMLocationCdmaBs-struct" title="struct MMLocationCdmaBs">MMLocationCdmaBs</a>, struct in <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs">MMLocationCdmaBs</a>
</dt>
<dd></dd>
<dt>
@@ -2652,11 +2500,11 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="libmm-glib-MMLocationCdmaBs.html#mm-location-cdma-bs-get-latitude" title="mm_location_cdma_bs_get_latitude ()">mm_location_cdma_bs_get_latitude</a>, function in <a class="link" href="libmm-glib-MMLocationCdmaBs.html" title="MMLocationCdmaBs">MMLocationCdmaBs</a>
+<a class="link" href="MMLocationCdmaBs.html#mm-location-cdma-bs-get-latitude" title="mm_location_cdma_bs_get_latitude ()">mm_location_cdma_bs_get_latitude</a>, function in <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs">MMLocationCdmaBs</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="libmm-glib-MMLocationCdmaBs.html#mm-location-cdma-bs-get-longitude" title="mm_location_cdma_bs_get_longitude ()">mm_location_cdma_bs_get_longitude</a>, function in <a class="link" href="libmm-glib-MMLocationCdmaBs.html" title="MMLocationCdmaBs">MMLocationCdmaBs</a>
+<a class="link" href="MMLocationCdmaBs.html#mm-location-cdma-bs-get-longitude" title="mm_location_cdma_bs_get_longitude ()">mm_location_cdma_bs_get_longitude</a>, function in <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs">MMLocationCdmaBs</a>
</dt>
<dd></dd>
<dt>
@@ -2777,6 +2625,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="MMModem.html#MMModemPortInfo" title="MMModemPortInfo">MMModemPortInfo</a>, struct in <a class="link" href="MMModem.html" title="MMModem">MMModem</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="MMModemSimple.html#MMModemSimple-struct" title="struct MMModemSimple">MMModemSimple</a>, struct in <a class="link" href="MMModemSimple.html" title="MMModemSimple">MMModemSimple</a>
</dt>
<dd></dd>
@@ -3257,6 +3109,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="MMModem.html#mm-modem-get-ports" title="mm_modem_get_ports ()">mm_modem_get_ports</a>, function in <a class="link" href="MMModem.html" title="MMModem">MMModem</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="MMModem.html#mm-modem-get-power-state" title="mm_modem_get_power_state ()">mm_modem_get_power_state</a>, function in <a class="link" href="MMModem.html" title="MMModem">MMModem</a>
</dt>
<dd></dd>
@@ -3497,6 +3353,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="MMModem.html#mm-modem-peek-ports" title="mm_modem_peek_ports ()">mm_modem_peek_ports</a>, function in <a class="link" href="MMModem.html" title="MMModem">MMModem</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="MMModem.html#mm-modem-peek-supported-bands" title="mm_modem_peek_supported_bands ()">mm_modem_peek_supported_bands</a>, function in <a class="link" href="MMModem.html" title="MMModem">MMModem</a>
</dt>
<dd></dd>
@@ -3513,6 +3373,14 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="MMModem.html#mm-modem-port-info-array-free" title="mm_modem_port_info_array_free ()">mm_modem_port_info_array_free</a>, function in <a class="link" href="MMModem.html" title="MMModem">MMModem</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="libmm-glib-Flags-and-Enumerations.html#mm-modem-port-type-get-string" title="mm_modem_port_type_get_string ()">mm_modem_port_type_get_string</a>, function in <a class="link" href="libmm-glib-Flags-and-Enumerations.html" title="Flags and Enumerations">Flags and Enumerations</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="libmm-glib-Flags-and-Enumerations.html#mm-modem-power-state-get-string" title="mm_modem_power_state_get_string ()">mm_modem_power_state_get_string</a>, function in <a class="link" href="libmm-glib-Flags-and-Enumerations.html" title="Flags and Enumerations">Flags and Enumerations</a>
</dt>
<dd></dd>
diff --git a/docs/reference/libmm-glib/html/ch01.html b/docs/reference/libmm-glib/html/ch01.html
index 3bdb064..c88d295 100644
--- a/docs/reference/libmm-glib/html/ch01.html
+++ b/docs/reference/libmm-glib/html/ch01.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idm266932779136"></a>Common enums and flags helpers</h2></div></div></div>
+<a name="idm211865672832"></a>Common enums and flags helpers</h2></div></div></div>
<div class="toc"><dl class="toc"><dt>
<span class="refentrytitle"><a href="libmm-glib-Flags-and-Enumerations.html">Flags and Enumerations</a></span><span class="refpurpose"></span>
</dt></dl></div>
diff --git a/docs/reference/libmm-glib/html/ch02.html b/docs/reference/libmm-glib/html/ch02.html
index 3303d8e..6b65478 100644
--- a/docs/reference/libmm-glib/html/ch02.html
+++ b/docs/reference/libmm-glib/html/ch02.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idm266932777696"></a>The Manager object</h2></div></div></div>
+<a name="idm211867092672"></a>The Manager object</h2></div></div></div>
<div class="toc"><dl class="toc"><dt>
<span class="refentrytitle"><a href="MMManager.html">MMManager</a></span><span class="refpurpose"> — The Manager object</span>
</dt></dl></div>
diff --git a/docs/reference/libmm-glib/html/ch03.html b/docs/reference/libmm-glib/html/ch03.html
index ea709d2..219e74a 100644
--- a/docs/reference/libmm-glib/html/ch03.html
+++ b/docs/reference/libmm-glib/html/ch03.html
@@ -21,12 +21,12 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idm266932776368"></a>The Modem object</h2></div></div></div>
+<a name="idm211869299072"></a>The Modem object</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt>
<span class="refentrytitle"><a href="MMObject.html">MMObject</a></span><span class="refpurpose"> — Generic object representing a modem in ModemManager</span>
</dt>
-<dt><span class="section"><a href="ch03.html#idm266932738048">Generic interfaces</a></span></dt>
+<dt><span class="section"><a href="ch03.html#idm211869297872">Generic interfaces</a></span></dt>
<dd><dl>
<dt>
<span class="refentrytitle"><a href="MMModem.html">MMModem</a></span><span class="refpurpose"> — The Modem interface</span>
@@ -71,7 +71,7 @@
<span class="refentrytitle"><a href="MMLocationGpsRaw.html">MMLocationGpsRaw</a></span><span class="refpurpose"> — Helper object to handle generic GPS location information.</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="libmm-glib-MMLocationCdmaBs.html">MMLocationCdmaBs</a></span><span class="refpurpose"> — Helper object to handle CDMA Base Station location information.</span>
+<span class="refentrytitle"><a href="MMLocationCdmaBs.html">MMLocationCdmaBs</a></span><span class="refpurpose"> — Helper object to handle CDMA Base Station location information.</span>
</dt>
</dl></dd>
<dt><span class="section"><a href="ch03s04.html">Messaging support</a></span></dt>
@@ -98,7 +98,7 @@
</dl></dd>
</dl></div>
<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266932738048"></a>Generic interfaces</h2></div></div></div></div>
+<a name="idm211869297872"></a>Generic interfaces</h2></div></div></div></div>
</div>
<div class="footer">
<hr>
diff --git a/docs/reference/libmm-glib/html/ch03s02.html b/docs/reference/libmm-glib/html/ch03s02.html
index edffd58..20561df 100644
--- a/docs/reference/libmm-glib/html/ch03s02.html
+++ b/docs/reference/libmm-glib/html/ch03s02.html
@@ -20,7 +20,7 @@
<td><a accesskey="n" href="MMModemSimple.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266932734576"></a>Simple interface support</h2></div></div></div></div>
+<a name="idm211869339808"></a>Simple interface support</h2></div></div></div></div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.18.1</div>
diff --git a/docs/reference/libmm-glib/html/ch03s03.html b/docs/reference/libmm-glib/html/ch03s03.html
index 22c7dd5..5d8112d 100644
--- a/docs/reference/libmm-glib/html/ch03s03.html
+++ b/docs/reference/libmm-glib/html/ch03s03.html
@@ -20,7 +20,7 @@
<td><a accesskey="n" href="MMModemLocation.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266932732144"></a>Location support</h2></div></div></div></div>
+<a name="idm211869337376"></a>Location support</h2></div></div></div></div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.18.1</div>
diff --git a/docs/reference/libmm-glib/html/ch03s04.html b/docs/reference/libmm-glib/html/ch03s04.html
index 2331145..eb4a32a 100644
--- a/docs/reference/libmm-glib/html/ch03s04.html
+++ b/docs/reference/libmm-glib/html/ch03s04.html
@@ -6,21 +6,21 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="libmm-glib Reference Manual">
<link rel="up" href="ch03.html" title="The Modem object">
-<link rel="prev" href="libmm-glib-MMLocationCdmaBs.html" title="MMLocationCdmaBs">
+<link rel="prev" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs">
<link rel="next" href="MMModemMessaging.html" title="MMModemMessaging">
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libmm-glib-MMLocationCdmaBs.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="MMLocationCdmaBs.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="ch03.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">libmm-glib Reference Manual</th>
<td><a accesskey="n" href="MMModemMessaging.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266932728624"></a>Messaging support</h2></div></div></div></div>
+<a name="idm211869333856"></a>Messaging support</h2></div></div></div></div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.18.1</div>
diff --git a/docs/reference/libmm-glib/html/ch03s05.html b/docs/reference/libmm-glib/html/ch03s05.html
index acfc0f9..60508db 100644
--- a/docs/reference/libmm-glib/html/ch03s05.html
+++ b/docs/reference/libmm-glib/html/ch03s05.html
@@ -20,7 +20,7 @@
<td><a accesskey="n" href="MMModemTime.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266932727280"></a>Time support</h2></div></div></div></div>
+<a name="idm211869332512"></a>Time support</h2></div></div></div></div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.18.1</div>
diff --git a/docs/reference/libmm-glib/html/ch03s06.html b/docs/reference/libmm-glib/html/ch03s06.html
index 7dccee9..5ee9d60 100644
--- a/docs/reference/libmm-glib/html/ch03s06.html
+++ b/docs/reference/libmm-glib/html/ch03s06.html
@@ -20,7 +20,7 @@
<td><a accesskey="n" href="MMModemFirmware.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idm266932725408"></a>Firmware support</h2></div></div></div></div>
+<a name="idm211869330640"></a>Firmware support</h2></div></div></div></div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.18.1</div>
diff --git a/docs/reference/libmm-glib/html/ch04.html b/docs/reference/libmm-glib/html/ch04.html
index 0cef38a..21e6f58 100644
--- a/docs/reference/libmm-glib/html/ch04.html
+++ b/docs/reference/libmm-glib/html/ch04.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idm266932723392"></a>The Bearer object</h2></div></div></div>
+<a name="idm211869328624"></a>The Bearer object</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt>
<span class="refentrytitle"><a href="MMBearer.html">MMBearer</a></span><span class="refpurpose"> — The Bearer interface</span>
diff --git a/docs/reference/libmm-glib/html/ch05.html b/docs/reference/libmm-glib/html/ch05.html
index 59c9a2f..50f87bf 100644
--- a/docs/reference/libmm-glib/html/ch05.html
+++ b/docs/reference/libmm-glib/html/ch05.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idm266932904208"></a>The SIM object</h2></div></div></div>
+<a name="idm211869326208"></a>The SIM object</h2></div></div></div>
<div class="toc"><dl class="toc"><dt>
<span class="refentrytitle"><a href="MMSim.html">MMSim</a></span><span class="refpurpose"> — The SIM interface</span>
</dt></dl></div>
diff --git a/docs/reference/libmm-glib/html/ch06.html b/docs/reference/libmm-glib/html/ch06.html
index 58da029..339f50a 100644
--- a/docs/reference/libmm-glib/html/ch06.html
+++ b/docs/reference/libmm-glib/html/ch06.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idm266932902880"></a>The SMS object</h2></div></div></div>
+<a name="idm211869426752"></a>The SMS object</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt>
<span class="refentrytitle"><a href="MMSms.html">MMSms</a></span><span class="refpurpose"> — The SMS interface</span>
diff --git a/docs/reference/libmm-glib/html/index.html b/docs/reference/libmm-glib/html/index.html
index 6dccd00..4ea4ab0 100644
--- a/docs/reference/libmm-glib/html/index.html
+++ b/docs/reference/libmm-glib/html/index.html
@@ -26,12 +26,12 @@
      </p></div></div>
</div></div></div>
<div><p class="releaseinfo">
- For libmm-glib version 0.7.991
+ For libmm-glib version 1.0.0
</p></div>
<div><p class="copyright">Copyright © 2011, 2012 The ModemManager Authors</p></div>
<div><div class="legalnotice">
-<a name="idm266928875472"></a><p>
+<a name="idm211865287072"></a><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the <em class="citetitle">GNU Free
Documentation License</em>, Version 1.3 or any later
@@ -70,7 +70,7 @@
<dt>
<span class="refentrytitle"><a href="MMObject.html">MMObject</a></span><span class="refpurpose"> — Generic object representing a modem in ModemManager</span>
</dt>
-<dt><span class="section"><a href="ch03.html#idm266932738048">Generic interfaces</a></span></dt>
+<dt><span class="section"><a href="ch03.html#idm211869297872">Generic interfaces</a></span></dt>
<dd><dl>
<dt>
<span class="refentrytitle"><a href="MMModem.html">MMModem</a></span><span class="refpurpose"> — The Modem interface</span>
@@ -115,7 +115,7 @@
<span class="refentrytitle"><a href="MMLocationGpsRaw.html">MMLocationGpsRaw</a></span><span class="refpurpose"> — Helper object to handle generic GPS location information.</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="libmm-glib-MMLocationCdmaBs.html">MMLocationCdmaBs</a></span><span class="refpurpose"> — Helper object to handle CDMA Base Station location information.</span>
+<span class="refentrytitle"><a href="MMLocationCdmaBs.html">MMLocationCdmaBs</a></span><span class="refpurpose"> — Helper object to handle CDMA Base Station location information.</span>
</dt>
</dl></dd>
<dt><span class="section"><a href="ch03s04.html">Messaging support</a></span></dt>
@@ -263,15 +263,6 @@
<span class="refentrytitle"><a href="MmGdbusModemFirmwareSkeleton.html">MmGdbusModemFirmwareSkeleton</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="MmGdbusModemContacts.html">MmGdbusModemContacts</a></span><span class="refpurpose"> — Generated C code for the org.freedesktop.ModemManager1.Modem.Contacts D-Bus interface</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="MmGdbusModemContactsProxy.html">MmGdbusModemContactsProxy</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="MmGdbusModemContactsSkeleton.html">MmGdbusModemContactsSkeleton</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
<span class="refentrytitle"><a href="MmGdbusModemSimple.html">MmGdbusModemSimple</a></span><span class="refpurpose"> — Generated C code for the org.freedesktop.ModemManager1.Modem.Simple D-Bus interface</span>
</dt>
<dt>
diff --git a/docs/reference/libmm-glib/html/index.sgml b/docs/reference/libmm-glib/html/index.sgml
index 3111db8..8832bc3 100644
--- a/docs/reference/libmm-glib/html/index.sgml
+++ b/docs/reference/libmm-glib/html/index.sgml
@@ -14,6 +14,7 @@
<ANCHOR id="mm-modem-access-technology-build-string-from-mask" href="libmm-glib/libmm-glib-Flags-and-Enumerations.html#mm-modem-access-technology-build-string-from-mask">
<ANCHOR id="mm-modem-mode-build-string-from-mask" href="libmm-glib/libmm-glib-Flags-and-Enumerations.html#mm-modem-mode-build-string-from-mask">
<ANCHOR id="mm-modem-band-get-string" href="libmm-glib/libmm-glib-Flags-and-Enumerations.html#mm-modem-band-get-string">
+<ANCHOR id="mm-modem-port-type-get-string" href="libmm-glib/libmm-glib-Flags-and-Enumerations.html#mm-modem-port-type-get-string">
<ANCHOR id="mm-modem-3gpp-registration-state-get-string" href="libmm-glib/libmm-glib-Flags-and-Enumerations.html#mm-modem-3gpp-registration-state-get-string">
<ANCHOR id="mm-modem-3gpp-facility-build-string-from-mask" href="libmm-glib/libmm-glib-Flags-and-Enumerations.html#mm-modem-3gpp-facility-build-string-from-mask">
<ANCHOR id="mm-modem-3gpp-network-availability-get-string" href="libmm-glib/libmm-glib-Flags-and-Enumerations.html#mm-modem-3gpp-network-availability-get-string">
@@ -82,6 +83,7 @@
<ANCHOR id="MMModem.details" href="libmm-glib/MMModem.html#MMModem.details">
<ANCHOR id="MMModem-struct" href="libmm-glib/MMModem.html#MMModem-struct">
<ANCHOR id="MMModemModeCombination" href="libmm-glib/MMModem.html#MMModemModeCombination">
+<ANCHOR id="MMModemPortInfo" href="libmm-glib/MMModem.html#MMModemPortInfo">
<ANCHOR id="mm-modem-get-path" href="libmm-glib/MMModem.html#mm-modem-get-path">
<ANCHOR id="mm-modem-dup-path" href="libmm-glib/MMModem.html#mm-modem-dup-path">
<ANCHOR id="mm-modem-get-state" href="libmm-glib/MMModem.html#mm-modem-get-state">
@@ -102,6 +104,8 @@
<ANCHOR id="mm-modem-dup-plugin" href="libmm-glib/MMModem.html#mm-modem-dup-plugin">
<ANCHOR id="mm-modem-get-primary-port" href="libmm-glib/MMModem.html#mm-modem-get-primary-port">
<ANCHOR id="mm-modem-dup-primary-port" href="libmm-glib/MMModem.html#mm-modem-dup-primary-port">
+<ANCHOR id="mm-modem-peek-ports" href="libmm-glib/MMModem.html#mm-modem-peek-ports">
+<ANCHOR id="mm-modem-get-ports" href="libmm-glib/MMModem.html#mm-modem-get-ports">
<ANCHOR id="mm-modem-get-device" href="libmm-glib/MMModem.html#mm-modem-get-device">
<ANCHOR id="mm-modem-dup-device" href="libmm-glib/MMModem.html#mm-modem-dup-device">
<ANCHOR id="mm-modem-get-equipment-identifier" href="libmm-glib/MMModem.html#mm-modem-get-equipment-identifier">
@@ -166,6 +170,7 @@
<ANCHOR id="mm-modem-command" href="libmm-glib/MMModem.html#mm-modem-command">
<ANCHOR id="mm-modem-command-finish" href="libmm-glib/MMModem.html#mm-modem-command-finish">
<ANCHOR id="mm-modem-command-sync" href="libmm-glib/MMModem.html#mm-modem-command-sync">
+<ANCHOR id="mm-modem-port-info-array-free" href="libmm-glib/MMModem.html#mm-modem-port-info-array-free">
<ANCHOR id="MMModem3gpp" href="libmm-glib/MMModem3gpp.html">
<ANCHOR id="MMModem3gpp.synopsis" href="libmm-glib/MMModem3gpp.html#MMModem3gpp.synopsis">
<ANCHOR id="MMModem3gpp.object-hierarchy" href="libmm-glib/MMModem3gpp.html#MMModem3gpp.object-hierarchy">
@@ -386,13 +391,14 @@
<ANCHOR id="mm-location-gps-raw-get-longitude" href="libmm-glib/MMLocationGpsRaw.html#mm-location-gps-raw-get-longitude">
<ANCHOR id="mm-location-gps-raw-get-latitude" href="libmm-glib/MMLocationGpsRaw.html#mm-location-gps-raw-get-latitude">
<ANCHOR id="mm-location-gps-raw-get-altitude" href="libmm-glib/MMLocationGpsRaw.html#mm-location-gps-raw-get-altitude">
-<ANCHOR id="libmm-glib-MMLocationCdmaBs" href="libmm-glib/libmm-glib-MMLocationCdmaBs.html">
-<ANCHOR id="libmm-glib-MMLocationCdmaBs.synopsis" href="libmm-glib/libmm-glib-MMLocationCdmaBs.html#libmm-glib-MMLocationCdmaBs.synopsis">
-<ANCHOR id="libmm-glib-MMLocationCdmaBs.description" href="libmm-glib/libmm-glib-MMLocationCdmaBs.html#libmm-glib-MMLocationCdmaBs.description">
-<ANCHOR id="libmm-glib-MMLocationCdmaBs.details" href="libmm-glib/libmm-glib-MMLocationCdmaBs.html#libmm-glib-MMLocationCdmaBs.details">
-<ANCHOR id="MMLocationCdmaBs" href="libmm-glib/libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs">
-<ANCHOR id="mm-location-cdma-bs-get-latitude" href="libmm-glib/libmm-glib-MMLocationCdmaBs.html#mm-location-cdma-bs-get-latitude">
-<ANCHOR id="mm-location-cdma-bs-get-longitude" href="libmm-glib/libmm-glib-MMLocationCdmaBs.html#mm-location-cdma-bs-get-longitude">
+<ANCHOR id="MMLocationCdmaBs" href="libmm-glib/MMLocationCdmaBs.html">
+<ANCHOR id="MMLocationCdmaBs.synopsis" href="libmm-glib/MMLocationCdmaBs.html#MMLocationCdmaBs.synopsis">
+<ANCHOR id="MMLocationCdmaBs.object-hierarchy" href="libmm-glib/MMLocationCdmaBs.html#MMLocationCdmaBs.object-hierarchy">
+<ANCHOR id="MMLocationCdmaBs.description" href="libmm-glib/MMLocationCdmaBs.html#MMLocationCdmaBs.description">
+<ANCHOR id="MMLocationCdmaBs.details" href="libmm-glib/MMLocationCdmaBs.html#MMLocationCdmaBs.details">
+<ANCHOR id="MMLocationCdmaBs-struct" href="libmm-glib/MMLocationCdmaBs.html#MMLocationCdmaBs-struct">
+<ANCHOR id="mm-location-cdma-bs-get-latitude" href="libmm-glib/MMLocationCdmaBs.html#mm-location-cdma-bs-get-latitude">
+<ANCHOR id="mm-location-cdma-bs-get-longitude" href="libmm-glib/MMLocationCdmaBs.html#mm-location-cdma-bs-get-longitude">
<ANCHOR id="MMModemMessaging" href="libmm-glib/MMModemMessaging.html">
<ANCHOR id="MMModemMessaging.synopsis" href="libmm-glib/MMModemMessaging.html#MMModemMessaging.synopsis">
<ANCHOR id="MMModemMessaging.object-hierarchy" href="libmm-glib/MMModemMessaging.html#MMModemMessaging.object-hierarchy">
@@ -700,14 +706,11 @@
<ANCHOR id="mm-gdbus-object-get-modem-time" href="libmm-glib/MmGdbusObject.html#mm-gdbus-object-get-modem-time">
<ANCHOR id="mm-gdbus-object-peek-modem-firmware" href="libmm-glib/MmGdbusObject.html#mm-gdbus-object-peek-modem-firmware">
<ANCHOR id="mm-gdbus-object-get-modem-firmware" href="libmm-glib/MmGdbusObject.html#mm-gdbus-object-get-modem-firmware">
-<ANCHOR id="mm-gdbus-object-peek-modem-contacts" href="libmm-glib/MmGdbusObject.html#mm-gdbus-object-peek-modem-contacts">
-<ANCHOR id="mm-gdbus-object-get-modem-contacts" href="libmm-glib/MmGdbusObject.html#mm-gdbus-object-get-modem-contacts">
<ANCHOR id="mm-gdbus-object-peek-modem-simple" href="libmm-glib/MmGdbusObject.html#mm-gdbus-object-peek-modem-simple">
<ANCHOR id="mm-gdbus-object-get-modem-simple" href="libmm-glib/MmGdbusObject.html#mm-gdbus-object-get-modem-simple">
<ANCHOR id="MmGdbusObject.property-details" href="libmm-glib/MmGdbusObject.html#MmGdbusObject.property-details">
<ANCHOR id="MmGdbusObject--modem" href="libmm-glib/MmGdbusObject.html#MmGdbusObject--modem">
<ANCHOR id="MmGdbusObject--modem-cdma" href="libmm-glib/MmGdbusObject.html#MmGdbusObject--modem-cdma">
-<ANCHOR id="MmGdbusObject--modem-contacts" href="libmm-glib/MmGdbusObject.html#MmGdbusObject--modem-contacts">
<ANCHOR id="MmGdbusObject--modem-firmware" href="libmm-glib/MmGdbusObject.html#MmGdbusObject--modem-firmware">
<ANCHOR id="MmGdbusObject--modem-location" href="libmm-glib/MmGdbusObject.html#MmGdbusObject--modem-location">
<ANCHOR id="MmGdbusObject--modem-messaging" href="libmm-glib/MmGdbusObject.html#MmGdbusObject--modem-messaging">
@@ -735,7 +738,6 @@
<ANCHOR id="mm-gdbus-object-skeleton-set-modem3gpp" href="libmm-glib/MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem3gpp">
<ANCHOR id="mm-gdbus-object-skeleton-set-modem3gpp-ussd" href="libmm-glib/MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem3gpp-ussd">
<ANCHOR id="mm-gdbus-object-skeleton-set-modem-cdma" href="libmm-glib/MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-cdma">
-<ANCHOR id="mm-gdbus-object-skeleton-set-modem-contacts" href="libmm-glib/MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-contacts">
<ANCHOR id="mm-gdbus-object-skeleton-set-modem-firmware" href="libmm-glib/MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-firmware">
<ANCHOR id="mm-gdbus-object-skeleton-set-modem-location" href="libmm-glib/MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-location">
<ANCHOR id="mm-gdbus-object-skeleton-set-modem-messaging" href="libmm-glib/MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-messaging">
@@ -779,6 +781,8 @@
<ANCHOR id="mm-gdbus-modem-get-power-state" href="libmm-glib/MmGdbusModem.html#mm-gdbus-modem-get-power-state">
<ANCHOR id="mm-gdbus-modem-get-primary-port" href="libmm-glib/MmGdbusModem.html#mm-gdbus-modem-get-primary-port">
<ANCHOR id="mm-gdbus-modem-dup-primary-port" href="libmm-glib/MmGdbusModem.html#mm-gdbus-modem-dup-primary-port">
+<ANCHOR id="mm-gdbus-modem-get-ports" href="libmm-glib/MmGdbusModem.html#mm-gdbus-modem-get-ports">
+<ANCHOR id="mm-gdbus-modem-dup-ports" href="libmm-glib/MmGdbusModem.html#mm-gdbus-modem-dup-ports">
<ANCHOR id="mm-gdbus-modem-get-revision" href="libmm-glib/MmGdbusModem.html#mm-gdbus-modem-get-revision">
<ANCHOR id="mm-gdbus-modem-dup-revision" href="libmm-glib/MmGdbusModem.html#mm-gdbus-modem-dup-revision">
<ANCHOR id="mm-gdbus-modem-get-signal-quality" href="libmm-glib/MmGdbusModem.html#mm-gdbus-modem-get-signal-quality">
@@ -845,6 +849,7 @@
<ANCHOR id="MmGdbusModem--model" href="libmm-glib/MmGdbusModem.html#MmGdbusModem--model">
<ANCHOR id="MmGdbusModem--own-numbers" href="libmm-glib/MmGdbusModem.html#MmGdbusModem--own-numbers">
<ANCHOR id="MmGdbusModem--plugin" href="libmm-glib/MmGdbusModem.html#MmGdbusModem--plugin">
+<ANCHOR id="MmGdbusModem--ports" href="libmm-glib/MmGdbusModem.html#MmGdbusModem--ports">
<ANCHOR id="MmGdbusModem--power-state" href="libmm-glib/MmGdbusModem.html#MmGdbusModem--power-state">
<ANCHOR id="MmGdbusModem--primary-port" href="libmm-glib/MmGdbusModem.html#MmGdbusModem--primary-port">
<ANCHOR id="MmGdbusModem--revision" href="libmm-glib/MmGdbusModem.html#MmGdbusModem--revision">
@@ -1246,64 +1251,6 @@
<ANCHOR id="MmGdbusModemFirmwareSkeleton.details" href="libmm-glib/MmGdbusModemFirmwareSkeleton.html#MmGdbusModemFirmwareSkeleton.details">
<ANCHOR id="MmGdbusModemFirmwareSkeleton-struct" href="libmm-glib/MmGdbusModemFirmwareSkeleton.html#MmGdbusModemFirmwareSkeleton-struct">
<ANCHOR id="mm-gdbus-modem-firmware-skeleton-new" href="libmm-glib/MmGdbusModemFirmwareSkeleton.html#mm-gdbus-modem-firmware-skeleton-new">
-<ANCHOR id="MmGdbusModemContacts" href="libmm-glib/MmGdbusModemContacts.html">
-<ANCHOR id="MmGdbusModemContacts.synopsis" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts.synopsis">
-<ANCHOR id="MmGdbusModemContacts.object-hierarchy" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts.object-hierarchy">
-<ANCHOR id="MmGdbusModemContacts.prerequisites" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts.prerequisites">
-<ANCHOR id="MmGdbusModemContacts.implementations" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts.implementations">
-<ANCHOR id="MmGdbusModemContacts.signals" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts.signals">
-<ANCHOR id="MmGdbusModemContacts.description" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts.description">
-<ANCHOR id="MmGdbusModemContacts.details" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts.details">
-<ANCHOR id="MmGdbusModemContacts-struct" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-struct">
-<ANCHOR id="MmGdbusModemContactsIface" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContactsIface">
-<ANCHOR id="mm-gdbus-modem-contacts-call-add" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add">
-<ANCHOR id="mm-gdbus-modem-contacts-call-add-finish" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-finish">
-<ANCHOR id="mm-gdbus-modem-contacts-call-add-sync" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-sync">
-<ANCHOR id="mm-gdbus-modem-contacts-call-delete" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete">
-<ANCHOR id="mm-gdbus-modem-contacts-call-delete-finish" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-finish">
-<ANCHOR id="mm-gdbus-modem-contacts-call-delete-sync" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-sync">
-<ANCHOR id="mm-gdbus-modem-contacts-call-find" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find">
-<ANCHOR id="mm-gdbus-modem-contacts-call-find-finish" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-finish">
-<ANCHOR id="mm-gdbus-modem-contacts-call-find-sync" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-sync">
-<ANCHOR id="mm-gdbus-modem-contacts-call-get" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get">
-<ANCHOR id="mm-gdbus-modem-contacts-call-get-finish" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-finish">
-<ANCHOR id="mm-gdbus-modem-contacts-call-get-sync" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-sync">
-<ANCHOR id="mm-gdbus-modem-contacts-call-get-count" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count">
-<ANCHOR id="mm-gdbus-modem-contacts-call-get-count-finish" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-finish">
-<ANCHOR id="mm-gdbus-modem-contacts-call-get-count-sync" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-sync">
-<ANCHOR id="mm-gdbus-modem-contacts-call-list" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list">
-<ANCHOR id="mm-gdbus-modem-contacts-call-list-finish" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-finish">
-<ANCHOR id="mm-gdbus-modem-contacts-call-list-sync" href="libmm-glib/MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-sync">
-<ANCHOR id="MmGdbusModemContacts.signal-details" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts.signal-details">
-<ANCHOR id="MmGdbusModemContacts-added" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-added">
-<ANCHOR id="MmGdbusModemContacts-deleted" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-deleted">
-<ANCHOR id="MmGdbusModemContacts-handle-add" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-handle-add">
-<ANCHOR id="MmGdbusModemContacts-handle-delete" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-handle-delete">
-<ANCHOR id="MmGdbusModemContacts-handle-find" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-handle-find">
-<ANCHOR id="MmGdbusModemContacts-handle-get" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get">
-<ANCHOR id="MmGdbusModemContacts-handle-get-count" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get-count">
-<ANCHOR id="MmGdbusModemContacts-handle-list" href="libmm-glib/MmGdbusModemContacts.html#MmGdbusModemContacts-handle-list">
-<ANCHOR id="MmGdbusModemContactsProxy" href="libmm-glib/MmGdbusModemContactsProxy.html">
-<ANCHOR id="MmGdbusModemContactsProxy.synopsis" href="libmm-glib/MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy.synopsis">
-<ANCHOR id="MmGdbusModemContactsProxy.object-hierarchy" href="libmm-glib/MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy.object-hierarchy">
-<ANCHOR id="MmGdbusModemContactsProxy.implemented-interfaces" href="libmm-glib/MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy.implemented-interfaces">
-<ANCHOR id="MmGdbusModemContactsProxy.description" href="libmm-glib/MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy.description">
-<ANCHOR id="MmGdbusModemContactsProxy.details" href="libmm-glib/MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy.details">
-<ANCHOR id="MmGdbusModemContactsProxy-struct" href="libmm-glib/MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy-struct">
-<ANCHOR id="mm-gdbus-modem-contacts-proxy-new" href="libmm-glib/MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new">
-<ANCHOR id="mm-gdbus-modem-contacts-proxy-new-finish" href="libmm-glib/MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-finish">
-<ANCHOR id="mm-gdbus-modem-contacts-proxy-new-for-bus" href="libmm-glib/MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus">
-<ANCHOR id="mm-gdbus-modem-contacts-proxy-new-for-bus-finish" href="libmm-glib/MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-finish">
-<ANCHOR id="mm-gdbus-modem-contacts-proxy-new-for-bus-sync" href="libmm-glib/MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-sync">
-<ANCHOR id="mm-gdbus-modem-contacts-proxy-new-sync" href="libmm-glib/MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-sync">
-<ANCHOR id="MmGdbusModemContactsSkeleton" href="libmm-glib/MmGdbusModemContactsSkeleton.html">
-<ANCHOR id="MmGdbusModemContactsSkeleton.synopsis" href="libmm-glib/MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton.synopsis">
-<ANCHOR id="MmGdbusModemContactsSkeleton.object-hierarchy" href="libmm-glib/MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton.object-hierarchy">
-<ANCHOR id="MmGdbusModemContactsSkeleton.implemented-interfaces" href="libmm-glib/MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton.implemented-interfaces">
-<ANCHOR id="MmGdbusModemContactsSkeleton.description" href="libmm-glib/MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton.description">
-<ANCHOR id="MmGdbusModemContactsSkeleton.details" href="libmm-glib/MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton.details">
-<ANCHOR id="MmGdbusModemContactsSkeleton-struct" href="libmm-glib/MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton-struct">
-<ANCHOR id="mm-gdbus-modem-contacts-skeleton-new" href="libmm-glib/MmGdbusModemContactsSkeleton.html#mm-gdbus-modem-contacts-skeleton-new">
<ANCHOR id="MmGdbusModemSimple" href="libmm-glib/MmGdbusModemSimple.html">
<ANCHOR id="MmGdbusModemSimple.synopsis" href="libmm-glib/MmGdbusModemSimple.html#MmGdbusModemSimple.synopsis">
<ANCHOR id="MmGdbusModemSimple.object-hierarchy" href="libmm-glib/MmGdbusModemSimple.html#MmGdbusModemSimple.object-hierarchy">
diff --git a/docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html b/docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html
index 5f8b7ef..cf09b87 100644
--- a/docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html
+++ b/docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html
@@ -55,6 +55,7 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.htm
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="libmm-glib-Flags-and-Enumerations.html#mm-modem-mode-build-string-from-mask" title="mm_modem_mode_build_string_from_mask ()">mm_modem_mode_build_string_from_mask</a>
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModemMode"><span class="type">MMModemMode</span></a> mask</code></em>);
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="libmm-glib-Flags-and-Enumerations.html#mm-modem-band-get-string" title="mm_modem_band_get_string ()">mm_modem_band_get_string</a> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModemBand"><span class="type">MMModemBand</span></a> val</code></em>);
+const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="libmm-glib-Flags-and-Enumerations.html#mm-modem-port-type-get-string" title="mm_modem_port_type_get_string ()">mm_modem_port_type_get_string</a> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModemPortType"><span class="type">MMModemPortType</span></a> val</code></em>);
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="libmm-glib-Flags-and-Enumerations.html#mm-modem-3gpp-registration-state-get-string" title="mm_modem_3gpp_registration_state_get_string ()">mm_modem_3gpp_registration_state_get_string</a>
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModem3gppRegistrationState"><span class="type">MMModem3gppRegistrationState</span></a> val</code></em>);
<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="libmm-glib-Flags-and-Enumerations.html#mm-modem-3gpp-facility-build-string-from-mask" title="mm_modem_3gpp_facility_build_string_from_mask ()">mm_modem_3gpp_facility_build_string_from_mask</a>
@@ -399,6 +400,31 @@ Gets the nickname string for the <a href="/usr/share/gtk-doc/html/ModemManager/M
</div>
<hr>
<div class="refsect2">
+<a name="mm-modem-port-type-get-string"></a><h3>mm_modem_port_type_get_string ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * mm_modem_port_type_get_string (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModemPortType"><span class="type">MMModemPortType</span></a> val</code></em>);</pre>
+<p>
+Gets the nickname string for the <a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModemPortType"><span class="type">MMModemPortType</span></a> specified at <em class="parameter"><code>val</code></em>.
+</p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>val</code></em> :</span></p></td>
+<td>a MMModemPortType.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>a string with the nickname, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not found. Do not free the returned value. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
<a name="mm-modem-3gpp-registration-state-get-string"></a><h3>mm_modem_3gpp_registration_state_get_string ()</h3>
<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * mm_modem_3gpp_registration_state_get_string
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/ModemManager/ModemManager-Flags-and-Enumerations.html#MMModem3gppRegistrationState"><span class="type">MMModem3gppRegistrationState</span></a> val</code></em>);</pre>
diff --git a/docs/reference/libmm-glib/html/libmm-glib.devhelp2 b/docs/reference/libmm-glib/html/libmm-glib.devhelp2
index 7a015c1..93c9d52 100644
--- a/docs/reference/libmm-glib/html/libmm-glib.devhelp2
+++ b/docs/reference/libmm-glib/html/libmm-glib.devhelp2
@@ -11,7 +11,7 @@
</sub>
<sub name="The Modem object" link="ch03.html">
<sub name="MMObject" link="MMObject.html"/>
- <sub name="Generic interfaces" link="ch03.html#idm266932738048">
+ <sub name="Generic interfaces" link="ch03.html#idm211869297872">
<sub name="MMModem" link="MMModem.html"/>
<sub name="MMModem3gpp" link="MMModem3gpp.html"/>
<sub name="MMModem3gppUssd" link="MMModem3gppUssd.html"/>
@@ -28,7 +28,7 @@
<sub name="MMLocation3gpp" link="MMLocation3gpp.html"/>
<sub name="MMLocationGpsNmea" link="MMLocationGpsNmea.html"/>
<sub name="MMLocationGpsRaw" link="MMLocationGpsRaw.html"/>
- <sub name="MMLocationCdmaBs" link="libmm-glib-MMLocationCdmaBs.html"/>
+ <sub name="MMLocationCdmaBs" link="MMLocationCdmaBs.html"/>
</sub>
<sub name="Messaging support" link="ch03s04.html">
<sub name="MMModemMessaging" link="MMModemMessaging.html"/>
@@ -87,9 +87,6 @@
<sub name="MmGdbusModemFirmware" link="MmGdbusModemFirmware.html"/>
<sub name="MmGdbusModemFirmwareProxy" link="MmGdbusModemFirmwareProxy.html"/>
<sub name="MmGdbusModemFirmwareSkeleton" link="MmGdbusModemFirmwareSkeleton.html"/>
- <sub name="MmGdbusModemContacts" link="MmGdbusModemContacts.html"/>
- <sub name="MmGdbusModemContactsProxy" link="MmGdbusModemContactsProxy.html"/>
- <sub name="MmGdbusModemContactsSkeleton" link="MmGdbusModemContactsSkeleton.html"/>
<sub name="MmGdbusModemSimple" link="MmGdbusModemSimple.html"/>
<sub name="MmGdbusModemSimpleProxy" link="MmGdbusModemSimpleProxy.html"/>
<sub name="MmGdbusModemSimpleSkeleton" link="MmGdbusModemSimpleSkeleton.html"/>
@@ -121,6 +118,7 @@
<keyword type="function" name="mm_modem_access_technology_build_string_from_mask ()" link="libmm-glib-Flags-and-Enumerations.html#mm-modem-access-technology-build-string-from-mask"/>
<keyword type="function" name="mm_modem_mode_build_string_from_mask ()" link="libmm-glib-Flags-and-Enumerations.html#mm-modem-mode-build-string-from-mask"/>
<keyword type="function" name="mm_modem_band_get_string ()" link="libmm-glib-Flags-and-Enumerations.html#mm-modem-band-get-string"/>
+ <keyword type="function" name="mm_modem_port_type_get_string ()" link="libmm-glib-Flags-and-Enumerations.html#mm-modem-port-type-get-string"/>
<keyword type="function" name="mm_modem_3gpp_registration_state_get_string ()" link="libmm-glib-Flags-and-Enumerations.html#mm-modem-3gpp-registration-state-get-string"/>
<keyword type="function" name="mm_modem_3gpp_facility_build_string_from_mask ()" link="libmm-glib-Flags-and-Enumerations.html#mm-modem-3gpp-facility-build-string-from-mask"/>
<keyword type="function" name="mm_modem_3gpp_network_availability_get_string ()" link="libmm-glib-Flags-and-Enumerations.html#mm-modem-3gpp-network-availability-get-string"/>
@@ -171,6 +169,7 @@
<keyword type="function" name="mm_object_get_modem_simple ()" link="MMObject.html#mm-object-get-modem-simple"/>
<keyword type="struct" name="struct MMModem" link="MMModem.html#MMModem-struct"/>
<keyword type="struct" name="MMModemModeCombination" link="MMModem.html#MMModemModeCombination"/>
+ <keyword type="struct" name="MMModemPortInfo" link="MMModem.html#MMModemPortInfo"/>
<keyword type="function" name="mm_modem_get_path ()" link="MMModem.html#mm-modem-get-path"/>
<keyword type="function" name="mm_modem_dup_path ()" link="MMModem.html#mm-modem-dup-path"/>
<keyword type="function" name="mm_modem_get_state ()" link="MMModem.html#mm-modem-get-state"/>
@@ -191,6 +190,8 @@
<keyword type="function" name="mm_modem_dup_plugin ()" link="MMModem.html#mm-modem-dup-plugin"/>
<keyword type="function" name="mm_modem_get_primary_port ()" link="MMModem.html#mm-modem-get-primary-port"/>
<keyword type="function" name="mm_modem_dup_primary_port ()" link="MMModem.html#mm-modem-dup-primary-port"/>
+ <keyword type="function" name="mm_modem_peek_ports ()" link="MMModem.html#mm-modem-peek-ports"/>
+ <keyword type="function" name="mm_modem_get_ports ()" link="MMModem.html#mm-modem-get-ports"/>
<keyword type="function" name="mm_modem_get_device ()" link="MMModem.html#mm-modem-get-device"/>
<keyword type="function" name="mm_modem_dup_device ()" link="MMModem.html#mm-modem-dup-device"/>
<keyword type="function" name="mm_modem_get_equipment_identifier ()" link="MMModem.html#mm-modem-get-equipment-identifier"/>
@@ -255,6 +256,7 @@
<keyword type="function" name="mm_modem_command ()" link="MMModem.html#mm-modem-command"/>
<keyword type="function" name="mm_modem_command_finish ()" link="MMModem.html#mm-modem-command-finish"/>
<keyword type="function" name="mm_modem_command_sync ()" link="MMModem.html#mm-modem-command-sync"/>
+ <keyword type="function" name="mm_modem_port_info_array_free ()" link="MMModem.html#mm-modem-port-info-array-free"/>
<keyword type="struct" name="struct MMModem3gpp" link="MMModem3gpp.html#MMModem3gpp-struct"/>
<keyword type="struct" name="MMModem3gppNetwork" link="MMModem3gpp.html#MMModem3gppNetwork"/>
<keyword type="function" name="mm_modem_3gpp_network_get_operator_code ()" link="MMModem3gpp.html#mm-modem-3gpp-network-get-operator-code"/>
@@ -413,9 +415,9 @@
<keyword type="function" name="mm_location_gps_raw_get_longitude ()" link="MMLocationGpsRaw.html#mm-location-gps-raw-get-longitude"/>
<keyword type="function" name="mm_location_gps_raw_get_latitude ()" link="MMLocationGpsRaw.html#mm-location-gps-raw-get-latitude"/>
<keyword type="function" name="mm_location_gps_raw_get_altitude ()" link="MMLocationGpsRaw.html#mm-location-gps-raw-get-altitude"/>
- <keyword type="struct" name="struct MMLocationCdmaBs" link="libmm-glib-MMLocationCdmaBs.html#MMLocationCdmaBs"/>
- <keyword type="function" name="mm_location_cdma_bs_get_latitude ()" link="libmm-glib-MMLocationCdmaBs.html#mm-location-cdma-bs-get-latitude"/>
- <keyword type="function" name="mm_location_cdma_bs_get_longitude ()" link="libmm-glib-MMLocationCdmaBs.html#mm-location-cdma-bs-get-longitude"/>
+ <keyword type="struct" name="struct MMLocationCdmaBs" link="MMLocationCdmaBs.html#MMLocationCdmaBs-struct"/>
+ <keyword type="function" name="mm_location_cdma_bs_get_latitude ()" link="MMLocationCdmaBs.html#mm-location-cdma-bs-get-latitude"/>
+ <keyword type="function" name="mm_location_cdma_bs_get_longitude ()" link="MMLocationCdmaBs.html#mm-location-cdma-bs-get-longitude"/>
<keyword type="struct" name="struct MMModemMessaging" link="MMModemMessaging.html#MMModemMessaging-struct"/>
<keyword type="function" name="mm_modem_messaging_get_path ()" link="MMModemMessaging.html#mm-modem-messaging-get-path"/>
<keyword type="function" name="mm_modem_messaging_dup_path ()" link="MMModemMessaging.html#mm-modem-messaging-dup-path"/>
@@ -627,13 +629,10 @@
<keyword type="function" name="mm_gdbus_object_get_modem_time ()" link="MmGdbusObject.html#mm-gdbus-object-get-modem-time"/>
<keyword type="function" name="mm_gdbus_object_peek_modem_firmware ()" link="MmGdbusObject.html#mm-gdbus-object-peek-modem-firmware"/>
<keyword type="function" name="mm_gdbus_object_get_modem_firmware ()" link="MmGdbusObject.html#mm-gdbus-object-get-modem-firmware"/>
- <keyword type="function" name="mm_gdbus_object_peek_modem_contacts ()" link="MmGdbusObject.html#mm-gdbus-object-peek-modem-contacts"/>
- <keyword type="function" name="mm_gdbus_object_get_modem_contacts ()" link="MmGdbusObject.html#mm-gdbus-object-get-modem-contacts"/>
<keyword type="function" name="mm_gdbus_object_peek_modem_simple ()" link="MmGdbusObject.html#mm-gdbus-object-peek-modem-simple"/>
<keyword type="function" name="mm_gdbus_object_get_modem_simple ()" link="MmGdbusObject.html#mm-gdbus-object-get-modem-simple"/>
<keyword type="property" name="The &quot;modem&quot; property" link="MmGdbusObject.html#MmGdbusObject--modem"/>
<keyword type="property" name="The &quot;modem-cdma&quot; property" link="MmGdbusObject.html#MmGdbusObject--modem-cdma"/>
- <keyword type="property" name="The &quot;modem-contacts&quot; property" link="MmGdbusObject.html#MmGdbusObject--modem-contacts"/>
<keyword type="property" name="The &quot;modem-firmware&quot; property" link="MmGdbusObject.html#MmGdbusObject--modem-firmware"/>
<keyword type="property" name="The &quot;modem-location&quot; property" link="MmGdbusObject.html#MmGdbusObject--modem-location"/>
<keyword type="property" name="The &quot;modem-messaging&quot; property" link="MmGdbusObject.html#MmGdbusObject--modem-messaging"/>
@@ -649,7 +648,6 @@
<keyword type="function" name="mm_gdbus_object_skeleton_set_modem3gpp ()" link="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem3gpp"/>
<keyword type="function" name="mm_gdbus_object_skeleton_set_modem3gpp_ussd ()" link="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem3gpp-ussd"/>
<keyword type="function" name="mm_gdbus_object_skeleton_set_modem_cdma ()" link="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-cdma"/>
- <keyword type="function" name="mm_gdbus_object_skeleton_set_modem_contacts ()" link="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-contacts"/>
<keyword type="function" name="mm_gdbus_object_skeleton_set_modem_firmware ()" link="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-firmware"/>
<keyword type="function" name="mm_gdbus_object_skeleton_set_modem_location ()" link="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-location"/>
<keyword type="function" name="mm_gdbus_object_skeleton_set_modem_messaging ()" link="MmGdbusObjectSkeleton.html#mm-gdbus-object-skeleton-set-modem-messaging"/>
@@ -684,6 +682,8 @@
<keyword type="function" name="mm_gdbus_modem_get_power_state ()" link="MmGdbusModem.html#mm-gdbus-modem-get-power-state"/>
<keyword type="function" name="mm_gdbus_modem_get_primary_port ()" link="MmGdbusModem.html#mm-gdbus-modem-get-primary-port"/>
<keyword type="function" name="mm_gdbus_modem_dup_primary_port ()" link="MmGdbusModem.html#mm-gdbus-modem-dup-primary-port"/>
+ <keyword type="function" name="mm_gdbus_modem_get_ports ()" link="MmGdbusModem.html#mm-gdbus-modem-get-ports"/>
+ <keyword type="function" name="mm_gdbus_modem_dup_ports ()" link="MmGdbusModem.html#mm-gdbus-modem-dup-ports"/>
<keyword type="function" name="mm_gdbus_modem_get_revision ()" link="MmGdbusModem.html#mm-gdbus-modem-get-revision"/>
<keyword type="function" name="mm_gdbus_modem_dup_revision ()" link="MmGdbusModem.html#mm-gdbus-modem-dup-revision"/>
<keyword type="function" name="mm_gdbus_modem_get_signal_quality ()" link="MmGdbusModem.html#mm-gdbus-modem-get-signal-quality"/>
@@ -749,6 +749,7 @@
<keyword type="property" name="The &quot;model&quot; property" link="MmGdbusModem.html#MmGdbusModem--model"/>
<keyword type="property" name="The &quot;own-numbers&quot; property" link="MmGdbusModem.html#MmGdbusModem--own-numbers"/>
<keyword type="property" name="The &quot;plugin&quot; property" link="MmGdbusModem.html#MmGdbusModem--plugin"/>
+ <keyword type="property" name="The &quot;ports&quot; property" link="MmGdbusModem.html#MmGdbusModem--ports"/>
<keyword type="property" name="The &quot;power-state&quot; property" link="MmGdbusModem.html#MmGdbusModem--power-state"/>
<keyword type="property" name="The &quot;primary-port&quot; property" link="MmGdbusModem.html#MmGdbusModem--primary-port"/>
<keyword type="property" name="The &quot;revision&quot; property" link="MmGdbusModem.html#MmGdbusModem--revision"/>
@@ -978,43 +979,6 @@
<keyword type="function" name="mm_gdbus_modem_firmware_proxy_new_sync ()" link="MmGdbusModemFirmwareProxy.html#mm-gdbus-modem-firmware-proxy-new-sync"/>
<keyword type="struct" name="struct MmGdbusModemFirmwareSkeleton" link="MmGdbusModemFirmwareSkeleton.html#MmGdbusModemFirmwareSkeleton-struct"/>
<keyword type="function" name="mm_gdbus_modem_firmware_skeleton_new ()" link="MmGdbusModemFirmwareSkeleton.html#mm-gdbus-modem-firmware-skeleton-new"/>
- <keyword type="struct" name="MmGdbusModemContacts" link="MmGdbusModemContacts.html#MmGdbusModemContacts-struct"/>
- <keyword type="struct" name="struct MmGdbusModemContactsIface" link="MmGdbusModemContacts.html#MmGdbusModemContactsIface"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_add ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_add_finish ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-finish"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_add_sync ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-add-sync"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_delete ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_delete_finish ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-finish"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_delete_sync ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-delete-sync"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_find ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_find_finish ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-finish"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_find_sync ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-find-sync"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_get ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_get_finish ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-finish"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_get_sync ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-sync"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_get_count ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_get_count_finish ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-finish"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_get_count_sync ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-get-count-sync"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_list ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_list_finish ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-finish"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_call_list_sync ()" link="MmGdbusModemContacts.html#mm-gdbus-modem-contacts-call-list-sync"/>
- <keyword type="signal" name="The &quot;added&quot; signal" link="MmGdbusModemContacts.html#MmGdbusModemContacts-added"/>
- <keyword type="signal" name="The &quot;deleted&quot; signal" link="MmGdbusModemContacts.html#MmGdbusModemContacts-deleted"/>
- <keyword type="signal" name="The &quot;handle-add&quot; signal" link="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-add"/>
- <keyword type="signal" name="The &quot;handle-delete&quot; signal" link="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-delete"/>
- <keyword type="signal" name="The &quot;handle-find&quot; signal" link="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-find"/>
- <keyword type="signal" name="The &quot;handle-get&quot; signal" link="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get"/>
- <keyword type="signal" name="The &quot;handle-get-count&quot; signal" link="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-get-count"/>
- <keyword type="signal" name="The &quot;handle-list&quot; signal" link="MmGdbusModemContacts.html#MmGdbusModemContacts-handle-list"/>
- <keyword type="struct" name="struct MmGdbusModemContactsProxy" link="MmGdbusModemContactsProxy.html#MmGdbusModemContactsProxy-struct"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_proxy_new ()" link="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_proxy_new_finish ()" link="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-finish"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_proxy_new_for_bus ()" link="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_proxy_new_for_bus_finish ()" link="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-finish"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_proxy_new_for_bus_sync ()" link="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-for-bus-sync"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_proxy_new_sync ()" link="MmGdbusModemContactsProxy.html#mm-gdbus-modem-contacts-proxy-new-sync"/>
- <keyword type="struct" name="struct MmGdbusModemContactsSkeleton" link="MmGdbusModemContactsSkeleton.html#MmGdbusModemContactsSkeleton-struct"/>
- <keyword type="function" name="mm_gdbus_modem_contacts_skeleton_new ()" link="MmGdbusModemContactsSkeleton.html#mm-gdbus-modem-contacts-skeleton-new"/>
<keyword type="struct" name="MmGdbusModemSimple" link="MmGdbusModemSimple.html#MmGdbusModemSimple-struct"/>
<keyword type="struct" name="struct MmGdbusModemSimpleIface" link="MmGdbusModemSimple.html#MmGdbusModemSimpleIface"/>
<keyword type="function" name="mm_gdbus_modem_simple_call_connect ()" link="MmGdbusModemSimple.html#mm-gdbus-modem-simple-call-connect"/>
diff --git a/docs/reference/libmm-glib/html/object-tree.html b/docs/reference/libmm-glib/html/object-tree.html
index 4e7e4f4..dc699ed 100644
--- a/docs/reference/libmm-glib/html/object-tree.html
+++ b/docs/reference/libmm-glib/html/object-tree.html
@@ -33,7 +33,6 @@
<a class="link" href="MMModem3gppUssd.html" title="MMModem3gppUssd">MMModem3gppUssd</a>
<a class="link" href="MmGdbusModemCdmaProxy.html" title="MmGdbusModemCdmaProxy">MmGdbusModemCdmaProxy</a>
<a class="link" href="MMModemCdma.html" title="MMModemCdma">MMModemCdma</a>
- <a class="link" href="MmGdbusModemContactsProxy.html" title="MmGdbusModemContactsProxy">MmGdbusModemContactsProxy</a>
<a class="link" href="MmGdbusModemFirmwareProxy.html" title="MmGdbusModemFirmwareProxy">MmGdbusModemFirmwareProxy</a>
<a class="link" href="MMModemFirmware.html" title="MMModemFirmware">MMModemFirmware</a>
<a class="link" href="MmGdbusModemLocationProxy.html" title="MmGdbusModemLocationProxy">MmGdbusModemLocationProxy</a>
@@ -59,7 +58,6 @@
<a class="link" href="MmGdbusModem3gppSkeleton.html" title="MmGdbusModem3gppSkeleton">MmGdbusModem3gppSkeleton</a>
<a class="link" href="MmGdbusModem3gppUssdSkeleton.html" title="MmGdbusModem3gppUssdSkeleton">MmGdbusModem3gppUssdSkeleton</a>
<a class="link" href="MmGdbusModemCdmaSkeleton.html" title="MmGdbusModemCdmaSkeleton">MmGdbusModemCdmaSkeleton</a>
- <a class="link" href="MmGdbusModemContactsSkeleton.html" title="MmGdbusModemContactsSkeleton">MmGdbusModemContactsSkeleton</a>
<a class="link" href="MmGdbusModemFirmwareSkeleton.html" title="MmGdbusModemFirmwareSkeleton">MmGdbusModemFirmwareSkeleton</a>
<a class="link" href="MmGdbusModemLocationSkeleton.html" title="MmGdbusModemLocationSkeleton">MmGdbusModemLocationSkeleton</a>
<a class="link" href="MmGdbusModemMessagingSkeleton.html" title="MmGdbusModemMessagingSkeleton">MmGdbusModemMessagingSkeleton</a>
@@ -78,6 +76,7 @@
<a href="http://library.gnome.org/devel/gio/unstable/GDBusObjectSkeleton.html">GDBusObjectSkeleton</a>
<a class="link" href="MmGdbusObjectSkeleton.html" title="MmGdbusObjectSkeleton">MmGdbusObjectSkeleton</a>
<a class="link" href="MMLocation3gpp.html" title="MMLocation3gpp">MMLocation3gpp</a>
+ <a class="link" href="MMLocationCdmaBs.html" title="MMLocationCdmaBs">MMLocationCdmaBs</a>
<a class="link" href="MMLocationGpsNmea.html" title="MMLocationGpsNmea">MMLocationGpsNmea</a>
<a class="link" href="MMLocationGpsRaw.html" title="MMLocationGpsRaw">MMLocationGpsRaw</a>
<a class="link" href="MMNetworkTimezone.html" title="MMNetworkTimezone">MMNetworkTimezone</a>
@@ -90,7 +89,6 @@
<a class="link" href="MmGdbusModem3gpp.html" title="MmGdbusModem3gpp">MmGdbusModem3gpp</a>
<a class="link" href="MmGdbusModem3gppUssd.html" title="MmGdbusModem3gppUssd">MmGdbusModem3gppUssd</a>
<a class="link" href="MmGdbusModemCdma.html" title="MmGdbusModemCdma">MmGdbusModemCdma</a>
- <a class="link" href="MmGdbusModemContacts.html" title="MmGdbusModemContacts">MmGdbusModemContacts</a>
<a class="link" href="MmGdbusModemFirmware.html" title="MmGdbusModemFirmware">MmGdbusModemFirmware</a>
<a class="link" href="MmGdbusModem.html" title="MmGdbusModem">MmGdbusModem</a>
<a class="link" href="MmGdbusModemLocation.html" title="MmGdbusModemLocation">MmGdbusModemLocation</a>
diff --git a/docs/reference/libmm-glib/html/pt01.html b/docs/reference/libmm-glib/html/pt01.html
index ab4c60a..13c5d0d 100644
--- a/docs/reference/libmm-glib/html/pt01.html
+++ b/docs/reference/libmm-glib/html/pt01.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="part">
<div class="titlepage"><div><div><h1 class="title">
-<a name="idm266932779776"></a>Part I. High level API</h1></div></div></div>
+<a name="idm211866944944"></a>Part I. High level API</h1></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl class="toc">
@@ -38,7 +38,7 @@
<dt>
<span class="refentrytitle"><a href="MMObject.html">MMObject</a></span><span class="refpurpose"> — Generic object representing a modem in ModemManager</span>
</dt>
-<dt><span class="section"><a href="ch03.html#idm266932738048">Generic interfaces</a></span></dt>
+<dt><span class="section"><a href="ch03.html#idm211869297872">Generic interfaces</a></span></dt>
<dd><dl>
<dt>
<span class="refentrytitle"><a href="MMModem.html">MMModem</a></span><span class="refpurpose"> — The Modem interface</span>
@@ -83,7 +83,7 @@
<span class="refentrytitle"><a href="MMLocationGpsRaw.html">MMLocationGpsRaw</a></span><span class="refpurpose"> — Helper object to handle generic GPS location information.</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="libmm-glib-MMLocationCdmaBs.html">MMLocationCdmaBs</a></span><span class="refpurpose"> — Helper object to handle CDMA Base Station location information.</span>
+<span class="refentrytitle"><a href="MMLocationCdmaBs.html">MMLocationCdmaBs</a></span><span class="refpurpose"> — Helper object to handle CDMA Base Station location information.</span>
</dt>
</dl></dd>
<dt><span class="section"><a href="ch03s04.html">Messaging support</a></span></dt>
diff --git a/docs/reference/libmm-glib/html/pt02.html b/docs/reference/libmm-glib/html/pt02.html
index dc4def1..d9f16a4 100644
--- a/docs/reference/libmm-glib/html/pt02.html
+++ b/docs/reference/libmm-glib/html/pt02.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="part">
<div class="titlepage"><div><div><h1 class="title">
-<a name="idm266932900880"></a>Part II. Low level API</h1></div></div></div>
+<a name="idm211869424752"></a>Part II. Low level API</h1></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl class="toc">
@@ -119,15 +119,6 @@
<span class="refentrytitle"><a href="MmGdbusModemFirmwareSkeleton.html">MmGdbusModemFirmwareSkeleton</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="MmGdbusModemContacts.html">MmGdbusModemContacts</a></span><span class="refpurpose"> — Generated C code for the org.freedesktop.ModemManager1.Modem.Contacts D-Bus interface</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="MmGdbusModemContactsProxy.html">MmGdbusModemContactsProxy</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="MmGdbusModemContactsSkeleton.html">MmGdbusModemContactsSkeleton</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
<span class="refentrytitle"><a href="MmGdbusModemSimple.html">MmGdbusModemSimple</a></span><span class="refpurpose"> — Generated C code for the org.freedesktop.ModemManager1.Modem.Simple D-Bus interface</span>
</dt>
<dt>
diff --git a/docs/reference/libmm-glib/libmm-glib-docs.xml b/docs/reference/libmm-glib/libmm-glib-docs.xml
index c9f498c..4e0e1fd 100644
--- a/docs/reference/libmm-glib/libmm-glib-docs.xml
+++ b/docs/reference/libmm-glib/libmm-glib-docs.xml
@@ -174,9 +174,9 @@
<xi:include href="xml/MmGdbusModemFirmwareProxy.xml"/>
<xi:include href="xml/MmGdbusModemFirmwareSkeleton.xml"/>
- <xi:include href="xml/MmGdbusModemContacts.xml"/>
+ <!--xi:include href="xml/MmGdbusModemContacts.xml"/>
<xi:include href="xml/MmGdbusModemContactsProxy.xml"/>
- <xi:include href="xml/MmGdbusModemContactsSkeleton.xml"/>
+ <xi:include href="xml/MmGdbusModemContactsSkeleton.xml"/-->
<xi:include href="xml/MmGdbusModemSimple.xml"/>
<xi:include href="xml/MmGdbusModemSimpleProxy.xml"/>
diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt
index 2af5840..1784b4c 100644
--- a/docs/reference/libmm-glib/libmm-glib-sections.txt
+++ b/docs/reference/libmm-glib/libmm-glib-sections.txt
@@ -74,6 +74,7 @@ mm_object_get_type
<TITLE>MMModem</TITLE>
MMModem
MMModemModeCombination
+MMModemPortInfo
<SUBSECTION Getters>
mm_modem_get_path
mm_modem_dup_path
@@ -95,6 +96,8 @@ mm_modem_get_plugin
mm_modem_dup_plugin
mm_modem_get_primary_port
mm_modem_dup_primary_port
+mm_modem_peek_ports
+mm_modem_get_ports
mm_modem_get_device
mm_modem_dup_device
mm_modem_get_equipment_identifier
@@ -162,6 +165,8 @@ mm_modem_delete_bearer_sync
mm_modem_command
mm_modem_command_finish
mm_modem_command_sync
+<SUBSECTION Other>
+mm_modem_port_info_array_free
<SUBSECTION Standard>
MMModemClass
MMModemPrivate
@@ -970,6 +975,7 @@ mm_modem_lock_get_string
mm_modem_access_technology_build_string_from_mask
mm_modem_mode_build_string_from_mask
mm_modem_band_get_string
+mm_modem_port_type_get_string
mm_modem_3gpp_registration_state_get_string
mm_modem_3gpp_facility_build_string_from_mask
mm_modem_3gpp_network_availability_get_string
@@ -1013,6 +1019,7 @@ mm_modem_3gpp_facility_get_string
mm_modem_3gpp_network_availability_build_string_from_mask
mm_modem_3gpp_ussd_session_state_build_string_from_mask
mm_firmware_image_type_build_string_from_mask
+mm_modem_port_type_build_string_from_mask
<SUBSECTION Standard>
MM_TYPE_BEARER_IP_FAMILY
MM_TYPE_BEARER_IP_METHOD
@@ -1036,6 +1043,7 @@ MM_TYPE_MODEM_STATE
MM_TYPE_MODEM_STATE_FAILED_REASON
MM_TYPE_MODEM_STATE_CHANGE_REASON
MM_TYPE_MODEM_POWER_STATE
+MM_TYPE_MODEM_PORT_TYPE
MM_TYPE_SMS_DELIVERY_STATE
MM_TYPE_SMS_PDU_TYPE
MM_TYPE_SMS_STATE
@@ -1063,6 +1071,7 @@ mm_modem_state_change_reason_get_type
mm_modem_state_get_type
mm_modem_state_failed_reason_get_type
mm_modem_power_state_get_type
+mm_modem_port_type_get_type
mm_sms_delivery_state_get_type
mm_sms_pdu_type_get_type
mm_sms_state_get_type
@@ -1443,6 +1452,8 @@ mm_gdbus_modem_dup_plugin
mm_gdbus_modem_get_power_state
mm_gdbus_modem_get_primary_port
mm_gdbus_modem_dup_primary_port
+mm_gdbus_modem_get_ports
+mm_gdbus_modem_dup_ports
mm_gdbus_modem_get_revision
mm_gdbus_modem_dup_revision
mm_gdbus_modem_get_signal_quality
@@ -1511,6 +1522,7 @@ mm_gdbus_modem_set_model
mm_gdbus_modem_set_own_numbers
mm_gdbus_modem_set_plugin
mm_gdbus_modem_set_primary_port
+mm_gdbus_modem_set_ports
mm_gdbus_modem_set_revision
mm_gdbus_modem_set_signal_quality
mm_gdbus_modem_set_sim
@@ -1962,91 +1974,6 @@ MmGdbusModemFirmwareSkeletonPrivate
mm_gdbus_modem_firmware_skeleton_get_type
</SECTION>
-
-<SECTION>
-<FILE>MmGdbusModemContacts</FILE>
-<TITLE>MmGdbusModemContacts</TITLE>
-MmGdbusModemContacts
-MmGdbusModemContactsIface
-<SUBSECTION Methods>
-mm_gdbus_modem_contacts_call_add
-mm_gdbus_modem_contacts_call_add_finish
-mm_gdbus_modem_contacts_call_add_sync
-mm_gdbus_modem_contacts_call_delete
-mm_gdbus_modem_contacts_call_delete_finish
-mm_gdbus_modem_contacts_call_delete_sync
-mm_gdbus_modem_contacts_call_find
-mm_gdbus_modem_contacts_call_find_finish
-mm_gdbus_modem_contacts_call_find_sync
-mm_gdbus_modem_contacts_call_get
-mm_gdbus_modem_contacts_call_get_finish
-mm_gdbus_modem_contacts_call_get_sync
-mm_gdbus_modem_contacts_call_get_count
-mm_gdbus_modem_contacts_call_get_count_finish
-mm_gdbus_modem_contacts_call_get_count_sync
-mm_gdbus_modem_contacts_call_list
-mm_gdbus_modem_contacts_call_list_finish
-mm_gdbus_modem_contacts_call_list_sync
-<SUBSECTION Private>
-mm_gdbus_modem_contacts_complete_add
-mm_gdbus_modem_contacts_complete_delete
-mm_gdbus_modem_contacts_complete_find
-mm_gdbus_modem_contacts_complete_get
-mm_gdbus_modem_contacts_complete_get_count
-mm_gdbus_modem_contacts_complete_list
-mm_gdbus_modem_contacts_emit_added
-mm_gdbus_modem_contacts_emit_deleted
-mm_gdbus_modem_contacts_interface_info
-mm_gdbus_modem_contacts_override_properties
-<SUBSECTION Standard>
-MM_GDBUS_IS_MODEM_CONTACTS
-MM_GDBUS_MODEM_CONTACTS
-MM_GDBUS_MODEM_CONTACTS_GET_IFACE
-MM_GDBUS_TYPE_MODEM_CONTACTS
-mm_gdbus_modem_contacts_get_type
-</SECTION>
-
-<SECTION>
-<FILE>MmGdbusModemContactsProxy</FILE>
-<TITLE>MmGdbusModemContactsProxy</TITLE>
-MmGdbusModemContactsProxy
-<SUBSECTION New>
-mm_gdbus_modem_contacts_proxy_new
-mm_gdbus_modem_contacts_proxy_new_finish
-mm_gdbus_modem_contacts_proxy_new_for_bus
-mm_gdbus_modem_contacts_proxy_new_for_bus_finish
-mm_gdbus_modem_contacts_proxy_new_for_bus_sync
-mm_gdbus_modem_contacts_proxy_new_sync
-<SUBSECTION Standard>
-MmGdbusModemContactsProxyClass
-MM_GDBUS_IS_MODEM_CONTACTS_PROXY
-MM_GDBUS_IS_MODEM_CONTACTS_PROXY_CLASS
-MM_GDBUS_MODEM_CONTACTS_PROXY
-MM_GDBUS_MODEM_CONTACTS_PROXY_CLASS
-MM_GDBUS_MODEM_CONTACTS_PROXY_GET_CLASS
-MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY
-MmGdbusModemContactsProxyPrivate
-mm_gdbus_modem_contacts_proxy_get_type
-</SECTION>
-
-<SECTION>
-<FILE>MmGdbusModemContactsSkeleton</FILE>
-<TITLE>MmGdbusModemContactsSkeleton</TITLE>
-MmGdbusModemContactsSkeleton
-<SUBSECTION New>
-mm_gdbus_modem_contacts_skeleton_new
-<SUBSECTION Standard>
-MmGdbusModemContactsSkeletonClass
-MM_GDBUS_IS_MODEM_CONTACTS_SKELETON
-MM_GDBUS_IS_MODEM_CONTACTS_SKELETON_CLASS
-MM_GDBUS_MODEM_CONTACTS_SKELETON
-MM_GDBUS_MODEM_CONTACTS_SKELETON_CLASS
-MM_GDBUS_MODEM_CONTACTS_SKELETON_GET_CLASS
-MM_GDBUS_TYPE_MODEM_CONTACTS_SKELETON
-MmGdbusModemContactsSkeletonPrivate
-mm_gdbus_modem_contacts_skeleton_get_type
-</SECTION>
-
<SECTION>
<FILE>MmGdbusModemSimple</FILE>
<TITLE>MmGdbusModemSimple</TITLE>
@@ -2140,8 +2067,6 @@ mm_gdbus_object_peek_modem_time
mm_gdbus_object_get_modem_time
mm_gdbus_object_peek_modem_firmware
mm_gdbus_object_get_modem_firmware
-mm_gdbus_object_peek_modem_contacts
-mm_gdbus_object_get_modem_contacts
mm_gdbus_object_peek_modem_simple
mm_gdbus_object_get_modem_simple
<SUBSECTION Methods>
@@ -2183,7 +2108,6 @@ mm_gdbus_object_skeleton_set_modem
mm_gdbus_object_skeleton_set_modem3gpp
mm_gdbus_object_skeleton_set_modem3gpp_ussd
mm_gdbus_object_skeleton_set_modem_cdma
-mm_gdbus_object_skeleton_set_modem_contacts
mm_gdbus_object_skeleton_set_modem_firmware
mm_gdbus_object_skeleton_set_modem_location
mm_gdbus_object_skeleton_set_modem_messaging
diff --git a/docs/reference/libmm-glib/libmm-glib.types b/docs/reference/libmm-glib/libmm-glib.types
index bb78f90..1864f00 100644
--- a/docs/reference/libmm-glib/libmm-glib.types
+++ b/docs/reference/libmm-glib/libmm-glib.types
@@ -1,3 +1,4 @@
+mm_bearer_allowed_auth_get_type
mm_bearer_get_type
mm_bearer_ip_config_get_type
mm_bearer_ip_family_get_type
@@ -20,9 +21,6 @@ mm_gdbus_modem3gpp_ussd_skeleton_get_type
mm_gdbus_modem_cdma_get_type
mm_gdbus_modem_cdma_proxy_get_type
mm_gdbus_modem_cdma_skeleton_get_type
-mm_gdbus_modem_contacts_get_type
-mm_gdbus_modem_contacts_proxy_get_type
-mm_gdbus_modem_contacts_skeleton_get_type
mm_gdbus_modem_firmware_get_type
mm_gdbus_modem_firmware_proxy_get_type
mm_gdbus_modem_firmware_skeleton_get_type
@@ -55,6 +53,7 @@ mm_gdbus_sms_get_type
mm_gdbus_sms_proxy_get_type
mm_gdbus_sms_skeleton_get_type
mm_location_3gpp_get_type
+mm_location_cdma_bs_get_type
mm_location_gps_nmea_get_type
mm_location_gps_raw_get_type
mm_manager_get_type
@@ -81,8 +80,11 @@ mm_modem_location_source_get_type
mm_modem_lock_get_type
mm_modem_messaging_get_type
mm_modem_mode_get_type
+mm_modem_port_type_get_type
+mm_modem_power_state_get_type
mm_modem_simple_get_type
mm_modem_state_change_reason_get_type
+mm_modem_state_failed_reason_get_type
mm_modem_state_get_type
mm_modem_time_get_type
mm_network_timezone_get_type
@@ -97,27 +99,5 @@ mm_sms_pdu_type_get_type
mm_sms_properties_get_type
mm_sms_state_get_type
mm_sms_storage_get_type
+mm_sms_validity_type_get_type
mm_unlock_retries_get_type
-mm_bearer_ip_family_get_type
-mm_bearer_ip_method_get_type
-mm_firmware_image_type_get_type
-mm_modem_3gpp_facility_get_type
-mm_modem_3gpp_network_availability_get_type
-mm_modem_3gpp_registration_state_get_type
-mm_modem_3gpp_ussd_session_state_get_type
-mm_modem_access_technology_get_type
-mm_modem_band_get_type
-mm_modem_capability_get_type
-mm_modem_cdma_activation_state_get_type
-mm_modem_cdma_registration_state_get_type
-mm_modem_cdma_rm_protocol_get_type
-mm_modem_contacts_storage_get_type
-mm_modem_location_source_get_type
-mm_modem_lock_get_type
-mm_modem_mode_get_type
-mm_modem_state_change_reason_get_type
-mm_modem_state_get_type
-mm_sms_delivery_state_get_type
-mm_sms_pdu_type_get_type
-mm_sms_state_get_type
-mm_sms_storage_get_type \ No newline at end of file
diff --git a/docs/reference/libmm-glib/tmpl/MmGdbusModem.sgml b/docs/reference/libmm-glib/tmpl/MmGdbusModem.sgml
index 96aca36..61687dd 100644
--- a/docs/reference/libmm-glib/tmpl/MmGdbusModem.sgml
+++ b/docs/reference/libmm-glib/tmpl/MmGdbusModem.sgml
@@ -217,6 +217,11 @@ MmGdbusModem
</para>
+<!-- ##### ARG MmGdbusModem:ports ##### -->
+<para>
+
+</para>
+
<!-- ##### ARG MmGdbusModem:power-state ##### -->
<para>
@@ -313,6 +318,7 @@ MmGdbusModem
@get_model:
@get_own_numbers:
@get_plugin:
+@get_ports:
@get_power_state:
@get_primary_port:
@get_revision:
@@ -571,6 +577,24 @@ MmGdbusModem
@Returns:
+<!-- ##### FUNCTION mm_gdbus_modem_get_ports ##### -->
+<para>
+
+</para>
+
+@object:
+@Returns:
+
+
+<!-- ##### FUNCTION mm_gdbus_modem_dup_ports ##### -->
+<para>
+
+</para>
+
+@object:
+@Returns:
+
+
<!-- ##### FUNCTION mm_gdbus_modem_get_revision ##### -->
<para>
diff --git a/docs/reference/libmm-glib/tmpl/MmGdbusModemContacts.sgml b/docs/reference/libmm-glib/tmpl/MmGdbusModemContacts.sgml
deleted file mode 100644
index 8024c96..0000000
--- a/docs/reference/libmm-glib/tmpl/MmGdbusModemContacts.sgml
+++ /dev/null
@@ -1,336 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-MmGdbusModemContacts
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### STRUCT MmGdbusModemContacts ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SIGNAL MmGdbusModemContacts::added ##### -->
-<para>
-
-</para>
-
-@mmgdbusmodemcontacts: the object which received the signal.
-@arg1:
-@arg2:
-
-<!-- ##### SIGNAL MmGdbusModemContacts::deleted ##### -->
-<para>
-
-</para>
-
-@mmgdbusmodemcontacts: the object which received the signal.
-@arg1:
-
-<!-- ##### SIGNAL MmGdbusModemContacts::handle-add ##### -->
-<para>
-
-</para>
-
-@mmgdbusmodemcontacts: the object which received the signal.
-@arg1:
-@arg2:
-@Returns:
-
-<!-- ##### SIGNAL MmGdbusModemContacts::handle-delete ##### -->
-<para>
-
-</para>
-
-@mmgdbusmodemcontacts: the object which received the signal.
-@arg1:
-@arg2:
-@Returns:
-
-<!-- ##### SIGNAL MmGdbusModemContacts::handle-find ##### -->
-<para>
-
-</para>
-
-@mmgdbusmodemcontacts: the object which received the signal.
-@arg1:
-@arg2:
-@Returns:
-
-<!-- ##### SIGNAL MmGdbusModemContacts::handle-get ##### -->
-<para>
-
-</para>
-
-@mmgdbusmodemcontacts: the object which received the signal.
-@arg1:
-@arg2:
-@Returns:
-
-<!-- ##### SIGNAL MmGdbusModemContacts::handle-get-count ##### -->
-<para>
-
-</para>
-
-@mmgdbusmodemcontacts: the object which received the signal.
-@arg1:
-@Returns:
-
-<!-- ##### SIGNAL MmGdbusModemContacts::handle-list ##### -->
-<para>
-
-</para>
-
-@mmgdbusmodemcontacts: the object which received the signal.
-@arg1:
-@Returns:
-
-<!-- ##### STRUCT MmGdbusModemContactsIface ##### -->
-<para>
-
-</para>
-
-@parent_iface:
-@handle_add:
-@handle_delete:
-@handle_find:
-@handle_get:
-@handle_get_count:
-@handle_list:
-@added:
-@deleted:
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_add ##### -->
-<para>
-
-</para>
-
-@proxy:
-@arg_properties:
-@cancellable:
-@callback:
-@user_data:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_add_finish ##### -->
-<para>
-
-</para>
-
-@proxy:
-@out_index:
-@res:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_add_sync ##### -->
-<para>
-
-</para>
-
-@proxy:
-@arg_properties:
-@out_index:
-@cancellable:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_delete ##### -->
-<para>
-
-</para>
-
-@proxy:
-@arg_index:
-@cancellable:
-@callback:
-@user_data:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_delete_finish ##### -->
-<para>
-
-</para>
-
-@proxy:
-@res:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_delete_sync ##### -->
-<para>
-
-</para>
-
-@proxy:
-@arg_index:
-@cancellable:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_find ##### -->
-<para>
-
-</para>
-
-@proxy:
-@arg_pattern:
-@cancellable:
-@callback:
-@user_data:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_find_finish ##### -->
-<para>
-
-</para>
-
-@proxy:
-@out_results:
-@res:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_find_sync ##### -->
-<para>
-
-</para>
-
-@proxy:
-@arg_pattern:
-@out_results:
-@cancellable:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_get ##### -->
-<para>
-
-</para>
-
-@proxy:
-@arg_index:
-@cancellable:
-@callback:
-@user_data:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_get_finish ##### -->
-<para>
-
-</para>
-
-@proxy:
-@out_properties:
-@res:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_get_sync ##### -->
-<para>
-
-</para>
-
-@proxy:
-@arg_index:
-@out_properties:
-@cancellable:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_get_count ##### -->
-<para>
-
-</para>
-
-@proxy:
-@cancellable:
-@callback:
-@user_data:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_get_count_finish ##### -->
-<para>
-
-</para>
-
-@proxy:
-@out_count:
-@res:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_get_count_sync ##### -->
-<para>
-
-</para>
-
-@proxy:
-@out_count:
-@cancellable:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_list ##### -->
-<para>
-
-</para>
-
-@proxy:
-@cancellable:
-@callback:
-@user_data:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_list_finish ##### -->
-<para>
-
-</para>
-
-@proxy:
-@out_results:
-@res:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_call_list_sync ##### -->
-<para>
-
-</para>
-
-@proxy:
-@out_results:
-@cancellable:
-@error:
-@Returns:
-
-
diff --git a/docs/reference/libmm-glib/tmpl/MmGdbusModemContactsProxy.sgml b/docs/reference/libmm-glib/tmpl/MmGdbusModemContactsProxy.sgml
deleted file mode 100644
index b489922..0000000
--- a/docs/reference/libmm-glib/tmpl/MmGdbusModemContactsProxy.sgml
+++ /dev/null
@@ -1,106 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-MmGdbusModemContactsProxy
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### STRUCT MmGdbusModemContactsProxy ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_proxy_new ##### -->
-<para>
-
-</para>
-
-@connection:
-@flags:
-@name:
-@object_path:
-@cancellable:
-@callback:
-@user_data:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_proxy_new_finish ##### -->
-<para>
-
-</para>
-
-@res:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_proxy_new_for_bus ##### -->
-<para>
-
-</para>
-
-@bus_type:
-@flags:
-@name:
-@object_path:
-@cancellable:
-@callback:
-@user_data:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_proxy_new_for_bus_finish ##### -->
-<para>
-
-</para>
-
-@res:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_proxy_new_for_bus_sync ##### -->
-<para>
-
-</para>
-
-@bus_type:
-@flags:
-@name:
-@object_path:
-@cancellable:
-@error:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_modem_contacts_proxy_new_sync ##### -->
-<para>
-
-</para>
-
-@connection:
-@flags:
-@name:
-@object_path:
-@cancellable:
-@error:
-@Returns:
-
-
diff --git a/docs/reference/libmm-glib/tmpl/MmGdbusObject.sgml b/docs/reference/libmm-glib/tmpl/MmGdbusObject.sgml
index 6920d79..cd9ad31 100644
--- a/docs/reference/libmm-glib/tmpl/MmGdbusObject.sgml
+++ b/docs/reference/libmm-glib/tmpl/MmGdbusObject.sgml
@@ -38,11 +38,6 @@ MmGdbusObject
</para>
-<!-- ##### ARG MmGdbusObject:modem-contacts ##### -->
-<para>
-
-</para>
-
<!-- ##### ARG MmGdbusObject:modem-firmware ##### -->
<para>
@@ -229,24 +224,6 @@ MmGdbusObject
@Returns:
-<!-- ##### FUNCTION mm_gdbus_object_peek_modem_contacts ##### -->
-<para>
-
-</para>
-
-@object:
-@Returns:
-
-
-<!-- ##### FUNCTION mm_gdbus_object_get_modem_contacts ##### -->
-<para>
-
-</para>
-
-@object:
-@Returns:
-
-
<!-- ##### FUNCTION mm_gdbus_object_peek_modem_simple ##### -->
<para>
diff --git a/docs/reference/libmm-glib/tmpl/MmGdbusObjectSkeleton.sgml b/docs/reference/libmm-glib/tmpl/MmGdbusObjectSkeleton.sgml
index c3b730b..c9c538a 100644
--- a/docs/reference/libmm-glib/tmpl/MmGdbusObjectSkeleton.sgml
+++ b/docs/reference/libmm-glib/tmpl/MmGdbusObjectSkeleton.sgml
@@ -73,15 +73,6 @@ MmGdbusObjectSkeleton
@interface_:
-<!-- ##### FUNCTION mm_gdbus_object_skeleton_set_modem_contacts ##### -->
-<para>
-
-</para>
-
-@object:
-@interface_:
-
-
<!-- ##### FUNCTION mm_gdbus_object_skeleton_set_modem_firmware ##### -->
<para>
diff --git a/docs/reference/libmm-glib/tmpl/mm-enums-types.sgml b/docs/reference/libmm-glib/tmpl/mm-enums-types.sgml
index 8146523..c056956 100644
--- a/docs/reference/libmm-glib/tmpl/mm-enums-types.sgml
+++ b/docs/reference/libmm-glib/tmpl/mm-enums-types.sgml
@@ -130,6 +130,15 @@ Flags and Enumerations
@Returns:
+<!-- ##### FUNCTION mm_modem_port_type_get_string ##### -->
+<para>
+
+</para>
+
+@val:
+@Returns:
+
+
<!-- ##### FUNCTION mm_modem_3gpp_registration_state_get_string ##### -->
<para>
diff --git a/docs/reference/libmm-glib/tmpl/mm-modem.sgml b/docs/reference/libmm-glib/tmpl/mm-modem.sgml
index a86c591..ecc3cc5 100644
--- a/docs/reference/libmm-glib/tmpl/mm-modem.sgml
+++ b/docs/reference/libmm-glib/tmpl/mm-modem.sgml
@@ -36,6 +36,14 @@ MMModem
@allowed:
@preferred:
+<!-- ##### STRUCT MMModemPortInfo ##### -->
+<para>
+
+</para>
+
+@name:
+@type:
+
<!-- ##### FUNCTION mm_modem_get_path ##### -->
<para>
@@ -220,6 +228,28 @@ MMModem
@Returns:
+<!-- ##### FUNCTION mm_modem_peek_ports ##### -->
+<para>
+
+</para>
+
+@self:
+@ports:
+@n_ports:
+@Returns:
+
+
+<!-- ##### FUNCTION mm_modem_get_ports ##### -->
+<para>
+
+</para>
+
+@self:
+@ports:
+@n_ports:
+@Returns:
+
+
<!-- ##### FUNCTION mm_modem_get_device ##### -->
<para>
@@ -911,3 +941,12 @@ MMModem
@Returns:
+<!-- ##### FUNCTION mm_modem_port_info_array_free ##### -->
+<para>
+
+</para>
+
+@array:
+@array_size:
+
+
diff --git a/gtester.make b/gtester.make
new file mode 100644
index 0000000..40348dc
--- /dev/null
+++ b/gtester.make
@@ -0,0 +1,91 @@
+
+GTESTER = gtester
+GTESTER_REPORT = gtester-report
+
+# initialize variables for unconditional += appending
+EXTRA_DIST =
+TEST_PROGS =
+
+### testing rules
+
+# test: run all tests in cwd and subdirs
+test: test-nonrecursive
+ @ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done
+
+# test-nonrecursive: run tests only in cwd
+test-nonrecursive: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+test-report perf-report full-report: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || { \
+ case $@ in \
+ test-report) test_options="-k";; \
+ perf-report) test_options="-k -m=perf";; \
+ full-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ elif test -n "${TEST_PROGS}" ; then \
+ ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ fi ; \
+ }
+ @ ignore_logdir=true ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+ ignore_logdir=false ; \
+ fi ; \
+ if test -d "$(top_srcdir)/.git" ; then \
+ REVISION=`git describe` ; \
+ else \
+ REVISION=$(VERSION) ; \
+ fi ; \
+ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done ; \
+ $$ignore_logdir || { \
+ echo '<?xml version="1.0"?>' > $@.xml ; \
+ echo '<report-collection>' >> $@.xml ; \
+ echo '<info>' >> $@.xml ; \
+ echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
+ echo ' <version>$(VERSION)</version>' >> $@.xml ; \
+ echo " <revision>$$REVISION</revision>" >> $@.xml ; \
+ echo '</info>' >> $@.xml ; \
+ for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+ sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+ done ; \
+ echo >> $@.xml ; \
+ echo '</report-collection>' >> $@.xml ; \
+ rm -rf "$$GTESTER_LOGDIR"/ ; \
+ ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+ }
+.PHONY: test test-report perf-report full-report test-nonrecursive
+
+.PHONY: lcov genlcov lcov-clean
+# use recursive makes in order to ignore errors during check
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) -k check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
+genlcov:
+ rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
+ $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
+ @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -rm -rf glib-lcov.info glib-lcov
+ -find -name '*.gcda' -print | xargs rm
+
+# run tests in cwd as part of make check
+check-local: test-nonrecursive
diff --git a/include/Makefile.am b/include/Makefile.am
index f0a69d9..424b51c 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -8,6 +8,7 @@ include_HEADERS = \
ModemManager-names.h \
ModemManager-enums.h \
ModemManager-errors.h \
+ ModemManager-version.h \
ModemManager.h
ModemManager-names.h: $(XMLS) $(top_srcdir)/build-aux/header-generator.xsl
@@ -15,3 +16,6 @@ ModemManager-names.h: $(XMLS) $(top_srcdir)/build-aux/header-generator.xsl
CLEANFILES = \
ModemManager-names.h
+
+EXTRA_DIST = \
+ ModemManager-version.h.in
diff --git a/include/Makefile.in b/include/Makefile.in
index f091a10..5968e98 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -80,7 +80,7 @@ build_triplet = @build@
host_triplet = @host@
subdir = include
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(include_HEADERS)
+ $(srcdir)/ModemManager-version.h.in $(include_HEADERS)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
@@ -96,7 +96,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = ModemManager-version.h
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -175,8 +175,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -200,7 +198,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -217,7 +214,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -249,14 +245,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -275,13 +277,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -356,11 +354,15 @@ include_HEADERS = \
ModemManager-names.h \
ModemManager-enums.h \
ModemManager-errors.h \
+ ModemManager-version.h \
ModemManager.h
CLEANFILES = \
ModemManager-names.h
+EXTRA_DIST = \
+ ModemManager-version.h.in
+
all: all-am
.SUFFIXES:
@@ -394,6 +396,8 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+ModemManager-version.h: $(top_builddir)/config.status $(srcdir)/ModemManager-version.h.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mostlyclean-libtool:
-rm -f *.lo
diff --git a/include/ModemManager-enums.h b/include/ModemManager-enums.h
index b268925..f90b223 100644
--- a/include/ModemManager-enums.h
+++ b/include/ModemManager-enums.h
@@ -395,6 +395,28 @@ typedef enum { /*< underscore_name=mm_modem_band >*/
} MMModemBand;
/**
+ * MMModemPortType:
+ * @MM_MODEM_PORT_TYPE_UNKNOWN: Unknown.
+ * @MM_MODEM_PORT_TYPE_NET: Net port.
+ * @MM_MODEM_PORT_TYPE_AT: AT port.
+ * @MM_MODEM_PORT_TYPE_QCDM: QCDM port.
+ * @MM_MODEM_PORT_TYPE_GPS: GPS port.
+ * @MM_MODEM_PORT_TYPE_QMI: QMI port.
+ * @MM_MODEM_PORT_TYPE_MBIM: MBIM port.
+ *
+ * Type of modem port.
+ */
+typedef enum { /*< underscore_name=mm_modem_port_type >*/
+ MM_MODEM_PORT_TYPE_UNKNOWN = 1,
+ MM_MODEM_PORT_TYPE_NET = 2,
+ MM_MODEM_PORT_TYPE_AT = 3,
+ MM_MODEM_PORT_TYPE_QCDM = 4,
+ MM_MODEM_PORT_TYPE_GPS = 5,
+ MM_MODEM_PORT_TYPE_QMI = 6,
+ MM_MODEM_PORT_TYPE_MBIM = 7
+} MMModemPortType;
+
+/**
* MMSmsPduType:
* @MM_SMS_PDU_TYPE_UNKNOWN: Unknown type.
* @MM_SMS_PDU_TYPE_DELIVER: SMS has been received from the SMSC.
diff --git a/include/ModemManager-names.h b/include/ModemManager-names.h
index 4386883..76ff1aa 100644
--- a/include/ModemManager-names.h
+++ b/include/ModemManager-names.h
@@ -56,7 +56,6 @@
#define MM_DBUS_INTERFACE_MODEM_LOCATION "org.freedesktop.ModemManager1.Modem.Location"
#define MM_DBUS_INTERFACE_MODEM_TIME "org.freedesktop.ModemManager1.Modem.Time"
#define MM_DBUS_INTERFACE_MODEM_FIRMWARE "org.freedesktop.ModemManager1.Modem.Firmware"
-#define MM_DBUS_INTERFACE_MODEM_CONTACTS "org.freedesktop.ModemManager1.Modem.Contacts"
/******************************
* Methods/Signals/Properties *
@@ -142,6 +141,7 @@
#define MM_MODEM_PROPERTY_DRIVERS "Drivers"
#define MM_MODEM_PROPERTY_PLUGIN "Plugin"
#define MM_MODEM_PROPERTY_PRIMARYPORT "PrimaryPort"
+#define MM_MODEM_PROPERTY_PORTS "Ports"
#define MM_MODEM_PROPERTY_EQUIPMENTIDENTIFIER "EquipmentIdentifier"
#define MM_MODEM_PROPERTY_UNLOCKREQUIRED "UnlockRequired"
#define MM_MODEM_PROPERTY_UNLOCKRETRIES "UnlockRetries"
@@ -225,18 +225,6 @@
#define MM_MODEM_FIRMWARE_METHOD_LIST "List"
#define MM_MODEM_FIRMWARE_METHOD_SELECT "Select"
-/*
- * Interface 'org.freedesktop.ModemManager1.Modem.Contacts'
- */
-
-#define MM_MODEM_CONTACTS_METHOD_ADD "Add"
-#define MM_MODEM_CONTACTS_METHOD_DELETE "Delete"
-#define MM_MODEM_CONTACTS_METHOD_GET "Get"
-#define MM_MODEM_CONTACTS_METHOD_LIST "List"
-#define MM_MODEM_CONTACTS_METHOD_FIND "Find"
-#define MM_MODEM_CONTACTS_METHOD_GETCOUNT "GetCount"
-#define MM_MODEM_CONTACTS_SIGNAL_ADDED "Added"
-#define MM_MODEM_CONTACTS_SIGNAL_DELETED "Deleted"
#endif /* _MODEM_MANAGER_NAMES_H_ */
diff --git a/include/ModemManager-version.h b/include/ModemManager-version.h
new file mode 100644
index 0000000..e38ff2a
--- /dev/null
+++ b/include/ModemManager-version.h
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2013 Lanedo GmbH
+ */
+
+#ifndef _MM_VERSION_H_
+#define _MM_VERSION_H_
+
+/**
+ * SECTION:mm-version
+ * @short_description: Version information in the API.
+ *
+ * This section defines types that are used to identify the ModemManager version.
+ **/
+
+/**
+ * MM_MAJOR_VERSION:
+ *
+ * Evaluates to the major version number of ModemManager which this source
+ * is compiled against.
+ */
+#define MM_MAJOR_VERSION (1)
+
+/**
+ * MM_MINOR_VERSION:
+ *
+ * Evaluates to the minor version number of ModemManager which this source
+ * is compiled against.
+ */
+#define MM_MINOR_VERSION (0)
+
+/**
+ * MM_MICRO_VERSION:
+ *
+ * Evaluates to the micro version number of ModemManager which this source
+ * compiled against.
+ */
+#define MM_MICRO_VERSION (0)
+
+/**
+ * MM_CHECK_VERSION:
+ * @major: major version (e.g. 1 for version 1.2.5)
+ * @minor: minor version (e.g. 2 for version 1.2.5)
+ * @micro: micro version (e.g. 5 for version 1.2.5)
+ *
+ * Returns: %TRUE if the version of the ModemManager header files
+ * is the same as or newer than the passed-in version.
+ */
+#define MM_CHECK_VERSION(major,minor,micro) \
+ (MM_MAJOR_VERSION > (major) || \
+ (MM_MAJOR_VERSION == (major) && MM_MINOR_VERSION > (minor)) || \
+ (MM_MAJOR_VERSION == (major) && MM_MINOR_VERSION == (minor) && MM_MICRO_VERSION >= (micro)))
+
+#endif /* _MM_VERSION_H_ */
diff --git a/include/ModemManager-version.h.in b/include/ModemManager-version.h.in
new file mode 100644
index 0000000..0cb4341
--- /dev/null
+++ b/include/ModemManager-version.h.in
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2013 Lanedo GmbH
+ */
+
+#ifndef _MM_VERSION_H_
+#define _MM_VERSION_H_
+
+/**
+ * SECTION:mm-version
+ * @short_description: Version information in the API.
+ *
+ * This section defines types that are used to identify the ModemManager version.
+ **/
+
+/**
+ * MM_MAJOR_VERSION:
+ *
+ * Evaluates to the major version number of ModemManager which this source
+ * is compiled against.
+ */
+#define MM_MAJOR_VERSION (@MM_MAJOR_VERSION@)
+
+/**
+ * MM_MINOR_VERSION:
+ *
+ * Evaluates to the minor version number of ModemManager which this source
+ * is compiled against.
+ */
+#define MM_MINOR_VERSION (@MM_MINOR_VERSION@)
+
+/**
+ * MM_MICRO_VERSION:
+ *
+ * Evaluates to the micro version number of ModemManager which this source
+ * compiled against.
+ */
+#define MM_MICRO_VERSION (@MM_MICRO_VERSION@)
+
+/**
+ * MM_CHECK_VERSION:
+ * @major: major version (e.g. 1 for version 1.2.5)
+ * @minor: minor version (e.g. 2 for version 1.2.5)
+ * @micro: micro version (e.g. 5 for version 1.2.5)
+ *
+ * Returns: %TRUE if the version of the ModemManager header files
+ * is the same as or newer than the passed-in version.
+ */
+#define MM_CHECK_VERSION(major,minor,micro) \
+ (MM_MAJOR_VERSION > (major) || \
+ (MM_MAJOR_VERSION == (major) && MM_MINOR_VERSION > (minor)) || \
+ (MM_MAJOR_VERSION == (major) && MM_MINOR_VERSION == (minor) && MM_MICRO_VERSION >= (micro)))
+
+#endif /* _MM_VERSION_H_ */
diff --git a/include/ModemManager.h b/include/ModemManager.h
index 5a30ebc..3a6eb43 100644
--- a/include/ModemManager.h
+++ b/include/ModemManager.h
@@ -1,6 +1,6 @@
/*
* ModemManager Interface Specification
- * version 0.6
+ * version 0.8
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -18,8 +18,9 @@
* Boston, MA 02110-1301 USA.
*
* Copyright (C) 2008 - 2009 Novell, Inc.
- * Copyright (C) 2009 - 2012 Red Hat, Inc.
- * Copyright (C) 2011 - 2012 Google, Inc.
+ * Copyright (C) 2009 - 2013 Red Hat, Inc.
+ * Copyright (C) 2011 - 2013 Google, Inc.
+ * Copyright (C) 2011 - 2013 Lanedo Gmbh
*/
#ifndef _MODEM_MANAGER_H_
@@ -36,5 +37,7 @@
/* Public header with errors */
#include <ModemManager-errors.h>
+/* Public header with version info */
+#include <ModemManager-version.h>
#endif /* _MODEM_MANAGER_H_ */
diff --git a/introspection/Makefile.am b/introspection/Makefile.am
index f29f8dc..cf91caf 100644
--- a/introspection/Makefile.am
+++ b/introspection/Makefile.am
@@ -1,6 +1,6 @@
# DBus Introspection files
XMLS = $(wildcard *.xml)
xmldir = $(datadir)/dbus-1/interfaces
-xml_DATA = $(filter-out all.xml, $(XMLS))
+xml_DATA = $(filter-out all.xml wip-*, $(XMLS))
EXTRA_DIST = $(XMLS)
diff --git a/introspection/Makefile.in b/introspection/Makefile.in
index 3eae466..03cb2c6 100644
--- a/introspection/Makefile.in
+++ b/introspection/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -156,8 +156,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -181,7 +179,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -198,7 +195,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -230,14 +226,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -256,13 +258,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -335,7 +333,7 @@ top_srcdir = @top_srcdir@
# DBus Introspection files
XMLS = $(wildcard *.xml)
xmldir = $(datadir)/dbus-1/interfaces
-xml_DATA = $(filter-out all.xml, $(XMLS))
+xml_DATA = $(filter-out all.xml wip-*, $(XMLS))
EXTRA_DIST = $(XMLS)
all: all-am
diff --git a/introspection/all.xml b/introspection/all.xml
index 1df239e..24acf59 100644
--- a/introspection/all.xml
+++ b/introspection/all.xml
@@ -14,6 +14,7 @@
<xi:include href="org.freedesktop.ModemManager1.Modem.Location.xml"/>
<xi:include href="org.freedesktop.ModemManager1.Modem.Time.xml"/>
<xi:include href="org.freedesktop.ModemManager1.Modem.Firmware.xml"/>
- <xi:include href="org.freedesktop.ModemManager1.Modem.Contacts.xml"/>
+
+ <!--xi:include href="wip-org.freedesktop.ModemManager1.Modem.Contacts.xml"/-->
</tp:spec>
diff --git a/introspection/org.freedesktop.ModemManager1.Bearer.xml b/introspection/org.freedesktop.ModemManager1.Bearer.xml
index e771a98..c0de028 100644
--- a/introspection/org.freedesktop.ModemManager1.Bearer.xml
+++ b/introspection/org.freedesktop.ModemManager1.Bearer.xml
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
- Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2012 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011-2012 Google, Inc.
+ Copyright (C) 2011-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml b/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml
index c191213..6030a37 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
- Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2011-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Location.xml b/introspection/org.freedesktop.ModemManager1.Modem.Location.xml
index a23ec75..3763f62 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Location.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Location.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml b/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml
index 0408039..2b21743 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml b/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml
index c4d3658..5616019 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml b/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml
index 50ab2fd..3298473 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.ModemCdma.xml b/introspection/org.freedesktop.ModemManager1.Modem.ModemCdma.xml
index 11808b7..f1acb7f 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.ModemCdma.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.ModemCdma.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Simple.xml b/introspection/org.freedesktop.ModemManager1.Modem.Simple.xml
index 1e7d6ac..937664b 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Simple.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Simple.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Time.xml b/introspection/org.freedesktop.ModemManager1.Modem.Time.xml
index 0558f02..d96f9b7 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Time.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Time.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 - 2012 Google, Inc.
+ Copyright (C) 2011-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.xml b/introspection/org.freedesktop.ModemManager1.Modem.xml
index 3f9af1a..b264ab4 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
@@ -327,6 +327,16 @@
<property name="PrimaryPort" type="s" access="read" />
<!--
+ Ports:
+
+ The list of ports in the modem, given as an array of string and unsigned
+ integer pairs. The string is the port name or path, and the integer is
+ the port type given as a
+ <link linkend="MMModemPortType">MMModemPortType</link> value.
+ -->
+ <property name="Ports" type="a(su)" access="read" />
+
+ <!--
EquipmentIdentifier:
The identity of the device.
diff --git a/introspection/org.freedesktop.ModemManager1.Sim.xml b/introspection/org.freedesktop.ModemManager1.Sim.xml
index 14f9077..9979472 100644
--- a/introspection/org.freedesktop.ModemManager1.Sim.xml
+++ b/introspection/org.freedesktop.ModemManager1.Sim.xml
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
- Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2011-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Sms.xml b/introspection/org.freedesktop.ModemManager1.Sms.xml
index 586c2fd..000caad 100644
--- a/introspection/org.freedesktop.ModemManager1.Sms.xml
+++ b/introspection/org.freedesktop.ModemManager1.Sms.xml
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
- Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2011-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.xml b/introspection/org.freedesktop.ModemManager1.xml
index b782177..2ecd026 100644
--- a/introspection/org.freedesktop.ModemManager1.xml
+++ b/introspection/org.freedesktop.ModemManager1.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Contacts.xml b/introspection/wip-org.freedesktop.ModemManager1.Modem.Contacts.xml
index da681b4..5c0b931 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Contacts.xml
+++ b/introspection/wip-org.freedesktop.ModemManager1.Modem.Contacts.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- ModemManager 0.6 Interface Specification
+ ModemManager 1.0 Interface Specification
Copyright (C) 2008 Novell, Inc.
- Copyright (C) 2008-2011 Red Hat, Inc.
- Copyright (C) 2011 The Chromium OS Authors
- Copyright (C) 2011 Google, Inc.
+ Copyright (C) 2008-2013 Red Hat, Inc.
+ Copyright (C) 2011-2013 Google, Inc.
+ Copyright (C) 2011-2013 Lanedo GmbH
-->
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
diff --git a/libmm-glib/Makefile.am b/libmm-glib/Makefile.am
index b189b91..6c1e9ba 100644
--- a/libmm-glib/Makefile.am
+++ b/libmm-glib/Makefile.am
@@ -6,6 +6,7 @@ libmm_glib_la_SOURCES = \
libmm-glib.h \
mm-helpers.h \
mm-helper-types.h \
+ mm-helper-types.c \
mm-manager.h \
mm-manager.c \
mm-object.h \
@@ -75,6 +76,9 @@ libmm_glib_la_LIBADD = \
${top_builddir}/libmm-glib/generated/libmm-generated.la \
$(LIBMM_GLIB_LIBS)
+libmm_glib_la_LDFLAGS = \
+ -version-info $(MM_GLIB_LT_CURRENT):$(MM_GLIB_LT_REVISION):$(MM_GLIB_LT_AGE)
+
includedir = @includedir@/libmm-glib
include_HEADERS = \
libmm-glib.h \
diff --git a/libmm-glib/Makefile.in b/libmm-glib/Makefile.in
index 830f3ed..2cd295c 100644
--- a/libmm-glib/Makefile.in
+++ b/libmm-glib/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -132,9 +132,9 @@ am__DEPENDENCIES_1 =
libmm_glib_la_DEPENDENCIES = \
${top_builddir}/libmm-glib/generated/libmm-generated.la \
$(am__DEPENDENCIES_1)
-am_libmm_glib_la_OBJECTS = libmm_glib_la-mm-manager.lo \
- libmm_glib_la-mm-object.lo libmm_glib_la-mm-modem.lo \
- libmm_glib_la-mm-modem-3gpp.lo \
+am_libmm_glib_la_OBJECTS = libmm_glib_la-mm-helper-types.lo \
+ libmm_glib_la-mm-manager.lo libmm_glib_la-mm-object.lo \
+ libmm_glib_la-mm-modem.lo libmm_glib_la-mm-modem-3gpp.lo \
libmm_glib_la-mm-modem-3gpp-ussd.lo \
libmm_glib_la-mm-modem-cdma.lo \
libmm_glib_la-mm-modem-simple.lo \
@@ -160,6 +160,9 @@ AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
+libmm_glib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libmm_glib_la_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -273,8 +276,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -298,7 +299,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -315,7 +315,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -347,14 +346,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -373,13 +378,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -454,6 +455,7 @@ libmm_glib_la_SOURCES = \
libmm-glib.h \
mm-helpers.h \
mm-helper-types.h \
+ mm-helper-types.c \
mm-manager.h \
mm-manager.c \
mm-object.h \
@@ -523,6 +525,9 @@ libmm_glib_la_LIBADD = \
${top_builddir}/libmm-glib/generated/libmm-generated.la \
$(LIBMM_GLIB_LIBS)
+libmm_glib_la_LDFLAGS = \
+ -version-info $(MM_GLIB_LT_CURRENT):$(MM_GLIB_LT_REVISION):$(MM_GLIB_LT_AGE)
+
include_HEADERS = \
libmm-glib.h \
mm-helper-types.h \
@@ -625,7 +630,7 @@ clean-libLTLIBRARIES:
}
libmm-glib.la: $(libmm_glib_la_OBJECTS) $(libmm_glib_la_DEPENDENCIES) $(EXTRA_libmm_glib_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libmm_glib_la_OBJECTS) $(libmm_glib_la_LIBADD) $(LIBS)
+ $(AM_V_CCLD)$(libmm_glib_la_LINK) -rpath $(libdir) $(libmm_glib_la_OBJECTS) $(libmm_glib_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -638,6 +643,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmm_glib_la-mm-bearer.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmm_glib_la-mm-common-helpers.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmm_glib_la-mm-firmware-properties.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmm_glib_la-mm-helper-types.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmm_glib_la-mm-location-3gpp.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmm_glib_la-mm-location-cdma-bs.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmm_glib_la-mm-location-gps-nmea.Plo@am__quote@
@@ -685,6 +691,13 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+libmm_glib_la-mm-helper-types.lo: mm-helper-types.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmm_glib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmm_glib_la-mm-helper-types.lo -MD -MP -MF $(DEPDIR)/libmm_glib_la-mm-helper-types.Tpo -c -o libmm_glib_la-mm-helper-types.lo `test -f 'mm-helper-types.c' || echo '$(srcdir)/'`mm-helper-types.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmm_glib_la-mm-helper-types.Tpo $(DEPDIR)/libmm_glib_la-mm-helper-types.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mm-helper-types.c' object='libmm_glib_la-mm-helper-types.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmm_glib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmm_glib_la-mm-helper-types.lo `test -f 'mm-helper-types.c' || echo '$(srcdir)/'`mm-helper-types.c
+
libmm_glib_la-mm-manager.lo: mm-manager.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmm_glib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmm_glib_la-mm-manager.lo -MD -MP -MF $(DEPDIR)/libmm_glib_la-mm-manager.Tpo -c -o libmm_glib_la-mm-manager.lo `test -f 'mm-manager.c' || echo '$(srcdir)/'`mm-manager.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmm_glib_la-mm-manager.Tpo $(DEPDIR)/libmm_glib_la-mm-manager.Plo
diff --git a/libmm-glib/generated/Makefile.am b/libmm-glib/generated/Makefile.am
index c0429b1..b54b234 100644
--- a/libmm-glib/generated/Makefile.am
+++ b/libmm-glib/generated/Makefile.am
@@ -30,7 +30,6 @@ GENERATED_DOC = \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
- mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
@@ -95,7 +94,6 @@ mm_gdbus_modem_generated = \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
- mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
@@ -106,7 +104,6 @@ mm_gdbus_modem_deps = \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Location.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Time.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml \
- $(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Contacts.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
diff --git a/libmm-glib/generated/Makefile.in b/libmm-glib/generated/Makefile.in
index 66ff5f6..9671e1e 100644
--- a/libmm-glib/generated/Makefile.in
+++ b/libmm-glib/generated/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -216,8 +216,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -241,7 +239,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -258,7 +255,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -290,14 +286,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -316,13 +318,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -421,7 +419,6 @@ GENERATED_DOC = \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
- mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
@@ -445,7 +442,6 @@ mm_gdbus_modem_generated = \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
- mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
@@ -457,7 +453,6 @@ mm_gdbus_modem_deps = \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Location.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Time.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml \
- $(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Contacts.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.ModemCdma.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml \
$(top_srcdir)/introspection/org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \
diff --git a/libmm-glib/generated/mm-enums-types.h b/libmm-glib/generated/mm-enums-types.h
index c95b8e7..9d132e4 100644
--- a/libmm-glib/generated/mm-enums-types.h
+++ b/libmm-glib/generated/mm-enums-types.h
@@ -154,6 +154,22 @@ const gchar *mm_modem_band_get_string (MMModemBand val);
gchar *mm_modem_band_build_string_from_mask (MMModemBand mask);
#endif
+GType mm_modem_port_type_get_type (void) G_GNUC_CONST;
+#define MM_TYPE_MODEM_PORT_TYPE (mm_modem_port_type_get_type ())
+
+/* Define type-specific symbols */
+#undef __MM_IS_ENUM__
+#undef __MM_IS_FLAGS__
+#define __MM_IS_ENUM__
+
+#if defined __MM_IS_ENUM__
+const gchar *mm_modem_port_type_get_string (MMModemPortType val);
+#endif
+
+#if defined __MM_IS_FLAGS__
+gchar *mm_modem_port_type_build_string_from_mask (MMModemPortType mask);
+#endif
+
GType mm_sms_pdu_type_get_type (void) G_GNUC_CONST;
#define MM_TYPE_SMS_PDU_TYPE (mm_sms_pdu_type_get_type ())
diff --git a/libmm-glib/generated/mm-gdbus-bearer.h b/libmm-glib/generated/mm-gdbus-bearer.h
index 2d8b36b..5d2c096 100644
--- a/libmm-glib/generated/mm-gdbus-bearer.h
+++ b/libmm-glib/generated/mm-gdbus-bearer.h
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.36.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.36.3. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
diff --git a/libmm-glib/generated/mm-gdbus-manager.h b/libmm-glib/generated/mm-gdbus-manager.h
index 85d3b66..f30af97 100644
--- a/libmm-glib/generated/mm-gdbus-manager.h
+++ b/libmm-glib/generated/mm-gdbus-manager.h
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.36.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.36.3. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
diff --git a/libmm-glib/generated/mm-gdbus-modem.h b/libmm-glib/generated/mm-gdbus-modem.h
index 4545c82..3c80357 100644
--- a/libmm-glib/generated/mm-gdbus-modem.h
+++ b/libmm-glib/generated/mm-gdbus-modem.h
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.36.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.36.3. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
@@ -112,6 +112,8 @@ struct _MmGdbusModemIface
const gchar * (*get_plugin) (MmGdbusModem *object);
+ GVariant * (*get_ports) (MmGdbusModem *object);
+
guint (*get_power_state) (MmGdbusModem *object);
const gchar * (*get_primary_port) (MmGdbusModem *object);
@@ -466,6 +468,10 @@ const gchar *mm_gdbus_modem_get_primary_port (MmGdbusModem *object);
gchar *mm_gdbus_modem_dup_primary_port (MmGdbusModem *object);
void mm_gdbus_modem_set_primary_port (MmGdbusModem *object, const gchar *value);
+GVariant *mm_gdbus_modem_get_ports (MmGdbusModem *object);
+GVariant *mm_gdbus_modem_dup_ports (MmGdbusModem *object);
+void mm_gdbus_modem_set_ports (MmGdbusModem *object, GVariant *value);
+
const gchar *mm_gdbus_modem_get_equipment_identifier (MmGdbusModem *object);
gchar *mm_gdbus_modem_dup_equipment_identifier (MmGdbusModem *object);
void mm_gdbus_modem_set_equipment_identifier (MmGdbusModem *object, const gchar *value);
@@ -1424,325 +1430,6 @@ MmGdbusModemFirmware *mm_gdbus_modem_firmware_skeleton_new (void);
/* ------------------------------------------------------------------------ */
-/* Declarations for org.freedesktop.ModemManager1.Modem.Contacts */
-
-#define MM_GDBUS_TYPE_MODEM_CONTACTS (mm_gdbus_modem_contacts_get_type ())
-#define MM_GDBUS_MODEM_CONTACTS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MM_GDBUS_TYPE_MODEM_CONTACTS, MmGdbusModemContacts))
-#define MM_GDBUS_IS_MODEM_CONTACTS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MM_GDBUS_TYPE_MODEM_CONTACTS))
-#define MM_GDBUS_MODEM_CONTACTS_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), MM_GDBUS_TYPE_MODEM_CONTACTS, MmGdbusModemContactsIface))
-
-struct _MmGdbusModemContacts;
-typedef struct _MmGdbusModemContacts MmGdbusModemContacts;
-typedef struct _MmGdbusModemContactsIface MmGdbusModemContactsIface;
-
-struct _MmGdbusModemContactsIface
-{
- GTypeInterface parent_iface;
-
-
- gboolean (*handle_add) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- GVariant *arg_properties);
-
- gboolean (*handle_delete) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- guint arg_index);
-
- gboolean (*handle_find) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- const gchar *arg_pattern);
-
- gboolean (*handle_get) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- guint arg_index);
-
- gboolean (*handle_get_count) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation);
-
- gboolean (*handle_list) (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation);
-
- void (*added) (
- MmGdbusModemContacts *object,
- guint arg_index,
- GVariant *arg_properties);
-
- void (*deleted) (
- MmGdbusModemContacts *object,
- guint arg_index);
-
-};
-
-GType mm_gdbus_modem_contacts_get_type (void) G_GNUC_CONST;
-
-GDBusInterfaceInfo *mm_gdbus_modem_contacts_interface_info (void);
-guint mm_gdbus_modem_contacts_override_properties (GObjectClass *klass, guint property_id_begin);
-
-
-/* D-Bus method call completion functions: */
-void mm_gdbus_modem_contacts_complete_add (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- guint index);
-
-void mm_gdbus_modem_contacts_complete_delete (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation);
-
-void mm_gdbus_modem_contacts_complete_get (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- GVariant *properties);
-
-void mm_gdbus_modem_contacts_complete_list (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- GVariant *results);
-
-void mm_gdbus_modem_contacts_complete_find (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- GVariant *results);
-
-void mm_gdbus_modem_contacts_complete_get_count (
- MmGdbusModemContacts *object,
- GDBusMethodInvocation *invocation,
- guint count);
-
-
-
-/* D-Bus signal emissions functions: */
-void mm_gdbus_modem_contacts_emit_added (
- MmGdbusModemContacts *object,
- guint arg_index,
- GVariant *arg_properties);
-
-void mm_gdbus_modem_contacts_emit_deleted (
- MmGdbusModemContacts *object,
- guint arg_index);
-
-
-
-/* D-Bus method calls: */
-void mm_gdbus_modem_contacts_call_add (
- MmGdbusModemContacts *proxy,
- GVariant *arg_properties,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-
-gboolean mm_gdbus_modem_contacts_call_add_finish (
- MmGdbusModemContacts *proxy,
- guint *out_index,
- GAsyncResult *res,
- GError **error);
-
-gboolean mm_gdbus_modem_contacts_call_add_sync (
- MmGdbusModemContacts *proxy,
- GVariant *arg_properties,
- guint *out_index,
- GCancellable *cancellable,
- GError **error);
-
-void mm_gdbus_modem_contacts_call_delete (
- MmGdbusModemContacts *proxy,
- guint arg_index,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-
-gboolean mm_gdbus_modem_contacts_call_delete_finish (
- MmGdbusModemContacts *proxy,
- GAsyncResult *res,
- GError **error);
-
-gboolean mm_gdbus_modem_contacts_call_delete_sync (
- MmGdbusModemContacts *proxy,
- guint arg_index,
- GCancellable *cancellable,
- GError **error);
-
-void mm_gdbus_modem_contacts_call_get (
- MmGdbusModemContacts *proxy,
- guint arg_index,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-
-gboolean mm_gdbus_modem_contacts_call_get_finish (
- MmGdbusModemContacts *proxy,
- GVariant **out_properties,
- GAsyncResult *res,
- GError **error);
-
-gboolean mm_gdbus_modem_contacts_call_get_sync (
- MmGdbusModemContacts *proxy,
- guint arg_index,
- GVariant **out_properties,
- GCancellable *cancellable,
- GError **error);
-
-void mm_gdbus_modem_contacts_call_list (
- MmGdbusModemContacts *proxy,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-
-gboolean mm_gdbus_modem_contacts_call_list_finish (
- MmGdbusModemContacts *proxy,
- GVariant **out_results,
- GAsyncResult *res,
- GError **error);
-
-gboolean mm_gdbus_modem_contacts_call_list_sync (
- MmGdbusModemContacts *proxy,
- GVariant **out_results,
- GCancellable *cancellable,
- GError **error);
-
-void mm_gdbus_modem_contacts_call_find (
- MmGdbusModemContacts *proxy,
- const gchar *arg_pattern,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-
-gboolean mm_gdbus_modem_contacts_call_find_finish (
- MmGdbusModemContacts *proxy,
- GVariant **out_results,
- GAsyncResult *res,
- GError **error);
-
-gboolean mm_gdbus_modem_contacts_call_find_sync (
- MmGdbusModemContacts *proxy,
- const gchar *arg_pattern,
- GVariant **out_results,
- GCancellable *cancellable,
- GError **error);
-
-void mm_gdbus_modem_contacts_call_get_count (
- MmGdbusModemContacts *proxy,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-
-gboolean mm_gdbus_modem_contacts_call_get_count_finish (
- MmGdbusModemContacts *proxy,
- guint *out_count,
- GAsyncResult *res,
- GError **error);
-
-gboolean mm_gdbus_modem_contacts_call_get_count_sync (
- MmGdbusModemContacts *proxy,
- guint *out_count,
- GCancellable *cancellable,
- GError **error);
-
-
-
-/* ---- */
-
-#define MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY (mm_gdbus_modem_contacts_proxy_get_type ())
-#define MM_GDBUS_MODEM_CONTACTS_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY, MmGdbusModemContactsProxy))
-#define MM_GDBUS_MODEM_CONTACTS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY, MmGdbusModemContactsProxyClass))
-#define MM_GDBUS_MODEM_CONTACTS_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY, MmGdbusModemContactsProxyClass))
-#define MM_GDBUS_IS_MODEM_CONTACTS_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY))
-#define MM_GDBUS_IS_MODEM_CONTACTS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY))
-
-typedef struct _MmGdbusModemContactsProxy MmGdbusModemContactsProxy;
-typedef struct _MmGdbusModemContactsProxyClass MmGdbusModemContactsProxyClass;
-typedef struct _MmGdbusModemContactsProxyPrivate MmGdbusModemContactsProxyPrivate;
-
-struct _MmGdbusModemContactsProxy
-{
- /*< private >*/
- GDBusProxy parent_instance;
- MmGdbusModemContactsProxyPrivate *priv;
-};
-
-struct _MmGdbusModemContactsProxyClass
-{
- GDBusProxyClass parent_class;
-};
-
-GType mm_gdbus_modem_contacts_proxy_get_type (void) G_GNUC_CONST;
-
-void mm_gdbus_modem_contacts_proxy_new (
- GDBusConnection *connection,
- GDBusProxyFlags flags,
- const gchar *name,
- const gchar *object_path,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-MmGdbusModemContacts *mm_gdbus_modem_contacts_proxy_new_finish (
- GAsyncResult *res,
- GError **error);
-MmGdbusModemContacts *mm_gdbus_modem_contacts_proxy_new_sync (
- GDBusConnection *connection,
- GDBusProxyFlags flags,
- const gchar *name,
- const gchar *object_path,
- GCancellable *cancellable,
- GError **error);
-
-void mm_gdbus_modem_contacts_proxy_new_for_bus (
- GBusType bus_type,
- GDBusProxyFlags flags,
- const gchar *name,
- const gchar *object_path,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-MmGdbusModemContacts *mm_gdbus_modem_contacts_proxy_new_for_bus_finish (
- GAsyncResult *res,
- GError **error);
-MmGdbusModemContacts *mm_gdbus_modem_contacts_proxy_new_for_bus_sync (
- GBusType bus_type,
- GDBusProxyFlags flags,
- const gchar *name,
- const gchar *object_path,
- GCancellable *cancellable,
- GError **error);
-
-
-/* ---- */
-
-#define MM_GDBUS_TYPE_MODEM_CONTACTS_SKELETON (mm_gdbus_modem_contacts_skeleton_get_type ())
-#define MM_GDBUS_MODEM_CONTACTS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MM_GDBUS_TYPE_MODEM_CONTACTS_SKELETON, MmGdbusModemContactsSkeleton))
-#define MM_GDBUS_MODEM_CONTACTS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), MM_GDBUS_TYPE_MODEM_CONTACTS_SKELETON, MmGdbusModemContactsSkeletonClass))
-#define MM_GDBUS_MODEM_CONTACTS_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MM_GDBUS_TYPE_MODEM_CONTACTS_SKELETON, MmGdbusModemContactsSkeletonClass))
-#define MM_GDBUS_IS_MODEM_CONTACTS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MM_GDBUS_TYPE_MODEM_CONTACTS_SKELETON))
-#define MM_GDBUS_IS_MODEM_CONTACTS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MM_GDBUS_TYPE_MODEM_CONTACTS_SKELETON))
-
-typedef struct _MmGdbusModemContactsSkeleton MmGdbusModemContactsSkeleton;
-typedef struct _MmGdbusModemContactsSkeletonClass MmGdbusModemContactsSkeletonClass;
-typedef struct _MmGdbusModemContactsSkeletonPrivate MmGdbusModemContactsSkeletonPrivate;
-
-struct _MmGdbusModemContactsSkeleton
-{
- /*< private >*/
- GDBusInterfaceSkeleton parent_instance;
- MmGdbusModemContactsSkeletonPrivate *priv;
-};
-
-struct _MmGdbusModemContactsSkeletonClass
-{
- GDBusInterfaceSkeletonClass parent_class;
-};
-
-GType mm_gdbus_modem_contacts_skeleton_get_type (void) G_GNUC_CONST;
-
-MmGdbusModemContacts *mm_gdbus_modem_contacts_skeleton_new (void);
-
-
-/* ------------------------------------------------------------------------ */
/* Declarations for org.freedesktop.ModemManager1.Modem.ModemCdma */
#define MM_GDBUS_TYPE_MODEM_CDMA (mm_gdbus_modem_cdma_get_type ())
@@ -2652,7 +2339,6 @@ MmGdbusModemMessaging *mm_gdbus_object_get_modem_messaging (MmGdbusObject *objec
MmGdbusModemLocation *mm_gdbus_object_get_modem_location (MmGdbusObject *object);
MmGdbusModemTime *mm_gdbus_object_get_modem_time (MmGdbusObject *object);
MmGdbusModemFirmware *mm_gdbus_object_get_modem_firmware (MmGdbusObject *object);
-MmGdbusModemContacts *mm_gdbus_object_get_modem_contacts (MmGdbusObject *object);
MmGdbusModemCdma *mm_gdbus_object_get_modem_cdma (MmGdbusObject *object);
MmGdbusModem3gpp *mm_gdbus_object_get_modem3gpp (MmGdbusObject *object);
MmGdbusModem3gppUssd *mm_gdbus_object_get_modem3gpp_ussd (MmGdbusObject *object);
@@ -2662,7 +2348,6 @@ MmGdbusModemMessaging *mm_gdbus_object_peek_modem_messaging (MmGdbusObject *obje
MmGdbusModemLocation *mm_gdbus_object_peek_modem_location (MmGdbusObject *object);
MmGdbusModemTime *mm_gdbus_object_peek_modem_time (MmGdbusObject *object);
MmGdbusModemFirmware *mm_gdbus_object_peek_modem_firmware (MmGdbusObject *object);
-MmGdbusModemContacts *mm_gdbus_object_peek_modem_contacts (MmGdbusObject *object);
MmGdbusModemCdma *mm_gdbus_object_peek_modem_cdma (MmGdbusObject *object);
MmGdbusModem3gpp *mm_gdbus_object_peek_modem3gpp (MmGdbusObject *object);
MmGdbusModem3gppUssd *mm_gdbus_object_peek_modem3gpp_ussd (MmGdbusObject *object);
@@ -2724,7 +2409,6 @@ void mm_gdbus_object_skeleton_set_modem_messaging (MmGdbusObjectSkeleton *object
void mm_gdbus_object_skeleton_set_modem_location (MmGdbusObjectSkeleton *object, MmGdbusModemLocation *interface_);
void mm_gdbus_object_skeleton_set_modem_time (MmGdbusObjectSkeleton *object, MmGdbusModemTime *interface_);
void mm_gdbus_object_skeleton_set_modem_firmware (MmGdbusObjectSkeleton *object, MmGdbusModemFirmware *interface_);
-void mm_gdbus_object_skeleton_set_modem_contacts (MmGdbusObjectSkeleton *object, MmGdbusModemContacts *interface_);
void mm_gdbus_object_skeleton_set_modem_cdma (MmGdbusObjectSkeleton *object, MmGdbusModemCdma *interface_);
void mm_gdbus_object_skeleton_set_modem3gpp (MmGdbusObjectSkeleton *object, MmGdbusModem3gpp *interface_);
void mm_gdbus_object_skeleton_set_modem3gpp_ussd (MmGdbusObjectSkeleton *object, MmGdbusModem3gppUssd *interface_);
diff --git a/libmm-glib/generated/mm-gdbus-sim.h b/libmm-glib/generated/mm-gdbus-sim.h
index 9353037..b318a6d 100644
--- a/libmm-glib/generated/mm-gdbus-sim.h
+++ b/libmm-glib/generated/mm-gdbus-sim.h
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.36.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.36.3. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
diff --git a/libmm-glib/generated/mm-gdbus-sms.h b/libmm-glib/generated/mm-gdbus-sms.h
index 9167ce2..c965eb2 100644
--- a/libmm-glib/generated/mm-gdbus-sms.h
+++ b/libmm-glib/generated/mm-gdbus-sms.h
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.36.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.36.3. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
diff --git a/libmm-glib/mm-common-helpers.c b/libmm-glib/mm-common-helpers.c
index 838e09f..740b316 100644
--- a/libmm-glib/mm-common-helpers.c
+++ b/libmm-glib/mm-common-helpers.c
@@ -78,6 +78,31 @@ mm_common_build_bands_string (const MMModemBand *bands,
}
gchar *
+mm_common_build_ports_string (const MMModemPortInfo *ports,
+ guint n_ports)
+{
+ gboolean first = TRUE;
+ GString *str;
+ guint i;
+
+ if (!ports || !n_ports)
+ return g_strdup ("none");
+
+ str = g_string_new ("");
+ for (i = 0; i < n_ports; i++) {
+ g_string_append_printf (str, "%s%s (%s)",
+ first ? "" : ", ",
+ ports[i].name,
+ mm_modem_port_type_get_string (ports[i].type));
+
+ if (first)
+ first = FALSE;
+ }
+
+ return g_string_free (str, FALSE);
+}
+
+gchar *
mm_common_build_sms_storages_string (const MMSmsStorage *storages,
guint n_storages)
{
@@ -194,6 +219,72 @@ mm_common_sms_storages_garray_to_variant (GArray *array)
return mm_common_sms_storages_array_to_variant (NULL, 0);
}
+GArray *
+mm_common_ports_variant_to_garray (GVariant *variant)
+{
+ GArray *array = NULL;
+
+ if (variant) {
+ guint i;
+ guint n;
+
+ n = g_variant_n_children (variant);
+
+ if (n > 0) {
+ array = g_array_sized_new (FALSE, FALSE, sizeof (MMModemPortInfo), n);
+ for (i = 0; i < n; i++) {
+ MMModemPortInfo info;
+
+ g_variant_get_child (variant, i, "(su)", &info.name, &info.type);
+ g_array_append_val (array, info);
+ }
+ }
+ }
+
+ return array;
+}
+
+MMModemPortInfo *
+mm_common_ports_variant_to_array (GVariant *variant,
+ guint *n_ports)
+{
+ GArray *array;
+
+ array = mm_common_ports_variant_to_garray (variant);
+ if (n_ports)
+ *n_ports = array->len;
+ return (MMModemPortInfo *) g_array_free (array, FALSE);
+}
+
+GVariant *
+mm_common_ports_array_to_variant (const MMModemPortInfo *ports,
+ guint n_ports)
+{
+ GVariantBuilder builder;
+ guint i;
+
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(su)"));
+
+ for (i = 0; i < n_ports; i++) {
+ GVariant *tuple[2];
+
+ tuple[0] = g_variant_new_string (ports[i].name);
+ tuple[1] = g_variant_new_uint32 ((guint32)ports[i].type);
+ g_variant_builder_add_value (&builder, g_variant_new_tuple (tuple, 2));
+ }
+ return g_variant_builder_end (&builder);
+}
+
+GVariant *
+mm_common_ports_garray_to_variant (GArray *array)
+{
+ if (array)
+ return mm_common_ports_array_to_variant ((const MMModemPortInfo *)array->data,
+ array->len);
+
+ return mm_common_ports_array_to_variant (NULL, 0);
+}
+
MMModemCapability
mm_common_get_capabilities_from_string (const gchar *str,
GError **error)
diff --git a/libmm-glib/mm-common-helpers.h b/libmm-glib/mm-common-helpers.h
index 161d903..c9e7c2c 100644
--- a/libmm-glib/mm-common-helpers.h
+++ b/libmm-glib/mm-common-helpers.h
@@ -32,6 +32,9 @@ gchar *mm_common_build_capabilities_string (const MMModemCapability *capabilitie
gchar *mm_common_build_bands_string (const MMModemBand *bands,
guint n_bands);
+gchar *mm_common_build_ports_string (const MMModemPortInfo *ports,
+ guint n_ports);
+
gchar *mm_common_build_sms_storages_string (const MMSmsStorage *storages,
guint n_storages);
@@ -57,6 +60,13 @@ MMBearerAllowedAuth mm_common_get_allowed_auth_from_string (const gchar *str,
MMSmsStorage mm_common_get_sms_storage_from_string (const gchar *str,
GError **error);
+GArray *mm_common_ports_variant_to_garray (GVariant *variant);
+MMModemPortInfo *mm_common_ports_variant_to_array (GVariant *variant,
+ guint *n_ports);
+GVariant *mm_common_ports_array_to_variant (const MMModemPortInfo *ports,
+ guint n_ports);
+GVariant *mm_common_ports_garray_to_variant (GArray *array);
+
GArray *mm_common_sms_storages_variant_to_garray (GVariant *variant);
MMSmsStorage *mm_common_sms_storages_variant_to_array (GVariant *variant,
guint *n_storages);
diff --git a/libmm-glib/mm-firmware-properties.c b/libmm-glib/mm-firmware-properties.c
index c145122..b9d9572 100644
--- a/libmm-glib/mm-firmware-properties.c
+++ b/libmm-glib/mm-firmware-properties.c
@@ -255,8 +255,6 @@ mm_firmware_properties_get_dictionary (MMFirmwareProperties *self)
{
GVariantBuilder builder;
- g_return_val_if_fail (MM_IS_FIRMWARE_PROPERTIES (self), NULL);
-
/* We do allow NULL */
if (!self)
return NULL;
diff --git a/libmm-glib/mm-helper-types.c b/libmm-glib/mm-helper-types.c
new file mode 100644
index 0000000..1ac3610
--- /dev/null
+++ b/libmm-glib/mm-helper-types.c
@@ -0,0 +1,41 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * libmm -- Access modem status & information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2013 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#include "mm-helper-types.h"
+
+/**
+ * mm_modem_port_info_array_free:
+ * @array: an array of #MMModemPortInfo values.
+ * @array_size: length of @array.
+ *
+ * Frees an array of #MMModemPortInfo values.
+ */
+void
+mm_modem_port_info_array_free (MMModemPortInfo *array,
+ guint array_size)
+{
+ guint i;
+
+ for (i = 0; i < array_size; i++)
+ g_free (array[i].name);
+ g_free (array);
+}
diff --git a/libmm-glib/mm-helper-types.h b/libmm-glib/mm-helper-types.h
index 129b01d..c235ff6 100644
--- a/libmm-glib/mm-helper-types.h
+++ b/libmm-glib/mm-helper-types.h
@@ -21,6 +21,7 @@
*/
#include <ModemManager.h>
+#include <glib.h>
#if !defined (__LIBMM_GLIB_H_INSIDE__) && !defined (LIBMM_GLIB_COMPILATION)
#error "Only <libmm-glib.h> can be included directly."
@@ -41,4 +42,19 @@ typedef struct _MMModemModeCombination {
MMModemMode preferred;
} MMModemModeCombination;
+/**
+ * MMModemPortInfo:
+ * @name: Name of the port.
+ * @type: A #MMModemPortType value.
+ *
+ * Information of a given port.
+ */
+typedef struct _MMModemPortInfo {
+ gchar *name;
+ MMModemPortType type;
+} MMModemPortInfo;
+
+void mm_modem_port_info_array_free (MMModemPortInfo *array,
+ guint array_size);
+
#endif /* _MM_HELPER_TYPES_H_ */
diff --git a/libmm-glib/mm-manager.c b/libmm-glib/mm-manager.c
index efea9b0..81c6e4f 100644
--- a/libmm-glib/mm-manager.c
+++ b/libmm-glib/mm-manager.c
@@ -71,11 +71,11 @@ get_proxy_type (GDBusObjectManagerClient *manager,
g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.Location", GSIZE_TO_POINTER (MM_TYPE_MODEM_LOCATION));
g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.Time", GSIZE_TO_POINTER (MM_TYPE_MODEM_TIME));
g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.Firmware", GSIZE_TO_POINTER (MM_TYPE_MODEM_FIRMWARE));
- g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.Contacts", GSIZE_TO_POINTER (MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY));
g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.ModemCdma", GSIZE_TO_POINTER (MM_TYPE_MODEM_CDMA));
g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.Modem3gpp", GSIZE_TO_POINTER (MM_TYPE_MODEM_3GPP));
g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd", GSIZE_TO_POINTER (MM_TYPE_MODEM_3GPP_USSD));
g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.Simple", GSIZE_TO_POINTER (MM_TYPE_MODEM_SIMPLE));
+ /* g_hash_table_insert (lookup_hash, "org.freedesktop.ModemManager1.Modem.Contacts", GSIZE_TO_POINTER (MM_GDBUS_TYPE_MODEM_CONTACTS_PROXY)); */
g_once_init_leave (&once_init_value, 1);
}
diff --git a/libmm-glib/mm-modem.c b/libmm-glib/mm-modem.c
index 95685e6..410b559 100644
--- a/libmm-glib/mm-modem.c
+++ b/libmm-glib/mm-modem.c
@@ -44,6 +44,11 @@
G_DEFINE_TYPE (MMModem, mm_modem, MM_GDBUS_TYPE_MODEM_PROXY)
struct _MMModemPrivate {
+ /* Ports */
+ GMutex ports_mutex;
+ guint ports_id;
+ GArray *ports;
+
/* UnlockRetries */
GMutex unlock_retries_mutex;
guint unlock_retries_id;
@@ -683,6 +688,124 @@ mm_modem_dup_primary_port (MMModem *self)
/*****************************************************************************/
+static void
+ports_updated (MMModem *self,
+ GParamSpec *pspec)
+{
+ g_mutex_lock (&self->priv->ports_mutex);
+ {
+ GVariant *dictionary;
+
+ if (self->priv->ports)
+ g_array_unref (self->priv->ports);
+
+ dictionary = mm_gdbus_modem_get_ports (MM_GDBUS_MODEM (self));
+ self->priv->ports = (dictionary ?
+ mm_common_ports_variant_to_garray (dictionary) :
+ NULL);
+ }
+ g_mutex_unlock (&self->priv->ports_mutex);
+}
+
+static gboolean
+ensure_internal_ports (MMModem *self,
+ MMModemPortInfo **dup_ports,
+ guint *dup_ports_n)
+{
+ gboolean ret;
+
+ g_mutex_lock (&self->priv->ports_mutex);
+ {
+ /* If this is the first time ever asking for the array, setup the
+ * update listener and the initial array, if any. */
+ if (!self->priv->ports_id) {
+ GVariant *dictionary;
+
+ dictionary = mm_gdbus_modem_dup_ports (MM_GDBUS_MODEM (self));
+ if (dictionary) {
+ self->priv->ports = mm_common_ports_variant_to_garray (dictionary);
+ g_variant_unref (dictionary);
+ }
+
+ /* No need to clear this signal connection when freeing self */
+ self->priv->ports_id =
+ g_signal_connect (self,
+ "notify::ports",
+ G_CALLBACK (ports_updated),
+ NULL);
+ }
+
+ if (!self->priv->ports)
+ ret = FALSE;
+ else {
+ ret = TRUE;
+
+ if (dup_ports && dup_ports_n) {
+ *dup_ports_n = self->priv->ports->len;
+ if (self->priv->ports->len > 0) {
+ *dup_ports = g_malloc (sizeof (MMModemPortInfo) * self->priv->ports->len);
+ memcpy (*dup_ports, self->priv->ports->data, sizeof (MMModemPortInfo) * self->priv->ports->len);
+ } else
+ *dup_ports = NULL;
+ }
+ }
+ }
+ g_mutex_unlock (&self->priv->ports_mutex);
+
+ return ret;
+}
+
+/**
+ * mm_modem_peek_current_ports:
+ * @self: A #MMModem.
+ * @ports: (out) (array length=n_ports): Return location for the array of #MMModemPortInfo values. Do not free the returned value, it is owned by @self.
+ * @n_ports: (out): Return location for the number of values in @ports.
+ *
+ * Gets the list of ports in the modem.
+ *
+ * Returns: %TRUE if @ports and @n_ports are set, %FALSE otherwise.
+ */
+gboolean
+mm_modem_peek_ports (MMModem *self,
+ const MMModemPortInfo **ports,
+ guint *n_ports)
+{
+ g_return_val_if_fail (MM_IS_MODEM (self), FALSE);
+ g_return_val_if_fail (ports != NULL, FALSE);
+ g_return_val_if_fail (n_ports != NULL, FALSE);
+
+ if (!ensure_internal_ports (self, NULL, NULL))
+ return FALSE;
+
+ *n_ports = self->priv->ports->len;
+ *ports = (MMModemPortInfo *)self->priv->ports->data;
+ return TRUE;
+}
+
+/**
+ * mm_modem_get_ports:
+ * @self: A #MMModem.
+ * @ports: (out) (array length=n_ports): Return location for the array of #MMModemPortInfo values. The returned array should be freed with mm_modem_port_info_array_free() when no longer needed.
+ * @n_ports: (out): Return location for the number of values in @ports.
+ *
+ * Gets the list of ports in the modem.
+ *
+ * Returns: %TRUE if @ports and @n_ports are set, %FALSE otherwise.
+ */
+gboolean
+mm_modem_get_ports (MMModem *self,
+ MMModemPortInfo **ports,
+ guint *n_ports)
+{
+ g_return_val_if_fail (MM_IS_MODEM (self), FALSE);
+ g_return_val_if_fail (ports != NULL, FALSE);
+ g_return_val_if_fail (n_ports != NULL, FALSE);
+
+ return ensure_internal_ports (self, ports, n_ports);
+}
+
+/*****************************************************************************/
+
/**
* mm_modem_get_equipment_identifier:
* @self: A #MMModem.
diff --git a/libmm-glib/mm-modem.h b/libmm-glib/mm-modem.h
index a2ece5a..8fb1faf 100644
--- a/libmm-glib/mm-modem.h
+++ b/libmm-glib/mm-modem.h
@@ -111,6 +111,13 @@ gchar *mm_modem_dup_plugin (MMModem *self);
const gchar *mm_modem_get_primary_port (MMModem *self);
gchar *mm_modem_dup_primary_port (MMModem *self);
+gboolean mm_modem_peek_ports (MMModem *self,
+ const MMModemPortInfo **ports,
+ guint *n_ports);
+gboolean mm_modem_get_ports (MMModem *self,
+ MMModemPortInfo **ports,
+ guint *n_ports);
+
const gchar *mm_modem_get_equipment_identifier (MMModem *self);
gchar *mm_modem_dup_equipment_identifier (MMModem *self);
diff --git a/libmm-glib/mm-sms-properties.c b/libmm-glib/mm-sms-properties.c
index d6a7416..bac363a 100644
--- a/libmm-glib/mm-sms-properties.c
+++ b/libmm-glib/mm-sms-properties.c
@@ -181,7 +181,7 @@ mm_sms_properties_peek_data_bytearray (MMSmsProperties *self)
*
* Gets the message data.
*
- * Returns: (transfer none): A #GByteArray with the message data, or %NULL if it doesn't contain any (e.g. contains text instead). The returned value should be freed with g_byte_array_unref().
+ * Returns: (transfer full): A #GByteArray with the message data, or %NULL if it doesn't contain any (e.g. contains text instead). The returned value should be freed with g_byte_array_unref().
*/
GByteArray *
mm_sms_properties_get_data_bytearray (MMSmsProperties *self)
@@ -637,7 +637,7 @@ consume_variant (MMSmsProperties *properties,
properties,
g_variant_get_uint32 (val));
} else if (type != MM_SMS_VALIDITY_TYPE_UNKNOWN)
- g_warning ("SMS validity type '%s' not supported yet",
+ g_warning ("SMS validity type '%s' not supported yet",
mm_sms_validity_type_get_string (type));
g_variant_unref (val);
} else if (g_str_equal (key, PROPERTY_CLASS))
diff --git a/libmm-glib/tests/Makefile.am b/libmm-glib/tests/Makefile.am
index 92c77d8..be93d4c 100644
--- a/libmm-glib/tests/Makefile.am
+++ b/libmm-glib/tests/Makefile.am
@@ -1,6 +1,7 @@
+include $(top_srcdir)/gtester.make
-noinst_PROGRAMS = \
- test-common-helpers
+noinst_PROGRAMS = test-common-helpers
+TEST_PROGS += $(noinst_PROGRAMS)
test_common_helpers_SOURCES = \
test-common-helpers.c
@@ -19,10 +20,3 @@ test_common_helpers_CPPFLAGS = \
test_common_helpers_LDADD = \
$(top_builddir)/libmm-glib/libmm-glib.la \
$(MM_LIBS)
-
-if WITH_TESTS
-
-check-local: test-common-helpers
- $(abs_builddir)/test-common-helpers
-
-endif
diff --git a/libmm-glib/tests/Makefile.in b/libmm-glib/tests/Makefile.in
index 58b3e97..2d63a84 100644
--- a/libmm-glib/tests/Makefile.in
+++ b/libmm-glib/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -78,10 +78,10 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/gtester.make $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/depcomp
noinst_PROGRAMS = test-common-helpers$(EXEEXT)
subdir = libmm-glib/tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
@@ -180,8 +180,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -205,7 +203,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -222,7 +219,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -254,14 +250,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -280,13 +282,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -355,6 +353,12 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+GTESTER = gtester
+GTESTER_REPORT = gtester-report
+
+# initialize variables for unconditional += appending
+EXTRA_DIST =
+TEST_PROGS = $(noinst_PROGRAMS)
test_common_helpers_SOURCES = \
test-common-helpers.c
@@ -377,7 +381,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtester.make $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -398,6 +402,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
+$(top_srcdir)/gtester.make:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -555,7 +560,6 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
-@WITH_TESTS_FALSE@check-local:
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am
@@ -679,8 +683,89 @@ uninstall-am:
tags tags-am uninstall uninstall-am
-@WITH_TESTS_TRUE@check-local: test-common-helpers
-@WITH_TESTS_TRUE@ $(abs_builddir)/test-common-helpers
+### testing rules
+
+# test: run all tests in cwd and subdirs
+test: test-nonrecursive
+ @ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done
+
+# test-nonrecursive: run tests only in cwd
+test-nonrecursive: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+test-report perf-report full-report: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || { \
+ case $@ in \
+ test-report) test_options="-k";; \
+ perf-report) test_options="-k -m=perf";; \
+ full-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ elif test -n "${TEST_PROGS}" ; then \
+ ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ fi ; \
+ }
+ @ ignore_logdir=true ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+ ignore_logdir=false ; \
+ fi ; \
+ if test -d "$(top_srcdir)/.git" ; then \
+ REVISION=`git describe` ; \
+ else \
+ REVISION=$(VERSION) ; \
+ fi ; \
+ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done ; \
+ $$ignore_logdir || { \
+ echo '<?xml version="1.0"?>' > $@.xml ; \
+ echo '<report-collection>' >> $@.xml ; \
+ echo '<info>' >> $@.xml ; \
+ echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
+ echo ' <version>$(VERSION)</version>' >> $@.xml ; \
+ echo " <revision>$$REVISION</revision>" >> $@.xml ; \
+ echo '</info>' >> $@.xml ; \
+ for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+ sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+ done ; \
+ echo >> $@.xml ; \
+ echo '</report-collection>' >> $@.xml ; \
+ rm -rf "$$GTESTER_LOGDIR"/ ; \
+ ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+ }
+.PHONY: test test-report perf-report full-report test-nonrecursive
+
+.PHONY: lcov genlcov lcov-clean
+# use recursive makes in order to ignore errors during check
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) -k check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
+genlcov:
+ rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
+ $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
+ @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -rm -rf glib-lcov.info glib-lcov
+ -find -name '*.gcda' -print | xargs rm
+
+# run tests in cwd as part of make check
+check-local: test-nonrecursive
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libqcdm/Makefile.in b/libqcdm/Makefile.in
index a60f8a2..5a5e248 100644
--- a/libqcdm/Makefile.in
+++ b/libqcdm/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -187,8 +187,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -212,7 +210,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -229,7 +226,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -261,14 +257,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -287,13 +289,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/libqcdm/src/Makefile.in b/libqcdm/src/Makefile.in
index 1338fd9..dcca09d 100644
--- a/libqcdm/src/Makefile.in
+++ b/libqcdm/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -181,8 +181,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -206,7 +204,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -223,7 +220,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -255,14 +251,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -281,13 +283,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/libqcdm/tests/Makefile.am b/libqcdm/tests/Makefile.am
index 50a7170..ddf7d7b 100644
--- a/libqcdm/tests/Makefile.am
+++ b/libqcdm/tests/Makefile.am
@@ -1,11 +1,12 @@
-if WITH_TESTS
+include $(top_srcdir)/gtester.make
+
+noinst_PROGRAMS = test-qcdm modepref
+TEST_PROGS += test-qcdm
INCLUDES = \
-I$(top_srcdir)/libqcdm/src \
-I$(top_srcdir)/src
-noinst_PROGRAMS = test-qcdm modepref
-
test_qcdm_SOURCES = \
test-qcdm-crc.c \
test-qcdm-crc.h \
@@ -18,9 +19,7 @@ test_qcdm_SOURCES = \
test-qcdm-result.c \
test-qcdm-result.h \
test-qcdm.c
-
test_qcdm_CPPFLAGS = $(MM_CFLAGS)
-
test_qcdm_LDADD = $(MM_LIBS)
modepref_SOURCES = modepref.c
@@ -34,9 +33,3 @@ else
test_qcdm_LDADD += $(top_builddir)/libqcdm/src/libqcdm.la
modepref_LDADD += $(top_builddir)/libqcdm/src/libqcdm.la
endif
-
-check-local: test-qcdm
- $(abs_builddir)/test-qcdm
-
-endif
-
diff --git a/libqcdm/tests/Makefile.in b/libqcdm/tests/Makefile.in
index 7082675..7ac8360 100644
--- a/libqcdm/tests/Makefile.in
+++ b/libqcdm/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -78,15 +78,14 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-@WITH_TESTS_TRUE@noinst_PROGRAMS = test-qcdm$(EXEEXT) \
-@WITH_TESTS_TRUE@ modepref$(EXEEXT)
-@QCDM_STANDALONE_TRUE@@WITH_TESTS_TRUE@am__append_1 = $(top_builddir)/src/libqcdm.la
-@QCDM_STANDALONE_TRUE@@WITH_TESTS_TRUE@am__append_2 = $(top_builddir)/src/libqcdm.la
-@QCDM_STANDALONE_FALSE@@WITH_TESTS_TRUE@am__append_3 = $(top_builddir)/libqcdm/src/libqcdm.la
-@QCDM_STANDALONE_FALSE@@WITH_TESTS_TRUE@am__append_4 = $(top_builddir)/libqcdm/src/libqcdm.la
+DIST_COMMON = $(top_srcdir)/gtester.make $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/depcomp
+noinst_PROGRAMS = test-qcdm$(EXEEXT) modepref$(EXEEXT)
+@QCDM_STANDALONE_TRUE@am__append_1 = $(top_builddir)/src/libqcdm.la
+@QCDM_STANDALONE_TRUE@am__append_2 = $(top_builddir)/src/libqcdm.la
+@QCDM_STANDALONE_FALSE@am__append_3 = $(top_builddir)/libqcdm/src/libqcdm.la
+@QCDM_STANDALONE_FALSE@am__append_4 = $(top_builddir)/libqcdm/src/libqcdm.la
subdir = libqcdm/tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
@@ -105,30 +104,24 @@ CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
-am__modepref_SOURCES_DIST = modepref.c
-@WITH_TESTS_TRUE@am_modepref_OBJECTS = modepref-modepref.$(OBJEXT)
+am_modepref_OBJECTS = modepref-modepref.$(OBJEXT)
modepref_OBJECTS = $(am_modepref_OBJECTS)
am__DEPENDENCIES_1 =
-@WITH_TESTS_TRUE@modepref_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-@WITH_TESTS_TRUE@ $(am__append_2) $(am__append_4)
+modepref_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__append_2) \
+ $(am__append_4)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
-am__test_qcdm_SOURCES_DIST = test-qcdm-crc.c test-qcdm-crc.h \
- test-qcdm-escaping.c test-qcdm-escaping.h test-qcdm-utils.c \
- test-qcdm-utils.h test-qcdm-com.c test-qcdm-com.h \
- test-qcdm-result.c test-qcdm-result.h test-qcdm.c
-@WITH_TESTS_TRUE@am_test_qcdm_OBJECTS = \
-@WITH_TESTS_TRUE@ test_qcdm-test-qcdm-crc.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_qcdm-test-qcdm-escaping.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_qcdm-test-qcdm-utils.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_qcdm-test-qcdm-com.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_qcdm-test-qcdm-result.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_qcdm-test-qcdm.$(OBJEXT)
+am_test_qcdm_OBJECTS = test_qcdm-test-qcdm-crc.$(OBJEXT) \
+ test_qcdm-test-qcdm-escaping.$(OBJEXT) \
+ test_qcdm-test-qcdm-utils.$(OBJEXT) \
+ test_qcdm-test-qcdm-com.$(OBJEXT) \
+ test_qcdm-test-qcdm-result.$(OBJEXT) \
+ test_qcdm-test-qcdm.$(OBJEXT)
test_qcdm_OBJECTS = $(am_test_qcdm_OBJECTS)
-@WITH_TESTS_TRUE@test_qcdm_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-@WITH_TESTS_TRUE@ $(am__append_1) $(am__append_3)
+test_qcdm_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__append_1) \
+ $(am__append_3)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -164,8 +157,7 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(modepref_SOURCES) $(test_qcdm_SOURCES)
-DIST_SOURCES = $(am__modepref_SOURCES_DIST) \
- $(am__test_qcdm_SOURCES_DIST)
+DIST_SOURCES = $(modepref_SOURCES) $(test_qcdm_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -200,8 +192,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -225,7 +215,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -242,7 +231,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -274,14 +262,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -300,13 +294,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -375,35 +365,39 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-@WITH_TESTS_TRUE@INCLUDES = \
-@WITH_TESTS_TRUE@ -I$(top_srcdir)/libqcdm/src \
-@WITH_TESTS_TRUE@ -I$(top_srcdir)/src
-
-@WITH_TESTS_TRUE@test_qcdm_SOURCES = \
-@WITH_TESTS_TRUE@ test-qcdm-crc.c \
-@WITH_TESTS_TRUE@ test-qcdm-crc.h \
-@WITH_TESTS_TRUE@ test-qcdm-escaping.c \
-@WITH_TESTS_TRUE@ test-qcdm-escaping.h \
-@WITH_TESTS_TRUE@ test-qcdm-utils.c \
-@WITH_TESTS_TRUE@ test-qcdm-utils.h \
-@WITH_TESTS_TRUE@ test-qcdm-com.c \
-@WITH_TESTS_TRUE@ test-qcdm-com.h \
-@WITH_TESTS_TRUE@ test-qcdm-result.c \
-@WITH_TESTS_TRUE@ test-qcdm-result.h \
-@WITH_TESTS_TRUE@ test-qcdm.c
-
-@WITH_TESTS_TRUE@test_qcdm_CPPFLAGS = $(MM_CFLAGS)
-@WITH_TESTS_TRUE@test_qcdm_LDADD = $(MM_LIBS) $(am__append_1) \
-@WITH_TESTS_TRUE@ $(am__append_3)
-@WITH_TESTS_TRUE@modepref_SOURCES = modepref.c
-@WITH_TESTS_TRUE@modepref_CPPFLAGS = $(MM_CFLAGS)
-@WITH_TESTS_TRUE@modepref_LDADD = $(MM_LIBS) $(am__append_2) \
-@WITH_TESTS_TRUE@ $(am__append_4)
+GTESTER = gtester
+GTESTER_REPORT = gtester-report
+
+# initialize variables for unconditional += appending
+EXTRA_DIST =
+TEST_PROGS = test-qcdm
+INCLUDES = \
+ -I$(top_srcdir)/libqcdm/src \
+ -I$(top_srcdir)/src
+
+test_qcdm_SOURCES = \
+ test-qcdm-crc.c \
+ test-qcdm-crc.h \
+ test-qcdm-escaping.c \
+ test-qcdm-escaping.h \
+ test-qcdm-utils.c \
+ test-qcdm-utils.h \
+ test-qcdm-com.c \
+ test-qcdm-com.h \
+ test-qcdm-result.c \
+ test-qcdm-result.h \
+ test-qcdm.c
+
+test_qcdm_CPPFLAGS = $(MM_CFLAGS)
+test_qcdm_LDADD = $(MM_LIBS) $(am__append_1) $(am__append_3)
+modepref_SOURCES = modepref.c
+modepref_CPPFLAGS = $(MM_CFLAGS)
+modepref_LDADD = $(MM_LIBS) $(am__append_2) $(am__append_4)
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtester.make $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -424,6 +418,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
+$(top_srcdir)/gtester.make:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -675,7 +670,6 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
-@WITH_TESTS_FALSE@check-local:
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am
@@ -799,8 +793,89 @@ uninstall-am:
tags tags-am uninstall uninstall-am
-@WITH_TESTS_TRUE@check-local: test-qcdm
-@WITH_TESTS_TRUE@ $(abs_builddir)/test-qcdm
+### testing rules
+
+# test: run all tests in cwd and subdirs
+test: test-nonrecursive
+ @ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done
+
+# test-nonrecursive: run tests only in cwd
+test-nonrecursive: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+test-report perf-report full-report: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || { \
+ case $@ in \
+ test-report) test_options="-k";; \
+ perf-report) test_options="-k -m=perf";; \
+ full-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ elif test -n "${TEST_PROGS}" ; then \
+ ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ fi ; \
+ }
+ @ ignore_logdir=true ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+ ignore_logdir=false ; \
+ fi ; \
+ if test -d "$(top_srcdir)/.git" ; then \
+ REVISION=`git describe` ; \
+ else \
+ REVISION=$(VERSION) ; \
+ fi ; \
+ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done ; \
+ $$ignore_logdir || { \
+ echo '<?xml version="1.0"?>' > $@.xml ; \
+ echo '<report-collection>' >> $@.xml ; \
+ echo '<info>' >> $@.xml ; \
+ echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
+ echo ' <version>$(VERSION)</version>' >> $@.xml ; \
+ echo " <revision>$$REVISION</revision>" >> $@.xml ; \
+ echo '</info>' >> $@.xml ; \
+ for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+ sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+ done ; \
+ echo >> $@.xml ; \
+ echo '</report-collection>' >> $@.xml ; \
+ rm -rf "$$GTESTER_LOGDIR"/ ; \
+ ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+ }
+.PHONY: test test-report perf-report full-report test-nonrecursive
+
+.PHONY: lcov genlcov lcov-clean
+# use recursive makes in order to ignore errors during check
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) -k check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
+genlcov:
+ rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
+ $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
+ @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -rm -rf glib-lcov.info glib-lcov
+ -find -name '*.gcda' -print | xargs rm
+
+# run tests in cwd as part of make check
+check-local: test-nonrecursive
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libqcdm/tests/test-qcdm.c b/libqcdm/tests/test-qcdm.c
index 35520c0..8448364 100644
--- a/libqcdm/tests/test-qcdm.c
+++ b/libqcdm/tests/test-qcdm.c
@@ -28,11 +28,7 @@ typedef struct {
gpointer com_data;
} TestData;
-#if GLIB_CHECK_VERSION(2,25,12)
typedef GTestFixtureFunc TCFunc;
-#else
-typedef void (*TCFunc)(void);
-#endif
#define TESTCASE(t, d) g_test_create_case (#t, 0, d, NULL, (TCFunc) t, NULL)
@@ -127,4 +123,3 @@ int main (int argc, char **argv)
return result;
}
-
diff --git a/libwmc/Makefile.in b/libwmc/Makefile.in
index 2943087..3f52235 100644
--- a/libwmc/Makefile.in
+++ b/libwmc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -187,8 +187,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -212,7 +210,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -229,7 +226,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -261,14 +257,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -287,13 +289,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/libwmc/src/Makefile.in b/libwmc/src/Makefile.in
index 5ae8b42..22bc8bc 100644
--- a/libwmc/src/Makefile.in
+++ b/libwmc/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -178,8 +178,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -203,7 +201,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -220,7 +217,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -252,14 +248,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -278,13 +280,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
diff --git a/libwmc/tests/Makefile.am b/libwmc/tests/Makefile.am
index ee98887..09141a0 100644
--- a/libwmc/tests/Makefile.am
+++ b/libwmc/tests/Makefile.am
@@ -1,11 +1,12 @@
-if WITH_TESTS
+include $(top_srcdir)/gtester.make
+
+noinst_PROGRAMS = test-wmc
+TEST_PROGS += $(noinst_PROGRAMS)
INCLUDES = \
-I$(top_srcdir)/libwmc/src \
-I$(top_srcdir)/src
-noinst_PROGRAMS = test-wmc
-
test_wmc_SOURCES = \
test-wmc-crc.c \
test-wmc-crc.h \
@@ -16,10 +17,7 @@ test_wmc_SOURCES = \
test-wmc-com.c \
test-wmc-com.h \
test-wmc.c
-
-test_wmc_CPPFLAGS = \
- $(MM_CFLAGS)
-
+test_wmc_CPPFLAGS = $(MM_CFLAGS)
test_wmc_LDADD = $(MM_LIBS)
if WMC_STANDALONE
@@ -27,9 +25,3 @@ test_wmc_LDADD += $(top_builddir)/src/libwmc.la
else
test_wmc_LDADD += $(top_builddir)/libwmc/src/libwmc.la
endif
-
-check-local: test-wmc
- $(abs_builddir)/test-wmc
-
-endif
-
diff --git a/libwmc/tests/Makefile.in b/libwmc/tests/Makefile.in
index c6cb279..36f4376 100644
--- a/libwmc/tests/Makefile.in
+++ b/libwmc/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -78,12 +78,12 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-@WITH_TESTS_TRUE@noinst_PROGRAMS = test-wmc$(EXEEXT)
-@WITH_TESTS_TRUE@@WMC_STANDALONE_TRUE@am__append_1 = $(top_builddir)/src/libwmc.la
-@WITH_TESTS_TRUE@@WMC_STANDALONE_FALSE@am__append_2 = $(top_builddir)/libwmc/src/libwmc.la
+DIST_COMMON = $(top_srcdir)/gtester.make $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/depcomp
+noinst_PROGRAMS = test-wmc$(EXEEXT)
+@WMC_STANDALONE_TRUE@am__append_1 = $(top_builddir)/src/libwmc.la
+@WMC_STANDALONE_FALSE@am__append_2 = $(top_builddir)/libwmc/src/libwmc.la
subdir = libwmc/tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
@@ -102,19 +102,14 @@ CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
-am__test_wmc_SOURCES_DIST = test-wmc-crc.c test-wmc-crc.h \
- test-wmc-escaping.c test-wmc-escaping.h test-wmc-utils.c \
- test-wmc-utils.h test-wmc-com.c test-wmc-com.h test-wmc.c
-@WITH_TESTS_TRUE@am_test_wmc_OBJECTS = \
-@WITH_TESTS_TRUE@ test_wmc-test-wmc-crc.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_wmc-test-wmc-escaping.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_wmc-test-wmc-utils.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_wmc-test-wmc-com.$(OBJEXT) \
-@WITH_TESTS_TRUE@ test_wmc-test-wmc.$(OBJEXT)
+am_test_wmc_OBJECTS = test_wmc-test-wmc-crc.$(OBJEXT) \
+ test_wmc-test-wmc-escaping.$(OBJEXT) \
+ test_wmc-test-wmc-utils.$(OBJEXT) \
+ test_wmc-test-wmc-com.$(OBJEXT) test_wmc-test-wmc.$(OBJEXT)
test_wmc_OBJECTS = $(am_test_wmc_OBJECTS)
am__DEPENDENCIES_1 =
-@WITH_TESTS_TRUE@test_wmc_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-@WITH_TESTS_TRUE@ $(am__append_1) $(am__append_2)
+test_wmc_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__append_1) \
+ $(am__append_2)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
@@ -154,7 +149,7 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(test_wmc_SOURCES)
-DIST_SOURCES = $(am__test_wmc_SOURCES_DIST)
+DIST_SOURCES = $(test_wmc_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -189,8 +184,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -214,7 +207,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -231,7 +223,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -263,14 +254,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -289,13 +286,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -364,31 +357,34 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-@WITH_TESTS_TRUE@INCLUDES = \
-@WITH_TESTS_TRUE@ -I$(top_srcdir)/libwmc/src \
-@WITH_TESTS_TRUE@ -I$(top_srcdir)/src
-
-@WITH_TESTS_TRUE@test_wmc_SOURCES = \
-@WITH_TESTS_TRUE@ test-wmc-crc.c \
-@WITH_TESTS_TRUE@ test-wmc-crc.h \
-@WITH_TESTS_TRUE@ test-wmc-escaping.c \
-@WITH_TESTS_TRUE@ test-wmc-escaping.h \
-@WITH_TESTS_TRUE@ test-wmc-utils.c \
-@WITH_TESTS_TRUE@ test-wmc-utils.h \
-@WITH_TESTS_TRUE@ test-wmc-com.c \
-@WITH_TESTS_TRUE@ test-wmc-com.h \
-@WITH_TESTS_TRUE@ test-wmc.c
-
-@WITH_TESTS_TRUE@test_wmc_CPPFLAGS = \
-@WITH_TESTS_TRUE@ $(MM_CFLAGS)
-
-@WITH_TESTS_TRUE@test_wmc_LDADD = $(MM_LIBS) $(am__append_1) \
-@WITH_TESTS_TRUE@ $(am__append_2)
+GTESTER = gtester
+GTESTER_REPORT = gtester-report
+
+# initialize variables for unconditional += appending
+EXTRA_DIST =
+TEST_PROGS = $(noinst_PROGRAMS)
+INCLUDES = \
+ -I$(top_srcdir)/libwmc/src \
+ -I$(top_srcdir)/src
+
+test_wmc_SOURCES = \
+ test-wmc-crc.c \
+ test-wmc-crc.h \
+ test-wmc-escaping.c \
+ test-wmc-escaping.h \
+ test-wmc-utils.c \
+ test-wmc-utils.h \
+ test-wmc-com.c \
+ test-wmc-com.h \
+ test-wmc.c
+
+test_wmc_CPPFLAGS = $(MM_CFLAGS)
+test_wmc_LDADD = $(MM_LIBS) $(am__append_1) $(am__append_2)
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtester.make $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -409,6 +405,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
+$(top_srcdir)/gtester.make:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -626,7 +623,6 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
-@WITH_TESTS_FALSE@check-local:
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am
@@ -750,8 +746,89 @@ uninstall-am:
tags tags-am uninstall uninstall-am
-@WITH_TESTS_TRUE@check-local: test-wmc
-@WITH_TESTS_TRUE@ $(abs_builddir)/test-wmc
+### testing rules
+
+# test: run all tests in cwd and subdirs
+test: test-nonrecursive
+ @ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done
+
+# test-nonrecursive: run tests only in cwd
+test-nonrecursive: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+test-report perf-report full-report: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || { \
+ case $@ in \
+ test-report) test_options="-k";; \
+ perf-report) test_options="-k -m=perf";; \
+ full-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ elif test -n "${TEST_PROGS}" ; then \
+ ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ fi ; \
+ }
+ @ ignore_logdir=true ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+ ignore_logdir=false ; \
+ fi ; \
+ if test -d "$(top_srcdir)/.git" ; then \
+ REVISION=`git describe` ; \
+ else \
+ REVISION=$(VERSION) ; \
+ fi ; \
+ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done ; \
+ $$ignore_logdir || { \
+ echo '<?xml version="1.0"?>' > $@.xml ; \
+ echo '<report-collection>' >> $@.xml ; \
+ echo '<info>' >> $@.xml ; \
+ echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
+ echo ' <version>$(VERSION)</version>' >> $@.xml ; \
+ echo " <revision>$$REVISION</revision>" >> $@.xml ; \
+ echo '</info>' >> $@.xml ; \
+ for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+ sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+ done ; \
+ echo >> $@.xml ; \
+ echo '</report-collection>' >> $@.xml ; \
+ rm -rf "$$GTESTER_LOGDIR"/ ; \
+ ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+ }
+.PHONY: test test-report perf-report full-report test-nonrecursive
+
+.PHONY: lcov genlcov lcov-clean
+# use recursive makes in order to ignore errors during check
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) -k check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
+genlcov:
+ rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
+ $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
+ @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -rm -rf glib-lcov.info glib-lcov
+ -find -name '*.gcda' -print | xargs rm
+
+# run tests in cwd as part of make check
+check-local: test-nonrecursive
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libwmc/tests/test-wmc.c b/libwmc/tests/test-wmc.c
index a0e2e9e..e1027b2 100644
--- a/libwmc/tests/test-wmc.c
+++ b/libwmc/tests/test-wmc.c
@@ -27,11 +27,7 @@ typedef struct {
gpointer com_data;
} TestData;
-#if GLIB_CHECK_VERSION(2,25,12)
typedef GTestFixtureFunc TCFunc;
-#else
-typedef void (*TCFunc)(void);
-#endif
#define TESTCASE(t, d) g_test_create_case (#t, 0, d, NULL, (TCFunc) t, NULL)
@@ -112,4 +108,3 @@ int main (int argc, char **argv)
return result;
}
-
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 49df4bc..83f1fae 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -1,3 +1,4 @@
+include $(top_srcdir)/gtester.make
# Common CPPFLAGS and LDFLAGS
@@ -30,6 +31,9 @@ endif
udevrulesdir = $(UDEV_BASE_DIR)/rules.d
udevrules_DATA =
+# Unit tests
+noinst_PROGRAMS =
+
########################################
# Icera-specific support
@@ -104,15 +108,28 @@ libmm_plugin_gobi_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS)
libmm_plugin_huawei_la_SOURCES = \
huawei/mm-plugin-huawei.c \
huawei/mm-plugin-huawei.h \
+ huawei/mm-modem-helpers-huawei.c \
+ huawei/mm-modem-helpers-huawei.h \
huawei/mm-broadband-modem-huawei.c \
huawei/mm-broadband-modem-huawei.h \
huawei/mm-broadband-bearer-huawei.c \
huawei/mm-broadband-bearer-huawei.h
-
libmm_plugin_huawei_la_CPPFLAGS = $(PLUGIN_COMMON_COMPILER_FLAGS)
libmm_plugin_huawei_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS)
+
udevrules_DATA += huawei/77-mm-huawei-net-port-types.rules
+noinst_PROGRAMS += test-modem-helpers-huawei
+test_modem_helpers_huawei_SOURCES = \
+ huawei/mm-modem-helpers-huawei.c \
+ huawei/mm-modem-helpers-huawei.h \
+ huawei/tests/test-modem-helpers-huawei.c
+test_modem_helpers_huawei_CPPFLAGS = \
+ -I$(top_srcdir)/plugins/huawei \
+ $(PLUGIN_COMMON_COMPILER_FLAGS)
+test_modem_helpers_huawei_LDFLAGS = $(top_builddir)/libmm-glib/libmm-glib.la
+
+
# MBM
libmm_plugin_mbm_la_SOURCES = \
mbm/mm-plugin-mbm.c \
@@ -353,6 +370,10 @@ libmm_plugin_telit_la_SOURCES = \
libmm_plugin_telit_la_CPPFLAGS = $(PLUGIN_COMMON_COMPILER_FLAGS)
libmm_plugin_telit_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS)
+
# Additional files to include in the distribution
-EXTRA_DIST = \
+EXTRA_DIST += \
$(udevrules_DATA)
+
+# Unit tests
+TEST_PROGS += $(noinst_PROGRAMS)
diff --git a/plugins/Makefile.in b/plugins/Makefile.in
index 98622f2..33ad27f 100644
--- a/plugins/Makefile.in
+++ b/plugins/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -14,7 +14,6 @@
@SET_MAKE@
-# Common CPPFLAGS and LDFLAGS
VPATH = @srcdir@
@@ -81,11 +80,12 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/gtester.make $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/depcomp
@WITH_QMI_TRUE@am__append_1 = $(QMI_CFLAGS)
@WITH_MBIM_TRUE@am__append_2 = $(MBIM_CFLAGS)
+noinst_PROGRAMS = test-modem-helpers-huawei$(EXEEXT)
subdir = plugins
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
@@ -200,6 +200,7 @@ libmm_plugin_hso_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
libmm_plugin_huawei_la_LIBADD =
am_libmm_plugin_huawei_la_OBJECTS = \
huawei/libmm_plugin_huawei_la-mm-plugin-huawei.lo \
+ huawei/libmm_plugin_huawei_la-mm-modem-helpers-huawei.lo \
huawei/libmm_plugin_huawei_la-mm-broadband-modem-huawei.lo \
huawei/libmm_plugin_huawei_la-mm-broadband-bearer-huawei.lo
libmm_plugin_huawei_la_OBJECTS = $(am_libmm_plugin_huawei_la_OBJECTS)
@@ -408,6 +409,16 @@ am_libmm_utils_icera_la_OBJECTS = \
icera/libmm_utils_icera_la-mm-broadband-modem-icera.lo \
icera/libmm_utils_icera_la-mm-broadband-bearer-icera.lo
libmm_utils_icera_la_OBJECTS = $(am_libmm_utils_icera_la_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+am_test_modem_helpers_huawei_OBJECTS = huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.$(OBJEXT) \
+ huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.$(OBJEXT)
+test_modem_helpers_huawei_OBJECTS = \
+ $(am_test_modem_helpers_huawei_OBJECTS)
+test_modem_helpers_huawei_LDADD = $(LDADD)
+test_modem_helpers_huawei_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(test_modem_helpers_huawei_LDFLAGS) \
+ $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -466,7 +477,8 @@ SOURCES = $(libmm_plugin_altair_lte_la_SOURCES) \
$(libmm_plugin_via_la_SOURCES) \
$(libmm_plugin_wavecom_la_SOURCES) \
$(libmm_plugin_x22x_la_SOURCES) $(libmm_plugin_zte_la_SOURCES) \
- $(libmm_utils_icera_la_SOURCES)
+ $(libmm_utils_icera_la_SOURCES) \
+ $(test_modem_helpers_huawei_SOURCES)
DIST_SOURCES = $(libmm_plugin_altair_lte_la_SOURCES) \
$(libmm_plugin_anydata_la_SOURCES) \
$(libmm_plugin_cinterion_la_SOURCES) \
@@ -491,7 +503,8 @@ DIST_SOURCES = $(libmm_plugin_altair_lte_la_SOURCES) \
$(libmm_plugin_via_la_SOURCES) \
$(libmm_plugin_wavecom_la_SOURCES) \
$(libmm_plugin_x22x_la_SOURCES) $(libmm_plugin_zte_la_SOURCES) \
- $(libmm_utils_icera_la_SOURCES)
+ $(libmm_utils_icera_la_SOURCES) \
+ $(test_modem_helpers_huawei_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -527,8 +540,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -552,7 +563,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -569,7 +579,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -601,14 +610,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -627,13 +642,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -702,6 +713,18 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+GTESTER = gtester
+GTESTER_REPORT = gtester-report
+
+# initialize variables for unconditional += appending
+
+# Additional files to include in the distribution
+EXTRA_DIST = $(udevrules_DATA)
+
+# Unit tests
+TEST_PROGS = $(noinst_PROGRAMS)
+
+# Common CPPFLAGS and LDFLAGS
PLUGIN_COMMON_COMPILER_FLAGS = $(MM_CFLAGS) $(GUDEV_CFLAGS) \
-I$(top_srcdir) -I$(top_srcdir)/src -I$(top_builddir)/src \
-I$(top_srcdir)/include -I$(top_builddir)/include \
@@ -800,6 +823,8 @@ libmm_plugin_gobi_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS)
libmm_plugin_huawei_la_SOURCES = \
huawei/mm-plugin-huawei.c \
huawei/mm-plugin-huawei.h \
+ huawei/mm-modem-helpers-huawei.c \
+ huawei/mm-modem-helpers-huawei.h \
huawei/mm-broadband-modem-huawei.c \
huawei/mm-broadband-modem-huawei.h \
huawei/mm-broadband-bearer-huawei.c \
@@ -807,6 +832,16 @@ libmm_plugin_huawei_la_SOURCES = \
libmm_plugin_huawei_la_CPPFLAGS = $(PLUGIN_COMMON_COMPILER_FLAGS)
libmm_plugin_huawei_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS)
+test_modem_helpers_huawei_SOURCES = \
+ huawei/mm-modem-helpers-huawei.c \
+ huawei/mm-modem-helpers-huawei.h \
+ huawei/tests/test-modem-helpers-huawei.c
+
+test_modem_helpers_huawei_CPPFLAGS = \
+ -I$(top_srcdir)/plugins/huawei \
+ $(PLUGIN_COMMON_COMPILER_FLAGS)
+
+test_modem_helpers_huawei_LDFLAGS = $(top_builddir)/libmm-glib/libmm-glib.la
# MBM
libmm_plugin_mbm_la_SOURCES = \
@@ -1063,16 +1098,11 @@ libmm_plugin_telit_la_SOURCES = \
libmm_plugin_telit_la_CPPFLAGS = $(PLUGIN_COMMON_COMPILER_FLAGS)
libmm_plugin_telit_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS)
-
-# Additional files to include in the distribution
-EXTRA_DIST = \
- $(udevrules_DATA)
-
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtester.make $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -1093,6 +1123,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
+$(top_srcdir)/gtester.make:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1238,6 +1269,8 @@ huawei/$(DEPDIR)/$(am__dirstamp):
@: > huawei/$(DEPDIR)/$(am__dirstamp)
huawei/libmm_plugin_huawei_la-mm-plugin-huawei.lo: \
huawei/$(am__dirstamp) huawei/$(DEPDIR)/$(am__dirstamp)
+huawei/libmm_plugin_huawei_la-mm-modem-helpers-huawei.lo: \
+ huawei/$(am__dirstamp) huawei/$(DEPDIR)/$(am__dirstamp)
huawei/libmm_plugin_huawei_la-mm-broadband-modem-huawei.lo: \
huawei/$(am__dirstamp) huawei/$(DEPDIR)/$(am__dirstamp)
huawei/libmm_plugin_huawei_la-mm-broadband-bearer-huawei.lo: \
@@ -1514,6 +1547,30 @@ icera/libmm_utils_icera_la-mm-broadband-bearer-icera.lo: \
libmm-utils-icera.la: $(libmm_utils_icera_la_OBJECTS) $(libmm_utils_icera_la_DEPENDENCIES) $(EXTRA_libmm_utils_icera_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libmm_utils_icera_la_OBJECTS) $(libmm_utils_icera_la_LIBADD) $(LIBS)
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.$(OBJEXT): \
+ huawei/$(am__dirstamp) huawei/$(DEPDIR)/$(am__dirstamp)
+huawei/tests/$(am__dirstamp):
+ @$(MKDIR_P) huawei/tests
+ @: > huawei/tests/$(am__dirstamp)
+huawei/tests/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) huawei/tests/$(DEPDIR)
+ @: > huawei/tests/$(DEPDIR)/$(am__dirstamp)
+huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.$(OBJEXT): \
+ huawei/tests/$(am__dirstamp) \
+ huawei/tests/$(DEPDIR)/$(am__dirstamp)
+
+test-modem-helpers-huawei$(EXEEXT): $(test_modem_helpers_huawei_OBJECTS) $(test_modem_helpers_huawei_DEPENDENCIES) $(EXTRA_test_modem_helpers_huawei_DEPENDENCIES)
+ @rm -f test-modem-helpers-huawei$(EXEEXT)
+ $(AM_V_CCLD)$(test_modem_helpers_huawei_LINK) $(test_modem_helpers_huawei_OBJECTS) $(test_modem_helpers_huawei_LDADD) $(LIBS)
+
mostlyclean-compile:
-rm -f *.$(OBJEXT)
-rm -f altair/*.$(OBJEXT)
@@ -1528,6 +1585,7 @@ mostlyclean-compile:
-rm -f gobi/*.lo
-rm -f huawei/*.$(OBJEXT)
-rm -f huawei/*.lo
+ -rm -f huawei/tests/*.$(OBJEXT)
-rm -f icera/*.$(OBJEXT)
-rm -f icera/*.lo
-rm -f iridium/*.$(OBJEXT)
@@ -1580,7 +1638,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@gobi/$(DEPDIR)/libmm_plugin_gobi_la-mm-plugin-gobi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-broadband-bearer-huawei.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-broadband-modem-huawei.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-modem-helpers-huawei.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-plugin-huawei.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@huawei/$(DEPDIR)/test_modem_helpers_huawei-mm-modem-helpers-huawei.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@huawei/tests/$(DEPDIR)/test_modem_helpers_huawei-test-modem-helpers-huawei.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@icera/$(DEPDIR)/libmm_utils_icera_la-mm-broadband-bearer-icera.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@icera/$(DEPDIR)/libmm_utils_icera_la-mm-broadband-modem-icera.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@iridium/$(DEPDIR)/libmm_plugin_iridium_la-mm-bearer-iridium.Plo@am__quote@
@@ -1768,6 +1829,13 @@ huawei/libmm_plugin_huawei_la-mm-plugin-huawei.lo: huawei/mm-plugin-huawei.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmm_plugin_huawei_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o huawei/libmm_plugin_huawei_la-mm-plugin-huawei.lo `test -f 'huawei/mm-plugin-huawei.c' || echo '$(srcdir)/'`huawei/mm-plugin-huawei.c
+huawei/libmm_plugin_huawei_la-mm-modem-helpers-huawei.lo: huawei/mm-modem-helpers-huawei.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmm_plugin_huawei_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT huawei/libmm_plugin_huawei_la-mm-modem-helpers-huawei.lo -MD -MP -MF huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-modem-helpers-huawei.Tpo -c -o huawei/libmm_plugin_huawei_la-mm-modem-helpers-huawei.lo `test -f 'huawei/mm-modem-helpers-huawei.c' || echo '$(srcdir)/'`huawei/mm-modem-helpers-huawei.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-modem-helpers-huawei.Tpo huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-modem-helpers-huawei.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='huawei/mm-modem-helpers-huawei.c' object='huawei/libmm_plugin_huawei_la-mm-modem-helpers-huawei.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmm_plugin_huawei_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o huawei/libmm_plugin_huawei_la-mm-modem-helpers-huawei.lo `test -f 'huawei/mm-modem-helpers-huawei.c' || echo '$(srcdir)/'`huawei/mm-modem-helpers-huawei.c
+
huawei/libmm_plugin_huawei_la-mm-broadband-modem-huawei.lo: huawei/mm-broadband-modem-huawei.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmm_plugin_huawei_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT huawei/libmm_plugin_huawei_la-mm-broadband-modem-huawei.lo -MD -MP -MF huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-broadband-modem-huawei.Tpo -c -o huawei/libmm_plugin_huawei_la-mm-broadband-modem-huawei.lo `test -f 'huawei/mm-broadband-modem-huawei.c' || echo '$(srcdir)/'`huawei/mm-broadband-modem-huawei.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-broadband-modem-huawei.Tpo huawei/$(DEPDIR)/libmm_plugin_huawei_la-mm-broadband-modem-huawei.Plo
@@ -2153,6 +2221,34 @@ icera/libmm_utils_icera_la-mm-broadband-bearer-icera.lo: icera/mm-broadband-bear
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmm_utils_icera_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o icera/libmm_utils_icera_la-mm-broadband-bearer-icera.lo `test -f 'icera/mm-broadband-bearer-icera.c' || echo '$(srcdir)/'`icera/mm-broadband-bearer-icera.c
+huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.o: huawei/mm-modem-helpers-huawei.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_modem_helpers_huawei_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.o -MD -MP -MF huawei/$(DEPDIR)/test_modem_helpers_huawei-mm-modem-helpers-huawei.Tpo -c -o huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.o `test -f 'huawei/mm-modem-helpers-huawei.c' || echo '$(srcdir)/'`huawei/mm-modem-helpers-huawei.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) huawei/$(DEPDIR)/test_modem_helpers_huawei-mm-modem-helpers-huawei.Tpo huawei/$(DEPDIR)/test_modem_helpers_huawei-mm-modem-helpers-huawei.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='huawei/mm-modem-helpers-huawei.c' object='huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_modem_helpers_huawei_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.o `test -f 'huawei/mm-modem-helpers-huawei.c' || echo '$(srcdir)/'`huawei/mm-modem-helpers-huawei.c
+
+huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.obj: huawei/mm-modem-helpers-huawei.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_modem_helpers_huawei_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.obj -MD -MP -MF huawei/$(DEPDIR)/test_modem_helpers_huawei-mm-modem-helpers-huawei.Tpo -c -o huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.obj `if test -f 'huawei/mm-modem-helpers-huawei.c'; then $(CYGPATH_W) 'huawei/mm-modem-helpers-huawei.c'; else $(CYGPATH_W) '$(srcdir)/huawei/mm-modem-helpers-huawei.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) huawei/$(DEPDIR)/test_modem_helpers_huawei-mm-modem-helpers-huawei.Tpo huawei/$(DEPDIR)/test_modem_helpers_huawei-mm-modem-helpers-huawei.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='huawei/mm-modem-helpers-huawei.c' object='huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_modem_helpers_huawei_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o huawei/test_modem_helpers_huawei-mm-modem-helpers-huawei.obj `if test -f 'huawei/mm-modem-helpers-huawei.c'; then $(CYGPATH_W) 'huawei/mm-modem-helpers-huawei.c'; else $(CYGPATH_W) '$(srcdir)/huawei/mm-modem-helpers-huawei.c'; fi`
+
+huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.o: huawei/tests/test-modem-helpers-huawei.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_modem_helpers_huawei_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.o -MD -MP -MF huawei/tests/$(DEPDIR)/test_modem_helpers_huawei-test-modem-helpers-huawei.Tpo -c -o huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.o `test -f 'huawei/tests/test-modem-helpers-huawei.c' || echo '$(srcdir)/'`huawei/tests/test-modem-helpers-huawei.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) huawei/tests/$(DEPDIR)/test_modem_helpers_huawei-test-modem-helpers-huawei.Tpo huawei/tests/$(DEPDIR)/test_modem_helpers_huawei-test-modem-helpers-huawei.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='huawei/tests/test-modem-helpers-huawei.c' object='huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_modem_helpers_huawei_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.o `test -f 'huawei/tests/test-modem-helpers-huawei.c' || echo '$(srcdir)/'`huawei/tests/test-modem-helpers-huawei.c
+
+huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.obj: huawei/tests/test-modem-helpers-huawei.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_modem_helpers_huawei_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.obj -MD -MP -MF huawei/tests/$(DEPDIR)/test_modem_helpers_huawei-test-modem-helpers-huawei.Tpo -c -o huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.obj `if test -f 'huawei/tests/test-modem-helpers-huawei.c'; then $(CYGPATH_W) 'huawei/tests/test-modem-helpers-huawei.c'; else $(CYGPATH_W) '$(srcdir)/huawei/tests/test-modem-helpers-huawei.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) huawei/tests/$(DEPDIR)/test_modem_helpers_huawei-test-modem-helpers-huawei.Tpo huawei/tests/$(DEPDIR)/test_modem_helpers_huawei-test-modem-helpers-huawei.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='huawei/tests/test-modem-helpers-huawei.c' object='huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_modem_helpers_huawei_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o huawei/tests/test_modem_helpers_huawei-test-modem-helpers-huawei.obj `if test -f 'huawei/tests/test-modem-helpers-huawei.c'; then $(CYGPATH_W) 'huawei/tests/test-modem-helpers-huawei.c'; else $(CYGPATH_W) '$(srcdir)/huawei/tests/test-modem-helpers-huawei.c'; fi`
+
mostlyclean-libtool:
-rm -f *.lo
@@ -2287,8 +2383,9 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA)
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(udevrulesdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
@@ -2331,6 +2428,8 @@ distclean-generic:
-rm -f gobi/$(am__dirstamp)
-rm -f huawei/$(DEPDIR)/$(am__dirstamp)
-rm -f huawei/$(am__dirstamp)
+ -rm -f huawei/tests/$(DEPDIR)/$(am__dirstamp)
+ -rm -f huawei/tests/$(am__dirstamp)
-rm -f icera/$(DEPDIR)/$(am__dirstamp)
-rm -f icera/$(am__dirstamp)
-rm -f iridium/$(DEPDIR)/$(am__dirstamp)
@@ -2374,10 +2473,10 @@ maintainer-clean-generic:
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- clean-pkglibLTLIBRARIES mostlyclean-am
+ clean-noinstPROGRAMS clean-pkglibLTLIBRARIES mostlyclean-am
distclean: distclean-am
- -rm -rf altair/$(DEPDIR) anydata/$(DEPDIR) cinterion/$(DEPDIR) generic/$(DEPDIR) gobi/$(DEPDIR) huawei/$(DEPDIR) icera/$(DEPDIR) iridium/$(DEPDIR) linktop/$(DEPDIR) longcheer/$(DEPDIR) mbm/$(DEPDIR) motorola/$(DEPDIR) nokia/$(DEPDIR) novatel/$(DEPDIR) option/$(DEPDIR) pantech/$(DEPDIR) samsung/$(DEPDIR) sierra/$(DEPDIR) simtech/$(DEPDIR) telit/$(DEPDIR) via/$(DEPDIR) wavecom/$(DEPDIR) x22x/$(DEPDIR) zte/$(DEPDIR)
+ -rm -rf altair/$(DEPDIR) anydata/$(DEPDIR) cinterion/$(DEPDIR) generic/$(DEPDIR) gobi/$(DEPDIR) huawei/$(DEPDIR) huawei/tests/$(DEPDIR) icera/$(DEPDIR) iridium/$(DEPDIR) linktop/$(DEPDIR) longcheer/$(DEPDIR) mbm/$(DEPDIR) motorola/$(DEPDIR) nokia/$(DEPDIR) novatel/$(DEPDIR) option/$(DEPDIR) pantech/$(DEPDIR) samsung/$(DEPDIR) sierra/$(DEPDIR) simtech/$(DEPDIR) telit/$(DEPDIR) via/$(DEPDIR) wavecom/$(DEPDIR) x22x/$(DEPDIR) zte/$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -2423,7 +2522,7 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -rf altair/$(DEPDIR) anydata/$(DEPDIR) cinterion/$(DEPDIR) generic/$(DEPDIR) gobi/$(DEPDIR) huawei/$(DEPDIR) icera/$(DEPDIR) iridium/$(DEPDIR) linktop/$(DEPDIR) longcheer/$(DEPDIR) mbm/$(DEPDIR) motorola/$(DEPDIR) nokia/$(DEPDIR) novatel/$(DEPDIR) option/$(DEPDIR) pantech/$(DEPDIR) samsung/$(DEPDIR) sierra/$(DEPDIR) simtech/$(DEPDIR) telit/$(DEPDIR) via/$(DEPDIR) wavecom/$(DEPDIR) x22x/$(DEPDIR) zte/$(DEPDIR)
+ -rm -rf altair/$(DEPDIR) anydata/$(DEPDIR) cinterion/$(DEPDIR) generic/$(DEPDIR) gobi/$(DEPDIR) huawei/$(DEPDIR) huawei/tests/$(DEPDIR) icera/$(DEPDIR) iridium/$(DEPDIR) linktop/$(DEPDIR) longcheer/$(DEPDIR) mbm/$(DEPDIR) motorola/$(DEPDIR) nokia/$(DEPDIR) novatel/$(DEPDIR) option/$(DEPDIR) pantech/$(DEPDIR) samsung/$(DEPDIR) sierra/$(DEPDIR) simtech/$(DEPDIR) telit/$(DEPDIR) via/$(DEPDIR) wavecom/$(DEPDIR) x22x/$(DEPDIR) zte/$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -2442,18 +2541,19 @@ ps-am:
uninstall-am: uninstall-pkglibLTLIBRARIES uninstall-udevrulesDATA
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES \
- cscopelist-am ctags ctags-am distclean distclean-compile \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-pkglibLTLIBRARIES install-ps \
- install-ps-am install-strip install-udevrulesDATA installcheck \
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \
+ clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ clean-noinstPROGRAMS clean-pkglibLTLIBRARIES cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-pkglibLTLIBRARIES install-ps install-ps-am \
+ install-strip install-udevrulesDATA installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
@@ -2461,6 +2561,90 @@ uninstall-am: uninstall-pkglibLTLIBRARIES uninstall-udevrulesDATA
uninstall-pkglibLTLIBRARIES uninstall-udevrulesDATA
+### testing rules
+
+# test: run all tests in cwd and subdirs
+test: test-nonrecursive
+ @ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done
+
+# test-nonrecursive: run tests only in cwd
+test-nonrecursive: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+test-report perf-report full-report: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || { \
+ case $@ in \
+ test-report) test_options="-k";; \
+ perf-report) test_options="-k -m=perf";; \
+ full-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ elif test -n "${TEST_PROGS}" ; then \
+ ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ fi ; \
+ }
+ @ ignore_logdir=true ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+ ignore_logdir=false ; \
+ fi ; \
+ if test -d "$(top_srcdir)/.git" ; then \
+ REVISION=`git describe` ; \
+ else \
+ REVISION=$(VERSION) ; \
+ fi ; \
+ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done ; \
+ $$ignore_logdir || { \
+ echo '<?xml version="1.0"?>' > $@.xml ; \
+ echo '<report-collection>' >> $@.xml ; \
+ echo '<info>' >> $@.xml ; \
+ echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
+ echo ' <version>$(VERSION)</version>' >> $@.xml ; \
+ echo " <revision>$$REVISION</revision>" >> $@.xml ; \
+ echo '</info>' >> $@.xml ; \
+ for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+ sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+ done ; \
+ echo >> $@.xml ; \
+ echo '</report-collection>' >> $@.xml ; \
+ rm -rf "$$GTESTER_LOGDIR"/ ; \
+ ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+ }
+.PHONY: test test-report perf-report full-report test-nonrecursive
+
+.PHONY: lcov genlcov lcov-clean
+# use recursive makes in order to ignore errors during check
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) -k check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
+genlcov:
+ rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
+ $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
+ @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -rm -rf glib-lcov.info glib-lcov
+ -find -name '*.gcda' -print | xargs rm
+
+# run tests in cwd as part of make check
+check-local: test-nonrecursive
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/plugins/altair/mm-broadband-modem-altair-lte.c b/plugins/altair/mm-broadband-modem-altair-lte.c
index e645776..3c5ef6c 100644
--- a/plugins/altair/mm-broadband-modem-altair-lte.c
+++ b/plugins/altair/mm-broadband-modem-altair-lte.c
@@ -286,7 +286,9 @@ load_supported_bands_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- /* Never fails */
+ if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
+ return NULL;
+
return (GArray *) g_array_ref (g_simple_async_result_get_op_res_gpointer (
G_SIMPLE_ASYNC_RESULT (res)));
}
@@ -365,7 +367,9 @@ load_current_bands_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- /* Never fails */
+ if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
+ return NULL;
+
return (GArray *) g_array_ref (g_simple_async_result_get_op_res_gpointer (
G_SIMPLE_ASYNC_RESULT (res)));
}
@@ -909,8 +913,11 @@ setup_ports (MMBroadbandModem *self)
MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_altair_lte_parent_class)->setup_ports (self);
primary = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self));
+ if (!primary)
+ return;
- g_object_set (mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)),
+ g_object_set (primary,
+ MM_SERIAL_PORT_SEND_DELAY, (guint64) 0,
MM_AT_SERIAL_PORT_SEND_LF, TRUE,
MM_AT_SERIAL_PORT_INIT_SEQUENCE, primary_init_sequence,
NULL);
@@ -956,11 +963,6 @@ mm_broadband_modem_altair_lte_init (MMBroadbandModemAltairLte *self)
static void
iface_modem_init (MMIfaceModem *iface)
{
- /* the modem is powered up at startup - no need to waste
- * on power query and power up commands */
- iface->load_power_state = NULL;
- iface->load_power_state_finish = NULL;
-
iface->modem_power_down = modem_power_down;
iface->modem_power_down_finish = modem_power_down_finish;
iface->create_bearer = modem_create_bearer;
@@ -1044,4 +1046,11 @@ mm_broadband_modem_altair_lte_class_init (MMBroadbandModemAltairLteClass *klass)
g_type_class_add_private (object_class, sizeof (MMBroadbandModemAltairLtePrivate));
broadband_modem_class->setup_ports = setup_ports;
+
+ /* The Altair LTE modem reboots itself upon receiving an ATZ command. We
+ * need to skip the default implementation in MMBroadbandModem to prevent
+ * an ATZ command from being issued as part of the modem initialization
+ * sequence when enabling the modem. */
+ broadband_modem_class->enabling_modem_init = NULL;
+ broadband_modem_class->enabling_modem_init_finish = NULL;
}
diff --git a/plugins/huawei/mm-broadband-bearer-huawei.c b/plugins/huawei/mm-broadband-bearer-huawei.c
index 6d1414d..1f330d3 100644
--- a/plugins/huawei/mm-broadband-bearer-huawei.c
+++ b/plugins/huawei/mm-broadband-bearer-huawei.c
@@ -29,6 +29,7 @@
#include "mm-broadband-bearer-huawei.h"
#include "mm-log.h"
#include "mm-modem-helpers.h"
+#include "mm-modem-helpers-huawei.h"
G_DEFINE_TYPE (MMBroadbandBearerHuawei, mm_broadband_bearer_huawei, MM_TYPE_BROADBAND_BEARER)
@@ -43,7 +44,7 @@ struct _MMBroadbandBearerHuaweiPrivate {
typedef enum {
CONNECT_3GPP_CONTEXT_STEP_FIRST = 0,
CONNECT_3GPP_CONTEXT_STEP_NDISDUP,
- CONNECT_3GPP_CONTEXT_STEP_DHCP,
+ CONNECT_3GPP_CONTEXT_STEP_NDISSTATQRY,
CONNECT_3GPP_CONTEXT_STEP_LAST
} Connect3gppContextStep;
@@ -85,7 +86,7 @@ connect_3gpp_finish (MMBroadbandBearer *self,
static void connect_3gpp_context_step (Connect3gppContext *ctx);
static gboolean
-connect_retry_dhcp_check_cb (MMBroadbandBearerHuawei *self)
+connect_retry_ndisstatqry_check_cb (MMBroadbandBearerHuawei *self)
{
Connect3gppContext *ctx;
@@ -103,12 +104,17 @@ connect_retry_dhcp_check_cb (MMBroadbandBearerHuawei *self)
}
static void
-connect_dhcp_check_ready (MMBaseModem *modem,
- GAsyncResult *res,
- MMBroadbandBearerHuawei *self)
+connect_ndisstatqry_check_ready (MMBaseModem *modem,
+ GAsyncResult *res,
+ MMBroadbandBearerHuawei *self)
{
Connect3gppContext *ctx;
+ const gchar *response;
GError *error = NULL;
+ gboolean ipv4_available;
+ gboolean ipv4_connected;
+ gboolean ipv6_available;
+ gboolean ipv6_connected;
ctx = self->priv->connect_pending;
g_assert (ctx != NULL);
@@ -116,31 +122,38 @@ connect_dhcp_check_ready (MMBaseModem *modem,
/* Balance refcount */
g_object_unref (self);
- if (!mm_base_modem_at_command_full_finish (modem, res, &error)) {
- /* Only retry the DHCP check if we get a mobile equipment error, or if
- * the command timed out. */
- if (error->domain == MM_MOBILE_EQUIPMENT_ERROR ||
- g_error_matches (error,
- MM_SERIAL_ERROR,
- MM_SERIAL_ERROR_RESPONSE_TIMEOUT)) {
- g_error_free (error);
- /* Setup timeout to retry the same step */
- g_timeout_add_seconds (1,
- (GSourceFunc)connect_retry_dhcp_check_cb,
- g_object_ref (self));
- return;
- }
+ response = mm_base_modem_at_command_full_finish (modem, res, &error);
+ if (!response ||
+ !mm_huawei_parse_ndisstatqry_response (response,
+ &ipv4_available,
+ &ipv4_connected,
+ &ipv6_available,
+ &ipv6_connected,
+ &error)) {
+ mm_dbg ("Modem doesn't properly support ^NDISSTATQRY command: %s", error->message);
+ g_error_free (error);
- /* Fatal error happened; e.g. modem unplugged */
- self->priv->connect_pending = NULL;
- g_simple_async_result_take_error (ctx->result, error);
+ ctx->self->priv->connect_pending = NULL;
+ g_simple_async_result_set_error (ctx->result,
+ MM_MOBILE_EQUIPMENT_ERROR,
+ MM_MOBILE_EQUIPMENT_ERROR_NOT_SUPPORTED,
+ "Connection attempt not supported");
connect_3gpp_context_complete_and_free (ctx);
return;
}
- /* Success! */
- ctx->step++;
- connect_3gpp_context_step (ctx);
+ /* Connected in IPv4? */
+ if (ipv4_available && ipv4_connected) {
+ /* Success! */
+ ctx->step++;
+ connect_3gpp_context_step (ctx);
+ return;
+ }
+
+ /* Setup timeout to retry the same step */
+ g_timeout_add_seconds (1,
+ (GSourceFunc)connect_retry_ndisstatqry_check_cb,
+ g_object_ref (self));
}
static void
@@ -287,7 +300,7 @@ connect_3gpp_context_step (Connect3gppContext *ctx)
return;
}
- case CONNECT_3GPP_CONTEXT_STEP_DHCP:
+ case CONNECT_3GPP_CONTEXT_STEP_NDISSTATQRY:
/* Wait for dial up timeout, retries for 60 times
* (1s between the retries, so it means 1 minute).
* If too many retries, failed
@@ -307,12 +320,12 @@ connect_3gpp_context_step (Connect3gppContext *ctx)
ctx->check_count++;
mm_base_modem_at_command_full (ctx->modem,
ctx->primary,
- "^DHCP?",
+ "^NDISSTATQRY?",
3,
FALSE,
FALSE,
NULL,
- (GAsyncReadyCallback)connect_dhcp_check_ready,
+ (GAsyncReadyCallback)connect_ndisstatqry_check_ready,
g_object_ref (ctx->self));
return;
@@ -389,7 +402,7 @@ connect_3gpp (MMBroadbandBearer *self,
typedef enum {
DISCONNECT_3GPP_CONTEXT_STEP_FIRST = 0,
DISCONNECT_3GPP_CONTEXT_STEP_NDISDUP,
- DISCONNECT_3GPP_CONTEXT_STEP_DHCP,
+ DISCONNECT_3GPP_CONTEXT_STEP_NDISSTATQRY,
DISCONNECT_3GPP_CONTEXT_STEP_LAST
} Disconnect3gppContextStep;
@@ -424,7 +437,7 @@ disconnect_3gpp_finish (MMBroadbandBearer *self,
static void disconnect_3gpp_context_step (Disconnect3gppContext *ctx);
static gboolean
-disconnect_retry_dhcp_check_cb (MMBroadbandBearerHuawei *self)
+disconnect_retry_ndisstatqry_check_cb (MMBroadbandBearerHuawei *self)
{
Disconnect3gppContext *ctx;
@@ -441,11 +454,17 @@ disconnect_retry_dhcp_check_cb (MMBroadbandBearerHuawei *self)
}
static void
-disconnect_dhcp_check_ready (MMBaseModem *modem,
- GAsyncResult *res,
- MMBroadbandBearerHuawei *self)
+disconnect_ndisstatqry_check_ready (MMBaseModem *modem,
+ GAsyncResult *res,
+ MMBroadbandBearerHuawei *self)
{
Disconnect3gppContext *ctx;
+ const gchar *response;
+ GError *error = NULL;
+ gboolean ipv4_available;
+ gboolean ipv4_connected;
+ gboolean ipv6_available;
+ gboolean ipv6_connected;
ctx = self->priv->disconnect_pending;
g_assert (ctx != NULL);
@@ -453,18 +472,38 @@ disconnect_dhcp_check_ready (MMBaseModem *modem,
/* Balance refcount */
g_object_unref (self);
- /* If any response give, we're still connected */
- if (mm_base_modem_at_command_full_finish (modem, res, NULL)) {
- /* Setup timeout to retry the same step */
- g_timeout_add_seconds (1,
- (GSourceFunc)disconnect_retry_dhcp_check_cb,
- g_object_ref (self));
+ response = mm_base_modem_at_command_full_finish (modem, res, &error);
+ if (!response ||
+ !mm_huawei_parse_ndisstatqry_response (response,
+ &ipv4_available,
+ &ipv4_connected,
+ &ipv6_available,
+ &ipv6_connected,
+ &error)) {
+ mm_dbg ("Modem doesn't properly support ^NDISSTATQRY command: %s", error->message);
+ g_error_free (error);
+
+ ctx->self->priv->connect_pending = NULL;
+ g_simple_async_result_set_error (ctx->result,
+ MM_MOBILE_EQUIPMENT_ERROR,
+ MM_MOBILE_EQUIPMENT_ERROR_NOT_SUPPORTED,
+ "Disconnection attempt not supported");
+ disconnect_3gpp_context_complete_and_free (ctx);
return;
}
- /* Success! */
- ctx->step++;
- disconnect_3gpp_context_step (ctx);
+ /* Disconnected IPv4? */
+ if (ipv4_available && !ipv4_connected) {
+ /* Success! */
+ ctx->step++;
+ disconnect_3gpp_context_step (ctx);
+ return;
+ }
+
+ /* Setup timeout to retry the same step */
+ g_timeout_add_seconds (1,
+ (GSourceFunc)disconnect_retry_ndisstatqry_check_cb,
+ g_object_ref (self));
}
static void
@@ -517,7 +556,7 @@ disconnect_3gpp_context_step (Disconnect3gppContext *ctx)
g_object_ref (ctx->self));
return;
- case DISCONNECT_3GPP_CONTEXT_STEP_DHCP:
+ case DISCONNECT_3GPP_CONTEXT_STEP_NDISSTATQRY:
/* If too many retries (1s of wait between the retries), failed */
if (ctx->check_count > 10) {
/* Clear context */
@@ -534,12 +573,12 @@ disconnect_3gpp_context_step (Disconnect3gppContext *ctx)
ctx->check_count++;
mm_base_modem_at_command_full (ctx->modem,
ctx->primary,
- "^DHCP?",
+ "^NDISSTATQRY?",
3,
FALSE,
FALSE,
NULL,
- (GAsyncReadyCallback)disconnect_dhcp_check_ready,
+ (GAsyncReadyCallback)disconnect_ndisstatqry_check_ready,
g_object_ref (ctx->self));
return;
diff --git a/plugins/huawei/mm-modem-helpers-huawei.c b/plugins/huawei/mm-modem-helpers-huawei.c
new file mode 100644
index 0000000..d9b038d
--- /dev/null
+++ b/plugins/huawei/mm-modem-helpers-huawei.c
@@ -0,0 +1,100 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2013 Huawei Technologies Co., Ltd
+ * Copyright (C) 2013 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#include <string.h>
+
+#include <ModemManager.h>
+#define _LIBMM_INSIDE_MM
+#include <libmm-glib.h>
+
+#include "mm-modem-helpers-huawei.h"
+
+/*****************************************************************************/
+/* ^NDISSTATQRY response parser */
+
+gboolean
+mm_huawei_parse_ndisstatqry_response (const gchar *response,
+ gboolean *ipv4_available,
+ gboolean *ipv4_connected,
+ gboolean *ipv6_available,
+ gboolean *ipv6_connected,
+ GError **error)
+{
+ GRegex *r;
+ GMatchInfo *match_info;
+ GError *inner_error = NULL;
+
+ if (!response || !g_str_has_prefix (response, "^NDISSTATQRY:")) {
+ g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Missing ^NDISSTATQRY prefix");
+ return FALSE;
+ }
+
+ *ipv4_available = FALSE;
+ *ipv6_available = FALSE;
+
+ /* The response maybe as:
+ * <CR><LF>^NDISSTATQRY: 1,,,IPV4<CR><LF>^NDISSTATQRY: 0,33,,IPV6<CR><LF>
+ * <CR><LF><CR><LF>OK<CR><LF>
+ * So we have to split the status for IPv4 and IPv6. For now, we only care
+ * about IPv4.
+ */
+ r = g_regex_new ("\\^NDISSTATQRY:\\s*(\\d),(.*),(.*),(.*)(\\r\\n)?",
+ G_REGEX_DOLLAR_ENDONLY | G_REGEX_RAW,
+ 0, NULL);
+ g_assert (r != NULL);
+
+ g_regex_match_full (r, response, strlen (response), 0, 0, &match_info, &inner_error);
+ while (!inner_error && g_match_info_matches (match_info)) {
+ gchar *ip_type_str;
+ guint connected;
+
+ /* Read values */
+ ip_type_str = mm_get_string_unquoted_from_match_info (match_info, 4);
+ if (!ip_type_str ||
+ !mm_get_uint_from_match_info (match_info, 1, &connected) ||
+ (connected != 0 && connected != 1)) {
+ inner_error = g_error_new (MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "Couldn't parse ^NDISSTATQRY fields");
+ } else if (g_ascii_strcasecmp (ip_type_str, "IPV4") == 0) {
+ *ipv4_available = TRUE;
+ *ipv4_connected = (gboolean)connected;
+ } else if (g_ascii_strcasecmp (ip_type_str, "IPV6") == 0) {
+ *ipv6_available = TRUE;
+ *ipv6_connected = (gboolean)connected;
+ }
+
+ g_free (ip_type_str);
+ if (!inner_error)
+ g_match_info_next (match_info, &inner_error);
+ }
+
+ g_match_info_free (match_info);
+ g_regex_unref (r);
+
+ if (!ipv4_available && !ipv6_available) {
+ inner_error = g_error_new (MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "Couldn't find IPv4 or IPv6 info in ^NDISSTATQRY response");
+ }
+
+ if (inner_error) {
+ g_propagate_error (error, inner_error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/plugins/huawei/mm-modem-helpers-huawei.h b/plugins/huawei/mm-modem-helpers-huawei.h
new file mode 100644
index 0000000..cc32087
--- /dev/null
+++ b/plugins/huawei/mm-modem-helpers-huawei.h
@@ -0,0 +1,30 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2013 Huawei Technologies Co., Ltd
+ * Copyright (C) 2013 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#ifndef MM_MODEM_HELPERS_HUAWEI_H
+#define MM_MODEM_HELPERS_HUAWEI_H
+
+#include "glib.h"
+
+/* ^NDISSTATQRY response parser */
+gboolean mm_huawei_parse_ndisstatqry_response (const gchar *response,
+ gboolean *ipv4_available,
+ gboolean *ipv4_connected,
+ gboolean *ipv6_available,
+ gboolean *ipv6_connected,
+ GError **error);
+
+#endif /* MM_MODEM_HELPERS_HUAWEI_H */
diff --git a/plugins/huawei/tests/test-modem-helpers-huawei.c b/plugins/huawei/tests/test-modem-helpers-huawei.c
new file mode 100644
index 0000000..c1bc0ed
--- /dev/null
+++ b/plugins/huawei/tests/test-modem-helpers-huawei.c
@@ -0,0 +1,103 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2013 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <locale.h>
+
+#include "mm-modem-helpers-huawei.h"
+
+/*****************************************************************************/
+/* Test ^NDISSTATQRY responses */
+
+typedef struct {
+ const gchar *str;
+ gboolean expected_ipv4_available;
+ gboolean expected_ipv4_connected;
+ gboolean expected_ipv6_available;
+ gboolean expected_ipv6_connected;
+} NdisstatqryTest;
+
+static const NdisstatqryTest ndisstatqry_tests[] = {
+ { "^NDISSTATQRY: 1,,,IPV4\r\n", TRUE, TRUE, FALSE, FALSE },
+ { "^NDISSTATQRY: 0,,,IPV4\r\n", TRUE, FALSE, FALSE, FALSE },
+ { "^NDISSTATQRY: 1,,,IPV6\r\n", FALSE, FALSE, TRUE, TRUE },
+ { "^NDISSTATQRY: 0,,,IPV6\r\n", FALSE, FALSE, TRUE, FALSE },
+ { "^NDISSTATQRY: 1,,,IPV4\r\n"
+ "^NDISSTATQRY: 1,,,IPV6\r\n", TRUE, TRUE, TRUE, TRUE },
+ { "^NDISSTATQRY: 1,,,IPV4\r\n"
+ "^NDISSTATQRY: 0,,,IPV6\r\n", TRUE, TRUE, TRUE, FALSE },
+ { "^NDISSTATQRY: 0,,,IPV4\r\n"
+ "^NDISSTATQRY: 1,,,IPV6\r\n", TRUE, FALSE, TRUE, TRUE },
+ { "^NDISSTATQRY: 0,,,IPV4\r\n"
+ "^NDISSTATQRY: 0,,,IPV6\r\n", TRUE, FALSE, TRUE, FALSE },
+ { "^NDISSTATQRY: 1,,,IPV4", TRUE, TRUE, FALSE, FALSE },
+ { "^NDISSTATQRY: 0,,,IPV4", TRUE, FALSE, FALSE, FALSE },
+ { "^NDISSTATQRY: 1,,,IPV6", FALSE, FALSE, TRUE, TRUE },
+ { "^NDISSTATQRY: 0,,,IPV6", FALSE, FALSE, TRUE, FALSE },
+ { "^NDISSTATQRY: 1,,,IPV4\r\n"
+ "^NDISSTATQRY: 1,,,IPV6", TRUE, TRUE, TRUE, TRUE },
+ { "^NDISSTATQRY: 1,,,IPV4\r\n"
+ "^NDISSTATQRY: 0,,,IPV6", TRUE, TRUE, TRUE, FALSE },
+ { "^NDISSTATQRY: 0,,,IPV4\r\n"
+ "^NDISSTATQRY: 1,,,IPV6", TRUE, FALSE, TRUE, TRUE },
+ { "^NDISSTATQRY: 0,,,IPV4\r\n"
+ "^NDISSTATQRY: 0,,,IPV6", TRUE, FALSE, TRUE, FALSE },
+ { NULL, FALSE, FALSE, FALSE, FALSE }
+};
+
+static void
+test_ndisstatqry (void)
+{
+ guint i;
+
+ for (i = 0; ndisstatqry_tests[i].str; i++) {
+ GError *error = NULL;
+ gboolean ipv4_available;
+ gboolean ipv4_connected;
+ gboolean ipv6_available;
+ gboolean ipv6_connected;
+
+ g_assert (mm_huawei_parse_ndisstatqry_response (
+ ndisstatqry_tests[i].str,
+ &ipv4_available,
+ &ipv4_connected,
+ &ipv6_available,
+ &ipv6_connected,
+ &error) == TRUE);
+ g_assert_no_error (error);
+
+ g_assert (ipv4_available == ndisstatqry_tests[i].expected_ipv4_available);
+ if (ipv4_available)
+ g_assert (ipv4_connected == ndisstatqry_tests[i].expected_ipv4_connected);
+ g_assert (ipv6_available == ndisstatqry_tests[i].expected_ipv6_available);
+ if (ipv6_available)
+ g_assert (ipv6_connected == ndisstatqry_tests[i].expected_ipv6_connected);
+ }
+}
+
+/*****************************************************************************/
+
+int main (int argc, char **argv)
+{
+ setlocale (LC_ALL, "");
+
+ g_type_init ();
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/MM/huawei/ndisstatqry", test_ndisstatqry);
+
+ return g_test_run ();
+}
diff --git a/plugins/icera/mm-broadband-modem-icera.c b/plugins/icera/mm-broadband-modem-icera.c
index 84e998b..b84cd12 100644
--- a/plugins/icera/mm-broadband-modem-icera.c
+++ b/plugins/icera/mm-broadband-modem-icera.c
@@ -70,68 +70,143 @@ struct _MMBroadbandModemIceraPrivate {
/*****************************************************************************/
/* Load supported modes (Modem interface) */
+static void
+add_supported_mode (GArray **combinations,
+ guint mode)
+{
+ MMModemModeCombination combination;
+
+ switch (mode) {
+ case 0:
+ mm_dbg ("Modem supports 2G-only mode");
+ combination.allowed = MM_MODEM_MODE_2G;
+ combination.preferred = MM_MODEM_MODE_NONE;
+ break;
+ case 1:
+ mm_dbg ("Modem supports 3G-only mode");
+ combination.allowed = MM_MODEM_MODE_3G;
+ combination.preferred = MM_MODEM_MODE_NONE;
+ break;
+ case 2:
+ mm_dbg ("Modem supports 2G/3G mode with 2G preferred");
+ combination.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
+ combination.preferred = MM_MODEM_MODE_2G;
+ break;
+ case 3:
+ mm_dbg ("Modem supports 2G/3G mode with 3G preferred");
+ combination.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
+ combination.preferred = MM_MODEM_MODE_3G;
+ break;
+ case 5:
+ mm_dbg ("Modem supports 'any', but not explicitly listing it");
+ /* Any, no need to add it to the list */
+ return;
+ default:
+ mm_warn ("Unsupported Icera mode found: %u", mode);
+ return;
+ }
+
+ if (*combinations == NULL)
+ *combinations = g_array_sized_new (FALSE, FALSE, sizeof (MMModemModeCombination), 5);
+
+ g_array_append_val (*combinations, combination);
+}
+
static GArray *
load_supported_modes_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
+ GArray *combinations = NULL;
+ const gchar *response;
+ gchar **split = NULL;
+ GMatchInfo *match_info;
+ GRegex *r;
+ guint i;
+
+ response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error);
+ if (!response)
return NULL;
- return g_array_ref (g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res)));
-}
+ /* Reply goes like this:
+ * AT%IPSYS=?
+ * %IPSYS: (0-3,5),(0-3)
+ */
-static void
-parent_load_supported_modes_ready (MMIfaceModem *self,
- GAsyncResult *res,
- GSimpleAsyncResult *simple)
-{
- GError *error = NULL;
- GArray *all;
- GArray *combinations;
- GArray *filtered;
- MMModemModeCombination mode;
+ r = g_regex_new ("\\%IPSYS:\\s*\\((.*)\\)\\s*,\\((.*)\\)",
+ G_REGEX_RAW, 0, NULL);
+ g_assert (r != NULL);
- all = iface_modem_parent->load_supported_modes_finish (self, res, &error);
- if (!all) {
- g_simple_async_result_take_error (simple, error);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
- return;
+ g_regex_match (r, response, 0, &match_info);
+ if (g_match_info_matches (match_info)) {
+ gchar *aux;
+
+ aux = mm_get_string_unquoted_from_match_info (match_info, 1);
+ if (aux) {
+ split = g_strsplit (aux, ",", -1);
+ g_free (aux);
+ }
}
- /* Build list of combinations */
- combinations = g_array_sized_new (FALSE, FALSE, sizeof (MMModemModeCombination), 5);
-
- /* 2G only */
- mode.allowed = MM_MODEM_MODE_2G;
- mode.preferred = MM_MODEM_MODE_NONE;
- g_array_append_val (combinations, mode);
- /* 3G only */
- mode.allowed = MM_MODEM_MODE_3G;
- mode.preferred = MM_MODEM_MODE_NONE;
- g_array_append_val (combinations, mode);
- /* 2G and 3G */
- mode.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
- mode.preferred = MM_MODEM_MODE_NONE;
- g_array_append_val (combinations, mode);
- /* 2G and 3G, 2G preferred */
- mode.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
- mode.preferred = MM_MODEM_MODE_2G;
- g_array_append_val (combinations, mode);
- /* 2G and 3G, 3G preferred */
- mode.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
- mode.preferred = MM_MODEM_MODE_3G;
- g_array_append_val (combinations, mode);
-
- /* Filter out those unsupported modes */
- filtered = mm_filter_supported_modes (all, combinations);
- g_array_unref (all);
- g_array_unref (combinations);
-
- g_simple_async_result_set_op_res_gpointer (simple, filtered, (GDestroyNotify) g_array_unref);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
+ g_match_info_free (match_info);
+ g_regex_unref (r);
+
+ if (!split) {
+ g_set_error (error,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "%%IPSYS=? response didn't match");
+ g_regex_unref (r);
+ return NULL;
+ }
+
+ for (i = 0; split[i]; i++) {
+ gchar *interval_separator;
+
+ g_strstrip (split[i]);
+ interval_separator = strstr (split[i], "-");
+ if (interval_separator) {
+ /* Add all in interval */
+ gchar *first, *last;
+ guint modefirst, modelast;
+
+ first = g_strdup (split[i]);
+ interval_separator = strstr (first, "-");
+ *(interval_separator++) = '\0';
+ last = interval_separator;
+
+ if (mm_get_uint_from_str (first, &modefirst) &&
+ mm_get_uint_from_str (last, &modelast) &&
+ modefirst < modelast &&
+ modelast <= 5) {
+ guint j;
+
+ for (j = modefirst; j <= modelast; j++)
+ add_supported_mode (&combinations, j);
+ } else
+ mm_warn ("Couldn't parse mode interval (%s) in %%IPSYS=? response", split[i]);
+ g_free (first);
+ } else {
+ guint mode;
+
+ /* Add single */
+ if (mm_get_uint_from_str (split[i], &mode))
+ add_supported_mode (&combinations, mode);
+ else
+ mm_warn ("Couldn't parse mode (%s) in %%IPSYS=? response", split[i]);
+ }
+ }
+
+ g_strfreev (split);
+
+ if (!combinations)
+ g_set_error (error,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "No mode combinations were parsed from the %%IPSYS=? response (%s)",
+ response);
+
+ return combinations;
}
static void
@@ -139,14 +214,12 @@ load_supported_modes (MMIfaceModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- /* Run parent's loading */
- iface_modem_parent->load_supported_modes (
- MM_IFACE_MODEM (self),
- (GAsyncReadyCallback)parent_load_supported_modes_ready,
- g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- load_supported_modes));
+ mm_base_modem_at_command (MM_BASE_MODEM (self),
+ "%IPSYS=?",
+ 3,
+ TRUE,
+ callback,
+ user_data);
}
/*****************************************************************************/
diff --git a/plugins/novatel/mm-broadband-modem-novatel-lte.c b/plugins/novatel/mm-broadband-modem-novatel-lte.c
index 0db1686..8cb127a 100644
--- a/plugins/novatel/mm-broadband-modem-novatel-lte.c
+++ b/plugins/novatel/mm-broadband-modem-novatel-lte.c
@@ -376,7 +376,9 @@ load_current_bands_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- /* Never fails */
+ if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
+ return NULL;
+
return (GArray *) g_array_ref (g_simple_async_result_get_op_res_gpointer (
G_SIMPLE_ASYNC_RESULT (res)));
}
diff --git a/plugins/option/mm-broadband-bearer-hso.c b/plugins/option/mm-broadband-bearer-hso.c
index 1830bb2..7da13aa 100644
--- a/plugins/option/mm-broadband-bearer-hso.c
+++ b/plugins/option/mm-broadband-bearer-hso.c
@@ -143,6 +143,7 @@ ip_config_ready (MMBaseModem *modem,
ip_config = mm_bearer_ip_config_new ();
mm_bearer_ip_config_set_method (ip_config, MM_BEARER_IP_METHOD_STATIC);
mm_bearer_ip_config_set_address (ip_config, items[i]);
+ mm_bearer_ip_config_set_prefix (ip_config, 32);
} else if (i == 3 || i == 4) { /* DNS entries */
guint32 tmp;
diff --git a/plugins/option/mm-broadband-modem-hso.c b/plugins/option/mm-broadband-modem-hso.c
index 967b0ce..1c69109 100644
--- a/plugins/option/mm-broadband-modem-hso.c
+++ b/plugins/option/mm-broadband-modem-hso.c
@@ -65,12 +65,33 @@ modem_create_bearer_finish (MMIfaceModem *self,
MMBearer *bearer;
bearer = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
- mm_dbg ("New HSO bearer created at DBus path '%s'", mm_bearer_get_path (bearer));
+ mm_dbg ("New %s bearer created at DBus path '%s'",
+ MM_IS_BROADBAND_BEARER_HSO (bearer) ? "HSO" : "Generic",
+ mm_bearer_get_path (bearer));
return g_object_ref (bearer);
}
static void
+broadband_bearer_new_ready (GObject *source,
+ GAsyncResult *res,
+ GSimpleAsyncResult *simple)
+{
+ MMBearer *bearer = NULL;
+ GError *error = NULL;
+
+ bearer = mm_broadband_bearer_new_finish (res, &error);
+ if (!bearer)
+ g_simple_async_result_take_error (simple, error);
+ else
+ g_simple_async_result_set_op_res_gpointer (simple,
+ bearer,
+ (GDestroyNotify)g_object_unref);
+ g_simple_async_result_complete (simple);
+ g_object_unref (simple);
+}
+
+static void
broadband_bearer_hso_new_ready (GObject *source,
GAsyncResult *res,
GSimpleAsyncResult *simple)
@@ -102,6 +123,17 @@ modem_create_bearer (MMIfaceModem *self,
user_data,
modem_create_bearer);
+ if (mm_bearer_properties_get_ip_type (properties) &
+ (MM_BEARER_IP_FAMILY_IPV6 | MM_BEARER_IP_FAMILY_IPV4V6)) {
+ mm_dbg ("Creating generic bearer (IPv6 requested)...");
+ mm_broadband_bearer_new (MM_BROADBAND_MODEM (self),
+ properties,
+ NULL, /* cancellable */
+ (GAsyncReadyCallback)broadband_bearer_new_ready,
+ result);
+ return;
+ }
+
mm_dbg ("Creating HSO bearer...");
mm_broadband_bearer_hso_new (MM_BROADBAND_MODEM_HSO (self),
properties,
diff --git a/plugins/x22x/77-mm-x22x-port-types.rules b/plugins/x22x/77-mm-x22x-port-types.rules
index 198d203..91ae092 100644
--- a/plugins/x22x/77-mm-x22x-port-types.rules
+++ b/plugins/x22x/77-mm-x22x-port-types.rules
@@ -11,10 +11,13 @@
ACTION!="add|change", GOTO="mm_x22x_port_types_end"
SUBSYSTEM!="tty", GOTO="mm_x22x_port_types_end"
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="1bbb", GOTO="mm_x22x_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1bbb", GOTO="mm_x22x_generic_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0b3c", GOTO="mm_x22x_olivetti_vendorcheck"
GOTO="mm_x22x_port_types_end"
-LABEL="mm_x22x_vendorcheck"
+# Generic JRD devices ---------------------------
+
+LABEL="mm_x22x_generic_vendorcheck"
SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
# Alcatel X200
@@ -41,5 +44,20 @@ ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="00B7", ENV{ID_MM_X22X_TAGGED}="1"
GOTO="mm_x22x_port_types_end"
+# Olivetti devices ---------------------------
+
+LABEL="mm_x22x_olivetti_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# Olicard 200
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_X22X_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="06", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{ID_MM_X22X_TAGGED}="1"
+
+GOTO="mm_x22x_port_types_end"
LABEL="mm_x22x_port_types_end"
diff --git a/plugins/x22x/mm-plugin-x22x.c b/plugins/x22x/mm-plugin-x22x.c
index c729469..9b36048 100644
--- a/plugins/x22x/mm-plugin-x22x.c
+++ b/plugins/x22x/mm-plugin-x22x.c
@@ -241,8 +241,8 @@ G_MODULE_EXPORT MMPlugin *
mm_plugin_create (void)
{
static const gchar *subsystems[] = { "tty", NULL };
- /* Vendors: X22x and TAMobile */
- static const guint16 vendor_ids[] = { 0x1bbb, 0 };
+ /* Vendors: TAMobile and Olivetti */
+ static const guint16 vendor_ids[] = { 0x1bbb, 0x0b3c, 0 };
/* Only handle X22X tagged devices here. */
static const gchar *udev_tags[] = {
"ID_MM_X22X_TAGGED",
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 4476957..9725a1e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,4 +1,4 @@
[encoding: UTF-8]
# List of source files containing translatable strings.
# Please keep this file sorted alphabetically.
-data/org.freedesktop.ModemManager1.policy.in
+data/org.freedesktop.ModemManager1.policy.in.in
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
new file mode 100644
index 0000000..551c836
--- /dev/null
+++ b/po/POTFILES.skip
@@ -0,0 +1 @@
+data/org.freedesktop.ModemManager1.policy.in
diff --git a/src/Makefile.am b/src/Makefile.am
index 703410c..4531a99 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -258,6 +258,8 @@ endif
# Additional MBIM support in ModemManager
if WITH_MBIM
ModemManager_SOURCES += \
+ mm-sms-mbim.h \
+ mm-sms-mbim.c \
mm-sim-mbim.h \
mm-sim-mbim.c \
mm-bearer-mbim.h \
diff --git a/src/Makefile.in b/src/Makefile.in
index 1b340a2..a08e3db 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -134,6 +134,8 @@ sbin_PROGRAMS = ModemManager$(EXEEXT)
# Additional MBIM support in ModemManager
@WITH_MBIM_TRUE@am__append_15 = \
+@WITH_MBIM_TRUE@ mm-sms-mbim.h \
+@WITH_MBIM_TRUE@ mm-sms-mbim.c \
@WITH_MBIM_TRUE@ mm-sim-mbim.h \
@WITH_MBIM_TRUE@ mm-sim-mbim.c \
@WITH_MBIM_TRUE@ mm-bearer-mbim.h \
@@ -229,15 +231,16 @@ am__ModemManager_SOURCES_DIST = main.c mm-context.h mm-context.c \
mm-auth-provider-polkit.c mm-auth-provider-polkit.h \
mm-sms-qmi.h mm-sms-qmi.c mm-sim-qmi.h mm-sim-qmi.c \
mm-bearer-qmi.h mm-bearer-qmi.c mm-broadband-modem-qmi.h \
- mm-broadband-modem-qmi.c mm-sim-mbim.h mm-sim-mbim.c \
- mm-bearer-mbim.h mm-bearer-mbim.c mm-broadband-modem-mbim.h \
- mm-broadband-modem-mbim.c
+ mm-broadband-modem-qmi.c mm-sms-mbim.h mm-sms-mbim.c \
+ mm-sim-mbim.h mm-sim-mbim.c mm-bearer-mbim.h mm-bearer-mbim.c \
+ mm-broadband-modem-mbim.h mm-broadband-modem-mbim.c
@WITH_POLKIT_TRUE@am__objects_5 = ModemManager-mm-auth-provider-polkit.$(OBJEXT)
@WITH_QMI_TRUE@am__objects_6 = ModemManager-mm-sms-qmi.$(OBJEXT) \
@WITH_QMI_TRUE@ ModemManager-mm-sim-qmi.$(OBJEXT) \
@WITH_QMI_TRUE@ ModemManager-mm-bearer-qmi.$(OBJEXT) \
@WITH_QMI_TRUE@ ModemManager-mm-broadband-modem-qmi.$(OBJEXT)
-@WITH_MBIM_TRUE@am__objects_7 = ModemManager-mm-sim-mbim.$(OBJEXT) \
+@WITH_MBIM_TRUE@am__objects_7 = ModemManager-mm-sms-mbim.$(OBJEXT) \
+@WITH_MBIM_TRUE@ ModemManager-mm-sim-mbim.$(OBJEXT) \
@WITH_MBIM_TRUE@ ModemManager-mm-bearer-mbim.$(OBJEXT) \
@WITH_MBIM_TRUE@ ModemManager-mm-broadband-modem-mbim.$(OBJEXT)
am_ModemManager_OBJECTS = ModemManager-main.$(OBJEXT) \
@@ -429,8 +432,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -454,7 +455,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -471,7 +471,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -503,14 +502,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -529,13 +534,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -855,6 +856,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModemManager-mm-sim-qmi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModemManager-mm-sim.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModemManager-mm-sms-list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModemManager-mm-sms-mbim.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModemManager-mm-sms-part.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModemManager-mm-sms-qmi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModemManager-mm-sms.Po@am__quote@
@@ -1513,6 +1515,20 @@ ModemManager-mm-broadband-modem-qmi.obj: mm-broadband-modem-qmi.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ModemManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ModemManager-mm-broadband-modem-qmi.obj `if test -f 'mm-broadband-modem-qmi.c'; then $(CYGPATH_W) 'mm-broadband-modem-qmi.c'; else $(CYGPATH_W) '$(srcdir)/mm-broadband-modem-qmi.c'; fi`
+ModemManager-mm-sms-mbim.o: mm-sms-mbim.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ModemManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ModemManager-mm-sms-mbim.o -MD -MP -MF $(DEPDIR)/ModemManager-mm-sms-mbim.Tpo -c -o ModemManager-mm-sms-mbim.o `test -f 'mm-sms-mbim.c' || echo '$(srcdir)/'`mm-sms-mbim.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ModemManager-mm-sms-mbim.Tpo $(DEPDIR)/ModemManager-mm-sms-mbim.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mm-sms-mbim.c' object='ModemManager-mm-sms-mbim.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ModemManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ModemManager-mm-sms-mbim.o `test -f 'mm-sms-mbim.c' || echo '$(srcdir)/'`mm-sms-mbim.c
+
+ModemManager-mm-sms-mbim.obj: mm-sms-mbim.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ModemManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ModemManager-mm-sms-mbim.obj -MD -MP -MF $(DEPDIR)/ModemManager-mm-sms-mbim.Tpo -c -o ModemManager-mm-sms-mbim.obj `if test -f 'mm-sms-mbim.c'; then $(CYGPATH_W) 'mm-sms-mbim.c'; else $(CYGPATH_W) '$(srcdir)/mm-sms-mbim.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ModemManager-mm-sms-mbim.Tpo $(DEPDIR)/ModemManager-mm-sms-mbim.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mm-sms-mbim.c' object='ModemManager-mm-sms-mbim.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ModemManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ModemManager-mm-sms-mbim.obj `if test -f 'mm-sms-mbim.c'; then $(CYGPATH_W) 'mm-sms-mbim.c'; else $(CYGPATH_W) '$(srcdir)/mm-sms-mbim.c'; fi`
+
ModemManager-mm-sim-mbim.o: mm-sim-mbim.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ModemManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ModemManager-mm-sim-mbim.o -MD -MP -MF $(DEPDIR)/ModemManager-mm-sim-mbim.Tpo -c -o ModemManager-mm-sim-mbim.o `test -f 'mm-sim-mbim.c' || echo '$(srcdir)/'`mm-sim-mbim.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ModemManager-mm-sim-mbim.Tpo $(DEPDIR)/ModemManager-mm-sim-mbim.Po
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index c413393..b348aba 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -968,6 +968,53 @@ mm_base_modem_has_at_port (MMBaseModem *self)
return FALSE;
}
+MMModemPortInfo *
+mm_base_modem_get_port_infos (MMBaseModem *self,
+ guint *n_port_infos)
+{
+ GHashTableIter iter;
+ MMModemPortInfo *port_infos;
+ MMPort *port;
+ guint i;
+
+ *n_port_infos = g_hash_table_size (self->priv->ports);
+ port_infos = g_new (MMModemPortInfo, *n_port_infos);
+ g_hash_table_iter_init (&iter, self->priv->ports);
+ i = 0;
+ while (g_hash_table_iter_next (&iter, NULL, (gpointer)&port)) {
+ port_infos[i].name = g_strdup (mm_port_get_device (port));
+ switch (mm_port_get_port_type (port)) {
+ case MM_PORT_TYPE_NET:
+ port_infos[i].type = MM_MODEM_PORT_TYPE_NET;
+ break;
+ case MM_PORT_TYPE_AT:
+ port_infos[i].type = MM_MODEM_PORT_TYPE_AT;
+ break;
+ case MM_PORT_TYPE_QCDM:
+ port_infos[i].type = MM_MODEM_PORT_TYPE_QCDM;
+ break;
+ case MM_PORT_TYPE_GPS:
+ port_infos[i].type = MM_MODEM_PORT_TYPE_GPS;
+ break;
+ case MM_PORT_TYPE_QMI:
+ port_infos[i].type = MM_MODEM_PORT_TYPE_QMI;
+ break;
+ case MM_PORT_TYPE_MBIM:
+ port_infos[i].type = MM_MODEM_PORT_TYPE_MBIM;
+ break;
+ case MM_PORT_TYPE_UNKNOWN:
+ case MM_PORT_TYPE_IGNORED:
+ default:
+ port_infos[i].type = MM_MODEM_PORT_TYPE_UNKNOWN;
+ break;
+ }
+
+ i++;
+ }
+
+ return port_infos;
+}
+
static void
initialize_ready (MMBaseModem *self,
GAsyncResult *res)
diff --git a/src/mm-base-modem.h b/src/mm-base-modem.h
index 6eeed44..2c3bd96 100644
--- a/src/mm-base-modem.h
+++ b/src/mm-base-modem.h
@@ -23,6 +23,9 @@
#include <glib.h>
#include <glib-object.h>
+#define _LIBMM_INSIDE_MM
+#include <libmm-glib.h>
+
#include <mm-gdbus-modem.h>
#include "mm-auth.h"
@@ -155,6 +158,9 @@ MMAtSerialPort *mm_base_modem_get_best_at_port (MMBaseModem *self, GError
MMPort *mm_base_modem_get_best_data_port (MMBaseModem *self, MMPortType type);
GList *mm_base_modem_get_data_ports (MMBaseModem *self);
+MMModemPortInfo *mm_base_modem_get_port_infos (MMBaseModem *self,
+ guint *n_port_infos);
+
void mm_base_modem_set_hotplugged (MMBaseModem *self,
gboolean hotplugged);
gboolean mm_base_modem_get_hotplugged (MMBaseModem *self);
diff --git a/src/mm-bearer-mbim.c b/src/mm-bearer-mbim.c
index 8b64a4c..2cfd1cf 100644
--- a/src/mm-bearer-mbim.c
+++ b/src/mm-bearer-mbim.c
@@ -548,9 +548,17 @@ packet_service_set_ready (MbimDevice *device,
}
if (error) {
- g_simple_async_result_take_error (ctx->result, error);
- connect_context_complete_and_free (ctx);
- return;
+ /* Don't make NoDeviceSupport errors fatal; just try to keep on the
+ * connection sequence even with this error. */
+ if (g_error_matches (error, MBIM_STATUS_ERROR, MBIM_STATUS_ERROR_NO_DEVICE_SUPPORT)) {
+ mm_dbg ("Device doesn't support packet service attach");
+ g_error_free (error);
+ } else {
+ /* All other errors are fatal */
+ g_simple_async_result_take_error (ctx->result, error);
+ connect_context_complete_and_free (ctx);
+ return;
+ }
}
/* Keep on */
diff --git a/src/mm-bearer-qmi.c b/src/mm-bearer-qmi.c
index a72fa48..00d17c5 100644
--- a/src/mm-bearer-qmi.c
+++ b/src/mm-bearer-qmi.c
@@ -55,11 +55,12 @@ typedef enum {
CONNECT_STEP_WDS_CLIENT_IPV4,
CONNECT_STEP_IP_FAMILY_IPV4,
CONNECT_STEP_START_NETWORK_IPV4,
+ CONNECT_STEP_GET_CURRENT_SETTINGS_IPV4,
CONNECT_STEP_IPV6,
CONNECT_STEP_WDS_CLIENT_IPV6,
CONNECT_STEP_IP_FAMILY_IPV6,
CONNECT_STEP_START_NETWORK_IPV6,
- CONNECT_STEP_GET_CURRENT_SETTINGS,
+ CONNECT_STEP_GET_CURRENT_SETTINGS_IPV6,
CONNECT_STEP_LAST
} ConnectStep;
@@ -302,7 +303,6 @@ get_current_settings_ready (QmiClientWds *client,
QmiMessageWdsGetCurrentSettingsOutput *output;
g_assert (ctx->running_ipv4 || ctx->running_ipv6);
- g_assert (!(ctx->running_ipv4 && ctx->running_ipv6));
output = qmi_client_wds_get_current_settings_finish (client, res, &error);
if (!output ||
@@ -317,12 +317,12 @@ get_current_settings_ready (QmiClientWds *client,
GArray *array;
guint8 prefix;
- if (ctx->running_ipv4) {
+ /* If the message has an IPv4 address, print IPv4 settings */
+ if (qmi_message_wds_get_current_settings_output_get_ipv4_address (output, &addr, &error)) {
mm_dbg ("QMI IPv4 Settings:");
/* IPv4 address */
- success = qmi_message_wds_get_current_settings_output_get_ipv4_address (output, &addr, &error);
- print_address4 (success, "Address", addr, error);
+ print_address4 (TRUE, "Address", addr, error);
g_clear_error (&error);
/* IPv4 gateway address */
@@ -344,12 +344,14 @@ get_current_settings_ready (QmiClientWds *client,
success = qmi_message_wds_get_current_settings_output_get_secondary_ipv4_dns_address (output, &addr, &error);
print_address4 (success, " DNS #2", addr, error);
g_clear_error (&error);
- } else {
+ }
+
+ /* If the message has an IPv6 address, print IPv6 settings */
+ if (qmi_message_wds_get_current_settings_output_get_ipv6_address (output, &array, &prefix, &error)) {
mm_dbg ("QMI IPv6 Settings:");
/* IPv6 address */
- success = qmi_message_wds_get_current_settings_output_get_ipv6_address (output, &array, &prefix, &error);
- print_address6 (success, "Address", array, prefix, error);
+ print_address6 (TRUE, "Address", array, prefix, error);
g_clear_error (&error);
/* IPv6 gateway address */
@@ -400,16 +402,13 @@ get_current_settings_ready (QmiClientWds *client,
connect_context_step (ctx);
}
-static QmiMessageWdsGetCurrentSettingsInput *
-build_get_current_settings_input (ConnectContext *ctx)
+static void
+get_current_settings (ConnectContext *ctx, QmiClientWds *client)
{
QmiMessageWdsGetCurrentSettingsInput *input;
- QmiWdsGetCurrentSettingsRequestedSettings requested = QMI_WDS_GET_CURRENT_SETTINGS_REQUESTED_SETTINGS_NONE;
+ QmiWdsGetCurrentSettingsRequestedSettings requested;
g_assert (ctx->running_ipv4 || ctx->running_ipv6);
- g_assert (!(ctx->running_ipv4 && ctx->running_ipv6));
-
- input = qmi_message_wds_get_current_settings_input_new ();
requested = QMI_WDS_GET_CURRENT_SETTINGS_REQUESTED_SETTINGS_DNS_ADDRESS |
QMI_WDS_GET_CURRENT_SETTINGS_REQUESTED_SETTINGS_GRANTED_QOS |
@@ -419,8 +418,15 @@ build_get_current_settings_input (ConnectContext *ctx)
QMI_WDS_GET_CURRENT_SETTINGS_REQUESTED_SETTINGS_DOMAIN_NAME_LIST |
QMI_WDS_GET_CURRENT_SETTINGS_REQUESTED_SETTINGS_IP_FAMILY;
+ input = qmi_message_wds_get_current_settings_input_new ();
qmi_message_wds_get_current_settings_input_set_requested_settings (input, requested, NULL);
- return input;
+ qmi_client_wds_get_current_settings (client,
+ input,
+ 10,
+ ctx->cancellable,
+ (GAsyncReadyCallback)get_current_settings_ready,
+ ctx);
+ qmi_message_wds_get_current_settings_input_unref (input);
}
static void
@@ -613,10 +619,21 @@ connect_context_step (ConnectContext *ctx)
return;
}
+ case CONNECT_STEP_GET_CURRENT_SETTINGS_IPV4: {
+ /* Retrieve and print IP configuration */
+ if (ctx->packet_data_handle_ipv4) {
+ mm_dbg ("Getting IPv4 configuration...");
+ get_current_settings (ctx, ctx->client_ipv4);
+ return;
+ }
+ /* Fall through */
+ ctx->step++;
+ }
+
case CONNECT_STEP_IPV6:
/* If no IPv6 setup needed, jump to last */
if (!ctx->ipv6) {
- ctx->step = CONNECT_STEP_GET_CURRENT_SETTINGS;
+ ctx->step = CONNECT_STEP_LAST;
connect_context_step (ctx);
return;
}
@@ -691,32 +708,16 @@ connect_context_step (ConnectContext *ctx)
return;
}
- case CONNECT_STEP_GET_CURRENT_SETTINGS:
- /* If one of IPv4 or IPv6 succeeds, get IP configuration */
- if (ctx->packet_data_handle_ipv4 || ctx->packet_data_handle_ipv6) {
- QmiMessageWdsGetCurrentSettingsInput *input;
- QmiClientWds *client;
-
- if (ctx->running_ipv4)
- client = ctx->client_ipv4;
- else if (ctx->running_ipv6)
- client = ctx->client_ipv6;
- else
- g_assert_not_reached ();
-
- mm_dbg ("Getting IP configuration...");
- input = build_get_current_settings_input (ctx);
- qmi_client_wds_get_current_settings (client,
- input,
- 45,
- ctx->cancellable,
- (GAsyncReadyCallback)get_current_settings_ready,
- ctx);
- qmi_message_wds_get_current_settings_input_unref (input);
+ case CONNECT_STEP_GET_CURRENT_SETTINGS_IPV6: {
+ /* Retrieve and print IP configuration */
+ if (ctx->packet_data_handle_ipv6) {
+ mm_dbg ("Getting IPv6 configuration...");
+ get_current_settings (ctx, ctx->client_ipv6);
return;
}
- /* Just fall down */
+ /* Fall through */
ctx->step++;
+ }
case CONNECT_STEP_LAST:
/* If one of IPv4 or IPv6 succeeds, we're connected */
diff --git a/src/mm-bearer.c b/src/mm-bearer.c
index c057f64..8c9a93c 100644
--- a/src/mm-bearer.c
+++ b/src/mm-bearer.c
@@ -1053,7 +1053,7 @@ set_property (GObject *object,
break;
}
case PROP_DEFAULT_IP_FAMILY:
- self->priv->default_ip_family = g_value_get_enum (value);
+ self->priv->default_ip_family = g_value_get_flags (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1086,7 +1086,7 @@ get_property (GObject *object,
g_value_set_object (value, self->priv->config);
break;
case PROP_DEFAULT_IP_FAMILY:
- g_value_set_enum (value, self->priv->default_ip_family);
+ g_value_set_flags (value, self->priv->default_ip_family);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1204,12 +1204,12 @@ mm_bearer_class_init (MMBearerClass *klass)
g_object_class_install_property (object_class, PROP_CONFIG, properties[PROP_CONFIG]);
properties[PROP_DEFAULT_IP_FAMILY] =
- g_param_spec_enum (MM_BEARER_DEFAULT_IP_FAMILY,
- "Bearer default IP family",
- "IP family to use for this bearer when no IP family is specified",
- MM_TYPE_BEARER_IP_FAMILY,
- MM_BEARER_IP_FAMILY_IPV4,
- G_PARAM_READWRITE);
+ g_param_spec_flags (MM_BEARER_DEFAULT_IP_FAMILY,
+ "Bearer default IP family",
+ "IP family to use for this bearer when no IP family is specified",
+ MM_TYPE_BEARER_IP_FAMILY,
+ MM_BEARER_IP_FAMILY_IPV4,
+ G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_DEFAULT_IP_FAMILY, properties[PROP_DEFAULT_IP_FAMILY]);
}
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index 15b93d9..f7dbd9b 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -25,6 +25,7 @@
#include "mm-broadband-modem-mbim.h"
#include "mm-bearer-mbim.h"
#include "mm-sim-mbim.h"
+#include "mm-sms-mbim.h"
#include "ModemManager.h"
#include "mm-log.h"
@@ -34,18 +35,22 @@
#include "mm-bearer-list.h"
#include "mm-iface-modem.h"
#include "mm-iface-modem-3gpp.h"
+#include "mm-iface-modem-messaging.h"
static void iface_modem_init (MMIfaceModem *iface);
static void iface_modem_3gpp_init (MMIfaceModem3gpp *iface);
+static void iface_modem_messaging_init (MMIfaceModemMessaging *iface);
G_DEFINE_TYPE_EXTENDED (MMBroadbandModemMbim, mm_broadband_modem_mbim, MM_TYPE_BROADBAND_MODEM, 0,
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init)
- G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init))
+ G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init)
+ G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_MESSAGING, iface_modem_messaging_init))
typedef enum {
PROCESS_NOTIFICATION_FLAG_NONE = 0,
PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY = 1 << 0,
PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES = 1 << 1,
+ PROCESS_NOTIFICATION_FLAG_SMS_READ = 1 << 2,
} ProcessNotificationFlag;
struct _MMBroadbandModemMbimPrivate {
@@ -59,7 +64,8 @@ struct _MMBroadbandModemMbimPrivate {
/* Process unsolicited notifications */
guint notification_id;
- ProcessNotificationFlag notification_flags;
+ ProcessNotificationFlag setup_flags;
+ ProcessNotificationFlag enable_flags;
/* 3GPP registration helpers */
gchar *current_operator_id;
@@ -1600,17 +1606,47 @@ basic_connect_notification_register_state (MMBroadbandModemMbim *self,
}
}
+static void add_sms_part (MMBroadbandModemMbim *self,
+ const MbimSmsPduReadRecord *pdu);
+
+static void
+sms_notification_read_sms (MMBroadbandModemMbim *self,
+ MbimMessage *notification)
+{
+ MbimSmsFormat format;
+ guint32 messages_count;
+ MbimSmsPduReadRecord **pdu_messages;
+ guint i;
+
+ if (!mbim_message_sms_read_notification_parse (
+ notification,
+ &format,
+ &messages_count,
+ &pdu_messages,
+ NULL, /* cdma_messages */
+ NULL) ||
+ /* Only PDUs */
+ format != MBIM_SMS_FORMAT_PDU) {
+ return;
+ }
+
+ for (i = 0; i < messages_count; i++)
+ add_sms_part (self, pdu_messages[i]);
+
+ mbim_sms_pdu_read_record_array_free (pdu_messages);
+}
+
static void
basic_connect_notification (MMBroadbandModemMbim *self,
MbimMessage *notification)
{
switch (mbim_message_indicate_status_get_cid (notification)) {
case MBIM_CID_BASIC_CONNECT_SIGNAL_STATE:
- if (self->priv->notification_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY)
+ if (self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY)
basic_connect_notification_signal_state (self, notification);
break;
case MBIM_CID_BASIC_CONNECT_REGISTER_STATE:
- if (self->priv->notification_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES)
+ if (self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES)
basic_connect_notification_register_state (self, notification);
break;
default:
@@ -1620,14 +1656,126 @@ basic_connect_notification (MMBroadbandModemMbim *self,
}
static void
+alert_sms_read_query_ready (MbimDevice *device,
+ GAsyncResult *res,
+ MMBroadbandModemMbim *self)
+{
+ MbimMessage *response;
+ GError *error = NULL;
+ guint32 messages_count;
+ MbimSmsPduReadRecord **pdu_messages;
+
+ response = mbim_device_command_finish (device, res, &error);
+ if (response &&
+ mbim_message_command_done_get_result (response, &error) &&
+ mbim_message_sms_read_response_parse (
+ response,
+ NULL,
+ &messages_count,
+ &pdu_messages,
+ NULL, /* cdma_messages */
+ &error)) {
+ guint i;
+
+ for (i = 0; i < messages_count; i++)
+ add_sms_part (self, pdu_messages[i]);
+ mbim_sms_pdu_read_record_array_free (pdu_messages);
+ }
+
+ if (error) {
+ mm_dbg ("Flash message reading failed: %s", error->message);
+ g_error_free (error);
+ }
+
+ if (response)
+ mbim_message_unref (response);
+
+ g_object_unref (self);
+}
+
+static void
+sms_notification_read_alert_sms (MMBroadbandModemMbim *self,
+ guint32 index)
+{
+ MMMbimPort *port;
+ MbimDevice *device;
+ MbimMessage *message;
+
+ port = mm_base_modem_peek_port_mbim (MM_BASE_MODEM (self));
+ if (!port)
+ return;
+ device = mm_mbim_port_peek_device (port);
+ if (!device)
+ return;
+
+ mm_dbg ("Reading flash SMS at index '%u'", index);
+ message = mbim_message_sms_read_query_new (MBIM_SMS_FORMAT_PDU,
+ MBIM_SMS_FLAG_INDEX,
+ index,
+ NULL);
+ mbim_device_command (device,
+ message,
+ 10,
+ NULL,
+ (GAsyncReadyCallback)alert_sms_read_query_ready,
+ g_object_ref (self));
+ mbim_message_unref (message);
+}
+
+static void
+sms_notification (MMBroadbandModemMbim *self,
+ MbimMessage *notification)
+{
+ switch (mbim_message_indicate_status_get_cid (notification)) {
+ case MBIM_CID_SMS_READ:
+ if (self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SMS_READ)
+ sms_notification_read_sms (self, notification);
+ break;
+
+ case MBIM_CID_SMS_MESSAGE_STORE_STATUS: {
+ MbimSmsStatusFlag flag;
+ guint32 index;
+
+ /* New flash/alert message? */
+ if (self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SMS_READ &&
+ mbim_message_sms_message_store_status_notification_parse (
+ notification,
+ &flag,
+ &index,
+ NULL)) {
+ mm_dbg ("Received flash message: '%s'", mbim_sms_status_flag_get_string (flag));
+ if (flag == MBIM_SMS_STATUS_FLAG_NEW_MESSAGE)
+ sms_notification_read_alert_sms (self, index);
+ }
+ break;
+ }
+
+ default:
+ /* Ignore */
+ break;
+ }
+}
+
+static void
device_notification_cb (MbimDevice *device,
MbimMessage *notification,
MMBroadbandModemMbim *self)
{
- switch (mbim_message_indicate_status_get_service (notification)) {
+ MbimService service;
+
+ service = mbim_message_indicate_status_get_service (notification);
+ mm_dbg ("Received notification (service '%s', command '%s')",
+ mbim_service_get_string (service),
+ mbim_cid_get_printable (service,
+ mbim_message_indicate_status_get_cid (notification)));
+
+ switch (service) {
case MBIM_SERVICE_BASIC_CONNECT:
basic_connect_notification (self, notification);
break;
+ case MBIM_SERVICE_SMS:
+ sms_notification (self, notification);
+ break;
default:
/* Ignore */
break;
@@ -1635,7 +1783,7 @@ device_notification_cb (MbimDevice *device,
}
static gboolean
-common_setup_cleanup_unsolicited_events_finish (MMIfaceModem3gpp *self,
+common_setup_cleanup_unsolicited_events_finish (MMBroadbandModemMbim *self,
GAsyncResult *res,
GError **error)
{
@@ -1643,12 +1791,11 @@ common_setup_cleanup_unsolicited_events_finish (MMIfaceModem3gpp *self,
}
static void
-common_setup_cleanup_unsolicited_events (MMIfaceModem3gpp *_self,
+common_setup_cleanup_unsolicited_events (MMBroadbandModemMbim *self,
gboolean setup,
GAsyncReadyCallback callback,
gpointer user_data)
{
- MMBroadbandModemMbim *self = MM_BROADBAND_MODEM_MBIM (_self);
MbimDevice *device;
GSimpleAsyncResult *result;
@@ -1660,6 +1807,11 @@ common_setup_cleanup_unsolicited_events (MMIfaceModem3gpp *_self,
user_data,
common_setup_cleanup_unsolicited_events);
+ mm_dbg ("Supported notifications: signal (%s), registration (%s), sms (%s)",
+ self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY ? "yes" : "no",
+ self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES ? "yes" : "no",
+ self->priv->setup_flags & PROCESS_NOTIFICATION_FLAG_SMS_READ ? "yes" : "no");
+
if (setup) {
/* Don't re-enable it if already there */
if (!self->priv->notification_id)
@@ -1670,11 +1822,12 @@ common_setup_cleanup_unsolicited_events (MMIfaceModem3gpp *_self,
self);
} else {
/* Don't remove the signal if there are still listeners interested */
- if (self->priv->notification_flags == PROCESS_NOTIFICATION_FLAG_NONE &&
+ if (self->priv->setup_flags == PROCESS_NOTIFICATION_FLAG_NONE &&
self->priv->notification_id &&
- g_signal_handler_is_connected (device, self->priv->notification_id))
+ g_signal_handler_is_connected (device, self->priv->notification_id)) {
g_signal_handler_disconnect (device, self->priv->notification_id);
- self->priv->notification_id = 0;
+ self->priv->notification_id = 0;
+ }
}
g_simple_async_result_complete_in_idle (result);
@@ -1682,24 +1835,32 @@ common_setup_cleanup_unsolicited_events (MMIfaceModem3gpp *_self,
}
/*****************************************************************************/
-/* Setup/cleanup unsolicited events */
+/* Setup/cleanup unsolicited events (3GPP interface) */
+
+static gboolean
+common_setup_cleanup_unsolicited_events_3gpp_finish (MMIfaceModem3gpp *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return common_setup_cleanup_unsolicited_events_finish (MM_BROADBAND_MODEM_MBIM (self), res, error);
+}
static void
-cleanup_unsolicited_events (MMIfaceModem3gpp *self,
- GAsyncReadyCallback callback,
- gpointer user_data)
+cleanup_unsolicited_events_3gpp (MMIfaceModem3gpp *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- MM_BROADBAND_MODEM_MBIM (self)->priv->notification_flags &= ~PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
- common_setup_cleanup_unsolicited_events (self, FALSE, callback, user_data);
+ MM_BROADBAND_MODEM_MBIM (self)->priv->setup_flags &= ~PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
+ common_setup_cleanup_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), FALSE, callback, user_data);
}
static void
-setup_unsolicited_events (MMIfaceModem3gpp *self,
- GAsyncReadyCallback callback,
- gpointer user_data)
+setup_unsolicited_events_3gpp (MMIfaceModem3gpp *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- MM_BROADBAND_MODEM_MBIM (self)->priv->notification_flags |= PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
- common_setup_cleanup_unsolicited_events (self, TRUE, callback, user_data);
+ MM_BROADBAND_MODEM_MBIM (self)->priv->setup_flags |= PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
+ common_setup_cleanup_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), TRUE, callback, user_data);
}
/*****************************************************************************/
@@ -1710,8 +1871,8 @@ cleanup_unsolicited_registration_events (MMIfaceModem3gpp *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- MM_BROADBAND_MODEM_MBIM (self)->priv->notification_flags &= ~PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES;
- common_setup_cleanup_unsolicited_events (self, FALSE, callback, user_data);
+ MM_BROADBAND_MODEM_MBIM (self)->priv->setup_flags &= ~PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES;
+ common_setup_cleanup_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), FALSE, callback, user_data);
}
static void
@@ -1719,15 +1880,15 @@ setup_unsolicited_registration_events (MMIfaceModem3gpp *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- MM_BROADBAND_MODEM_MBIM (self)->priv->notification_flags |= PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES;
- common_setup_cleanup_unsolicited_events (self, TRUE, callback, user_data);
+ MM_BROADBAND_MODEM_MBIM (self)->priv->setup_flags |= PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES;
+ common_setup_cleanup_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), TRUE, callback, user_data);
}
/*****************************************************************************/
-/* Enable/Disable unsolicited events */
+/* Enable/disable unsolicited events (common) */
static gboolean
-common_enable_disable_unsolicited_events_finish (MMIfaceModem3gpp *self,
+common_enable_disable_unsolicited_events_finish (MMBroadbandModemMbim *self,
GAsyncResult *res,
GError **error)
{
@@ -1735,9 +1896,9 @@ common_enable_disable_unsolicited_events_finish (MMIfaceModem3gpp *self,
}
static void
-disable_signal_state_set_ready_cb (MbimDevice *device,
- GAsyncResult *res,
- GSimpleAsyncResult *simple)
+subscriber_list_set_ready_cb (MbimDevice *device,
+ GAsyncResult *res,
+ GSimpleAsyncResult *simple)
{
MbimMessage *response;
GError *error = NULL;
@@ -1758,57 +1919,15 @@ disable_signal_state_set_ready_cb (MbimDevice *device,
}
static void
-enable_signal_state_set_ready_cb (MbimDevice *device,
- GAsyncResult *res,
- GSimpleAsyncResult *simple)
-{
- MbimMessage *response;
- GError *error = NULL;
- guint32 rssi;
-
- response = mbim_device_command_finish (device, res, &error);
- if (response &&
- mbim_message_command_done_get_result (response, &error) &&
- mbim_message_signal_state_response_parse (
- response,
- &rssi,
- NULL, /* error_rate */
- NULL, /* signal_strength_interval */
- NULL, /* rssi_threshold */
- NULL, /* error_rate_threshold */
- &error)) {
- guint32 quality;
- GObject *self;
-
- /* Normalize the quality. 99 means unknown, we default it to 0 */
- quality = CLAMP (rssi == 99 ? 0 : rssi, 0, 31) * 100 / 31;
- mm_dbg ("Initial signal state: %u --> %u%%", rssi, quality);
-
- self = g_async_result_get_source_object (G_ASYNC_RESULT (simple));
- mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality);
- g_object_unref (self);
-
- g_simple_async_result_set_op_res_gboolean (simple, TRUE);
- } else
- g_simple_async_result_take_error (simple, error);
-
- if (response)
- mbim_message_unref (response);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
-}
-
-static void
-common_enable_disable_unsolicited_events (MMIfaceModem3gpp *_self,
- gboolean enable,
+common_enable_disable_unsolicited_events (MMBroadbandModemMbim *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- MMBroadbandModemMbim *self = MM_BROADBAND_MODEM_MBIM (_self);
+ MbimMessage *request;
MbimDevice *device;
GSimpleAsyncResult *result;
- MbimMessage *message;
- GAsyncReadyCallback ready_cb;
+ MbimEventEntry **entries;
+ guint n_entries = 0;
if (!peek_device (self, &device, callback, user_data))
return;
@@ -1818,51 +1937,115 @@ common_enable_disable_unsolicited_events (MMIfaceModem3gpp *_self,
user_data,
common_enable_disable_unsolicited_events);
-#define DISABLE_FEATURE G_MAXUINT32
-#define AUTO_FEATURE 0
-
- if (enable) {
- ready_cb = (GAsyncReadyCallback)enable_signal_state_set_ready_cb;
- message = (mbim_message_signal_state_set_new (
- 30, /* signal_strength_interval */
- DISABLE_FEATURE, /* rssi_threshold */
- DISABLE_FEATURE, /* error_rate_threshold */
- NULL));
- } else {
- ready_cb = (GAsyncReadyCallback)disable_signal_state_set_ready_cb;
- message = (mbim_message_signal_state_set_new (
- DISABLE_FEATURE, /* signal_strength_interval */
- DISABLE_FEATURE, /* rssi_threshold */
- DISABLE_FEATURE, /* error_rate_threshold */
- NULL));
+ mm_dbg ("Enabled notifications: signal (%s), registration (%s), sms (%s)",
+ self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY ? "yes" : "no",
+ self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES ? "yes" : "no",
+ self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SMS_READ ? "yes" : "no");
+
+ entries = g_new0 (MbimEventEntry *, 3);
+
+ /* Basic connect service */
+ if (self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY ||
+ self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES) {
+ entries[n_entries] = g_new (MbimEventEntry, 1);
+ memcpy (&(entries[n_entries]->device_service_id), MBIM_UUID_BASIC_CONNECT, sizeof (MbimUuid));
+ entries[n_entries]->cids_count = 0;
+ entries[n_entries]->cids = g_new0 (guint32, 2);
+ if (self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY)
+ entries[n_entries]->cids[entries[n_entries]->cids_count++] = MBIM_CID_BASIC_CONNECT_SIGNAL_STATE;
+ if (self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES)
+ entries[n_entries]->cids[entries[n_entries]->cids_count++] = MBIM_CID_BASIC_CONNECT_REGISTER_STATE;
+ n_entries++;
}
-#undef DISABLE_FEATURE
-#undef AUTO_FEATURE
+ /* SMS service */
+ if (self->priv->enable_flags & PROCESS_NOTIFICATION_FLAG_SMS_READ) {
+ entries[n_entries] = g_new (MbimEventEntry, 1);
+ memcpy (&(entries[n_entries]->device_service_id), MBIM_UUID_SMS, sizeof (MbimUuid));
+ entries[n_entries]->cids_count = 2;
+ entries[n_entries]->cids = g_new0 (guint32, 2);
+ entries[n_entries]->cids[0] = MBIM_CID_SMS_READ;
+ entries[n_entries]->cids[1] = MBIM_CID_SMS_MESSAGE_STORE_STATUS;
+ n_entries++;
+ }
+ request = (mbim_message_device_service_subscriber_list_set_new (
+ n_entries,
+ (const MbimEventEntry *const *)entries,
+ NULL));
mbim_device_command (device,
- message,
+ request,
10,
NULL,
- ready_cb,
+ (GAsyncReadyCallback)subscriber_list_set_ready_cb,
result);
- mbim_message_unref (message);
+ mbim_message_unref (request);
+ mbim_event_entry_array_free (entries);
+}
+
+/*****************************************************************************/
+/* Enable/Disable unsolicited registration events */
+
+static gboolean
+modem_3gpp_common_enable_disable_unsolicited_registration_events_finish (MMIfaceModem3gpp *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return common_enable_disable_unsolicited_events_finish (MM_BROADBAND_MODEM_MBIM (self), res, error);
}
static void
-disable_unsolicited_events (MMIfaceModem3gpp *self,
- GAsyncReadyCallback callback,
- gpointer user_data)
+modem_3gpp_disable_unsolicited_registration_events (MMIfaceModem3gpp *self,
+ gboolean cs_supported,
+ gboolean ps_supported,
+ gboolean eps_supported,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- common_enable_disable_unsolicited_events (self, FALSE, callback, user_data);
+ MM_BROADBAND_MODEM_MBIM (self)->priv->enable_flags &= ~PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES;
+ common_enable_disable_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), callback, user_data);
}
+
static void
-enable_unsolicited_events (MMIfaceModem3gpp *self,
- GAsyncReadyCallback callback,
- gpointer user_data)
+modem_3gpp_enable_unsolicited_registration_events (MMIfaceModem3gpp *self,
+ gboolean cs_supported,
+ gboolean ps_supported,
+ gboolean eps_supported,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- common_enable_disable_unsolicited_events (self, TRUE, callback, user_data);
+ MM_BROADBAND_MODEM_MBIM (self)->priv->enable_flags |= PROCESS_NOTIFICATION_FLAG_REGISTRATION_UPDATES;
+ common_enable_disable_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), callback, user_data);
+}
+
+/*****************************************************************************/
+/* Enable/Disable unsolicited events (3GPP interface) */
+
+static gboolean
+modem_3gpp_common_enable_disable_unsolicited_events_finish (MMIfaceModem3gpp *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return common_enable_disable_unsolicited_events_finish (MM_BROADBAND_MODEM_MBIM (self), res, error);
+}
+
+static void
+modem_3gpp_disable_unsolicited_events (MMIfaceModem3gpp *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MM_BROADBAND_MODEM_MBIM (self)->priv->enable_flags &= ~PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
+ common_enable_disable_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), callback, user_data);
+}
+
+static void
+modem_3gpp_enable_unsolicited_events (MMIfaceModem3gpp *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MM_BROADBAND_MODEM_MBIM (self)->priv->enable_flags |= PROCESS_NOTIFICATION_FLAG_SIGNAL_QUALITY;
+ common_enable_disable_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), callback, user_data);
}
/*****************************************************************************/
@@ -2117,6 +2300,270 @@ modem_3gpp_register_in_network (MMIfaceModem3gpp *self,
}
/*****************************************************************************/
+/* Check support (Messaging interface) */
+
+static gboolean
+messaging_check_support_finish (MMIfaceModemMessaging *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ /* no error expected here */
+ return g_simple_async_result_get_op_res_gboolean (G_SIMPLE_ASYNC_RESULT (res));
+}
+
+static void
+messaging_check_support (MMIfaceModemMessaging *_self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MMBroadbandModemMbim *self = MM_BROADBAND_MODEM_MBIM (_self);
+ GSimpleAsyncResult *result;
+
+ result = g_simple_async_result_new (G_OBJECT (self),
+ callback,
+ user_data,
+ messaging_check_support);
+
+ /* We only handle 3GPP messaging (PDU based) currently */
+ if (self->priv->caps_sms & MBIM_SMS_CAPS_PDU_RECEIVE &&
+ self->priv->caps_sms & MBIM_SMS_CAPS_PDU_SEND) {
+ mm_dbg ("Messaging capabilities supported");
+ g_simple_async_result_set_op_res_gboolean (result, TRUE);
+ } else {
+ mm_dbg ("Messaging capabilities not supported by this modem");
+ g_simple_async_result_set_op_res_gboolean (result, FALSE);
+ }
+
+ g_simple_async_result_complete_in_idle (result);
+ g_object_unref (result);
+}
+
+/*****************************************************************************/
+/* Load supported storages (Messaging interface) */
+
+static gboolean
+messaging_load_supported_storages_finish (MMIfaceModemMessaging *self,
+ GAsyncResult *res,
+ GArray **mem1,
+ GArray **mem2,
+ GArray **mem3,
+ GError **error)
+{
+ MMSmsStorage supported;
+
+ *mem1 = g_array_sized_new (FALSE, FALSE, sizeof (MMSmsStorage), 2);
+ supported = MM_SMS_STORAGE_MT;
+ g_array_append_val (*mem1, supported);
+ *mem2 = g_array_ref (*mem1);
+ *mem3 = g_array_ref (*mem1);
+ return TRUE;
+}
+
+static void
+messaging_load_supported_storages (MMIfaceModemMessaging *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GSimpleAsyncResult *result;
+
+ result = g_simple_async_result_new (G_OBJECT (self),
+ callback,
+ user_data,
+ messaging_load_supported_storages);
+ g_simple_async_result_set_op_res_gboolean (result, TRUE);
+ g_simple_async_result_complete_in_idle (result);
+ g_object_unref (result);
+}
+
+/*****************************************************************************/
+/* Load initial SMS parts */
+
+typedef struct {
+ MMBroadbandModemMbim *self;
+ GSimpleAsyncResult *result;
+} LoadInitialSmsPartsContext;
+
+static void
+load_initial_sms_parts_context_complete_and_free (LoadInitialSmsPartsContext *ctx)
+{
+ g_simple_async_result_complete (ctx->result);
+ g_object_unref (ctx->result);
+ g_object_unref (ctx->self);
+ g_slice_free (LoadInitialSmsPartsContext, ctx);
+}
+
+static gboolean
+load_initial_sms_parts_finish (MMIfaceModemMessaging *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+}
+
+static void
+add_sms_part (MMBroadbandModemMbim *self,
+ const MbimSmsPduReadRecord *pdu)
+{
+ MMSmsPart *part;
+ GError *error = NULL;
+
+ part = mm_sms_part_new_from_binary_pdu (pdu->message_index,
+ pdu->pdu_data,
+ pdu->pdu_data_size,
+ &error);
+ if (part) {
+ mm_dbg ("Correctly parsed PDU (%d)", pdu->message_index);
+ mm_iface_modem_messaging_take_part (MM_IFACE_MODEM_MESSAGING (self),
+ part,
+ mm_sms_state_from_mbim_message_status (pdu->message_status),
+ MM_SMS_STORAGE_MT);
+ } else {
+ /* Don't treat the error as critical */
+ mm_dbg ("Error parsing PDU (%d): %s",
+ pdu->message_index,
+ error->message);
+ g_error_free (error);
+ }
+}
+
+static void
+sms_read_query_ready (MbimDevice *device,
+ GAsyncResult *res,
+ LoadInitialSmsPartsContext *ctx)
+{
+ MbimMessage *response;
+ GError *error = NULL;
+ guint32 messages_count;
+ MbimSmsPduReadRecord **pdu_messages;
+
+ response = mbim_device_command_finish (device, res, &error);
+ if (response &&
+ mbim_message_command_done_get_result (response, &error) &&
+ mbim_message_sms_read_response_parse (
+ response,
+ NULL,
+ &messages_count,
+ &pdu_messages,
+ NULL, /* cdma_messages */
+ &error)) {
+ guint i;
+
+ for (i = 0; i < messages_count; i++)
+ add_sms_part (ctx->self, pdu_messages[i]);
+ mbim_sms_pdu_read_record_array_free (pdu_messages);
+ } else
+ g_simple_async_result_take_error (ctx->result, error);
+
+ if (response)
+ mbim_message_unref (response);
+
+ load_initial_sms_parts_context_complete_and_free (ctx);
+}
+
+static void
+load_initial_sms_parts (MMIfaceModemMessaging *self,
+ MMSmsStorage storage,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ LoadInitialSmsPartsContext *ctx;
+ MbimDevice *device;
+ MbimMessage *message;
+
+ if (!peek_device (self, &device, callback, user_data))
+ return;
+
+ g_assert (storage == MM_SMS_STORAGE_MT);
+
+ ctx = g_slice_new0 (LoadInitialSmsPartsContext);
+ ctx->self = g_object_ref (self);
+ ctx->result = g_simple_async_result_new (G_OBJECT (self),
+ callback,
+ user_data,
+ load_initial_sms_parts);
+
+ mm_dbg ("loading SMS parts...");
+ message = mbim_message_sms_read_query_new (MBIM_SMS_FORMAT_PDU,
+ MBIM_SMS_FLAG_ALL,
+ 0, /* message index, unused */
+ NULL);
+ mbim_device_command (device,
+ message,
+ 10,
+ NULL,
+ (GAsyncReadyCallback)sms_read_query_ready,
+ ctx);
+ mbim_message_unref (message);
+}
+
+/*****************************************************************************/
+/* Setup/Cleanup unsolicited event handlers (Messaging interface) */
+
+static gboolean
+common_setup_cleanup_unsolicited_events_messaging_finish (MMIfaceModemMessaging *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return common_setup_cleanup_unsolicited_events_finish (MM_BROADBAND_MODEM_MBIM (self), res, error);
+}
+
+static void
+cleanup_unsolicited_events_messaging (MMIfaceModemMessaging *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MM_BROADBAND_MODEM_MBIM (self)->priv->setup_flags &= ~PROCESS_NOTIFICATION_FLAG_SMS_READ;
+ common_setup_cleanup_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), FALSE, callback, user_data);
+}
+
+static void
+setup_unsolicited_events_messaging (MMIfaceModemMessaging *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MM_BROADBAND_MODEM_MBIM (self)->priv->setup_flags |= PROCESS_NOTIFICATION_FLAG_SMS_READ;
+ common_setup_cleanup_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), TRUE, callback, user_data);
+}
+
+/*****************************************************************************/
+/* Enable/Disable unsolicited event handlers (Messaging interface) */
+
+static gboolean
+common_enable_disable_unsolicited_events_messaging_finish (MMIfaceModemMessaging *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return common_enable_disable_unsolicited_events_finish (MM_BROADBAND_MODEM_MBIM (self), res, error);
+}
+
+static void
+disable_unsolicited_events_messaging (MMIfaceModemMessaging *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MM_BROADBAND_MODEM_MBIM (self)->priv->enable_flags &= ~PROCESS_NOTIFICATION_FLAG_SMS_READ;
+ common_enable_disable_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), callback, user_data);
+}
+
+static void
+enable_unsolicited_events_messaging (MMIfaceModemMessaging *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MM_BROADBAND_MODEM_MBIM (self)->priv->enable_flags |= PROCESS_NOTIFICATION_FLAG_SMS_READ;
+ common_enable_disable_unsolicited_events (MM_BROADBAND_MODEM_MBIM (self), callback, user_data);
+}
+
+/*****************************************************************************/
+/* Create SMS (Messaging interface) */
+
+static MMSms *
+messaging_create_sms (MMIfaceModemMessaging *self)
+{
+ return mm_sms_mbim_new (MM_BASE_MODEM (self));
+}
+
+/*****************************************************************************/
MMBroadbandModemMbim *
mm_broadband_modem_mbim_new (const gchar *device,
@@ -2226,18 +2673,22 @@ iface_modem_3gpp_init (MMIfaceModem3gpp *iface)
iface->load_enabled_facility_locks = modem_3gpp_load_enabled_facility_locks;
iface->load_enabled_facility_locks_finish = modem_3gpp_load_enabled_facility_locks_finish;
- iface->setup_unsolicited_events = setup_unsolicited_events;
- iface->setup_unsolicited_events_finish = common_setup_cleanup_unsolicited_events_finish;
- iface->cleanup_unsolicited_events = cleanup_unsolicited_events;
- iface->cleanup_unsolicited_events_finish = common_setup_cleanup_unsolicited_events_finish;
- iface->enable_unsolicited_events = enable_unsolicited_events;
- iface->enable_unsolicited_events_finish = common_enable_disable_unsolicited_events_finish;
- iface->disable_unsolicited_events = disable_unsolicited_events;
- iface->disable_unsolicited_events_finish = common_enable_disable_unsolicited_events_finish;
+ iface->setup_unsolicited_events = setup_unsolicited_events_3gpp;
+ iface->setup_unsolicited_events_finish = common_setup_cleanup_unsolicited_events_3gpp_finish;
+ iface->cleanup_unsolicited_events = cleanup_unsolicited_events_3gpp;
+ iface->cleanup_unsolicited_events_finish = common_setup_cleanup_unsolicited_events_3gpp_finish;
+ iface->enable_unsolicited_events = modem_3gpp_enable_unsolicited_events;
+ iface->enable_unsolicited_events_finish = modem_3gpp_common_enable_disable_unsolicited_events_finish;
+ iface->disable_unsolicited_events = modem_3gpp_disable_unsolicited_events;
+ iface->disable_unsolicited_events_finish = modem_3gpp_common_enable_disable_unsolicited_events_finish;
iface->setup_unsolicited_registration_events = setup_unsolicited_registration_events;
- iface->setup_unsolicited_registration_events_finish = common_setup_cleanup_unsolicited_events_finish;
+ iface->setup_unsolicited_registration_events_finish = common_setup_cleanup_unsolicited_events_3gpp_finish;
iface->cleanup_unsolicited_registration_events = cleanup_unsolicited_registration_events;
- iface->cleanup_unsolicited_registration_events_finish = common_setup_cleanup_unsolicited_events_finish;
+ iface->cleanup_unsolicited_registration_events_finish = common_setup_cleanup_unsolicited_events_3gpp_finish;
+ iface->enable_unsolicited_registration_events = modem_3gpp_enable_unsolicited_registration_events;
+ iface->enable_unsolicited_registration_events_finish = modem_3gpp_common_enable_disable_unsolicited_registration_events_finish;
+ iface->disable_unsolicited_registration_events = modem_3gpp_disable_unsolicited_registration_events;
+ iface->disable_unsolicited_registration_events_finish = modem_3gpp_common_enable_disable_unsolicited_registration_events_finish;
iface->load_operator_code = modem_3gpp_load_operator_code;
iface->load_operator_code_finish = modem_3gpp_load_operator_code_finish;
iface->load_operator_name = modem_3gpp_load_operator_name;
@@ -2247,18 +2698,36 @@ iface_modem_3gpp_init (MMIfaceModem3gpp *iface)
iface->register_in_network = modem_3gpp_register_in_network;
iface->register_in_network_finish = modem_3gpp_register_in_network_finish;
- /* Unneeded things */
- iface->enable_unsolicited_registration_events = NULL;
- iface->enable_unsolicited_registration_events_finish = NULL;
- iface->disable_unsolicited_registration_events = NULL;
- iface->disable_unsolicited_registration_events_finish = NULL;
-
/* TODO: use MBIM_CID_VISIBLE_PROVIDERS */
iface->scan_networks = NULL;
iface->scan_networks_finish = NULL;
}
static void
+iface_modem_messaging_init (MMIfaceModemMessaging *iface)
+{
+ iface->check_support = messaging_check_support;
+ iface->check_support_finish = messaging_check_support_finish;
+ iface->load_supported_storages = messaging_load_supported_storages;
+ iface->load_supported_storages_finish = messaging_load_supported_storages_finish;
+ iface->setup_sms_format = NULL;
+ iface->setup_sms_format_finish = NULL;
+ iface->set_default_storage = NULL;
+ iface->set_default_storage_finish = NULL;
+ iface->load_initial_sms_parts = load_initial_sms_parts;
+ iface->load_initial_sms_parts_finish = load_initial_sms_parts_finish;
+ iface->setup_unsolicited_events = setup_unsolicited_events_messaging;
+ iface->setup_unsolicited_events_finish = common_setup_cleanup_unsolicited_events_messaging_finish;
+ iface->cleanup_unsolicited_events = cleanup_unsolicited_events_messaging;
+ iface->cleanup_unsolicited_events_finish = common_setup_cleanup_unsolicited_events_messaging_finish;
+ iface->enable_unsolicited_events = enable_unsolicited_events_messaging;
+ iface->enable_unsolicited_events_finish = common_enable_disable_unsolicited_events_messaging_finish;
+ iface->disable_unsolicited_events = disable_unsolicited_events_messaging;
+ iface->disable_unsolicited_events_finish = common_enable_disable_unsolicited_events_messaging_finish;
+ iface->create_sms = messaging_create_sms;
+}
+
+static void
mm_broadband_modem_mbim_class_init (MMBroadbandModemMbimClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index cf63578..e7969ef 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -47,6 +47,7 @@ static void iface_modem_messaging_init (MMIfaceModemMessaging *iface);
static void iface_modem_location_init (MMIfaceModemLocation *iface);
static void iface_modem_firmware_init (MMIfaceModemFirmware *iface);
+static MMIfaceModemMessaging *iface_modem_messaging_parent;
static MMIfaceModemLocation *iface_modem_location_parent;
G_DEFINE_TYPE_EXTENDED (MMBroadbandModemQmi, mm_broadband_modem_qmi, MM_TYPE_BROADBAND_MODEM, 0,
@@ -95,6 +96,7 @@ struct _MMBroadbandModemQmiPrivate {
gpointer activation_ctx;
/* Messaging helpers */
+ gboolean messaging_fallback_at;
gboolean messaging_unsolicited_events_enabled;
gboolean messaging_unsolicited_events_setup;
guint messaging_event_report_indication_id;
@@ -4780,8 +4782,8 @@ common_process_serving_system_cdma (MMBroadbandModemQmi *self,
guint16 sid = 0;
guint16 nid = 0;
guint16 bs_id = 0;
- gint32 bs_longitude = MM_LOCATION_LONGITUDE_UNKNOWN;
- gint32 bs_latitude = MM_LOCATION_LATITUDE_UNKNOWN;
+ gint32 bs_longitude = G_MININT32;
+ gint32 bs_latitude = G_MININT32;
if (response_output)
qmi_message_nas_get_serving_system_output_get_serving_system (
@@ -4931,11 +4933,11 @@ common_process_serving_system_cdma (MMBroadbandModemQmi *self,
/* Longitude and latitude given in units of 0.25 secs
* Note that multiplying by 0.25 is like dividing by 4, so 60*60*4=14400 */
#define QMI_LONGITUDE_TO_DEGREES(longitude) \
- (longitude != MM_LOCATION_LONGITUDE_UNKNOWN ? \
+ (longitude != G_MININT32 ? \
(((gdouble)longitude) / 14400.0) : \
MM_LOCATION_LONGITUDE_UNKNOWN)
#define QMI_LATITUDE_TO_DEGREES(latitude) \
- (latitude != MM_LOCATION_LATITUDE_UNKNOWN ? \
+ (latitude != G_MININT32 ? \
(((gdouble)latitude) / 14400.0) : \
MM_LOCATION_LATITUDE_UNKNOWN)
@@ -6234,12 +6236,25 @@ messaging_check_support_finish (MMIfaceModemMessaging *self,
}
static void
+parent_messaging_check_support_ready (MMIfaceModemMessaging *_self,
+ GAsyncResult *res,
+ GSimpleAsyncResult *simple)
+{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ self->priv->messaging_fallback_at = iface_modem_messaging_parent->check_support_finish (_self, res, NULL);
+
+ g_simple_async_result_set_op_res_gboolean (simple, self->priv->messaging_fallback_at);
+ g_simple_async_result_complete (simple);
+ g_object_unref (simple);
+}
+
+static void
messaging_check_support (MMIfaceModemMessaging *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
GSimpleAsyncResult *result;
- gboolean supported;
MMQmiPort *port;
result = g_simple_async_result_new (G_OBJECT (self),
@@ -6248,25 +6263,27 @@ messaging_check_support (MMIfaceModemMessaging *self,
messaging_check_support);
port = mm_base_modem_peek_port_qmi (MM_BASE_MODEM (self));
- if (!port)
- supported = FALSE;
- else
- /* If we have support for the WMS client, messaging is supported */
- supported = !!mm_qmi_port_peek_client (port,
- QMI_SERVICE_WMS,
- MM_QMI_PORT_FLAG_DEFAULT);
+ /* If we have support for the WMS client, messaging is supported */
+ if (!port || !mm_qmi_port_peek_client (port, QMI_SERVICE_WMS, MM_QMI_PORT_FLAG_DEFAULT)) {
+ /* Try to fallback to AT support */
+ iface_modem_messaging_parent->check_support (
+ self,
+ (GAsyncReadyCallback)parent_messaging_check_support_ready,
+ result);
+ return;
+ }
/* We only handle 3GPP messaging (PDU based) currently, so just ignore
* CDMA-only QMI modems */
- if (mm_iface_modem_is_cdma_only (MM_IFACE_MODEM (self)) && supported) {
+ if (mm_iface_modem_is_cdma_only (MM_IFACE_MODEM (self))) {
mm_dbg ("Messaging capabilities supported by this modem, "
"but 3GPP2 messaging not supported yet by ModemManager");
- supported = FALSE;
- } else
- mm_dbg ("Messaging capabilities %s by this modem",
- supported ? "supported" : "not supported");
+ g_simple_async_result_set_op_res_gboolean (result, FALSE);
+ } else {
+ mm_dbg ("Messaging capabilities supported");
+ g_simple_async_result_set_op_res_gboolean (result, TRUE);
+ }
- g_simple_async_result_set_op_res_gboolean (result, supported);
g_simple_async_result_complete_in_idle (result);
g_object_unref (result);
}
@@ -6275,30 +6292,45 @@ messaging_check_support (MMIfaceModemMessaging *self,
/* Load supported storages (Messaging interface) */
static gboolean
-messaging_load_supported_storages_finish (MMIfaceModemMessaging *self,
+messaging_load_supported_storages_finish (MMIfaceModemMessaging *_self,
GAsyncResult *res,
GArray **mem1,
GArray **mem2,
GArray **mem3,
GError **error)
{
- MMSmsStorage supported [2] = { MM_SMS_STORAGE_SM, MM_SMS_STORAGE_ME };
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+ MMSmsStorage supported;
- *mem1 = g_array_append_vals (g_array_sized_new (FALSE, FALSE, sizeof (MMSmsStorage), 2),
- supported, 2);
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->load_supported_storages_finish (_self, res, mem1, mem2, mem3, error);
+ }
+
+ *mem1 = g_array_sized_new (FALSE, FALSE, sizeof (MMSmsStorage), 2);
+ supported = MM_SMS_STORAGE_SM;
+ g_array_append_val (*mem1, supported);
+ supported = MM_SMS_STORAGE_ME;
+ g_array_append_val (*mem1, supported);
*mem2 = g_array_ref (*mem1);
*mem3 = g_array_ref (*mem1);
-
return TRUE;
}
static void
-messaging_load_supported_storages (MMIfaceModemMessaging *self,
+messaging_load_supported_storages (MMIfaceModemMessaging *_self,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
GSimpleAsyncResult *result;
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ iface_modem_messaging_parent->load_supported_storages (_self, callback, user_data);
+ return;
+ }
+
result = g_simple_async_result_new (G_OBJECT (self),
callback,
user_data,
@@ -6309,13 +6341,61 @@ messaging_load_supported_storages (MMIfaceModemMessaging *self,
}
/*****************************************************************************/
+/* Setup SMS format (Messaging interface) */
+
+static gboolean
+modem_messaging_setup_sms_format_finish (MMIfaceModemMessaging *_self,
+ GAsyncResult *res,
+ GError **error)
+{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->setup_sms_format_finish (_self, res, error);
+ }
+
+ return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+}
+
+static void
+modem_messaging_setup_sms_format (MMIfaceModemMessaging *_self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+ GSimpleAsyncResult *result;
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->setup_sms_format (_self, callback, user_data);
+ }
+
+ /* noop */
+ result = g_simple_async_result_new (G_OBJECT (self),
+ callback,
+ user_data,
+ modem_messaging_setup_sms_format);
+ g_simple_async_result_set_op_res_gboolean (result, TRUE);
+ g_simple_async_result_complete_in_idle (result);
+ g_object_unref (result);
+}
+
+/*****************************************************************************/
/* Set default storage (Messaging interface) */
static gboolean
-messaging_set_default_storage_finish (MMIfaceModemMessaging *self,
+messaging_set_default_storage_finish (MMIfaceModemMessaging *_self,
GAsyncResult *res,
GError **error)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->set_default_storage_finish (_self, res, error);
+ }
+
return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
}
@@ -6346,17 +6426,24 @@ wms_set_routes_ready (QmiClientWms *client,
}
static void
-messaging_set_default_storage (MMIfaceModemMessaging *self,
+messaging_set_default_storage (MMIfaceModemMessaging *_self,
MMSmsStorage storage,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
GSimpleAsyncResult *result;
QmiClient *client = NULL;
QmiMessageWmsSetRoutesInput *input;
GArray *routes_array;
QmiMessageWmsSetRoutesInputRouteListElement route;
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ iface_modem_messaging_parent->set_default_storage (_self, storage, callback, user_data);
+ return;
+ }
+
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
QMI_SERVICE_WMS, &client,
callback, user_data))
@@ -6432,10 +6519,17 @@ load_initial_sms_parts_context_complete_and_free (LoadInitialSmsPartsContext *ct
}
static gboolean
-load_initial_sms_parts_finish (MMIfaceModemMessaging *self,
+load_initial_sms_parts_finish (MMIfaceModemMessaging *_self,
GAsyncResult *res,
GError **error)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->load_initial_sms_parts_finish (_self, res, error);
+ }
+
return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
}
@@ -6625,16 +6719,7 @@ static void
load_initial_sms_parts_step (LoadInitialSmsPartsContext *ctx)
{
QmiMessageWmsListMessagesInput *input;
-
- /* Request to list messages in a given storage */
- input = qmi_message_wms_list_messages_input_new ();
- qmi_message_wms_list_messages_input_set_storage_type (
- input,
- mm_sms_storage_to_qmi_storage_type (ctx->storage),
- NULL);
- qmi_message_wms_list_messages_input_set_message_mode (input,
- QMI_WMS_MESSAGE_MODE_GSM_WCDMA,
- NULL);
+ gint tag_type = -1;
switch (ctx->step) {
case LOAD_INITIAL_SMS_PARTS_STEP_FIRST:
@@ -6647,34 +6732,22 @@ load_initial_sms_parts_step (LoadInitialSmsPartsContext *ctx)
case LOAD_INITIAL_SMS_PARTS_STEP_LIST_MT_READ:
mm_dbg ("loading MT-read messages from storage '%s'...",
mm_sms_storage_get_string (ctx->storage));
- qmi_message_wms_list_messages_input_set_message_tag (
- input,
- QMI_WMS_MESSAGE_TAG_TYPE_MT_READ,
- NULL);
+ tag_type = QMI_WMS_MESSAGE_TAG_TYPE_MT_READ;
break;
case LOAD_INITIAL_SMS_PARTS_STEP_LIST_MT_NOT_READ:
mm_dbg ("loading MT-not-read messages from storage '%s'...",
mm_sms_storage_get_string (ctx->storage));
- qmi_message_wms_list_messages_input_set_message_tag (
- input,
- QMI_WMS_MESSAGE_TAG_TYPE_MT_NOT_READ,
- NULL);
+ tag_type = QMI_WMS_MESSAGE_TAG_TYPE_MT_NOT_READ;
break;
case LOAD_INITIAL_SMS_PARTS_STEP_LIST_MO_SENT:
mm_dbg ("loading MO-sent messages from storage '%s'...",
mm_sms_storage_get_string (ctx->storage));
- qmi_message_wms_list_messages_input_set_message_tag (
- input,
- QMI_WMS_MESSAGE_TAG_TYPE_MO_SENT,
- NULL);
+ tag_type = QMI_WMS_MESSAGE_TAG_TYPE_MO_SENT;
break;
case LOAD_INITIAL_SMS_PARTS_STEP_LIST_MO_NOT_SENT:
mm_dbg ("loading MO-not-sent messages from storage '%s'...",
mm_sms_storage_get_string (ctx->storage));
- qmi_message_wms_list_messages_input_set_message_tag (
- input,
- QMI_WMS_MESSAGE_TAG_TYPE_MO_NOT_SENT,
- NULL);
+ tag_type = QMI_WMS_MESSAGE_TAG_TYPE_MO_NOT_SENT;
break;
case LOAD_INITIAL_SMS_PARTS_STEP_LAST:
/* All steps done */
@@ -6683,6 +6756,22 @@ load_initial_sms_parts_step (LoadInitialSmsPartsContext *ctx)
return;
}
+ /* Request to list messages in a given storage */
+ input = qmi_message_wms_list_messages_input_new ();
+ qmi_message_wms_list_messages_input_set_storage_type (
+ input,
+ mm_sms_storage_to_qmi_storage_type (ctx->storage),
+ NULL);
+ qmi_message_wms_list_messages_input_set_message_mode (
+ input,
+ QMI_WMS_MESSAGE_MODE_GSM_WCDMA,
+ NULL);
+ if (tag_type != -1)
+ qmi_message_wms_list_messages_input_set_message_tag (
+ input,
+ (QmiWmsMessageTagType)tag_type,
+ NULL);
+
qmi_client_wms_list_messages (QMI_CLIENT_WMS (ctx->client),
input,
5,
@@ -6693,14 +6782,20 @@ load_initial_sms_parts_step (LoadInitialSmsPartsContext *ctx)
}
static void
-load_initial_sms_parts (MMIfaceModemMessaging *self,
+load_initial_sms_parts (MMIfaceModemMessaging *_self,
MMSmsStorage storage,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
LoadInitialSmsPartsContext *ctx;
QmiClient *client = NULL;
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->load_initial_sms_parts (_self, storage, callback, user_data);
+ }
+
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
QMI_SERVICE_WMS, &client,
callback, user_data))
@@ -6833,10 +6928,32 @@ messaging_event_report_indication_cb (QmiClientNas *client,
}
static gboolean
-messaging_setup_cleanup_unsolicited_events_finish (MMIfaceModemMessaging *self,
- GAsyncResult *res,
- GError **error)
+messaging_cleanup_unsolicited_events_finish (MMIfaceModemMessaging *_self,
+ GAsyncResult *res,
+ GError **error)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->cleanup_unsolicited_events_finish (_self, res, error);
+ }
+
+ return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+}
+
+static gboolean
+messaging_setup_unsolicited_events_finish (MMIfaceModemMessaging *_self,
+ GAsyncResult *res,
+ GError **error)
+{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->setup_unsolicited_events_finish (_self, res, error);
+ }
+
return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
}
@@ -6891,10 +7008,17 @@ common_setup_cleanup_messaging_unsolicited_events (MMBroadbandModemQmi *self,
}
static void
-messaging_cleanup_unsolicited_events (MMIfaceModemMessaging *self,
+messaging_cleanup_unsolicited_events (MMIfaceModemMessaging *_self,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->cleanup_unsolicited_events (_self, callback, user_data);
+ }
+
common_setup_cleanup_messaging_unsolicited_events (MM_BROADBAND_MODEM_QMI (self),
FALSE,
callback,
@@ -6902,10 +7026,17 @@ messaging_cleanup_unsolicited_events (MMIfaceModemMessaging *self,
}
static void
-messaging_setup_unsolicited_events (MMIfaceModemMessaging *self,
+messaging_setup_unsolicited_events (MMIfaceModemMessaging *_self,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->setup_unsolicited_events (_self, callback, user_data);
+ }
+
common_setup_cleanup_messaging_unsolicited_events (MM_BROADBAND_MODEM_QMI (self),
TRUE,
callback,
@@ -6933,10 +7064,32 @@ enable_messaging_unsolicited_events_context_complete_and_free (EnableMessagingUn
}
static gboolean
-messaging_enable_disable_unsolicited_events_finish (MMIfaceModemMessaging *self,
- GAsyncResult *res,
- GError **error)
+messaging_disable_unsolicited_events_finish (MMIfaceModemMessaging *_self,
+ GAsyncResult *res,
+ GError **error)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->disable_unsolicited_events_finish (_self, res, error);
+ }
+
+ return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+}
+
+static gboolean
+messaging_enable_unsolicited_events_finish (MMIfaceModemMessaging *_self,
+ GAsyncResult *res,
+ GError **error)
+{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->enable_unsolicited_events_finish (_self, res, error);
+ }
+
return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
}
@@ -7019,10 +7172,17 @@ common_enable_disable_messaging_unsolicited_events (MMBroadbandModemQmi *self,
}
static void
-messaging_disable_unsolicited_events (MMIfaceModemMessaging *self,
+messaging_disable_unsolicited_events (MMIfaceModemMessaging *_self,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->disable_unsolicited_events (_self, callback, user_data);
+ }
+
common_enable_disable_messaging_unsolicited_events (MM_BROADBAND_MODEM_QMI (self),
FALSE,
callback,
@@ -7030,10 +7190,17 @@ messaging_disable_unsolicited_events (MMIfaceModemMessaging *self,
}
static void
-messaging_enable_unsolicited_events (MMIfaceModemMessaging *self,
+messaging_enable_unsolicited_events (MMIfaceModemMessaging *_self,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->enable_unsolicited_events (_self, callback, user_data);
+ }
+
common_enable_disable_messaging_unsolicited_events (MM_BROADBAND_MODEM_QMI (self),
TRUE,
callback,
@@ -7044,8 +7211,15 @@ messaging_enable_unsolicited_events (MMIfaceModemMessaging *self,
/* Create SMS (Messaging interface) */
static MMSms *
-messaging_create_sms (MMIfaceModemMessaging *self)
+messaging_create_sms (MMIfaceModemMessaging *_self)
{
+ MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
+
+ /* Handle fallback */
+ if (self->priv->messaging_fallback_at) {
+ return iface_modem_messaging_parent->create_sms (_self);
+ }
+
return mm_sms_qmi_new (MM_BASE_MODEM (self));
}
@@ -8625,24 +8799,26 @@ iface_modem_cdma_init (MMIfaceModemCdma *iface)
static void
iface_modem_messaging_init (MMIfaceModemMessaging *iface)
{
+ iface_modem_messaging_parent = g_type_interface_peek_parent (iface);
+
iface->check_support = messaging_check_support;
iface->check_support_finish = messaging_check_support_finish;
iface->load_supported_storages = messaging_load_supported_storages;
iface->load_supported_storages_finish = messaging_load_supported_storages_finish;
- iface->setup_sms_format = NULL;
- iface->setup_sms_format_finish = NULL;
+ iface->setup_sms_format = modem_messaging_setup_sms_format;
+ iface->setup_sms_format_finish = modem_messaging_setup_sms_format_finish;
iface->set_default_storage = messaging_set_default_storage;
iface->set_default_storage_finish = messaging_set_default_storage_finish;
iface->load_initial_sms_parts = load_initial_sms_parts;
iface->load_initial_sms_parts_finish = load_initial_sms_parts_finish;
iface->setup_unsolicited_events = messaging_setup_unsolicited_events;
- iface->setup_unsolicited_events_finish = messaging_setup_cleanup_unsolicited_events_finish;
+ iface->setup_unsolicited_events_finish = messaging_setup_unsolicited_events_finish;
iface->cleanup_unsolicited_events = messaging_cleanup_unsolicited_events;
- iface->cleanup_unsolicited_events_finish = messaging_setup_cleanup_unsolicited_events_finish;
+ iface->cleanup_unsolicited_events_finish = messaging_cleanup_unsolicited_events_finish;
iface->enable_unsolicited_events = messaging_enable_unsolicited_events;
- iface->enable_unsolicited_events_finish = messaging_enable_disable_unsolicited_events_finish;
+ iface->enable_unsolicited_events_finish = messaging_enable_unsolicited_events_finish;
iface->disable_unsolicited_events = messaging_disable_unsolicited_events;
- iface->disable_unsolicited_events_finish = messaging_enable_disable_unsolicited_events_finish;
+ iface->disable_unsolicited_events_finish = messaging_disable_unsolicited_events_finish;
iface->create_sms = messaging_create_sms;
}
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index c4b808c..f0f10ce 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -2983,7 +2983,8 @@ typedef struct {
GSimpleAsyncResult *result;
MmGdbusModem *skeleton;
MMModemPowerState power_state;
- MMModemPowerState previous_power_state;
+ MMModemPowerState previous_cached_power_state;
+ MMModemPowerState previous_real_power_state;
} SetPowerStateContext;
static void
@@ -3029,6 +3030,9 @@ modem_power_up_ready (MMIfaceModem *self,
MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up_finish (self, res, &error);
if (error) {
+ /* If the real and cached ones are different, set the real one */
+ if (ctx->previous_cached_power_state != ctx->previous_real_power_state)
+ mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->previous_real_power_state);
g_simple_async_result_take_error (ctx->result, error);
set_power_state_context_complete_and_free (ctx);
return;
@@ -3060,9 +3064,12 @@ modem_power_down_ready (MMIfaceModem *self,
GError *error = NULL;
MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down_finish (self, res, &error);
- if (error)
+ if (error) {
+ /* If the real and cached ones are different, set the real one */
+ if (ctx->previous_cached_power_state != ctx->previous_real_power_state)
+ mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->previous_real_power_state);
g_simple_async_result_take_error (ctx->result, error);
- else {
+ } else {
mm_dbg ("Modem set in low-power mode...");
mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->power_state);
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
@@ -3071,38 +3078,16 @@ modem_power_down_ready (MMIfaceModem *self,
set_power_state_context_complete_and_free (ctx);
}
-void
-mm_iface_modem_set_power_state (MMIfaceModem *self,
- MMModemPowerState power_state,
- GAsyncReadyCallback callback,
- gpointer user_data)
+static void
+set_power_state (SetPowerStateContext *ctx)
{
- SetPowerStateContext *ctx;
-
- ctx = g_slice_new0 (SetPowerStateContext);
- ctx->self = g_object_ref (self);
- ctx->result = g_simple_async_result_new (G_OBJECT (self),
- callback,
- user_data,
- mm_iface_modem_set_power_state);
- ctx->power_state = power_state;
- g_object_get (ctx->self,
- MM_IFACE_MODEM_DBUS_SKELETON, &ctx->skeleton,
- NULL);
- if (!ctx->skeleton) {
- g_simple_async_result_set_error (ctx->result,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "Couldn't get interface skeleton");
- set_power_state_context_complete_and_free (ctx);
- return;
- }
- ctx->previous_power_state = mm_gdbus_modem_get_power_state (ctx->skeleton);
-
/* Already done if we're in the desired power state */
- if (ctx->previous_power_state == ctx->power_state) {
+ if (ctx->previous_real_power_state == ctx->power_state) {
mm_dbg ("No need to change power state: already in '%s' power state",
mm_modem_power_state_get_string (ctx->power_state));
+ /* If the real and cached ones are different, set the real one */
+ if (ctx->previous_cached_power_state != ctx->previous_real_power_state)
+ mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->previous_real_power_state);
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
set_power_state_context_complete_and_free (ctx);
return;
@@ -3116,8 +3101,8 @@ mm_iface_modem_set_power_state (MMIfaceModem *self,
/* Going into low power mode? */
if (ctx->power_state == MM_MODEM_POWER_STATE_LOW) {
/* Error if unsupported */
- if (!MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down ||
- !MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down_finish) {
+ if (!MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->modem_power_down ||
+ !MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->modem_power_down_finish) {
g_simple_async_result_set_error (ctx->result,
MM_CORE_ERROR,
MM_CORE_ERROR_UNSUPPORTED,
@@ -3126,17 +3111,18 @@ mm_iface_modem_set_power_state (MMIfaceModem *self,
return;
}
- MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down (MM_IFACE_MODEM (self),
- (GAsyncReadyCallback)modem_power_down_ready,
- ctx);
+ MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->modem_power_down (
+ MM_IFACE_MODEM (ctx->self),
+ (GAsyncReadyCallback)modem_power_down_ready,
+ ctx);
return;
}
/* Going out of low power mode? */
if (ctx->power_state == MM_MODEM_POWER_STATE_ON) {
/* Error if unsupported */
- if (!MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up ||
- !MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up_finish) {
+ if (!MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->modem_power_up ||
+ !MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->modem_power_up_finish) {
g_simple_async_result_set_error (ctx->result,
MM_CORE_ERROR,
MM_CORE_ERROR_UNSUPPORTED,
@@ -3145,15 +3131,83 @@ mm_iface_modem_set_power_state (MMIfaceModem *self,
return;
}
- MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up (MM_IFACE_MODEM (self),
- (GAsyncReadyCallback)modem_power_up_ready,
- ctx);
+ MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->modem_power_up (
+ MM_IFACE_MODEM (ctx->self),
+ (GAsyncReadyCallback)modem_power_up_ready,
+ ctx);
return;
}
g_assert_not_reached ();
}
+static void
+set_power_state_load_ready (MMIfaceModem *self,
+ GAsyncResult *res,
+ SetPowerStateContext *ctx)
+{
+ GError *error = NULL;
+
+ ctx->previous_real_power_state = MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state_finish (self, res, &error);
+ if (error) {
+ g_debug ("Couldn't reload current power state: %s", error->message);
+ g_error_free (error);
+ /* Default to the cached one */
+ ctx->previous_real_power_state = ctx->previous_cached_power_state;
+ }
+
+ /* And keep on */
+ set_power_state (ctx);
+}
+
+void
+mm_iface_modem_set_power_state (MMIfaceModem *self,
+ MMModemPowerState power_state,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ SetPowerStateContext *ctx;
+
+ ctx = g_slice_new0 (SetPowerStateContext);
+ ctx->self = g_object_ref (self);
+ ctx->result = g_simple_async_result_new (G_OBJECT (self),
+ callback,
+ user_data,
+ mm_iface_modem_set_power_state);
+ ctx->power_state = power_state;
+ g_object_get (ctx->self,
+ MM_IFACE_MODEM_DBUS_SKELETON, &ctx->skeleton,
+ NULL);
+ if (!ctx->skeleton) {
+ g_simple_async_result_set_error (ctx->result,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "Couldn't get interface skeleton");
+ set_power_state_context_complete_and_free (ctx);
+ return;
+ }
+
+ ctx->previous_cached_power_state = mm_gdbus_modem_get_power_state (ctx->skeleton);
+
+ /* We cannot really rely on the power state value that we had cached before,
+ * as the real power status of the modem may also be changed by rfkill. So,
+ * before updating the current power state, re-check which is the real power
+ * state. */
+ if (MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_power_state &&
+ MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_power_state_finish) {
+ MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_power_state (
+ ctx->self,
+ (GAsyncReadyCallback)set_power_state_load_ready,
+ ctx);
+ return;
+ }
+
+ /* If there is no way to load power state, just keep on assuming the cached
+ * one is also the real one */
+ ctx->previous_real_power_state = ctx->previous_cached_power_state;
+ set_power_state (ctx);
+}
+
/*****************************************************************************/
/* MODEM DISABLING */
@@ -3965,6 +4019,15 @@ interface_initialization_step (InitializationContext *ctx)
g_assert (primary != NULL);
mm_gdbus_modem_set_primary_port (ctx->skeleton, mm_port_get_device (primary));
}
+ /* Load ports if not done before */
+ if (!mm_gdbus_modem_get_ports (ctx->skeleton)) {
+ MMModemPortInfo *port_infos;
+ guint n_port_infos;
+
+ port_infos = mm_base_modem_get_port_infos (MM_BASE_MODEM (ctx->self), &n_port_infos);
+ mm_gdbus_modem_set_ports (ctx->skeleton, mm_common_ports_array_to_variant (port_infos, n_port_infos));
+ mm_modem_port_info_array_free (port_infos, n_port_infos);
+ }
/* Fall down to next step */
ctx->step++;
@@ -4004,6 +4067,7 @@ interface_initialization_step (InitializationContext *ctx)
ctx->self,
(GAsyncReadyCallback)load_supported_capabilities_ready,
ctx);
+ g_array_unref (supported_capabilities);
return;
}
diff --git a/src/mm-manager.c b/src/mm-manager.c
index dca384e..7103a00 100644
--- a/src/mm-manager.c
+++ b/src/mm-manager.c
@@ -160,6 +160,7 @@ find_physical_device (GUdevDevice *child)
const char *subsys, *type;
guint32 i = 0;
gboolean is_usb = FALSE, is_pci = FALSE, is_pcmcia = FALSE, is_platform = FALSE;
+ gboolean is_pnp = FALSE;
g_return_val_if_fail (child != NULL, NULL);
@@ -203,6 +204,10 @@ find_physical_device (GUdevDevice *child)
is_pci = TRUE;
physdev = iter;
break;
+ } else if (is_pnp || !strcmp (subsys, "pnp")) {
+ is_pnp = TRUE;
+ physdev = iter;
+ break;
}
}
@@ -280,10 +285,11 @@ device_added (MMManager *manager,
goto out;
}
- /* If the physdev is a 'platform' device that's not whitelisted, ignore it */
+ /* If the physdev is a 'platform' or 'pnp' device that's not whitelisted, ignore it */
physdev_subsys = g_udev_device_get_subsystem (physdev);
if ( physdev_subsys
- && !strcmp (physdev_subsys, "platform")
+ && ( g_str_equal (physdev_subsys, "platform")
+ || g_str_equal (physdev_subsys, "pnp"))
&& !g_udev_device_get_property_as_boolean (physdev, "ID_MM_PLATFORM_DRIVER_PROBE")) {
mm_dbg ("(%s/%s): port's parent platform driver is not whitelisted", subsys, name);
goto out;
diff --git a/src/mm-modem-helpers-mbim.c b/src/mm-modem-helpers-mbim.c
index e11c8bd..d58ed59 100644
--- a/src/mm-modem-helpers-mbim.c
+++ b/src/mm-modem-helpers-mbim.c
@@ -186,3 +186,22 @@ mm_mobile_equipment_error_from_mbim_nw_error (MbimNwError nw_error)
nw_error);
}
}
+
+/*****************************************************************************/
+
+MMSmsState
+mm_sms_state_from_mbim_message_status (MbimSmsStatus status)
+{
+ switch (status) {
+ case MBIM_SMS_STATUS_NEW:
+ return MM_SMS_STATE_RECEIVED;
+ case MBIM_SMS_STATUS_OLD:
+ return MM_SMS_STATE_RECEIVED;
+ case MBIM_SMS_STATUS_DRAFT:
+ return MM_SMS_STATE_STORED;
+ case MBIM_SMS_STATUS_SENT:
+ return MM_SMS_STATE_SENT;
+ }
+
+ return MM_SMS_STATE_UNKNOWN;
+}
diff --git a/src/mm-modem-helpers-mbim.h b/src/mm-modem-helpers-mbim.h
index 5b01609..28d8f7e 100644
--- a/src/mm-modem-helpers-mbim.h
+++ b/src/mm-modem-helpers-mbim.h
@@ -32,4 +32,9 @@ MMModemAccessTechnology mm_modem_access_technology_from_mbim_data_class (MbimDat
GError *mm_mobile_equipment_error_from_mbim_nw_error (MbimNwError nw_error);
+/*****************************************************************************/
+/* MBIM/SMS to MM translations */
+
+MMSmsState mm_sms_state_from_mbim_message_status (MbimSmsStatus status);
+
#endif /* MM_MODEM_HELPERS_MBIM_H */
diff --git a/src/mm-modem-helpers-qmi.c b/src/mm-modem-helpers-qmi.c
index f8832a7..61d8b27 100644
--- a/src/mm-modem-helpers-qmi.c
+++ b/src/mm-modem-helpers-qmi.c
@@ -955,7 +955,7 @@ mm_modem_capability_from_qmi_radio_technology_preference (QmiNasRadioTechnologyP
QmiNasRadioTechnologyPreference
mm_modem_capability_to_qmi_radio_technology_preference (MMModemCapability caps)
{
- QmiNasRatModePreference qmi = 0;
+ QmiNasRadioTechnologyPreference qmi = 0;
/* It is not expected to have a modem supporting 3GPP and 3GPP2 at the same
* time but not supporting SSP. */
@@ -1079,7 +1079,7 @@ mm_modem_mode_to_qmi_gsm_wcdma_acquisition_order_preference (MMModemMode mode)
mm_dbg ("Unhandled modem mode: '%s'", str);
g_free (str);
- return MM_MODEM_MODE_NONE;
+ return QMI_NAS_GSM_WCDMA_ACQUISITION_ORDER_PREFERENCE_AUTOMATIC;
}
/*****************************************************************************/
@@ -1093,7 +1093,7 @@ mm_modem_3gpp_registration_state_from_qmi_registration_state (QmiNasAttachState
return MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN;
if (attach_state == QMI_NAS_ATTACH_STATE_DETACHED)
- return QMI_NAS_REGISTRATION_STATE_NOT_REGISTERED;
+ return MM_MODEM_3GPP_REGISTRATION_STATE_IDLE;
/* attached */
diff --git a/src/mm-plugin-manager.c b/src/mm-plugin-manager.c
index 0fcb2d1..a4e7e24 100644
--- a/src/mm-plugin-manager.c
+++ b/src/mm-plugin-manager.c
@@ -208,11 +208,46 @@ port_probe_context_finished (PortProbeContext *port_probe_ctx)
/* Warn if the best plugin found for this port differs from the
* best plugin found for the the first probed port */
else if (!g_str_equal (mm_plugin_get_name (device_plugin),
- mm_plugin_get_name (port_probe_ctx->best_plugin)))
- mm_warn ("(Plugin Manager) (%s): plugin mismatch error (expected: '%s', got: '%s')",
- g_udev_device_get_name (port_probe_ctx->port),
- mm_plugin_get_name (MM_PLUGIN (mm_device_peek_plugin (ctx->device))),
- mm_plugin_get_name (port_probe_ctx->best_plugin));
+ mm_plugin_get_name (port_probe_ctx->best_plugin))) {
+ /* Icera modems may not reply to the icera probing in all ports. We handle this by
+ * checking the forbidden/allowed icera flags in both the current and the expected
+ * plugins. If either of these plugins requires icera and the other doesn't, we
+ * pick the Icera one as best plugin. */
+ gboolean previous_forbidden_icera;
+ gboolean previous_allowed_icera;
+ gboolean new_forbidden_icera;
+ gboolean new_allowed_icera;
+
+ g_object_get (device_plugin,
+ MM_PLUGIN_ALLOWED_ICERA, &previous_allowed_icera,
+ MM_PLUGIN_FORBIDDEN_ICERA, &previous_forbidden_icera,
+ NULL);
+ g_assert (previous_allowed_icera == FALSE || previous_forbidden_icera == FALSE);
+
+ g_object_get (port_probe_ctx->best_plugin,
+ MM_PLUGIN_ALLOWED_ICERA, &new_allowed_icera,
+ MM_PLUGIN_FORBIDDEN_ICERA, &new_forbidden_icera,
+ NULL);
+ g_assert (new_allowed_icera == FALSE || new_forbidden_icera == FALSE);
+
+ if (previous_allowed_icera && new_forbidden_icera) {
+ mm_warn ("(Plugin Manager) (%s): will use plugin '%s' instead of '%s', modem is Icera-capable",
+ g_udev_device_get_name (port_probe_ctx->port),
+ mm_plugin_get_name (MM_PLUGIN (mm_device_peek_plugin (ctx->device))),
+ mm_plugin_get_name (port_probe_ctx->best_plugin));
+ } else if (new_allowed_icera && previous_forbidden_icera) {
+ mm_warn ("(Plugin Manager) (%s): overriding previously selected device plugin '%s' with '%s', modem is Icera-capable",
+ g_udev_device_get_name (port_probe_ctx->port),
+ mm_plugin_get_name (MM_PLUGIN (mm_device_peek_plugin (ctx->device))),
+ mm_plugin_get_name (port_probe_ctx->best_plugin));
+ mm_device_set_plugin (ctx->device, G_OBJECT (port_probe_ctx->best_plugin));
+ } else {
+ mm_warn ("(Plugin Manager) (%s): plugin mismatch error (expected: '%s', got: '%s')",
+ g_udev_device_get_name (port_probe_ctx->port),
+ mm_plugin_get_name (MM_PLUGIN (mm_device_peek_plugin (ctx->device))),
+ mm_plugin_get_name (port_probe_ctx->best_plugin));
+ }
+ }
}
/* Remove us from the list of running probes */
@@ -313,17 +348,31 @@ suggest_port_probe_result (FindDeviceSupportContext *ctx,
port_probe_ctx->defer_id = g_idle_add ((GSourceFunc)deferred_support_check_idle,
port_probe_ctx);
}
- /* TODO: Cancel probing in the port if the plugin being
- * checked right now is not the one being suggested.
+ /* We should *not* cancel probing in the port if the plugin being
+ * checked right now is not the one being suggested. Each port
+ * should run its probing independently, and we'll later decide
+ * which result applies to the whole device.
*/
else if (suggested_plugin &&
/* The GENERIC plugin is NEVER suggested to others */
!g_str_equal (mm_plugin_get_name (suggested_plugin),
MM_PLUGIN_GENERIC_NAME)) {
- mm_dbg ("(Plugin Manager) (%s) [%s] suggested plugin for port",
- mm_plugin_get_name (suggested_plugin),
- g_udev_device_get_name (port_probe_ctx->port));
- port_probe_ctx->suggested_plugin = g_object_ref (suggested_plugin);
+ gboolean forbidden_icera;
+
+ /* If the plugin has MM_PLUGIN_FORBIDDEN_ICERA set, we do *not* suggest
+ * the plugin to others. Icera devices may not reply to the icera probing
+ * in all ports, so if other ports need to be tested for icera support,
+ * they should all go on. */
+ g_object_get (suggested_plugin,
+ MM_PLUGIN_FORBIDDEN_ICERA, &forbidden_icera,
+ NULL);
+
+ if (!forbidden_icera) {
+ mm_dbg ("(Plugin Manager) (%s) [%s] suggested plugin for port",
+ mm_plugin_get_name (suggested_plugin),
+ g_udev_device_get_name (port_probe_ctx->port));
+ port_probe_ctx->suggested_plugin = g_object_ref (suggested_plugin);
+ }
}
}
}
@@ -357,12 +406,16 @@ plugin_supports_port_ready (MMPlugin *plugin,
port_probe_ctx->suggested_plugin != plugin) {
/* The last plugin we tried said it supported this port, but it
* doesn't correspond with the one we're being suggested. */
- g_warn_if_reached ();
+ mm_dbg ("(Plugin Manager) (%s) [%s] found best plugin for port, "
+ "but not the same as the suggested one (%s)",
+ mm_plugin_get_name (port_probe_ctx->best_plugin),
+ g_udev_device_get_name (port_probe_ctx->port),
+ mm_plugin_get_name (port_probe_ctx->suggested_plugin));
+ } else {
+ mm_dbg ("(Plugin Manager) (%s) [%s] found best plugin for port",
+ mm_plugin_get_name (port_probe_ctx->best_plugin),
+ g_udev_device_get_name (port_probe_ctx->port));
}
-
- mm_dbg ("(Plugin Manager) (%s) [%s] found best plugin for port",
- mm_plugin_get_name (port_probe_ctx->best_plugin),
- g_udev_device_get_name (port_probe_ctx->port));
port_probe_ctx->current = NULL;
/* Step, which will end the port probe operation */
diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c
index 7648753..8fb5706 100644
--- a/src/mm-port-probe.c
+++ b/src/mm-port-probe.c
@@ -218,7 +218,7 @@ mm_port_probe_set_result_at_icera (MMPortProbe *self,
self->priv->is_icera = TRUE;
self->priv->flags |= MM_PORT_PROBE_AT_ICERA;
} else {
- mm_dbg ("(%s/%s) Modem is NOT Icera-based",
+ mm_dbg ("(%s/%s) Modem is probably not Icera-based",
g_udev_device_get_subsystem (self->priv->port),
g_udev_device_get_name (self->priv->port));
self->priv->is_icera = FALSE;
diff --git a/src/mm-serial-parsers.c b/src/mm-serial-parsers.c
index e5aa9a0..b7bb308 100644
--- a/src/mm-serial-parsers.c
+++ b/src/mm-serial-parsers.c
@@ -340,6 +340,7 @@ mm_serial_parser_v1_parse (gpointer data,
local_error = mm_connection_error_for_code (code);
goto done;
}
+ g_match_info_free (match_info);
/* NA error */
found = g_regex_match_full (parser->regex_na,
diff --git a/src/mm-serial-port.c b/src/mm-serial-port.c
index 57820c1..0f81c7b 100644
--- a/src/mm-serial-port.c
+++ b/src/mm-serial-port.c
@@ -937,7 +937,9 @@ mm_serial_port_open (MMSerialPort *self, GError **error)
*/
if (ioctl (priv->fd, TIOCGSERIAL, &sinfo) == 0) {
sinfo.closing_wait = ASYNC_CLOSING_WAIT_NONE;
- ioctl (priv->fd, TIOCSSERIAL, &sinfo);
+ if (ioctl (priv->fd, TIOCSSERIAL, &sinfo) < 0)
+ mm_warn ("(%s): couldn't set serial port closing_wait to none: %s",
+ device, g_strerror (errno));
}
g_get_current_time (&tv_end);
@@ -1027,7 +1029,9 @@ mm_serial_port_close (MMSerialPort *self)
if (sinfo.closing_wait != ASYNC_CLOSING_WAIT_NONE) {
mm_warn ("(%s): serial port closing_wait was reset!", device);
sinfo.closing_wait = ASYNC_CLOSING_WAIT_NONE;
- (void) ioctl (priv->fd, TIOCSSERIAL, &sinfo);
+ if (ioctl (priv->fd, TIOCSSERIAL, &sinfo) < 0)
+ mm_warn ("(%s): couldn't set serial port closing_wait to none: %s",
+ device, g_strerror (errno));
}
}
@@ -1592,11 +1596,7 @@ set_property (GObject *object, guint prop_id,
priv->bits = g_value_get_uint (value);
break;
case PROP_PARITY:
-#if GLIB_CHECK_VERSION(2,31,0)
priv->parity = g_value_get_schar (value);
-#else
- priv->parity = g_value_get_char (value);
-#endif
break;
case PROP_STOPBITS:
priv->stopbits = g_value_get_uint (value);
@@ -1636,11 +1636,7 @@ get_property (GObject *object, guint prop_id,
g_value_set_uint (value, priv->bits);
break;
case PROP_PARITY:
-#if GLIB_CHECK_VERSION(2,31,0)
g_value_set_schar (value, priv->parity);
-#else
- g_value_set_char (value, priv->parity);
-#endif
break;
case PROP_STOPBITS:
g_value_set_uint (value, priv->stopbits);
diff --git a/src/mm-sms-mbim.c b/src/mm-sms-mbim.c
new file mode 100644
index 0000000..c1e51f5
--- /dev/null
+++ b/src/mm-sms-mbim.c
@@ -0,0 +1,362 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2013 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <ctype.h>
+
+#include <ModemManager.h>
+#define _LIBMM_INSIDE_MM
+#include <libmm-glib.h>
+
+#include "mm-modem-helpers-mbim.h"
+#include "mm-iface-modem-messaging.h"
+#include "mm-sms-mbim.h"
+#include "mm-base-modem.h"
+#include "mm-log.h"
+
+G_DEFINE_TYPE (MMSmsMbim, mm_sms_mbim, MM_TYPE_SMS)
+
+/*****************************************************************************/
+
+static gboolean
+peek_device (gpointer self,
+ MbimDevice **o_device,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MMBaseModem *modem = NULL;
+
+ g_object_get (G_OBJECT (self),
+ MM_SMS_MODEM, &modem,
+ NULL);
+ g_assert (MM_IS_BASE_MODEM (modem));
+
+ if (o_device) {
+ MMMbimPort *port;
+
+ port = mm_base_modem_peek_port_mbim (modem);
+ if (!port) {
+ g_simple_async_report_error_in_idle (G_OBJECT (self),
+ callback,
+ user_data,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "Couldn't peek MBIM port");
+ g_object_unref (modem);
+ return FALSE;
+ }
+
+ *o_device = mm_mbim_port_peek_device (port);
+ }
+
+ g_object_unref (modem);
+ return TRUE;
+}
+
+/*****************************************************************************/
+/* Send the SMS */
+
+typedef struct {
+ MMSms *self;
+ MMBaseModem *modem;
+ MbimDevice *device;
+ GSimpleAsyncResult *result;
+ GList *current;
+} SmsSendContext;
+
+static void
+sms_send_context_complete_and_free (SmsSendContext *ctx)
+{
+ g_simple_async_result_complete_in_idle (ctx->result);
+ g_object_unref (ctx->result);
+ g_object_unref (ctx->device);
+ g_object_unref (ctx->modem);
+ g_object_unref (ctx->self);
+ g_slice_free (SmsSendContext, ctx);
+}
+
+static gboolean
+sms_send_finish (MMSms *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+}
+
+static void sms_send_next_part (SmsSendContext *ctx);
+
+static void
+sms_send_set_ready (MbimDevice *device,
+ GAsyncResult *res,
+ SmsSendContext *ctx)
+{
+ MbimMessage *response;
+ GError *error = NULL;
+ guint32 message_reference;
+
+ response = mbim_device_command_finish (device, res, &error);
+ if (response &&
+ mbim_message_command_done_get_result (response, &error) &&
+ mbim_message_sms_send_response_parse (
+ response,
+ &message_reference,
+ &error)) {
+ mm_sms_part_set_message_reference ((MMSmsPart *)ctx->current->data,
+ message_reference);
+ }
+
+ if (response)
+ mbim_message_unref (response);
+
+ if (error) {
+ g_prefix_error (&error, "Couldn't send SMS part: ");
+ g_simple_async_result_take_error (ctx->result, error);
+ sms_send_context_complete_and_free (ctx);
+ return;
+ }
+
+ /* Go on with next part */
+ ctx->current = g_list_next (ctx->current);
+ sms_send_next_part (ctx);
+}
+
+static void
+sms_send_next_part (SmsSendContext *ctx)
+{
+ MbimMessage *message;
+ guint8 *pdu;
+ guint pdulen = 0;
+ guint msgstart = 0;
+ GError *error = NULL;
+ MbimSmsPduSendRecord send_record;
+
+ if (!ctx->current) {
+ /* Done we are */
+ g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
+ sms_send_context_complete_and_free (ctx);
+ return;
+ }
+
+ /* Get PDU */
+ pdu = mm_sms_part_get_submit_pdu ((MMSmsPart *)ctx->current->data, &pdulen, &msgstart, &error);
+ if (!pdu) {
+ g_simple_async_result_take_error (ctx->result, error);
+ sms_send_context_complete_and_free (ctx);
+ return;
+ }
+
+ send_record.pdu_data_size = pdulen;
+ send_record.pdu_data = pdu;
+
+ message = mbim_message_sms_send_set_new (MBIM_SMS_FORMAT_PDU,
+ &send_record,
+ NULL,
+ NULL);
+ mbim_device_command (ctx->device,
+ message,
+ 10,
+ NULL,
+ (GAsyncReadyCallback)sms_send_set_ready,
+ ctx);
+ mbim_message_unref (message);
+ g_free (pdu);
+}
+
+static void
+sms_send (MMSms *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ SmsSendContext *ctx;
+ MbimDevice *device;
+
+ if (!peek_device (self, &device, callback, user_data))
+ return;
+
+ /* Setup the context */
+ ctx = g_slice_new0 (SmsSendContext);
+ ctx->result = g_simple_async_result_new (G_OBJECT (self),
+ callback,
+ user_data,
+ sms_send);
+ ctx->self = g_object_ref (self);
+ ctx->device = g_object_ref (device);
+ g_object_get (self,
+ MM_SMS_MODEM, &ctx->modem,
+ NULL);
+
+ ctx->current = mm_sms_get_parts (self);;
+ sms_send_next_part (ctx);
+}
+
+/*****************************************************************************/
+
+typedef struct {
+ MMSms *self;
+ MMBaseModem *modem;
+ MbimDevice *device;
+ GSimpleAsyncResult *result;
+ GList *current;
+ guint n_failed;
+} SmsDeletePartsContext;
+
+static void
+sms_delete_parts_context_complete_and_free (SmsDeletePartsContext *ctx)
+{
+ g_simple_async_result_complete_in_idle (ctx->result);
+ g_object_unref (ctx->result);
+ g_object_unref (ctx->device);
+ g_object_unref (ctx->modem);
+ g_object_unref (ctx->self);
+ g_slice_free (SmsDeletePartsContext, ctx);
+}
+
+static gboolean
+sms_delete_finish (MMSms *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+}
+
+static void delete_next_part (SmsDeletePartsContext *ctx);
+
+static void
+sms_delete_set_ready (MbimDevice *device,
+ GAsyncResult *res,
+ SmsDeletePartsContext *ctx)
+{
+ MbimMessage *response;
+ GError *error = NULL;
+
+ response = mbim_device_command_finish (device, res, &error);
+ if (response &&
+ mbim_message_command_done_get_result (response, &error))
+ mbim_message_sms_delete_response_parse (response, &error);
+
+ if (response)
+ mbim_message_unref (response);
+
+ if (error) {
+ ctx->n_failed++;
+ mm_dbg ("Couldn't delete SMS part with index %u: '%s'",
+ mm_sms_part_get_index ((MMSmsPart *)ctx->current->data),
+ error->message);
+ g_error_free (error);
+ }
+
+ /* We reset the index, as there is no longer that part */
+ mm_sms_part_set_index ((MMSmsPart *)ctx->current->data, SMS_PART_INVALID_INDEX);
+
+ ctx->current = g_list_next (ctx->current);
+ delete_next_part (ctx);
+}
+
+static void
+delete_next_part (SmsDeletePartsContext *ctx)
+{
+ MbimMessage *message;
+
+ /* Skip non-stored parts */
+ while (ctx->current &&
+ mm_sms_part_get_index ((MMSmsPart *)ctx->current->data) == SMS_PART_INVALID_INDEX)
+ ctx->current = g_list_next (ctx->current);
+
+ /* If all removed, we're done */
+ if (!ctx->current) {
+ if (ctx->n_failed > 0)
+ g_simple_async_result_set_error (ctx->result,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "Couldn't delete %u parts from this SMS",
+ ctx->n_failed);
+ else
+ g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
+
+ sms_delete_parts_context_complete_and_free (ctx);
+ return;
+ }
+
+ message = mbim_message_sms_delete_set_new (MBIM_SMS_FLAG_INDEX,
+ (guint32)mm_sms_part_get_index ((MMSmsPart *)ctx->current->data),
+ NULL);
+ mbim_device_command (ctx->device,
+ message,
+ 10,
+ NULL,
+ (GAsyncReadyCallback)sms_delete_set_ready,
+ ctx);
+ mbim_message_unref (message);
+
+}
+
+static void
+sms_delete (MMSms *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ SmsDeletePartsContext *ctx;
+ MbimDevice *device;
+
+ if (!peek_device (self, &device, callback, user_data))
+ return;
+
+ ctx = g_slice_new0 (SmsDeletePartsContext);
+ ctx->result = g_simple_async_result_new (G_OBJECT (self),
+ callback,
+ user_data,
+ sms_delete);
+ ctx->self = g_object_ref (self);
+ ctx->device = g_object_ref (device);
+ g_object_get (self,
+ MM_SMS_MODEM, &ctx->modem,
+ NULL);
+
+ /* Go on deleting parts */
+ ctx->current = mm_sms_get_parts (self);
+ delete_next_part (ctx);
+}
+
+/*****************************************************************************/
+
+MMSms *
+mm_sms_mbim_new (MMBaseModem *modem)
+{
+ return MM_SMS (g_object_new (MM_TYPE_SMS_MBIM,
+ MM_SMS_MODEM, modem,
+ NULL));
+}
+
+static void
+mm_sms_mbim_init (MMSmsMbim *self)
+{
+}
+
+static void
+mm_sms_mbim_class_init (MMSmsMbimClass *klass)
+{
+ MMSmsClass *sms_class = MM_SMS_CLASS (klass);
+
+ sms_class->store = NULL;
+ sms_class->store_finish = NULL;
+ sms_class->send = sms_send;
+ sms_class->send_finish = sms_send_finish;
+ sms_class->delete = sms_delete;
+ sms_class->delete_finish = sms_delete_finish;
+}
diff --git a/src/mm-sms-mbim.h b/src/mm-sms-mbim.h
new file mode 100644
index 0000000..93dc773
--- /dev/null
+++ b/src/mm-sms-mbim.h
@@ -0,0 +1,49 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2013 Aleksander Morgado <aleksander@gnu.org>
+ */
+
+#ifndef MM_SMS_MBIM_H
+#define MM_SMS_MBIM_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+#define _LIBMM_INSIDE_MM
+#include <libmm-glib.h>
+
+#include "mm-sms.h"
+
+#define MM_TYPE_SMS_MBIM (mm_sms_mbim_get_type ())
+#define MM_SMS_MBIM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_SMS_MBIM, MMSmsMbim))
+#define MM_SMS_MBIM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_SMS_MBIM, MMSmsMbimClass))
+#define MM_IS_SMS_MBIM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_SMS_MBIM))
+#define MM_IS_SMS_MBIM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_SMS_MBIM))
+#define MM_SMS_MBIM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_SMS_MBIM, MMSmsMbimClass))
+
+typedef struct _MMSmsMbim MMSmsMbim;
+typedef struct _MMSmsMbimClass MMSmsMbimClass;
+
+struct _MMSmsMbim {
+ MMSms parent;
+};
+
+struct _MMSmsMbimClass {
+ MMSmsClass parent;
+};
+
+GType mm_sms_mbim_get_type (void);
+
+MMSms *mm_sms_mbim_new (MMBaseModem *modem);
+
+#endif /* MM_SMS_MBIM_H */
diff --git a/src/mm-sms.c b/src/mm-sms.c
index 9f8e348..a7b1d64 100644
--- a/src/mm-sms.c
+++ b/src/mm-sms.c
@@ -87,9 +87,6 @@ get_validity_relative (GVariant *tuple)
if (type == MM_SMS_VALIDITY_TYPE_RELATIVE)
value_integer = g_variant_get_uint32 (value);
- else
- /* Currently not supported other than relative */
- g_warn_if_reached ();
g_variant_unref (value);
@@ -1668,6 +1665,9 @@ mm_sms_multipart_new (MMBaseModem *modem,
MM_SMS_MULTIPART_REFERENCE, reference,
"state", state,
"storage", storage,
+ "validity", g_variant_new ("(uv)",
+ MM_SMS_VALIDITY_TYPE_UNKNOWN,
+ g_variant_new_boolean (FALSE)),
NULL);
if (!mm_sms_multipart_take_part (self, first_part, error))
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
index 38c4627..dc58366 100644
--- a/src/tests/Makefile.am
+++ b/src/tests/Makefile.am
@@ -1,3 +1,4 @@
+include $(top_srcdir)/gtester.make
noinst_PROGRAMS = \
test-modem-helpers \
@@ -10,6 +11,8 @@ if WITH_QMI
noinst_PROGRAMS += test-modem-helpers-qmi
endif
+TEST_PROGS += $(noinst_PROGRAMS)
+
################
test_modem_helpers_SOURCES = \
@@ -157,18 +160,3 @@ if WITH_QMI
test_sms_part_CPPFLAGS += $(QMI_CFLAGS)
test_sms_part_LDADD += $(QMI_LIBS)
endif
-
-################
-
-if WITH_TESTS
-
-check-local: $(noinst_PROGRAMS)
- $(abs_builddir)/test-modem-helpers
- $(abs_builddir)/test-charsets
- $(abs_builddir)/test-qcdm-serial-port
- $(abs_builddir)/test-sms-part
-if WITH_QMI
- $(abs_builddir)/test-modem-helpers-qmi
-endif
-
-endif
diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in
index 9982ba3..0fdf026 100644
--- a/src/tests/Makefile.in
+++ b/src/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -78,6 +78,8 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/gtester.make $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/depcomp
noinst_PROGRAMS = test-modem-helpers$(EXEEXT) test-charsets$(EXEEXT) \
test-qcdm-serial-port$(EXEEXT) test-at-serial-port$(EXEEXT) \
test-sms-part$(EXEEXT) $(am__EXEEXT_1)
@@ -93,8 +95,6 @@ noinst_PROGRAMS = test-modem-helpers$(EXEEXT) test-charsets$(EXEEXT) \
@WITH_QMI_TRUE@am__append_10 = $(QMI_CFLAGS)
@WITH_QMI_TRUE@am__append_11 = $(QMI_LIBS)
subdir = src/tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
@@ -229,8 +229,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -254,7 +252,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -271,7 +268,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -303,14 +299,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -329,13 +331,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -404,6 +402,12 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+GTESTER = gtester
+GTESTER_REPORT = gtester-report
+
+# initialize variables for unconditional += appending
+EXTRA_DIST =
+TEST_PROGS = $(noinst_PROGRAMS)
################
test_modem_helpers_SOURCES = \
@@ -492,7 +496,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtester.make $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -513,6 +517,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
+$(top_srcdir)/gtester.make:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -765,7 +770,6 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
-@WITH_TESTS_FALSE@check-local:
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am
@@ -889,14 +893,89 @@ uninstall-am:
tags tags-am uninstall uninstall-am
-################
-
-@WITH_TESTS_TRUE@check-local: $(noinst_PROGRAMS)
-@WITH_TESTS_TRUE@ $(abs_builddir)/test-modem-helpers
-@WITH_TESTS_TRUE@ $(abs_builddir)/test-charsets
-@WITH_TESTS_TRUE@ $(abs_builddir)/test-qcdm-serial-port
-@WITH_TESTS_TRUE@ $(abs_builddir)/test-sms-part
-@WITH_QMI_TRUE@@WITH_TESTS_TRUE@ $(abs_builddir)/test-modem-helpers-qmi
+### testing rules
+
+# test: run all tests in cwd and subdirs
+test: test-nonrecursive
+ @ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done
+
+# test-nonrecursive: run tests only in cwd
+test-nonrecursive: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
+
+# test-report: run tests in subdirs and generate report
+# perf-report: run tests in subdirs with -m perf and generate report
+# full-report: like test-report: with -m perf and -m slow
+test-report perf-report full-report: ${TEST_PROGS}
+ @test -z "${TEST_PROGS}" || { \
+ case $@ in \
+ test-report) test_options="-k";; \
+ perf-report) test_options="-k -m=perf";; \
+ full-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
+ elif test -n "${TEST_PROGS}" ; then \
+ ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
+ fi ; \
+ }
+ @ ignore_logdir=true ; \
+ if test -z "$$GTESTER_LOGDIR" ; then \
+ GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
+ ignore_logdir=false ; \
+ fi ; \
+ if test -d "$(top_srcdir)/.git" ; then \
+ REVISION=`git describe` ; \
+ else \
+ REVISION=$(VERSION) ; \
+ fi ; \
+ for subdir in $(SUBDIRS) . ; do \
+ test "$$subdir" = "." -o "$$subdir" = "po" || \
+ ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
+ done ; \
+ $$ignore_logdir || { \
+ echo '<?xml version="1.0"?>' > $@.xml ; \
+ echo '<report-collection>' >> $@.xml ; \
+ echo '<info>' >> $@.xml ; \
+ echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \
+ echo ' <version>$(VERSION)</version>' >> $@.xml ; \
+ echo " <revision>$$REVISION</revision>" >> $@.xml ; \
+ echo '</info>' >> $@.xml ; \
+ for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
+ sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
+ done ; \
+ echo >> $@.xml ; \
+ echo '</report-collection>' >> $@.xml ; \
+ rm -rf "$$GTESTER_LOGDIR"/ ; \
+ ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
+ }
+.PHONY: test test-report perf-report full-report test-nonrecursive
+
+.PHONY: lcov genlcov lcov-clean
+# use recursive makes in order to ignore errors during check
+lcov:
+ -$(MAKE) $(AM_MAKEFLAGS) -k check
+ $(MAKE) $(AM_MAKEFLAGS) genlcov
+
+# we have to massage the lcov.info file slightly to hide the effect of libtool
+# placing the objects files in the .libs/ directory separate from the *.c
+# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
+genlcov:
+ rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
+ $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
+ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
+ @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
+
+lcov-clean:
+ -$(LTP) --directory $(top_builddir) -z
+ -rm -rf glib-lcov.info glib-lcov
+ -find -name '*.gcda' -print | xargs rm
+
+# run tests in cwd as part of make check
+check-local: test-nonrecursive
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/tests/test-charsets.c b/src/tests/test-charsets.c
index ced38a6..1c31413 100644
--- a/src/tests/test-charsets.c
+++ b/src/tests/test-charsets.c
@@ -362,11 +362,7 @@ test_take_convert_ucs2_bad_ascii2 (void *f, gpointer d)
}
-#if GLIB_CHECK_VERSION(2,25,12)
typedef GTestFixtureFunc TCFunc;
-#else
-typedef void (*TCFunc)(void);
-#endif
#define TESTCASE(t, d) g_test_create_case (#t, 0, d, NULL, (TCFunc) t, NULL)
@@ -403,4 +399,3 @@ int main (int argc, char **argv)
return result;
}
-
diff --git a/src/tests/test-modem-helpers-qmi.c b/src/tests/test-modem-helpers-qmi.c
index 50b2ed0..0f020f3 100644
--- a/src/tests/test-modem-helpers-qmi.c
+++ b/src/tests/test-modem-helpers-qmi.c
@@ -316,6 +316,7 @@ _mm_log (const char *loc,
const char *fmt,
...)
{
+#if defined ENABLE_TEST_MESSAGE_TRACES
/* Dummy log function */
va_list args;
gchar *msg;
@@ -325,6 +326,7 @@ _mm_log (const char *loc,
va_end (args);
g_print ("%s\n", msg);
g_free (msg);
+#endif
}
int main (int argc, char **argv)
diff --git a/src/tests/test-modem-helpers.c b/src/tests/test-modem-helpers.c
index f988dfa..5d94571 100644
--- a/src/tests/test-modem-helpers.c
+++ b/src/tests/test-modem-helpers.c
@@ -22,6 +22,12 @@
#include "mm-modem-helpers.h"
#include "mm-log.h"
+#if defined ENABLE_TEST_MESSAGE_TRACES
+#define trace(message, ...) g_print (message, ##__VA_ARGS__)
+#else
+#define trace(...)
+#endif
+
/*****************************************************************************/
/* Test CMGL responses */
@@ -202,7 +208,7 @@ test_cops_results (const gchar *desc,
GError *error = NULL;
GList *results;
- g_print ("\nTesting %s +COPS response...\n", desc);
+ trace ("\nTesting %s +COPS response...\n", desc);
results = mm_3gpp_parse_cops_test_response (reply, &error);
g_assert (results);
@@ -679,17 +685,17 @@ test_creg_match (const char *test,
g_assert (data);
g_assert (result);
- g_print ("\nTesting '%s' +C%sREG %s response...\n",
- test,
- result->cgreg ? "G" : "",
- solicited ? "solicited" : "unsolicited");
+ trace ("\nTesting '%s' +C%sREG %s response...\n",
+ test,
+ result->cgreg ? "G" : "",
+ solicited ? "solicited" : "unsolicited");
array = solicited ? data->solicited_creg : data->unsolicited_creg;
for (i = 0; i < array->len; i++) {
GRegex *r = g_ptr_array_index (array, i);
if (g_regex_match (r, reply, 0, &info)) {
- g_print (" matched with %d\n", i);
+ trace (" matched with %d\n", i);
regex_num = i + 1;
break;
}
@@ -697,9 +703,9 @@ test_creg_match (const char *test,
info = NULL;
}
- g_print (" regex_num (%u) == result->regex_num (%u)\n",
- regex_num,
- result->regex_num);
+ trace (" regex_num (%u) == result->regex_num (%u)\n",
+ regex_num,
+ result->regex_num);
g_assert (info != NULL);
g_assert_cmpuint (regex_num, ==, result->regex_num);
@@ -711,8 +717,8 @@ test_creg_match (const char *test,
g_assert (lac == result->lac);
g_assert (ci == result->ci);
- g_print (" access_tech (%d) == result->act (%d)\n",
- access_tech, result->act);
+ trace (" access_tech (%d) == result->act (%d)\n",
+ access_tech, result->act);
g_assert_cmpuint (access_tech, ==, result->act);
g_assert_cmpuint (cgreg, ==, result->cgreg);
g_assert_cmpuint (cereg, ==, result->cereg);
@@ -1366,7 +1372,7 @@ test_devid_item (void *f, gpointer d)
DevidItem *item = (DevidItem *) d;
char *devid;
- g_print ("%s... ", item->desc);
+ trace ("%s... ", item->desc);
devid = mm_create_device_identifier (item->vid,
item->pid,
item->ati,
@@ -1400,7 +1406,7 @@ test_cind_results (const char *desc,
GError *error = NULL;
GHashTable *results;
- g_print ("\nTesting %s +CIND response...\n", desc);
+ trace ("\nTesting %s +CIND response...\n", desc);
results = mm_3gpp_parse_cind_test_response (reply, &error);
g_assert (results);
@@ -1469,7 +1475,7 @@ test_cgdcont_test_results (const gchar *desc,
GError *error = NULL;
GList *results;
- g_print ("\nTesting %s +CGDCONT test response...\n", desc);
+ trace ("\nTesting %s +CGDCONT test response...\n", desc);
results = mm_3gpp_parse_cgdcont_test_response (reply, &error);
g_assert (results);
@@ -1555,7 +1561,7 @@ test_cgdcont_read_results (const gchar *desc,
GError *error = NULL;
GList *results;
- g_print ("\nTesting %s +CGDCONT response...\n", desc);
+ trace ("\nTesting %s +CGDCONT response...\n", desc);
results = mm_3gpp_parse_cgdcont_read_response (reply, &error);
g_assert (results);
@@ -1637,7 +1643,7 @@ test_cpms_response_cinterion (void *f, gpointer d)
GArray *mem2 = NULL;
GArray *mem3 = NULL;
- g_print ("\nTesting Cinterion +CPMS=? response...\n");
+ trace ("\nTesting Cinterion +CPMS=? response...\n");
g_assert (mm_3gpp_parse_cpms_test_response (reply, &mem1, &mem2, &mem3));
g_assert (mem1->len == 3);
@@ -1665,7 +1671,7 @@ test_cnum_results (const gchar *desc,
GError *error = NULL;
guint i;
- g_print ("\nTesting +CNUM response (%s)...\n", desc);
+ trace ("\nTesting +CNUM response (%s)...\n", desc);
results = mm_3gpp_parse_cnum_exec_response (reply, &error);
g_assert (results);
@@ -1767,19 +1773,19 @@ common_parse_operator_id (const gchar *operator_id,
GError *error = NULL;
if (expected_mcc) {
- g_print ("Parsing Operator ID '%s' "
- "(%" G_GUINT16_FORMAT ", %" G_GUINT16_FORMAT ")...\n",
- operator_id, expected_mcc, expected_mnc);
+ trace ("\nParsing Operator ID '%s' "
+ "(%" G_GUINT16_FORMAT ", %" G_GUINT16_FORMAT ")...\n",
+ operator_id, expected_mcc, expected_mnc);
result = mm_3gpp_parse_operator_id (operator_id, &mcc, &mnc, &error);
} else {
- g_print ("Validating Operator ID '%s'...\n", operator_id);
+ trace ("\nValidating Operator ID '%s'...\n", operator_id);
result = mm_3gpp_parse_operator_id (operator_id, NULL, NULL, &error);
}
if (error)
- g_printerr ("\tGot %s error: %s...\n",
- expected_success ? "unexpected" : "expected",
- error->message);
+ trace ("\tGot %s error: %s...\n",
+ expected_success ? "unexpected" : "expected",
+ error->message);
g_assert (result == expected_success);
@@ -1799,7 +1805,7 @@ common_parse_operator_id (const gchar *operator_id,
static void
test_parse_operator_id (void *f, gpointer d)
{
- g_print ("\n");
+ trace ("\n");
/* Valid MCC+MNC(2) */
common_parse_operator_id ("41201", TRUE, 412, 1);
common_parse_operator_id ("41201", TRUE, 0, 0);
diff --git a/src/tests/test-qcdm-serial-port.c b/src/tests/test-qcdm-serial-port.c
index d61bdb4..1185838 100644
--- a/src/tests/test-qcdm-serial-port.c
+++ b/src/tests/test-qcdm-serial-port.c
@@ -439,11 +439,7 @@ test_pty_cleanup (gpointer user_data)
}
}
-#if GLIB_CHECK_VERSION(2,25,12)
typedef GTestFixtureFunc TCFunc;
-#else
-typedef void (*TCFunc)(void);
-#endif
#define TESTCASE(t, d) g_test_create_case (#t, 0, d, NULL, (TCFunc) t, NULL)
#define TESTCASE_PTY(t, d) g_test_create_case (#t, sizeof (*d), d, (TCFunc) test_pty_create, (TCFunc) t, (TCFunc) test_pty_cleanup)
diff --git a/src/tests/test-sms-part.c b/src/tests/test-sms-part.c
index d1f7588..33287e2 100644
--- a/src/tests/test-sms-part.c
+++ b/src/tests/test-sms-part.c
@@ -842,6 +842,7 @@ _mm_log (const char *loc,
const char *fmt,
...)
{
+#if defined ENABLE_TEST_MESSAGE_TRACES
/* Dummy log function */
va_list args;
gchar *msg;
@@ -851,6 +852,7 @@ _mm_log (const char *loc,
va_end (args);
g_print ("%s\n", msg);
g_free (msg);
+#endif
}
int main (int argc, char **argv)
diff --git a/test/Makefile.am b/test/Makefile.am
index 146f882..f0bfd18 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,35 +1,9 @@
-if HAVE_PPPD_H
-
-pppd_plugindir = $(PPPD_PLUGIN_DIR)
-pppd_plugin_LTLIBRARIES = mm-test-pppd-plugin.la
-
-mm_test_pppd_plugin_la_SOURCES = \
- mm-test-pppd-plugin.c
-
-mm_test_pppd_plugin_la_CPPFLAGS = $(MM_CFLAGS)
-mm_test_pppd_plugin_la_LDFLAGS = -module -avoid-version
-mm_test_pppd_plugin_la_LIBADD = $(MM_LIBS)
-
-endif
noinst_PROGRAMS = lsudev
+
lsudev_SOURCES = lsudev.c
lsudev_CPPFLAGS = $(GUDEV_CFLAGS)
lsudev_LDADD = $(GUDEV_LIBS)
-
EXTRA_DIST = \
- mm-test.py \
- disable.py \
- enable.py \
- disconnect.py \
- info.py \
- list-modems.py \
- location.py \
- sms-send.py \
- sms-get.py \
- send-pin.py \
- modem-autoenable.py \
- ussd.py \
- scan.py
-
+ mmcli-test-sms
diff --git a/test/Makefile.in b/test/Makefile.in
index 4cb61da..180b6d6 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -14,7 +14,6 @@
@SET_MAKE@
-
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
@@ -100,55 +99,15 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(pppd_plugindir)"
-LTLIBRARIES = $(pppd_plugin_LTLIBRARIES)
+PROGRAMS = $(noinst_PROGRAMS)
+am_lsudev_OBJECTS = lsudev-lsudev.$(OBJEXT)
+lsudev_OBJECTS = $(am_lsudev_OBJECTS)
am__DEPENDENCIES_1 =
-@HAVE_PPPD_H_TRUE@mm_test_pppd_plugin_la_DEPENDENCIES = \
-@HAVE_PPPD_H_TRUE@ $(am__DEPENDENCIES_1)
-am__mm_test_pppd_plugin_la_SOURCES_DIST = mm-test-pppd-plugin.c
-@HAVE_PPPD_H_TRUE@am_mm_test_pppd_plugin_la_OBJECTS = mm_test_pppd_plugin_la-mm-test-pppd-plugin.lo
-mm_test_pppd_plugin_la_OBJECTS = $(am_mm_test_pppd_plugin_la_OBJECTS)
+lsudev_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
-mm_test_pppd_plugin_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(mm_test_pppd_plugin_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-@HAVE_PPPD_H_TRUE@am_mm_test_pppd_plugin_la_rpath = -rpath \
-@HAVE_PPPD_H_TRUE@ $(pppd_plugindir)
-PROGRAMS = $(noinst_PROGRAMS)
-am_lsudev_OBJECTS = lsudev-lsudev.$(OBJEXT)
-lsudev_OBJECTS = $(am_lsudev_OBJECTS)
-lsudev_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -183,9 +142,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(mm_test_pppd_plugin_la_SOURCES) $(lsudev_SOURCES)
-DIST_SOURCES = $(am__mm_test_pppd_plugin_la_SOURCES_DIST) \
- $(lsudev_SOURCES)
+SOURCES = $(lsudev_SOURCES)
+DIST_SOURCES = $(lsudev_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -220,8 +178,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -245,7 +201,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -262,7 +217,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -294,14 +248,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -320,13 +280,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
@@ -395,31 +351,11 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-@HAVE_PPPD_H_TRUE@pppd_plugindir = $(PPPD_PLUGIN_DIR)
-@HAVE_PPPD_H_TRUE@pppd_plugin_LTLIBRARIES = mm-test-pppd-plugin.la
-@HAVE_PPPD_H_TRUE@mm_test_pppd_plugin_la_SOURCES = \
-@HAVE_PPPD_H_TRUE@ mm-test-pppd-plugin.c
-
-@HAVE_PPPD_H_TRUE@mm_test_pppd_plugin_la_CPPFLAGS = $(MM_CFLAGS)
-@HAVE_PPPD_H_TRUE@mm_test_pppd_plugin_la_LDFLAGS = -module -avoid-version
-@HAVE_PPPD_H_TRUE@mm_test_pppd_plugin_la_LIBADD = $(MM_LIBS)
lsudev_SOURCES = lsudev.c
lsudev_CPPFLAGS = $(GUDEV_CFLAGS)
lsudev_LDADD = $(GUDEV_LIBS)
EXTRA_DIST = \
- mm-test.py \
- disable.py \
- enable.py \
- disconnect.py \
- info.py \
- list-modems.py \
- location.py \
- sms-send.py \
- sms-get.py \
- send-pin.py \
- modem-autoenable.py \
- ussd.py \
- scan.py
+ mmcli-test-sms
all: all-am
@@ -456,44 +392,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-install-pppd_pluginLTLIBRARIES: $(pppd_plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(pppd_plugin_LTLIBRARIES)'; test -n "$(pppd_plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(pppd_plugindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(pppd_plugindir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pppd_plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pppd_plugindir)"; \
- }
-
-uninstall-pppd_pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(pppd_plugin_LTLIBRARIES)'; test -n "$(pppd_plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pppd_plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pppd_plugindir)/$$f"; \
- done
-
-clean-pppd_pluginLTLIBRARIES:
- -test -z "$(pppd_plugin_LTLIBRARIES)" || rm -f $(pppd_plugin_LTLIBRARIES)
- @list='$(pppd_plugin_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-mm-test-pppd-plugin.la: $(mm_test_pppd_plugin_la_OBJECTS) $(mm_test_pppd_plugin_la_DEPENDENCIES) $(EXTRA_mm_test_pppd_plugin_la_DEPENDENCIES)
- $(AM_V_CCLD)$(mm_test_pppd_plugin_la_LINK) $(am_mm_test_pppd_plugin_la_rpath) $(mm_test_pppd_plugin_la_OBJECTS) $(mm_test_pppd_plugin_la_LIBADD) $(LIBS)
-
clean-noinstPROGRAMS:
@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
@@ -514,7 +412,6 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsudev-lsudev.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mm_test_pppd_plugin_la-mm-test-pppd-plugin.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -540,13 +437,6 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-mm_test_pppd_plugin_la-mm-test-pppd-plugin.lo: mm-test-pppd-plugin.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mm_test_pppd_plugin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mm_test_pppd_plugin_la-mm-test-pppd-plugin.lo -MD -MP -MF $(DEPDIR)/mm_test_pppd_plugin_la-mm-test-pppd-plugin.Tpo -c -o mm_test_pppd_plugin_la-mm-test-pppd-plugin.lo `test -f 'mm-test-pppd-plugin.c' || echo '$(srcdir)/'`mm-test-pppd-plugin.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mm_test_pppd_plugin_la-mm-test-pppd-plugin.Tpo $(DEPDIR)/mm_test_pppd_plugin_la-mm-test-pppd-plugin.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mm-test-pppd-plugin.c' object='mm_test_pppd_plugin_la-mm-test-pppd-plugin.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mm_test_pppd_plugin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mm_test_pppd_plugin_la-mm-test-pppd-plugin.lo `test -f 'mm-test-pppd-plugin.c' || echo '$(srcdir)/'`mm-test-pppd-plugin.c
-
lsudev-lsudev.o: lsudev.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsudev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsudev-lsudev.o -MD -MP -MF $(DEPDIR)/lsudev-lsudev.Tpo -c -o lsudev-lsudev.o `test -f 'lsudev.c' || echo '$(srcdir)/'`lsudev.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lsudev-lsudev.Tpo $(DEPDIR)/lsudev-lsudev.Po
@@ -651,11 +541,8 @@ distdir: $(DISTFILES)
done
check-am: all-am
check: check-am
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS)
+all-am: Makefile $(PROGRAMS)
installdirs:
- for dir in "$(DESTDIR)$(pppd_plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -689,7 +576,7 @@ maintainer-clean-generic:
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
- clean-pppd_pluginLTLIBRARIES mostlyclean-am
+ mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
@@ -709,7 +596,7 @@ info: info-am
info-am:
-install-data-am: install-pppd_pluginLTLIBRARIES
+install-data-am:
install-dvi: install-dvi-am
@@ -755,25 +642,23 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-pppd_pluginLTLIBRARIES
+uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstPROGRAMS \
- clean-pppd_pluginLTLIBRARIES cscopelist-am ctags ctags-am \
- distclean distclean-compile distclean-generic \
+ clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
- install-pppd_pluginLTLIBRARIES install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
- uninstall-pppd_pluginLTLIBRARIES
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/test/disable.py b/test/disable.py
deleted file mode 100755
index 4e52cf1..0000000
--- a/test/disable.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2009 - 2010 Red Hat, Inc.
-#
-
-import sys, dbus
-
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-
-bus = dbus.SystemBus()
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath)
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM)
-modem.Enable (False)
-
diff --git a/test/disconnect.py b/test/disconnect.py
deleted file mode 100755
index 2152235..0000000
--- a/test/disconnect.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2009 - 2010 Red Hat, Inc.
-#
-
-import sys, dbus
-
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-
-bus = dbus.SystemBus()
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath)
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM)
-modem.Disconnect ()
-
diff --git a/test/enable.py b/test/enable.py
deleted file mode 100755
index 7fa218d..0000000
--- a/test/enable.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2009 - 2010 Red Hat, Inc.
-#
-
-import sys, dbus
-
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-
-bus = dbus.SystemBus()
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath)
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM)
-modem.Enable (True)
-
diff --git a/test/info.py b/test/info.py
deleted file mode 100755
index 878adb7..0000000
--- a/test/info.py
+++ /dev/null
@@ -1,261 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2008 Novell, Inc.
-# Copyright (C) 2009 Red Hat, Inc.
-#
-
-import sys, dbus
-
-DBUS_INTERFACE_PROPERTIES='org.freedesktop.DBus.Properties'
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE='org.freedesktop.ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-MM_DBUS_INTERFACE_MODEM_CDMA='org.freedesktop.ModemManager.Modem.Cdma'
-MM_DBUS_INTERFACE_MODEM_GSM_CARD='org.freedesktop.ModemManager.Modem.Gsm.Card'
-MM_DBUS_INTERFACE_MODEM_GSM_NETWORK='org.freedesktop.ModemManager.Modem.Gsm.Network'
-
-def get_cdma_band_class(band_class):
- if band_class == 1:
- return "800MHz"
- elif band_class == 2:
- return "1900MHz"
- else:
- return "Unknown"
-
-def get_reg_state(state):
- if state == 1:
- return "registered (roaming unknown)"
- elif state == 2:
- return "registered on home network"
- elif state == 3:
- return "registered on roaming network"
- else:
- return "unknown"
-
-def cdma_inspect(proxy, props):
- cdma = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_CDMA)
-
- try:
- esn = cdma.GetEsn()
- print "ESN: %s" % esn
- except dbus.exceptions.DBusException, e:
- print "Error reading ESN: %s" % e
-
- try:
- (cdma_1x_state, evdo_state) = cdma.GetRegistrationState()
- print "1x State: %s" % get_reg_state (cdma_1x_state)
- print "EVDO State: %s" % get_reg_state (evdo_state)
- except dbus.exceptions.DBusException, e:
- print "Error reading registration state: %s" % e
-
- try:
- quality = cdma.GetSignalQuality()
- print "Signal quality: %d" % quality
- except dbus.exceptions.DBusException, e:
- print "Error reading signal quality: %s" % e
-
- try:
- info = cdma.GetServingSystem()
- print "Class: %s" % get_cdma_band_class(info[0])
- print "Band: %s" % info[1]
- print "SID: %d" % info[2]
- except dbus.exceptions.DBusException, e:
- print "Error reading serving system: %s" % e
-
-
-def get_gsm_network_mode(modem):
- mode = modem.GetNetworkMode()
- if mode == 0x0:
- mode = "Unknown"
- elif mode == 0x1:
- mode = "Any"
- elif mode == 0x2:
- mode = "GPRS"
- elif mode == 0x4:
- mode = "EDGE"
- elif mode == 0x8:
- mode = "UMTS"
- elif mode == 0x10:
- mode = "HSDPA"
- elif mode == 0x20:
- mode = "2G Preferred"
- elif mode == 0x40:
- mode = "3G Preferred"
- elif mode == 0x80:
- mode = "2G Only"
- elif mode == 0x100:
- mode = "3G Only"
- elif mode == 0x200:
- mode = "HSUPA"
- elif mode == 0x400:
- mode = "HSPA"
- else:
- mode = "(Unknown)"
-
- print "Mode: %s" % mode
-
-def get_gsm_band(modem):
- band = modem.GetBand()
- if band == 0x0:
- band = "Unknown"
- elif band == 0x1:
- band = "Any"
- elif band == 0x2:
- band = "EGSM (900 MHz)"
- elif band == 0x4:
- band = "DCS (1800 MHz)"
- elif band == 0x8:
- band = "PCS (1900 MHz)"
- elif band == 0x10:
- band = "G850 (850 MHz)"
- elif band == 0x20:
- band = "U2100 (WCSMA 2100 MHZ, Class I)"
- elif band == 0x40:
- band = "U1700 (WCDMA 3GPP UMTS1800 MHz, Class III)"
- elif band == 0x80:
- band = "17IV (WCDMA 3GPP AWS 1700/2100 MHz, Class IV)"
- elif band == 0x100:
- band = "U800 (WCDMA 3GPP UMTS800 MHz, Class VI)"
- elif band == 0x200:
- band = "U850 (WCDMA 3GPP UMT850 MHz, Class V)"
- elif band == 0x400:
- band = "U900 (WCDMA 3GPP UMTS900 MHz, Class VIII)"
- elif band == 0x800:
- band = "U17IX (WCDMA 3GPP UMTS MHz, Class IX)"
- else:
- band = "(invalid)"
-
- print "Band: %s" % band
-
-
-mm_allowed = { 0: "any",
- 1: "2G preferred",
- 2: "3G preferred",
- 3: "2G only",
- 4: "3G only"
- }
-
-mm_act = { 0: "unknown",
- 1: "GSM",
- 2: "GSM Compact",
- 3: "GPRS",
- 4: "EDGE",
- 5: "UMTS",
- 6: "HSDPA",
- 7: "HSUPA",
- 8: "HSPA"
- }
-
-mm_reg = { 0: "idle",
- 1: "home",
- 2: "searching",
- 3: "denied",
- 4: "unknown",
- 5: "roaming"
- }
-
-def gsm_inspect(proxy, props):
- # Gsm.Card interface
- card = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_CARD)
-
- simid = "<unavailable>"
- try:
- simid = props.Get(MM_DBUS_INTERFACE_MODEM_GSM_CARD, "SimIdentifier")
- except dbus.exceptions.DBusException:
- pass
- print "SIM ID: %s" % simid
-
- imei = "<unavailable>"
- try:
- imei = card.GetImei()
- except dbus.exceptions.DBusException:
- pass
- print "IMEI: %s" % imei
-
- imsi = "<unavailable>"
- try:
- imsi = card.GetImsi()
- except dbus.exceptions.DBusException:
- pass
- print "IMSI: %s" % imsi
-
- opid = "<unavailable>"
- try:
- opid = card.GetOperatorId()
- except dbus.exceptions.DBusException:
- pass
- print "Operator ID: %s" % opid
-
- # Gsm.Network interface
- net = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_NETWORK)
- try:
- quality = net.GetSignalQuality()
- print "Signal quality: %d" % quality
- except dbus.exceptions.DBusException, e:
- print "Error reading signal quality: %s" % e
-
- try:
- reg = net.GetRegistrationInfo()
- print "Reg status: %s (%s, '%s')" % (mm_reg[int(reg[0])], reg[1], reg[2])
- except dbus.exceptions.DBusException, e:
- print "Error reading registration: %s" % e
-
- try:
- allowed = props.Get(MM_DBUS_INTERFACE_MODEM_GSM_NETWORK, "AllowedMode")
- print "Allowed mode: %s" % mm_allowed[allowed]
- except dbus.exceptions.DBusException, e:
- print "Error reading allowed mode: %s" % e
-
- try:
- act = props.Get(MM_DBUS_INTERFACE_MODEM_GSM_NETWORK, "AccessTechnology")
- print "Access Tech: %s" % mm_act[act]
- except dbus.exceptions.DBusException, e:
- print "Error reading current access technology: %s" % e
-
-
-
-bus = dbus.SystemBus()
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/%s" % str(objpath)
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-
-# Properties
-props = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties')
-
-mtype = props.Get(MM_DBUS_INTERFACE_MODEM, 'Type')
-if mtype == 1:
- print "Type: GSM"
-elif mtype == 2:
- print "Type: CDMA"
-
-print "Driver: %s" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'Driver'))
-print "Modem device: %s" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'MasterDevice'))
-print "Data device: %s" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'Device'))
-print "Device ID: %s" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'DeviceIdentifier'))
-print ""
-
-modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM)
-info = modem.GetInfo()
-print "Vendor: %s" % info[0]
-print "Model: %s" % info[1]
-print "Version: %s" % info[2]
-print ""
-
-if mtype == 1:
- gsm_inspect(proxy, props)
-elif mtype == 2:
- cdma_inspect(proxy, props)
-
diff --git a/test/list-modems.py b/test/list-modems.py
deleted file mode 100755
index c8cd618..0000000
--- a/test/list-modems.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2008 Novell, Inc.
-# Copyright (C) 2009 - 2010 Red Hat, Inc.
-#
-
-import sys, dbus
-
-DBUS_INTERFACE_PROPERTIES='org.freedesktop.DBus.Properties'
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE='org.freedesktop.ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-
-bus = dbus.SystemBus()
-
-# Get available modems:
-manager_proxy = bus.get_object(MM_DBUS_SERVICE, MM_DBUS_PATH)
-manager_iface = dbus.Interface(manager_proxy, dbus_interface=MM_DBUS_INTERFACE)
-modems = manager_iface.EnumerateDevices()
-
-if not modems:
- print "No modems found"
- sys.exit(1)
-
-for m in modems:
- proxy = bus.get_object(MM_DBUS_SERVICE, m)
-
- # Properties
- props_iface = dbus.Interface(proxy, dbus_interface=DBUS_INTERFACE_PROPERTIES)
-
- driver = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Driver')
- mtype = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Type')
- device = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'MasterDevice')
-
- strtype = ""
- if mtype == 1:
- strtype = "GSM"
- elif mtype == 2:
- strtype = "CDMA"
-
- print "%s (%s [%s], device %s)" % (m, strtype, driver, device)
-
diff --git a/test/location.py b/test/location.py
deleted file mode 100755
index 96cd1e5..0000000
--- a/test/location.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2009 - 2010 Red Hat, Inc.
-#
-
-import sys, dbus, time
-
-DBUS_INTERFACE_PROPERTIES='org.freedesktop.DBus.Properties'
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE='org.freedesktop.ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-MM_DBUS_INTERFACE_MODEM_LOCATION='org.freedesktop.ModemManager.Modem.Location'
-
-MM_MODEM_LOCATION_CAPABILITY_UNKNOWN = 0x00000000
-MM_MODEM_LOCATION_CAPABILITY_GPS_NMEA = 0x00000001
-MM_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI = 0x00000002
-MM_MODEM_LOCATION_CAPABILITY_GPS_RAW = 0x00000004
-
-bus = dbus.SystemBus()
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath)
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM)
-
-props = dbus.Interface(proxy, dbus_interface=DBUS_INTERFACE_PROPERTIES)
-caps = props.Get(MM_DBUS_INTERFACE_MODEM_LOCATION, "Capabilities")
-
-print "Location Capabilities:"
-if caps & MM_MODEM_LOCATION_CAPABILITY_GPS_NMEA:
- print " GPS_NMEA"
-if caps & MM_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI:
- print " GSM_LAC_CI"
-if caps & MM_MODEM_LOCATION_CAPABILITY_GPS_RAW:
- print " GPS_RAW"
-print ""
-
-loc = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_LOCATION)
-loc.Enable(True, True)
-
-for i in range(0, 5):
- locations = loc.GetLocation()
- if locations.has_key(MM_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI):
- print "GSM_LAC_CI: %s" % str(locations[MM_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI])
- time.sleep(1)
-
-loc.Enable(False, False)
-
diff --git a/test/mm-test-pppd-plugin.c b/test/mm-test-pppd-plugin.c
deleted file mode 100644
index 75163fc..0000000
--- a/test/mm-test-pppd-plugin.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/* This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Copyright (C) 2008 Novell, Inc.
- * Copyright (C) 2008 - 2009 Red Hat, Inc.
- */
-
-#include <string.h>
-#include <pppd/pppd.h>
-#include <pppd/fsm.h>
-#include <pppd/ipcp.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <glib.h>
-
-int plugin_init (void);
-
-char pppd_version[] = VERSION;
-char *my_user = NULL;
-char *my_pass = NULL;
-char *my_file = NULL;
-
-static void
-mm_phasechange (void *data, int arg)
-{
- const char *ppp_phase = NULL;
-
- switch (arg) {
- case PHASE_DEAD:
- ppp_phase = "dead";
- break;
- case PHASE_INITIALIZE:
- ppp_phase = "initialize";
- break;
- case PHASE_SERIALCONN:
- ppp_phase = "serial connection";
- break;
- case PHASE_DORMANT:
- ppp_phase = "dormant";
- break;
- case PHASE_ESTABLISH:
- ppp_phase = "establish";
- break;
- case PHASE_AUTHENTICATE:
- ppp_phase = "authenticate";
- break;
- case PHASE_CALLBACK:
- ppp_phase = "callback";
- break;
- case PHASE_NETWORK:
- ppp_phase = "network";
- break;
- case PHASE_RUNNING:
- ppp_phase = "running";
- break;
- case PHASE_TERMINATE:
- ppp_phase = "terminate";
- break;
- case PHASE_DISCONNECT:
- ppp_phase = "disconnect";
- break;
- case PHASE_HOLDOFF:
- ppp_phase = "holdoff";
- break;
- case PHASE_MASTER:
- ppp_phase = "master";
- break;
- default:
- ppp_phase = "unknown";
- break;
- }
-
- g_message ("mm-test-ppp-plugin: (%s): phase now '%s'", __func__, ppp_phase);
-}
-
-static void
-append_ip4_addr (GString *str, const char *tag, guint32 addr)
-{
- char buf[INET_ADDRSTRLEN + 2];
- struct in_addr tmp_addr = { .s_addr = addr };
-
- memset (buf, 0, sizeof (buf));
-
- if (inet_ntop (AF_INET, &tmp_addr, buf, sizeof (buf) - 1))
- g_string_append_printf (str, "%s %s\n", tag, buf);
-}
-
-static void
-mm_ip_up (void *data, int arg)
-{
- ipcp_options opts = ipcp_gotoptions[0];
- ipcp_options peer_opts = ipcp_hisoptions[0];
- guint32 pppd_made_up_address = htonl (0x0a404040 + ifunit);
- GString *contents;
- GError *err = NULL;
- gboolean success;
-
- g_message ("mm-test-ppp-plugin: (%s): ip-up event", __func__);
-
- if (!opts.ouraddr) {
- g_warning ("mm-test-ppp-plugin: (%s): didn't receive an internal IP from pppd!", __func__);
- mm_phasechange (NULL, PHASE_DEAD);
- return;
- }
-
- contents = g_string_sized_new (100);
-
- g_string_append_printf (contents, "iface %s\n", ifname);
-
- append_ip4_addr (contents, "addr", opts.ouraddr);
-
- /* Prefer the peer options remote address first, _unless_ pppd made the
- * address up, at which point prefer the local options remote address,
- * and if that's not right, use the made-up address as a last resort.
- */
- if (peer_opts.hisaddr && (peer_opts.hisaddr != pppd_made_up_address))
- append_ip4_addr (contents, "gateway", peer_opts.hisaddr);
- else if (opts.hisaddr)
- append_ip4_addr (contents, "gateway", opts.hisaddr);
- else if (peer_opts.hisaddr == pppd_made_up_address) {
- /* As a last resort, use the made-up address */
- append_ip4_addr (contents, "gateway", peer_opts.hisaddr);
- }
-
- if (opts.dnsaddr[0] || opts.dnsaddr[1]) {
- if (opts.dnsaddr[0])
- append_ip4_addr (contents, "dns1", opts.dnsaddr[0]);
- if (opts.dnsaddr[1])
- append_ip4_addr (contents, "dns2", opts.dnsaddr[1]);
- }
-
- if (opts.winsaddr[0] || opts.winsaddr[1]) {
- if (opts.winsaddr[0])
- append_ip4_addr (contents, "wins1", opts.winsaddr[0]);
- if (opts.winsaddr[1])
- append_ip4_addr (contents, "wins2", opts.winsaddr[1]);
- }
-
- g_string_append (contents, "DONE\n");
-
- success = g_file_set_contents (my_file, contents->str, -1, &err);
- if (success)
- g_message ("nm-ppp-plugin: (%s): saved IP4 config to %s", __func__, my_file);
- else {
- g_message ("nm-ppp-plugin: (%s): error saving IP4 config to %s: (%d) %s",
- __func__, my_file, err->code, err->message);
- g_clear_error (&err);
- }
-
- g_string_free (contents, TRUE);
-}
-
-static int
-get_chap_check()
-{
- return 1;
-}
-
-static int
-get_pap_check()
-{
- return 1;
-}
-
-static int
-get_credentials (char *username, char *password)
-{
- size_t len;
-
- if (username && !password) {
- /* pppd is checking pap support; return 1 for supported */
- return 1;
- }
-
- g_message ("nm-ppp-plugin: (%s): sending credentials (%s / %s)",
- __func__,
- my_user ? my_user : "",
- my_pass ? my_pass : "");
-
- if (my_user) {
- len = strlen (my_user) + 1;
- len = len < MAXNAMELEN ? len : MAXNAMELEN;
-
- strncpy (username, my_user, len);
- username[len - 1] = '\0';
- }
-
- if (my_pass) {
- len = strlen (my_pass) + 1;
- len = len < MAXSECRETLEN ? len : MAXSECRETLEN;
-
- strncpy (password, my_pass, len);
- password[len - 1] = '\0';
- }
-
- return 1;
-}
-
-static void
-mm_exit_notify (void *data, int arg)
-{
- g_message ("mm-test-ppp-plugin: (%s): cleaning up", __func__);
-
- g_free (my_user);
- my_user = NULL;
- g_free (my_pass);
- my_pass = NULL;
- g_free (my_file);
- my_file = NULL;
-}
-
-int
-plugin_init (void)
-{
- char **args;
-
- g_message ("mm-test-ppp-plugin: (%s): initializing", __func__);
-
- /* mm-test passes the file + username + password in as the 'ipparam' arg
- * to pppd.
- */
- args = g_strsplit (ipparam, "+", 0);
- if (!args || g_strv_length (args) != 3) {
- g_message ("mm-test-ppp-plugin: (%s): ipparam arguments error ('%s')",
- __func__, ipparam);
- return -1;
- }
-
- my_user = (args[0] && strlen (args[0])) ? g_strdup (args[0]) : NULL;
- my_pass = (args[1] && strlen (args[1])) ? g_strdup (args[1]) : NULL;
- my_file = (args[2] && strlen (args[2])) ? g_strdup (args[2]) : NULL;
-
- g_strfreev (args);
-
- if (!my_file) {
- g_message ("mm-test-ppp-plugin: (%s): missing IP config file",
- __func__);
- return -1;
- }
-
- chap_passwd_hook = get_credentials;
- chap_check_hook = get_chap_check;
- pap_passwd_hook = get_credentials;
- pap_check_hook = get_pap_check;
-
- add_notifier (&phasechange, mm_phasechange, NULL);
- add_notifier (&ip_up_notifier, mm_ip_up, NULL);
- add_notifier (&exitnotify, mm_exit_notify, NULL);
-
- return 0;
-}
diff --git a/test/mm-test.py b/test/mm-test.py
deleted file mode 100755
index 99a355f..0000000
--- a/test/mm-test.py
+++ /dev/null
@@ -1,527 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2008 Novell, Inc.
-# Copyright (C) 2009 Red Hat, Inc.
-#
-
-import sys, dbus, time, os, string, subprocess, socket
-
-DBUS_INTERFACE_PROPERTIES='org.freedesktop.DBus.Properties'
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE='org.freedesktop.ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-MM_DBUS_INTERFACE_MODEM_CDMA='org.freedesktop.ModemManager.Modem.Cdma'
-MM_DBUS_INTERFACE_MODEM_GSM_CARD='org.freedesktop.ModemManager.Modem.Gsm.Card'
-MM_DBUS_INTERFACE_MODEM_GSM_NETWORK='org.freedesktop.ModemManager.Modem.Gsm.Network'
-MM_DBUS_INTERFACE_MODEM_SIMPLE='org.freedesktop.ModemManager.Modem.Simple'
-
-def get_cdma_band_class(band_class):
- if band_class == 1:
- return "800MHz"
- elif band_class == 2:
- return "1900MHz"
- else:
- return "Unknown"
-
-def get_reg_state(state):
- if state == 1:
- return "registered (roaming unknown)"
- elif state == 2:
- return "registered on home network"
- elif state == 3:
- return "registered on roaming network"
- else:
- return "unknown"
-
-def cdma_inspect(proxy, dump_private):
- cdma = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_CDMA)
-
- esn = "<private>"
- if dump_private:
- try:
- esn = cdma.GetEsn()
- except dbus.exceptions.DBusException:
- esn = "<unavailable>"
-
- print ""
- print "ESN: %s" % esn
-
- try:
- (cdma_1x_state, evdo_state) = cdma.GetRegistrationState()
- print "1x State: %s" % get_reg_state (cdma_1x_state)
- print "EVDO State: %s" % get_reg_state (evdo_state)
- except dbus.exceptions.DBusException, e:
- print "Error reading registration state: %s" % e
-
- try:
- quality = cdma.GetSignalQuality()
- print "Signal quality: %d" % quality
- except dbus.exceptions.DBusException, e:
- print "Error reading signal quality: %s" % e
-
- try:
- info = cdma.GetServingSystem()
- print "Class: %s" % get_cdma_band_class(info[0])
- print "Band: %s" % info[1]
- print "SID: %d" % info[2]
- except dbus.exceptions.DBusException, e:
- print "Error reading serving system: %s" % e
-
-def cdma_connect(proxy, user, password):
- # Modem.Simple interface
- simple = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_SIMPLE)
- try:
- simple.Connect({'number':"#777"}, timeout=92)
- print "\nConnected!"
- return True
- except Exception, e:
- print "Error connecting: %s" % e
- return False
-
-
-def get_gsm_network_mode(modem):
- mode = modem.GetNetworkMode()
- if mode == 0x0:
- mode = "Unknown"
- elif mode == 0x1:
- mode = "Any"
- elif mode == 0x2:
- mode = "GPRS"
- elif mode == 0x4:
- mode = "EDGE"
- elif mode == 0x8:
- mode = "UMTS"
- elif mode == 0x10:
- mode = "HSDPA"
- elif mode == 0x20:
- mode = "2G Preferred"
- elif mode == 0x40:
- mode = "3G Preferred"
- elif mode == 0x80:
- mode = "2G Only"
- elif mode == 0x100:
- mode = "3G Only"
- elif mode == 0x200:
- mode = "HSUPA"
- elif mode == 0x400:
- mode = "HSPA"
- else:
- mode = "(Unknown)"
-
- print "Mode: %s" % mode
-
-def get_gsm_band(modem):
- band = modem.GetBand()
- if band == 0x0:
- band = "Unknown"
- elif band == 0x1:
- band = "Any"
- elif band == 0x2:
- band = "EGSM (900 MHz)"
- elif band == 0x4:
- band = "DCS (1800 MHz)"
- elif band == 0x8:
- band = "PCS (1900 MHz)"
- elif band == 0x10:
- band = "G850 (850 MHz)"
- elif band == 0x20:
- band = "U2100 (WCSMA 2100 MHZ, Class I)"
- elif band == 0x40:
- band = "U1700 (WCDMA 3GPP UMTS1800 MHz, Class III)"
- elif band == 0x80:
- band = "17IV (WCDMA 3GPP AWS 1700/2100 MHz, Class IV)"
- elif band == 0x100:
- band = "U800 (WCDMA 3GPP UMTS800 MHz, Class VI)"
- elif band == 0x200:
- band = "U850 (WCDMA 3GPP UMT850 MHz, Class V)"
- elif band == 0x400:
- band = "U900 (WCDMA 3GPP UMTS900 MHz, Class VIII)"
- elif band == 0x800:
- band = "U17IX (WCDMA 3GPP UMTS MHz, Class IX)"
- else:
- band = "(invalid)"
-
- print "Band: %s" % band
-
-
-def gsm_inspect(proxy, dump_private, do_scan):
- # Gsm.Card interface
- card = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_CARD)
-
- imei = "<private>"
- imsi = "<private>"
- if dump_private:
- try:
- imei = card.GetImei()
- except dbus.exceptions.DBusException:
- imei = "<unavailable>"
- try:
- imsi = card.GetImsi()
- except dbus.exceptions.DBusException:
- imsi = "<unavailable>"
-
- print "IMEI: %s" % imei
- print "IMSI: %s" % imsi
-
- # Gsm.Network interface
- net = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_NETWORK)
- try:
- quality = net.GetSignalQuality()
- print "Signal quality: %d" % quality
- except dbus.exceptions.DBusException, e:
- print "Error reading signal quality: %s" % e
-
- if not do_scan:
- return
-
- print "Scanning..."
- try:
- results = net.Scan(timeout=120)
- except dbus.exceptions.DBusException, e:
- print "Error scanning: %s" % e
- results = {}
-
- for r in results:
- status = r['status']
- if status == "1":
- status = "available"
- elif status == "2":
- status = "current"
- elif status == "3":
- status = "forbidden"
- else:
- status = "(Unknown)"
-
- access_tech = ""
- try:
- access_tech_num = r['access-tech']
- if access_tech_num == "0":
- access_tech = "(GSM)"
- elif access_tech_num == "1":
- access_tech = "(Compact GSM)"
- elif access_tech_num == "2":
- access_tech = "(UMTS)"
- elif access_tech_num == "3":
- access_tech = "(EDGE)"
- elif access_tech_num == "4":
- access_tech = "(HSDPA)"
- elif access_tech_num == "5":
- access_tech = "(HSUPA)"
- elif access_tech_num == "6":
- access_tech = "(HSPA)"
- except KeyError:
- pass
-
- if r.has_key('operator-long') and len(r['operator-long']):
- print "%s: %s %s" % (r['operator-long'], status, access_tech)
- elif r.has_key('operator-short') and len(r['operator-short']):
- print "%s: %s %s" % (r['operator-short'], status, access_tech)
- else:
- print "%s: %s %s" % (r['operator-num'], status, access_tech)
-
-def gsm_connect(proxy, apn, user, password):
- # Modem.Simple interface
- simple = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_SIMPLE)
- try:
- opts = {'number':"*99#"}
- if apn is not None:
- opts['apn'] = apn
- if user is not None:
- opts['username'] = user
- if password is not None:
- opts['password'] = password
- simple.Connect(opts, timeout=120)
- print "\nConnected!"
- return True
- except Exception, e:
- print "Error connecting: %s" % e
- return False
-
-def pppd_find():
- paths = ["/usr/local/sbin/pppd", "/usr/sbin/pppd", "/sbin/pppd"]
- for p in paths:
- if os.path.exists(p):
- return p
- return None
-
-def ppp_start(device, user, password, tmpfile):
- path = pppd_find()
- if not path:
- return None
-
- args = [path]
- args += ["nodetach"]
- args += ["lock"]
- args += ["nodefaultroute"]
- args += ["debug"]
- if user:
- args += ["user"]
- args += [user]
- args += ["noipdefault"]
- args += ["115200"]
- args += ["noauth"]
- args += ["crtscts"]
- args += ["modem"]
- args += ["usepeerdns"]
- args += ["ipparam"]
-
- ipparam = ""
- if user:
- ipparam += user
- ipparam += "+"
- if password:
- ipparam += password
- ipparam += "+"
- ipparam += tmpfile
- args += [ipparam]
-
- args += ["plugin"]
- args += ["mm-test-pppd-plugin.so"]
-
- args += [device]
-
- return subprocess.Popen(args, close_fds=True, cwd="/", env={})
-
-def ppp_wait(p, tmpfile):
- i = 0
- while p.poll() == None and i < 30:
- time.sleep(1)
- if os.path.exists(tmpfile):
- f = open(tmpfile, 'r')
- stuff = f.read(500)
- idx = string.find(stuff, "DONE")
- f.close()
- if idx >= 0:
- return True
- i += 1
- return False
-
-def ppp_stop(p):
- import signal
- p.send_signal(signal.SIGTERM)
- p.wait()
-
-def ntop_helper(ip):
- ip = socket.ntohl(ip)
- n1 = ip >> 24 & 0xFF
- n2 = ip >> 16 & 0xFF
- n3 = ip >> 8 & 0xFF
- n4 = ip & 0xFF
- a = "%c%c%c%c" % (n1, n2, n3, n4)
- return socket.inet_ntop(socket.AF_INET, a)
-
-def static_start(iface, modem):
- (addr_num, dns1_num, dns2_num, dns3_num) = modem.GetIP4Config()
- addr = ntop_helper(addr_num)
- dns1 = ntop_helper(dns1_num)
- dns2 = ntop_helper(dns2_num)
- configure_iface(iface, addr, 0, dns1, dns2)
-
-def down_iface(iface):
- ip = ["ip", "addr", "flush", "dev", iface]
- print " ".join(ip)
- subprocess.call(ip)
- ip = ["ip", "link", "set", iface, "down"]
- print " ".join(ip)
- subprocess.call(ip)
-
-def configure_iface(iface, addr, gw, dns1, dns2):
- print "\n\n******************************"
- print "iface: %s" % iface
- print "addr: %s" % addr
- print "gw: %s" % gw
- print "dns1: %s" % dns1
- print "dns2: %s" % dns2
-
- ifconfig = ["ifconfig", iface, "%s/32" % addr]
- if gw != 0:
- ifconfig += ["pointopoint", gw]
- print " ".join(ifconfig)
- print "\n******************************\n"
-
- subprocess.call(ifconfig)
-
-def file_configure_iface(tmpfile):
- addr = None
- gw = None
- iface = None
- dns1 = None
- dns2 = None
-
- f = open(tmpfile, 'r')
- lines = f.readlines()
- for l in lines:
- if l.startswith("addr"):
- addr = l[len("addr"):].strip()
- if l.startswith("gateway"):
- gw = l[len("gateway"):].strip()
- if l.startswith("iface"):
- iface = l[len("iface"):].strip()
- if l.startswith("dns1"):
- dns1 = l[len("dns1"):].strip()
- if l.startswith("dns2"):
- dns2 = l[len("dns2"):].strip()
- f.close()
-
- configure_iface(iface, addr, gw, dns1, dns2)
- return iface
-
-def try_ping(iface):
- cmd = ["ping", "-I", iface, "-c", "4", "-i", "3", "-w", "20", "4.2.2.1"]
- print " ".join(cmd)
- retcode = subprocess.call(cmd)
- if retcode != 0:
- print "PING: failed"
- else:
- print "PING: success"
-
-
-dump_private = False
-connect = False
-apn = None
-user = None
-password = None
-do_ip = False
-do_scan = True
-x = 1
-while x < len(sys.argv):
- if sys.argv[x] == "--private":
- dump_private = True
- elif sys.argv[x] == "--connect":
- connect = True
- elif (sys.argv[x] == "--user" or sys.argv[x] == "--username"):
- x += 1
- user = sys.argv[x]
- elif sys.argv[x] == "--apn":
- x += 1
- apn = sys.argv[x]
- elif sys.argv[x] == "--password":
- x += 1
- password = sys.argv[x]
- elif sys.argv[x] == "--ip":
- do_ip = True
- if os.geteuid() != 0:
- print "You probably want to be root to use --ip"
- sys.exit(1)
- elif sys.argv[x] == "--no-scan":
- do_scan = False
- x += 1
-
-bus = dbus.SystemBus()
-
-# Get available modems:
-manager_proxy = bus.get_object('org.freedesktop.ModemManager', '/org/freedesktop/ModemManager')
-manager_iface = dbus.Interface(manager_proxy, dbus_interface='org.freedesktop.ModemManager')
-modems = manager_iface.EnumerateDevices()
-
-if not modems:
- print "No modems found"
- sys.exit(1)
-
-for m in modems:
- connect_success = False
- data_device = None
-
- proxy = bus.get_object(MM_DBUS_SERVICE, m)
-
- # Properties
- props_iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties')
-
- type = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Type')
- if type == 1:
- print "GSM modem"
- elif type == 2:
- print "CDMA modem"
- else:
- print "Invalid modem type: %d" % type
-
- print "Driver: '%s'" % (props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Driver'))
- print "Modem device: '%s'" % (props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'MasterDevice'))
- data_device = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Device')
- print "Data device: '%s'" % data_device
-
- # Modem interface
- modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM)
-
- try:
- modem.Enable(True)
- except dbus.exceptions.DBusException, e:
- print "Error enabling modem: %s" % e
- sys.exit(1)
-
- info = modem.GetInfo()
- print "Vendor: %s" % info[0]
- print "Model: %s" % info[1]
- print "Version: %s" % info[2]
-
- if type == 1:
- gsm_inspect(proxy, dump_private, do_scan)
- if connect == True:
- connect_success = gsm_connect(proxy, apn, user, password)
- elif type == 2:
- cdma_inspect(proxy, dump_private)
- if connect == True:
- connect_success = cdma_connect(proxy, user, password)
- print
-
- if connect_success and do_ip:
- tmpfile = "/tmp/mm-test-%d.tmp" % os.getpid()
- success = False
- try:
- ip_method = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'IpMethod')
- if ip_method == 0:
- # ppp
- p = ppp_start(data_device, user, password, tmpfile)
- if ppp_wait(p, tmpfile):
- data_device = file_configure_iface(tmpfile)
- success = True
- elif ip_method == 1:
- # static
- static_start(data_device, modem)
- success = True
- elif ip_method == 2:
- # dhcp
- pass
- except Exception, e:
- print "Error setting up IP: %s" % e
-
- if success:
- try_ping(data_device)
- print "Waiting for 30s..."
- time.sleep(30)
-
- print "Disconnecting..."
- try:
- if ip_method == 0:
- ppp_stop(p)
- try:
- os.remove(tmpfile)
- except:
- pass
- elif ip_method == 1:
- # static
- down_iface(data_device)
- elif ip_method == 2:
- # dhcp
- down_iface(data_device)
-
- modem.Disconnect()
- except Exception, e:
- print "Error tearing down IP: %s" % e
-
- time.sleep(5)
-
- modem.Enable(False)
-
diff --git a/test/mmcli-test-sms b/test/mmcli-test-sms
new file mode 100755
index 0000000..18e0a7b
--- /dev/null
+++ b/test/mmcli-test-sms
@@ -0,0 +1,169 @@
+#!/bin/bash
+
+print_usage () {
+ echo "usage: $0 [MODEM INDEX] [all|ucs2|gsm7|data] [NUMBER]"
+ echo " if no [NUMBER] is given, a dummy one will be used and no SMS will be sent"
+}
+
+test () {
+ TITLE=$1
+ TEXT=$2
+ DATAFILE=$3
+
+ echo
+ echo
+ echo "============================================================="
+ echo "$TITLE"
+ echo "============================================================="
+ echo
+
+ # Build SMS properties
+ PROPERTIES="number='$NUMBER'"
+ if [ "x$TEXT" != "x" ]; then
+ PROPERTIES=$PROPERTIES",text='$TEXT'"
+ fi
+
+ # Create the SMS first, get DBus path returned
+ echo "Creating SMS..."
+ CMD="mmcli -m $MODEM_INDEX --messaging-create-sms=\"$PROPERTIES\""
+ if [ "x$DATAFILE" != "x" ]; then
+ CMD=$CMD" --messaging-create-sms-with-data=$DATAFILE"
+ fi
+
+ echo "$> $CMD"
+ OUT=`eval $CMD`
+ SMS_PATH=`echo "$OUT" | grep "/org/freedesktop/ModemManager1/SMS" | awk 'BEGIN { FS = " " } ; { print $1 }'`
+ if [ "x$SMS_PATH" = "x" ]; then
+ echo "error: couldn't create SMS" 1>&2
+ exit 2
+ else
+ echo "SMS created:"
+ mmcli -s $SMS_PATH
+ echo
+ fi
+
+ echo "Storing SMS..."
+ CMD="mmcli -s $SMS_PATH --store"
+ echo "$> $CMD"
+ OUT=`eval $CMD`
+ STORED=`echo "$OUT" | grep "success"`
+ if [ "x$STORED" = "x" ]; then
+ echo "error: couldn't store the SMS" 1>&2
+ exit 2
+ else
+ echo "SMS stored:"
+ mmcli -s $SMS_PATH
+ echo
+ fi
+
+ if [ "x$DONOTSEND" = "x" ]; then
+ echo "Sending SMS..."
+ CMD="mmcli -s $SMS_PATH --send"
+ echo "$> $CMD"
+ OUT=`eval $CMD`
+ SENT=`echo "$OUT" | grep "success"`
+ if [ "x$SENT" = "x" ]; then
+ echo "error: couldn't send the SMS" 1>&2
+ exit 2
+ else
+ echo "SMS sent:"
+ mmcli -s $SMS_PATH
+ echo
+ fi
+ fi
+
+ # Delete the SMS now
+ echo "Deleting SMS..."
+ CMD="mmcli -m $MODEM_INDEX --messaging-delete-sms=$SMS_PATH"
+ echo "$> $CMD"
+ OUT=`eval $CMD`
+ DELETED=`echo "$OUT" | grep "success"`
+ if [ "x$DELETED" = "x" ]; then
+ echo "error: couldn't delete the SMS" 1>&2
+ exit 2
+ else
+ echo "SMS deleted"
+ fi
+}
+
+if [ $# -ge 2 ]; then
+ MODEM_INDEX=$1
+ COMMAND=$2
+fi
+
+if [ $# -eq 2 ]; then
+ DONOTSEND=1
+ NUMBER=123456
+elif [ $# -eq 3 ]; then
+ NUMBER=$3
+else
+ echo "error: missing arguments" 1>&2
+ print_usage
+ exit 255
+fi
+
+# Process commands
+case $COMMAND in
+ "all")
+ RUN_UCS2=1
+ RUN_GSM7=1
+ RUN_DATA=1
+ ;;
+ "ucs2")
+ RUN_UCS2=1
+ ;;
+ "gsm7")
+ RUN_GSM7=1
+ ;;
+ "data")
+ RUN_DATA=1
+ ;;
+ *)
+ echo "error: unexpected command '$COMMAND'" 1>&2
+ print_usage
+ exit 255
+ ;;
+esac
+
+
+
+#
+# UCS2 tests
+#
+if [ "x$RUN_UCS2" != "x" ]; then
+ test "Testing singlepart SMS with UCS2 text..." "你好你好你好你" ""
+ test "Testing multipart SMS with UCS2 text..." "你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好好" ""
+fi
+
+#
+# GSM7 tests
+#
+if [ "x$RUN_GSM7" != "x" ]; then
+ test "Testing singlepart SMS with GSM7 text..." "Hello world" ""
+ test "Testing multipart SMS with GSM7 text..." "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ""
+fi
+
+#
+# Data tests
+#
+if [ "x$RUN_DATA" != "x" ]; then
+ TESTFILE_SHORT=/tmp/`basename $0`-140
+ TESTFILE_LONG=/tmp/`basename $0`-200
+
+ echo
+ if [ -f $TESTFILE_SHORT ]; then
+ echo "Re-using previously created 140-byte testfile at $TESTFILE_SHORT"
+ else
+ echo "Creating testfile at $TESTFILE_SHORT"
+ dd if=/dev/random of=$TESTFILE_SHORT bs=1 count=140
+ fi
+ if [ -f $TESTFILE_LONG ]; then
+ echo "Re-using previously created 200-byte testfile at $TESTFILE_LONG"
+ else
+ echo "Creating testfile at $TESTFILE_LONG"
+ dd if=/dev/random of=$TESTFILE_LONG bs=1 count=200
+ fi
+
+ test "Testing singlepart SMS with data..." "" "$TESTFILE_SHORT"
+ test "Testing multipart SMS with data..." "" "$TESTFILE_LONG"
+fi
diff --git a/test/modem-autoenable.py b/test/modem-autoenable.py
deleted file mode 100755
index d637d3f..0000000
--- a/test/modem-autoenable.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2011 Red Hat, Inc.
-#
-
-import gobject, sys, dbus
-from dbus.mainloop.glib import DBusGMainLoop
-
-DBusGMainLoop(set_as_default=True)
-
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE='org.freedesktop.ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-
-def modemAdded(modem_path):
- proxy = bus.get_object(MM_DBUS_SERVICE, modem_path)
- modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM)
- modem.Enable (True)
-
-bus = dbus.SystemBus()
-
-manager_proxy = bus.get_object(MM_DBUS_SERVICE, MM_DBUS_PATH)
-manager_iface = dbus.Interface(manager_proxy, dbus_interface=MM_DBUS_INTERFACE)
-
-# Enable modems that are already known
-for m in manager_iface.EnumerateDevices():
- modemAdded(m)
-
-# Listen for new modems
-manager_iface.connect_to_signal("DeviceAdded", modemAdded)
-
-# Start the mainloop and listen
-loop = gobject.MainLoop()
-try:
- loop.run()
-except KeyboardInterrupt:
- pass
-sys.exit(0)
diff --git a/test/scan.py b/test/scan.py
deleted file mode 100755
index eff470d..0000000
--- a/test/scan.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2009 - 2010Red Hat, Inc.
-#
-
-import sys, dbus
-
-DBUS_INTERFACE_PROPERTIES='org.freedesktop.DBus.Properties'
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-MM_DBUS_INTERFACE_MODEM_GSM_NETWORK='org.freedesktop.ModemManager.Modem.Gsm.Network'
-
-gsm_act = { 0: "(GSM)",
- 1: "(GSM Compact)",
- 2: "(UMTS)",
- 3: "(EDGE)",
- 4: "(HSDPA)",
- 5: "(HSUPA)",
- 6: "(HSPA)"
- }
-
-bus = dbus.SystemBus()
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath)
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-
-# Properties
-props = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties')
-
-mtype = props.Get(MM_DBUS_INTERFACE_MODEM, 'Type')
-if mtype == 2:
- print "CDMA modems do not support network scans"
- sys.exit(1)
-
-print "Driver: '%s'" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'Driver'))
-print "Modem device: '%s'" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'MasterDevice'))
-print "Data device: '%s'" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'Device'))
-print ""
-
-net = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_NETWORK)
-print "Scanning..."
-try:
- results = net.Scan(timeout=120)
-except dbus.exceptions.DBusException, e:
- print "Error scanning: %s" % e
- results = {}
-
-for r in results:
- status = r['status']
- if status == "1":
- status = "available"
- elif status == "2":
- status = "current"
- elif status == "3":
- status = "forbidden"
- else:
- status = "(Unknown)"
-
- access_tech = ""
- try:
- access_tech_num = int(r['access-tech'])
- access_tech = gsm_act[access_tech_num]
- except KeyError:
- pass
-
- opnum = "(%s):" % r['operator-num']
- # Extra space for 5-digit MCC/MNC
- if r['operator-num'] == 5:
- opnum += " "
-
- if r.has_key('operator-long') and len(r['operator-long']):
- print "%s %s %s %s" % (r['operator-long'], opnum, status, access_tech)
- elif r.has_key('operator-short') and len(r['operator-short']):
- print "%s %s %s %s" % (r['operator-short'], opnum, status, access_tech)
- else:
- print "%s: %s %s" % (r['operator-num'], status, access_tech)
-
diff --git a/test/send-pin.py b/test/send-pin.py
deleted file mode 100755
index 002f1b0..0000000
--- a/test/send-pin.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2009 - 2010 Red Hat, Inc.
-#
-
-import sys, dbus, os
-
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-DBUS_INTERFACE_PROPS='org.freedesktop.DBus.Properties'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-MM_DBUS_INTERFACE_GSM_CARD='org.freedesktop.ModemManager.Modem.Gsm.Card'
-
-if len(sys.argv) != 3:
- print "Usage: <modem path> <pin>"
- os._exit(1)
-if not len(sys.argv[2]) in range(4,9):
- print "PIN must be between 4 or 8 characters inclusive"
- os._exit(1)
-if not sys.argv[2].isdigit():
- print "PIN must be numeric"
- os._exit(1)
-
-bus = dbus.SystemBus()
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath)
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-
-props = dbus.Interface(proxy, dbus_interface=DBUS_INTERFACE_PROPS)
-req = props.Get(MM_DBUS_INTERFACE_MODEM, "UnlockRequired")
-if req == "":
- print "SIM unlocked"
- os._exit(0)
-
-print "Unlock Required: %s" % req
-if req != "sim-pin":
- print "Only sim-pin unlock supported for now"
- os._exit(1)
-
-# Unlock the SIM
-print "Unlocking with PIN"
-card = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_GSM_CARD)
-try:
- card.SendPin(sys.argv[2])
-except Exception, e:
- print "Unlock failed: %s" % e
- os._exit(1)
-
-# Check to make sure it actually got unlocked
-req = props.Get(MM_DBUS_INTERFACE_MODEM, "UnlockRequired")
-if req != "":
- print "Unlock not successful: %s" % req
- os._exit(1)
-
-print "Unlock successful"
-os._exit(0)
-
diff --git a/test/sms-get.py b/test/sms-get.py
deleted file mode 100755
index 981fb5d..0000000
--- a/test/sms-get.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/python
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2009 Novell, Inc.
-# Copyright (C) 2009 - 2012 Red Hat, Inc.
-#
-
-# An example on how to read SMS messages using ModemManager
-
-import sys
-import dbus
-import os
-
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_PATH='/org/freedesktop/ModemManager'
-MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem'
-MM_DBUS_INTERFACE_MODEM_SMS='org.freedesktop.ModemManager.Modem.Gsm.SMS'
-
-arglen = len(sys.argv)
-if arglen != 2 and arglen != 3:
- print "Usage: %s <modem path> [message #]" % sys.argv[0]
- sys.exit(1)
-
-msgnum = None
-if len(sys.argv) == 3:
- msgnum = int(sys.argv[2])
-
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath)
-
-# Create the modem properties proxy
-bus = dbus.SystemBus()
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-modem = dbus.Interface(proxy, dbus_interface="org.freedesktop.DBus.Properties")
-
-# Make sure the modem is enabled first
-if modem.Get(MM_DBUS_INTERFACE_MODEM, "Enabled") == False:
- print "Modem is not enabled"
- sys.exit(1)
-
-# Create the SMS interface proxy
-sms = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_SMS)
-
-msgs = sms.List()
-i = 0
-for m in msgs:
- print "-------------------------------------------------------------------"
- smsc = ""
- try:
- smsc = m["smsc"]
- except KeyError:
- pass
-
- print "%d: From: %s Time: %s SMSC: %s" % (m["index"], m["number"], m["timestamp"], smsc)
- if len(m["text"]):
- print " %s\n" % m["text"]
- elif len(m["data"]):
- print " Coding: %d" % m["data-coding-scheme"]
- z = 1
- s = ""
- for c in m["data"]:
- s += "%02X " % c
- if not z % 16:
- print " %s" % s
- s = ""
- z += 1
- if len(s):
- print " %s" % s
- i += 1
-
diff --git a/test/sms-send.py b/test/sms-send.py
deleted file mode 100755
index 5977c20..0000000
--- a/test/sms-send.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/python
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2009 Novell, Inc.
-#
-
-# An example on how to send an SMS message using ModemManager
-
-import sys
-import dbus
-import os
-
-arglen = len(sys.argv)
-if arglen != 4 and arglen != 6 and arglen != 8:
- print "Usage: %s --number <number> [--smsc <smsc>] [--validity <minutes>] <message>" % sys.argv[0]
- sys.exit(1)
-
-number = None
-validity = None
-smsc = None
-message = None
-x = 1
-while x < arglen - 1:
- if sys.argv[x] == "--number":
- x += 1
- number = sys.argv[x].strip()
- elif sys.argv[x] == "--validity":
- x += 1
- validity = int(sys.argv[x])
- elif sys.argv[x] == "--smsc":
- x += 1
- smsc = sys.argv[x].strip()
- else:
- raise ValueError("Unknown option '%s'" % sys.argv[x])
- x += 1
-
-try:
- lang = os.getenv("LANG")
- idx = lang.find(".")
- if idx != -1:
- lang = lang[idx + 1:]
-except KeyError:
- lang = "utf-8"
-message = unicode(sys.argv[arglen - 1], "utf-8")
-
-
-bus = dbus.SystemBus()
-
-manager_proxy = bus.get_object('org.freedesktop.ModemManager', '/org/freedesktop/ModemManager')
-manager_iface = dbus.Interface(manager_proxy, dbus_interface='org.freedesktop.ModemManager')
-modems = manager_iface.EnumerateDevices()
-if len(modems) == 0:
- print "No modems found"
- sys.exit(1)
-
-proxy = bus.get_object('org.freedesktop.ModemManager', modems[0])
-modem = dbus.Interface(proxy, dbus_interface='org.freedesktop.ModemManager.Modem')
-modem.Enable(True)
-
-msg_dict = dbus.Dictionary(
- {
- dbus.String('number') : dbus.String(number),
- dbus.String('text') : dbus.String(message)
- },
- signature=dbus.Signature("sv")
-)
-
-if smsc:
- msg_dict[dbus.String('smsc')] = dbus.String(smsc)
-
-if validity:
- msg_dict[dbus.String('validity')] = dbus.UInt32(validity)
-
-sms_iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.ModemManager.Modem.Gsm.SMS')
-try:
- indexes = sms_iface.Send(msg_dict)
- print "Message index: %d" % indexes[0]
-except Exception, e:
- print "Sending message failed: %s" % e
-
diff --git a/test/ussd.py b/test/ussd.py
deleted file mode 100755
index 73b8f8e..0000000
--- a/test/ussd.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/python
-# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details:
-#
-# Copyright (C) 2010 Guido Guenther <agx@sigxcpu.org>
-#
-# Usage: ./test/ussd.py /org/freedesktop/ModemManager/Modems/0 '*130#'
-
-import sys, dbus, re
-
-MM_DBUS_SERVICE='org.freedesktop.ModemManager'
-MM_DBUS_INTERFACE_USSD='org.freedesktop.ModemManager.Modem.Gsm.Ussd'
-
-if len(sys.argv) != 3:
- print "Usage: %s dbus_object [<ussd>|cancel]" % sys.argv[0]
- sys.exit(1)
-else:
- arg = sys.argv[2]
-
-bus = dbus.SystemBus()
-objpath = sys.argv[1]
-if objpath[:1] != '/':
- objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath)
-proxy = bus.get_object(MM_DBUS_SERVICE, objpath)
-
-modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_USSD)
-
-# For testing purposes treat all "common" USSD sequences as initiate and the
-# rest (except for cancel) as response. See GSM 02.90.
-initiate_re = re.compile('[*#]{1,3}1[0-9][0-9].*#')
-
-if initiate_re.match(arg):
- ret = modem.Initiate(arg)
-elif arg == "cancel":
- ret = modem.Cancel()
-else:
- ret = modem.Respond(arg)
-print ret
-
diff --git a/uml290/Makefile.in b/uml290/Makefile.in
index 12dd742..6b9dc7b 100644
--- a/uml290/Makefile.in
+++ b/uml290/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -178,8 +178,6 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -203,7 +201,6 @@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_MKENUMS = @GLIB_MKENUMS@
-GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
@@ -220,7 +217,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
@@ -252,14 +248,20 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MBIM_CFLAGS = @MBIM_CFLAGS@
MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
MMCLI_CFLAGS = @MMCLI_CFLAGS@
MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
+MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@
+MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@
+MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@
+MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@
MM_LIBS = @MM_LIBS@
+MM_MAJOR_VERSION = @MM_MAJOR_VERSION@
+MM_MICRO_VERSION = @MM_MICRO_VERSION@
+MM_MINOR_VERSION = @MM_MINOR_VERSION@
+MM_VERSION = @MM_VERSION@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
-MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -278,13 +280,9 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POFILES = @POFILES@
POLKIT_CFLAGS = @POLKIT_CFLAGS@
POLKIT_LIBS = @POLKIT_LIBS@
POSUB = @POSUB@
-PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
-PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
-PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
QMI_CFLAGS = @QMI_CFLAGS@
QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@