diff options
Diffstat (limited to 'docs/reference/api')
-rw-r--r-- | docs/reference/api/Makefile.am | 17 | ||||
-rw-r--r-- | docs/reference/api/ModemManager-dbus-reference.xml | 13 | ||||
-rw-r--r-- | docs/reference/api/ModemManager-docs.xml | 107 | ||||
-rw-r--r-- | docs/reference/api/ModemManager-migration-reference.xml | 2 | ||||
-rw-r--r-- | docs/reference/api/ModemManager-overview.xml | 707 | ||||
-rw-r--r-- | docs/reference/api/ModemManager-sections.txt | 167 | ||||
-rw-r--r-- | docs/reference/api/meson.build | 57 |
7 files changed, 808 insertions, 262 deletions
diff --git a/docs/reference/api/Makefile.am b/docs/reference/api/Makefile.am index 68029cfb..a641eadf 100644 --- a/docs/reference/api/Makefile.am +++ b/docs/reference/api/Makefile.am @@ -18,7 +18,7 @@ DOC_MODULE = ModemManager DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml # Extra options to supply to gtkdoc-scan -SCAN_OPTIONS = +SCAN_OPTIONS = --deprecated-guards="MM_DISABLE_DEPRECATED" # The directory containing the source code. DOC_SOURCE_DIR = $(top_srcdir)/include @@ -54,12 +54,7 @@ HTML_IMAGES = \ $(LOGOS_PNG) \ $(NULL) -# Note that PNG files are also added in content_files so that -# the documentation is not built before the PNGs. -content_files = \ - $(HTML_IMAGES) \ - $(NULL) - +content_files = expand_content_files = \ ModemManager-overview.xml \ ModemManager-dbus-reference.xml \ @@ -76,9 +71,11 @@ expand_content_files = \ $(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Oma.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.ProfileManager.xml \ $(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml \ $(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Simple.xml \ $(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Signal.xml \ + $(top_builddir)/libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Sar.xml \ $(NULL) extra_files = \ @@ -115,9 +112,3 @@ CLEANFILES += \ *.stamp \ -rf xml html tmpl \ $(NULL) - -# PNGs are removed only in dist-clean -# Diagrams and logos are generated by dia in the current directory -DISTCLEANFILES = \ - $(notdir $(DIAGRAMS_PNG)) \ - $(notdir $(LOGOS_PNG)) diff --git a/docs/reference/api/ModemManager-dbus-reference.xml b/docs/reference/api/ModemManager-dbus-reference.xml index fb15f98c..6d9ef43f 100644 --- a/docs/reference/api/ModemManager-dbus-reference.xml +++ b/docs/reference/api/ModemManager-dbus-reference.xml @@ -130,12 +130,15 @@ <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.xml"/> <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Simple.xml"/> <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml"/> + <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.ProfileManager.xml"/> <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml"/> <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml"/> <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Messaging.xml"/> <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.Voice.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.Sar.xml"/> <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Signal.xml"/> <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Oma.xml"/> <!--xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml"/--> @@ -173,4 +176,14 @@ <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Sms.xml"/> </chapter> + <chapter id="ref-dbus-object-call"> + <title>The <literal>/org/freedesktop/ModemManager/Calls</literal> objects</title> + <para> + Modems implementing the + <link linkend="gdbus-org.freedesktop.ModemManager1.Modem.Voice">Voice interface</link> + will export one Call object for each Call managed in the device. + </para> + <xi:include href="../../../../libmm-glib/generated/mm-gdbus-doc-org.freedesktop.ModemManager1.Call.xml"/> + </chapter> + </part> diff --git a/docs/reference/api/ModemManager-docs.xml b/docs/reference/api/ModemManager-docs.xml index 569e66d1..b25e8445 100644 --- a/docs/reference/api/ModemManager-docs.xml +++ b/docs/reference/api/ModemManager-docs.xml @@ -15,26 +15,28 @@ </subtitle> <releaseinfo> For ModemManager version &version; + The latest version of this documentation can be found on-line at + <ulink role="online-location" url="https://www.freedesktop.org/software/ModemManager/doc/latest/ModemManager/">https://www.freedesktop.org/software/ModemManager/doc/latest/ModemManager/</ulink>. </releaseinfo> <authorgroup> <author> - <firstname>Dan</firstname> - <surname>Williams</surname> - <affiliation> - <address> - <email>dcbw@redhat.com</email> - </address> - </affiliation> + <firstname>Dan</firstname> + <surname>Williams</surname> + <affiliation> + <address> + <email>dcbw@redhat.com</email> + </address> + </affiliation> </author> <author> - <firstname>Aleksander</firstname> - <surname>Morgado</surname> - <affiliation> - <address> - <email>aleksander@aleksander.es</email> - </address> - </affiliation> + <firstname>Aleksander</firstname> + <surname>Morgado</surname> + <affiliation> + <address> + <email>aleksander@aleksander.es</email> + </address> + </affiliation> </author> </authorgroup> @@ -45,6 +47,14 @@ <year>2011</year> <year>2012</year> <year>2013</year> + <year>2014</year> + <year>2015</year> + <year>2016</year> + <year>2017</year> + <year>2018</year> + <year>2019</year> + <year>2020</year> + <year>2021</year> <holder>The ModemManager Authors</holder> </copyright> @@ -80,19 +90,72 @@ <xi:include href="xml/mm-errors.xml"/> </part> + <part id="ref-udev"> + <title>Common udev tag definitions</title> + <xi:include href="xml/mm-tags.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> + <part id="ref-compat"> + <title>Compatibility with older versions</title> + <xi:include href="xml/mm-compat.xml"/> + </part> - <!-- NOT needed in DBus API --> - <!--chapter id="mm-hierarchy"> - <title>Object Hierarchy</title> - <xi:include href="xml/tree_index.sgml"/> - </chapter--> + <chapter id="api-index-full"> + <title>Index</title> + <xi:include href="xml/api-index-full.xml"></xi:include> + </chapter> + <chapter id="api-index-deprecated" role="deprecated"> + <title>Index of deprecated symbols</title> + <xi:include href="xml/api-index-deprecated.xml"></xi:include> + </chapter> + <chapter id="api-index-1-0" role="1.0"> + <title>Index of new symbols in 1.0</title> + <xi:include href="xml/api-index-1.0.xml"></xi:include> + </chapter> + <chapter id="api-index-1-2" role="1.2"> + <title>Index of new symbols in 1.2</title> + <xi:include href="xml/api-index-1.2.xml"></xi:include> + </chapter> + <chapter id="api-index-1-4" role="1.4"> + <title>Index of new symbols in 1.4</title> + <xi:include href="xml/api-index-1.4.xml"></xi:include> + </chapter> + <chapter id="api-index-1-6" role="1.6"> + <title>Index of new symbols in 1.6</title> + <xi:include href="xml/api-index-1.6.xml"></xi:include> + </chapter> + <chapter id="api-index-1-8" role="1.8"> + <title>Index of new symbols in 1.8</title> + <xi:include href="xml/api-index-1.8.xml"></xi:include> + </chapter> + <chapter id="api-index-1-10" role="1.10"> + <title>Index of new symbols in 1.10</title> + <xi:include href="xml/api-index-1.10.xml"></xi:include> + </chapter> + <chapter id="api-index-1-12" role="1.12"> + <title>Index of new symbols in 1.12</title> + <xi:include href="xml/api-index-1.12.xml"></xi:include> + </chapter> + <chapter id="api-index-1-14" role="1.14"> + <title>Index of new symbols in 1.14</title> + <xi:include href="xml/api-index-1.14.xml"></xi:include> + </chapter> + <chapter id="api-index-1-16" role="1.16"> + <title>Index of new symbols in 1.16</title> + <xi:include href="xml/api-index-1.16.xml"></xi:include> + </chapter> + <chapter id="api-index-1-18" role="1.18"> + <title>Index of new symbols in 1.18</title> + <xi:include href="xml/api-index-1.18.xml"></xi:include> + </chapter> + <chapter id="api-index-1-20" role="1.20"> + <title>Index of new symbols in 1.20</title> + <xi:include href="xml/api-index-1.20.xml"></xi:include> + </chapter> </book> diff --git a/docs/reference/api/ModemManager-migration-reference.xml b/docs/reference/api/ModemManager-migration-reference.xml index 89670b5f..5e45b89b 100644 --- a/docs/reference/api/ModemManager-migration-reference.xml +++ b/docs/reference/api/ModemManager-migration-reference.xml @@ -132,7 +132,7 @@ <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 + method will create a single bearer with the parameters specified in the call and get it connected, while the <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem-Simple.Disconnect"> <literal>Disconnect()</literal> diff --git a/docs/reference/api/ModemManager-overview.xml b/docs/reference/api/ModemManager-overview.xml index d55beef9..ff532fe4 100644 --- a/docs/reference/api/ModemManager-overview.xml +++ b/docs/reference/api/ModemManager-overview.xml @@ -51,17 +51,16 @@ </formalpara> </chapter> - <chapter id="ref-overview-modem-detection-and-setup"> - <title>Modem detection and setup</title> + <chapter id="ref-overview-modem-detection"> + <title>Modem detection</title> <section> - <title>Detection mechanisms</title> + <title>Builds with udev support</title> <para> ModemManager requires <emphasis>udev</emphasis>-powered Linux kernels in order to get notified of possible available Modems. udev will report each of the ports - found in the device, and ModemManager will probe each of the ports marked with - the <emphasis>ID_MM_CANDIDATE</emphasis> tag in udev. This includes both "tty" - and "net" ports. + found in the device, and ModemManager will consider for probing each of the ports + marked with the <emphasis>ID_MM_CANDIDATE</emphasis> tag in udev. </para> <para> Aditionally, users of RS232-based devices may need to request additional manual @@ -72,283 +71,557 @@ </section> <section> - <title>Probing</title> + <title>Builds without udev support</title> <para> - 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 - which plugin we need to use for the specific device. Devices may expose one or - more ports, and all of them will follow the same probing logic. + When the udev daemon isn't available in the system, the + <link linkend="gdbus-method-org-freedesktop-ModemManager1.ReportKernelEvent">ReportKernelEvent</link> + method in the + <link linkend="gdbus-org.freedesktop.ModemManager1">Manager interface</link> + may be used to notify the ModemManager daemons of device addition and removals. </para> <para> - The whole probing process, including pre-probing and post-probing filters, is - implemented in the core ModemManager daemon. Plugins will just configure their - own special needs in the probing process, so that only the steps required by the - given plugin are executed. For example, plugins which do not support RS232 - devices will not need AT-based vendor or product filters. + When udev support is disabled in the build, the <emphasis>ID_MM_CANDIDATE</emphasis> + tag and manual scan requests are still applicable. ModemManager has a built-in parser + of udev rule files that is enabled when udev itself isn't available. </para> + </section> + </chapter> - <section> - <title>Pre-probing filters</title> - <para> - Pre-probing filters are those which control whether the probing, as - requested by the specific plugin, takes place. - </para> + <chapter id="ref-overview-modem-filter"> + <title>Modem filter</title> + + <para> + ModemManager will not probe all TTYs, NET and cdc-wdm ports found in the system, + as this may end up interfering e.g. with TTYs that have nothing to do with modem + devices. + </para> + <para> + The daemon comes with several predefined <emphasis>filter policies</emphasis>, each + of them composed of one or more <emphasis>filter rules</emphasis>. + </para> + + <section> + <title>Filter rules</title> + <para> + The device filter in ModemManager defines the following independent filter rules. The + predefined filter policies are based on one or more of these predefined filter rules. <itemizedlist> <listitem> - <para><emphasis>Allowed vendor IDs</emphasis></para> + <para><emphasis>MM_FILTER_RULE_EXPLICIT_WHITELIST</emphasis></para> <para> - Plugins can provide a list of udev-reported vendor IDs to be used as - pre-probing filters. If the vendor ID reported by the device via udev - is found in the list provided by the plugin, port probing will be - launched as requested by the given plugin. - </para> - <para> - This filter is specified by the <type>MM_PLUGIN_ALLOWED_VENDOR_IDS</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + This filter allows users to manually tag devices and/or device ports with the + <emphasis>ID_MM_DEVICE_PROCESS</emphasis> udev tag. If the filter finds this tag, + the device and/or device ports will be automatically accepted and port probing + will be allowed. </para> + <programlisting> +$ sudo vim /lib/udev/rules.d/78-mm-whitelist-internal-modem.rules + ACTION!="add|change|move", GOTO="mm_whitelist_internal_modem_end" + ATTRS{idVendor}=="1199", ATTRS{idProduct}=="a001", ENV{ID_MM_DEVICE_PROCESS}="1" + LABEL="mm_whitelist_internal_modem_end" +// Apply new rules without reboot +$ sudo udevadm control --reload +$ sudo udevadm trigger + </programlisting> </listitem> <listitem> - <para><emphasis>Product IDs</emphasis></para> - <para> - Plugins can provide a list of udev-reported pairs of vendor and product - IDs to be used as pre-probing filters. - </para> - <para> - If the vendor ID and product ID pair reported by the device via udev is - found in the list of 'allowed' pairs provided by the plugin, port probing - will be launched as requested by the given plugin. This additional filter - should be used when the plugin is expected to work only with a given - specific product of a given vendor. - </para> - <para> - If the vendor ID and product ID pair reported by the device via udev is - found in the list of 'forbidden' pairs provided by the plugin, port probing - will not be launched by this plugin. This additional filter - should be used when the plugin supports all devices of a given vendor - except for some specific ones. - </para> + <para><emphasis>MM_FILTER_RULE_EXPLICIT_BLACKLIST</emphasis></para> <para> - These filters are specified by the <type>MM_PLUGIN_ALLOWED_PRODUCT_IDS</type> - and <type>MM_PLUGIN_FORBIDDEN_PRODUCT_IDS</type> properties in the - <structname>MMPlugin</structname> object provided by the plugin. + This filter allows users to manually tag devices and/or device ports with the + <emphasis>ID_MM_DEVICE_IGNORE</emphasis> udev tag. If the filter finds this tag, + the device and/or device ports will be automatically ignored and port probing + will be never run on them. </para> + <programlisting> +$ sudo vim /lib/udev/rules.d/78-mm-blacklist-internal-modem.rules + ACTION!="add|change|move", GOTO="mm_blacklist_internal_modem_end" + ATTRS{idVendor}=="1199", ATTRS{idProduct}=="a001", ENV{ID_MM_DEVICE_IGNORE}="1" + LABEL="mm_blacklist_internal_modem_end" +// Apply new rules without reboot +$ sudo udevadm control --reload +$ sudo udevadm trigger + </programlisting> </listitem> <listitem> - <para><emphasis>Subsystems</emphasis></para> - <para> - Plugins can specify which subsystems they expect, so that we filter out - any port detected with a subsystem not listed by the plugin. - </para> + <para><emphasis>MM_FILTER_RULE_PLUGIN_WHITELIST</emphasis></para> <para> - This filter is specified by the <type>MM_PLUGIN_ALLOWED_SUBSYSTEMS</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + This filter will automatically whitelist devices that are explicitly referenced + by plugins, either with plugin-specific whitelist tags, with exact + <emphasis>vid:pid</emphasis> matches, or just with <emphasis>vid</emphasis> matches. </para> </listitem> <listitem> - <para><emphasis>Drivers</emphasis></para> + <para><emphasis>MM_FILTER_RULE_QRTR</emphasis></para> <para> - Plugins can specify which drivers they expect, so that we filter out - any port detected being managed by a driver not listed by the plugin. + This filter will automatically flag as allowed all QRTR nodes that have been + notified as being modem management capable. </para> <para> - Plugins can also specify which drivers they do not expect, so that we - filter out any port detected being managed by a driver listed by the plugin. - </para> - <para> - These filters are specified by the <type>MM_PLUGIN_ALLOWED_DRIVERS</type> - and <type>MM_PLUGIN_FORBIDDEN_DRIVERS</type> properties in the - <structname>MMPlugin</structname> object provided by the plugin. + This filter rule is available since 1.18.0. </para> </listitem> <listitem> - <para><emphasis>udev tags</emphasis></para> - <para> - Plugins can provide a list of udev tags, so that we filter out - any port detected which doesn't expose any of the given tags. - </para> + <para><emphasis>MM_FILTER_RULE_VIRTUAL</emphasis></para> <para> - This filter is specified by the <type>MM_PLUGIN_ALLOWED_UDEV_TAGS</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + This filter will automatically flag as forbidden all ports exposed by virtual + devices, like the 'lo' network interface or the tty0, tty1... virtual terminals. + There is no reason to disable this filter, except for testing purposes. </para> </listitem> - </itemizedlist> - </section> - - <section> - <title>Probing sequence</title> - <para> - 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 - probing sequence step is to determine the type of port being probed, and also - prepare the information required in any expected post-probing filter. - </para> - <itemizedlist> <listitem> - <para><emphasis>Custom initialization</emphasis></para> + <para><emphasis>MM_FILTER_RULE_NET</emphasis></para> <para> - This property allows plugins to provide an asynchronous method which will get - executed as soon as the AT port gets opened. This method may be used for any - purpose, like running an early command in the ports as soon as possible, or - querying the modem for info about the port layout. + This filter will automatically flag as allowed all network ports exposed by + devices. Unless there is a will to explicitly forbid network ports, this filter + should always be enabled. </para> + </listitem> + <listitem> + <para><emphasis>MM_FILTER_RULE_USBMISC</emphasis></para> <para> - This configuration is specified by the <type>MM_PLUGIN_CUSTOM_INIT</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + This filter will automatically flag as allowed all cdc-wdm ports exposed in the + usbmisc subsystem. Unless there is a will to explicitly forbid the cdc-wdm ports exposed + by qmi_wwan, cdc_mbim or huawei-cdc-ncm kernel drivers, this filter should always + be enabled. </para> </listitem> <listitem> - <para><emphasis>AT allowed</emphasis></para> + <para><emphasis>MM_FILTER_RULE_RPMSG</emphasis></para> <para> - This boolean property allows plugins to specify that they expect and support - AT serial ports. + This filter will automatically flag as allowed all rpmsg ports exposed in the + rpmsg subsystem. Unless there is a will to explicitly forbid the rpmsg ports, + this filter should always be enabled. </para> <para> - This configuration is specified by the <type>MM_PLUGIN_ALLOWED_AT</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + This filter rule is available since 1.16.0. </para> </listitem> <listitem> - <para><emphasis>Single AT expected</emphasis></para> + <para><emphasis>MM_FILTER_RULE_WWAN</emphasis></para> <para> - This boolean property allows plugins to specify that they only expect and support - one AT serial port. Whenever the first AT port is grabbed, any remaining AT probing - in ports of the same device will get cancelled. + This filter will automatically flag as allowed all wwan control ports exposed + in the wwan subsystem. Unless there is a will to explicitly forbid the wwan control + ports, this filter should always be enabled. </para> <para> - This configuration is specified by the <type>MM_PLUGIN_ALLOWED_SINGLE_AT</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + This filter rule is available since 1.18.0. </para> </listitem> <listitem> - <para><emphasis>Custom AT probing</emphasis></para> + <para><emphasis>MM_FILTER_RULE_TTY</emphasis></para> <para> - This property allows plugins to specify custom commands to check whether a port - is AT or not. By default, the 'AT' command will be used if no custom one specified. + If the MM_FILTER_RULE_TTY filter is disabled, no TTY port will be allowed. If this + filter is enabled, TTY ports will only be allowed if the TTY-specific filters (defined + next) allow it. </para> + </listitem> + <listitem> + <para><emphasis>MM_FILTER_RULE_TTY_PLATFORM_DRIVER</emphasis></para> <para> - This configuration is specified by the <type>MM_PLUGIN_CUSTOM_AT_PROBE</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + If this filter is enabled, all platform TTY ports will be forbidden automatically. </para> </listitem> <listitem> - <para><emphasis>QCDM allowed</emphasis></para> + <para><emphasis>MM_FILTER_RULE_TTY_DRIVER</emphasis></para> <para> - This boolean property allows plugins to specify that they expect and support - QCDM serial ports. + If this filter is enabled, all TTY ports managed by modem-specific kernel drivers will be + allowed automatically. </para> + </listitem> + <listitem> + <para><emphasis>FILTER_RULE_TTY_ACM_INTERFACE</emphasis></para> <para> - This configuration is specified by the <type>MM_PLUGIN_ALLOWED_QCDM</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + If this filter is enabled, all TTY ports managed by the cdc-acm kernel driver with + class=2/subclass=2/protocol=1 (AT command capable ttyACM port) will be allowed + automatically. </para> </listitem> <listitem> - <para><emphasis>Check Icera support</emphasis></para> + <para><emphasis>MM_FILTER_RULE_TTY_WITH_NET</emphasis></para> <para> - This boolean property allows plugins to specify that they want to have the Icera - support checks included in the probing sequence. They can afterwards get the result - of the support check to decide whether they want to create a Icera-based modem - object or not. + If this filter is enabled, all TTY ports for devices that also expose a network + interface port will be allowed automatically. </para> + </listitem> + <listitem> + <para><emphasis>MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN</emphasis></para> <para> - This configuration is specified by the <type>MM_PLUGIN_ICERA_PROBE</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + This rule is the implicit one defining what happens when a TTY port isn't explicitly + accepted by any of the TTY-specific filters; i.e. the TTY port will be forbidden. </para> </listitem> </itemizedlist> - </section> + </para> - <section> - <title>Post-probing filters</title> - <para> - 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 - enough or wrong. This covers, for example, RS232 modems connected through a RS232 - to USB converter, where udev-reported vendor ID is that of the converter, not the - one of the modem. - </para> + <para> + The following filter rules have been deprecated and are no longer used. <itemizedlist> <listitem> - <para><emphasis>Allowed vendor strings</emphasis></para> - <para> - Plugins can provide a list of vendor strings to be used as post-probing - filters. If the vendor string reported by the device via AT commands - is found in the list provided by the plugin, the plugin will report that - it can handle this modem. - </para> + <para><emphasis>MM_FILTER_RULE_TTY_BLACKLIST</emphasis></para> <para> - This filter is specified by the <type>MM_PLUGIN_ALLOWED_VENDOR_STRINGS</type> - property in the <structname>MMPlugin</structname> object provided - by the plugin. + Deprecated in 1.18.0. </para> </listitem> <listitem> - <para><emphasis>Product strings</emphasis></para> + <para><emphasis>MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY</emphasis></para> <para> - Plugins can provide a list of pairs of vendor and product - strings to be used as post-probing filters. + Deprecated in 1.18.0. </para> + </listitem> + </itemizedlist> + </para> + </section> + + <section> + <title>Filter policies</title> + + <para> + The predefined filter policies are: + <itemizedlist> + <listitem> + <para><emphasis>Whitelist only</emphasis></para> <para> - If the vendor and product string pair reported by the device via AT - commands is found in the 'allowed' list provided by the plugin, the - plugin will report that it can handle this modem. This additional filter - should be used when the plugin is expected to work only with a given - specific product of a given vendor. + This is a policy where only the MM_FILTER_RULE_EXPLICIT_WHITELIST rule is enabled. </para> + <programlisting># /usr/sbin/ModemManager --filter-policy=WHITELIST-ONLY</programlisting> + </listitem> + <listitem> + <para><emphasis>Strict</emphasis></para> <para> - If the vendor and product string pair reported by the device via AT - commands is found in the 'forbidden list provided by the plugin, the - plugin will report that it cannot handle this modem. This additional filter - should be used when the plugin supports all devices of a given vendor, except for some specific ones. + This is a policy where the following rules are enabled: + <itemizedlist> + <listitem>MM_FILTER_RULE_EXPLICIT_WHITELIST</listitem> + <listitem>MM_FILTER_RULE_EXPLICIT_BLACKLIST</listitem> + <listitem>MM_FILTER_RULE_PLUGIN_WHITELIST</listitem> + <listitem>MM_FILTER_RULE_QRTR</listitem> + <listitem>MM_FILTER_RULE_VIRTUAL</listitem> + <listitem>MM_FILTER_RULE_NET</listitem> + <listitem>MM_FILTER_RULE_USBMISC</listitem> + <listitem>MM_FILTER_RULE_RPMSG</listitem> + <listitem>MM_FILTER_RULE_TTY</listitem> + <listitem>MM_FILTER_RULE_TTY_PLATFORM_DRIVER</listitem> + <listitem>MM_FILTER_RULE_TTY_DRIVER</listitem> + <listitem>MM_FILTER_RULE_TTY_ACM_INTERFACE</listitem> + <listitem>MM_FILTER_RULE_TTY_WITH_NET</listitem> + <listitem>MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN</listitem> + <listitem>MM_FILTER_RULE_WWAN</listitem> + </itemizedlist> </para> <para> - These filters are specified by the <type>MM_PLUGIN_ALLOWED_PRODUCT_STRINGS</type> - and <type>MM_PLUGIN_FORBIDDEN_PRODUCT_STRINGS</type> properties in the - <structname>MMPlugin</structname> object provided by the plugin. + This policy is the default one when a different one is not explicitly + selected. In this policy, all TTYs are forbidden except for the ones + explicitly allowed by one of the TTY-specific rules. </para> + <programlisting># /usr/sbin/ModemManager --filter-policy=STRICT</programlisting> </listitem> <listitem> - <para><emphasis>Icera support</emphasis></para> + <para><emphasis>Custom</emphasis></para> <para> - Plugins can specify that they only support Icera-based modems, or that they - do not support any Icera-based modem. When either of this configurations is - enabled, the Icera support checks will be included in the - probing sequence, and the result of the check will help to determine whether - the plugin supports the modem or not. + Any of the previously defined predefined policies may be modified rule per rule + by explicitly enabling or disabling rules via environment variables. </para> <para> - This filter is specified by the <type>MM_PLUGIN_ALLOWED_ICERA</type> and - <type>MM_PLUGIN_FORBIDDEN_ICERA</type> properties in the - <structname>MMPlugin</structname> object provided by the plugin. + E.g. this would launch ModemManager with the Strict filter policy but with all + net and cdc-wdm ports forbidden completely: + <programlisting> +# MM_FILTER_RULE_NET=0 \ + MM_FILTER_RULE_USBMISC=0 \ + /usr/sbin/ModemManager --filter-policy=STRICT</programlisting> + </para> + <para> + E.g. this would launch ModemManager with the Whitelist-only filter policy but also + explicitly allowing all net and cdc-wdm ports. Note that in this case, all virtual + net ports (e.g. 'lo') are also being allowed. + <programlisting> +# MM_FILTER_RULE_NET=1 \ + MM_FILTER_RULE_USBMISC=1 \ + /usr/sbin/ModemManager --filter-policy=WHITELIST-ONLY</programlisting> </para> </listitem> </itemizedlist> + </para> + + </section> + </chapter> + + <chapter id="ref-overview-modem-port-probing"> + <title>Port probing</title> + <para> + 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 + which plugin we need to use for the specific device. Devices may expose one or + more ports, and all of them will follow the same probing logic. + </para> + <para> + The whole probing process, including pre-probing and post-probing filters, is + implemented in the core ModemManager daemon. Plugins will just configure their + own special needs in the probing process, so that only the steps required by the + given plugin are executed. For example, plugins which do not support RS232 + devices will not need AT-based vendor or product filters. + </para> + + <section> + <title>Pre-probing filters</title> + <para> + Pre-probing filters are those which control whether the probing, as + requested by the specific plugin, takes place. + </para> + <itemizedlist> + <listitem> + <para><emphasis>Allowed vendor IDs</emphasis></para> + <para> + Plugins can provide a list of udev-reported vendor IDs to be used as + pre-probing filters. If the vendor ID reported by the device via udev + is found in the list provided by the plugin, port probing will be + launched as requested by the given plugin. + </para> + <para> + This filter is specified by the <type>MM_PLUGIN_ALLOWED_VENDOR_IDS</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>Product IDs</emphasis></para> + <para> + Plugins can provide a list of udev-reported pairs of vendor and product + IDs to be used as pre-probing filters. + </para> + <para> + If the vendor ID and product ID pair reported by the device via udev is + found in the list of 'allowed' pairs provided by the plugin, port probing + will be launched as requested by the given plugin. This additional filter + should be used when the plugin is expected to work only with a given + specific product of a given vendor. + </para> + <para> + If the vendor ID and product ID pair reported by the device via udev is + found in the list of 'forbidden' pairs provided by the plugin, port probing + will not be launched by this plugin. This additional filter + should be used when the plugin supports all devices of a given vendor + except for some specific ones. + </para> + <para> + These filters are specified by the <type>MM_PLUGIN_ALLOWED_PRODUCT_IDS</type> + and <type>MM_PLUGIN_FORBIDDEN_PRODUCT_IDS</type> properties in the + <structname>MMPlugin</structname> object provided by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>Subsystems</emphasis></para> + <para> + Plugins can specify which subsystems they expect, so that we filter out + any port detected with a subsystem not listed by the plugin. + </para> + <para> + This filter is specified by the <type>MM_PLUGIN_ALLOWED_SUBSYSTEMS</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>Drivers</emphasis></para> + <para> + Plugins can specify which drivers they expect, so that we filter out + any port detected being managed by a driver not listed by the plugin. + </para> + <para> + Plugins can also specify which drivers they do not expect, so that we + filter out any port detected being managed by a driver listed by the plugin. + </para> + <para> + These filters are specified by the <type>MM_PLUGIN_ALLOWED_DRIVERS</type> + and <type>MM_PLUGIN_FORBIDDEN_DRIVERS</type> properties in the + <structname>MMPlugin</structname> object provided by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>udev tags</emphasis></para> + <para> + Plugins can provide a list of udev tags, so that we filter out + any port detected which doesn't expose any of the given tags. + </para> + <para> + This filter is specified by the <type>MM_PLUGIN_ALLOWED_UDEV_TAGS</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + </itemizedlist> + </section> - <note> + <section> + <title>Probing sequence</title> + <para> + 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 + probing sequence step is to determine the type of port being probed, and also + prepare the information required in any expected post-probing filter. + </para> + <itemizedlist> + <listitem> + <para><emphasis>Custom initialization</emphasis></para> + <para> + This property allows plugins to provide an asynchronous method which will get + executed as soon as the AT port gets opened. This method may be used for any + purpose, like running an early command in the ports as soon as possible, or + querying the modem for info about the port layout. + </para> + <para> + This configuration is specified by the <type>MM_PLUGIN_CUSTOM_INIT</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>AT allowed</emphasis></para> + <para> + This boolean property allows plugins to specify that they expect and support + AT serial ports. + </para> <para> - Plugins which require post-probing filters will always be sorted last, and - therefore they will be the last ones being checked for pre-probing filters. This - is due to the fact that we need to assume that these plugins aren't able to - determine port support just with pre-probing filters, as we want to avoid - unnecessary probing sequences launched. Also note that the Generic plugin is - anyway always the last one in the list. + This configuration is specified by the <type>MM_PLUGIN_ALLOWED_AT</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. </para> - </note> - </section> + </listitem> + <listitem> + <para><emphasis>Single AT expected</emphasis></para> + <para> + This boolean property allows plugins to specify that they only expect and support + one AT serial port. Whenever the first AT port is grabbed, any remaining AT probing + in ports of the same device will get cancelled. + </para> + <para> + This configuration is specified by the <type>MM_PLUGIN_ALLOWED_SINGLE_AT</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>Custom AT probing</emphasis></para> + <para> + This property allows plugins to specify custom commands to check whether a port + is AT or not. By default, the 'AT' command will be used if no custom one specified. + </para> + <para> + This configuration is specified by the <type>MM_PLUGIN_CUSTOM_AT_PROBE</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>QCDM allowed</emphasis></para> + <para> + This boolean property allows plugins to specify that they expect and support + QCDM serial ports. + </para> + <para> + This configuration is specified by the <type>MM_PLUGIN_ALLOWED_QCDM</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>Check Icera support</emphasis></para> + <para> + This boolean property allows plugins to specify that they want to have the Icera + support checks included in the probing sequence. They can afterwards get the result + of the support check to decide whether they want to create a Icera-based modem + object or not. + </para> + <para> + This configuration is specified by the <type>MM_PLUGIN_ICERA_PROBE</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + </itemizedlist> + </section> - <section> - <title>Probing setup examples</title> - <example> - <title>Probing setup for a plugin requiring udev-based vendor/product checks</title> - <programlisting> + <section> + <title>Post-probing filters</title> + <para> + 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 + enough or wrong. This covers, for example, RS232 modems connected through a RS232 + to USB converter, where udev-reported vendor ID is that of the converter, not the + one of the modem. + </para> + <itemizedlist> + <listitem> + <para><emphasis>Allowed vendor strings</emphasis></para> + <para> + Plugins can provide a list of vendor strings to be used as post-probing + filters. If the vendor string reported by the device via AT commands + is found in the list provided by the plugin, the plugin will report that + it can handle this modem. + </para> + <para> + This filter is specified by the <type>MM_PLUGIN_ALLOWED_VENDOR_STRINGS</type> + property in the <structname>MMPlugin</structname> object provided + by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>Product strings</emphasis></para> + <para> + Plugins can provide a list of pairs of vendor and product + strings to be used as post-probing filters. + </para> + <para> + If the vendor and product string pair reported by the device via AT + commands is found in the 'allowed' list provided by the plugin, the + plugin will report that it can handle this modem. This additional filter + should be used when the plugin is expected to work only with a given + specific product of a given vendor. + </para> + <para> + If the vendor and product string pair reported by the device via AT + commands is found in the 'forbidden list provided by the plugin, the + plugin will report that it cannot handle this modem. This additional filter + should be used when the plugin supports all devices of a given vendor, except for some specific ones. + </para> + <para> + These filters are specified by the <type>MM_PLUGIN_ALLOWED_PRODUCT_STRINGS</type> + and <type>MM_PLUGIN_FORBIDDEN_PRODUCT_STRINGS</type> properties in the + <structname>MMPlugin</structname> object provided by the plugin. + </para> + </listitem> + <listitem> + <para><emphasis>Icera support</emphasis></para> + <para> + Plugins can specify that they only support Icera-based modems, or that they + do not support any Icera-based modem. When either of this configurations is + enabled, the Icera support checks will be included in the + probing sequence, and the result of the check will help to determine whether + the plugin supports the modem or not. + </para> + <para> + This filter is specified by the <type>MM_PLUGIN_ALLOWED_ICERA</type> and + <type>MM_PLUGIN_FORBIDDEN_ICERA</type> properties in the + <structname>MMPlugin</structname> object provided by the plugin. + </para> + </listitem> + </itemizedlist> + + <note> + <para> + Plugins which require post-probing filters will always be sorted last, and + therefore they will be the last ones being checked for pre-probing filters. This + is due to the fact that we need to assume that these plugins aren't able to + determine port support just with pre-probing filters, as we want to avoid + unnecessary probing sequences launched. Also note that the Generic plugin is + anyway always the last one in the list. + </para> + </note> + </section> + + <section> + <title>Probing setup examples</title> + <example> + <title>Probing setup for a plugin requiring udev-based vendor/product checks</title> + <programlisting> G_MODULE_EXPORT MMPlugin * mm_plugin_create (void) { @@ -374,12 +647,12 @@ mm_plugin_create (void) /* No post-probing filters */ NULL)); } - </programlisting> - </example> + </programlisting> + </example> - <example> - <title>Probing setup for a plugin requiring AT-probed vendor/product checks</title> - <programlisting> + <example> + <title>Probing setup for a plugin requiring AT-probed vendor/product checks</title> + <programlisting> G_MODULE_EXPORT MMPlugin * mm_plugin_create (void) { @@ -402,12 +675,12 @@ mm_plugin_create (void) MM_PLUGIN_PRODUCT_STRINGS, product_strings, NULL)); } - </programlisting> - </example> + </programlisting> + </example> - <example> - <title>Probing setup for a plugin with custom initialization requirements</title> - <programlisting> + <example> + <title>Probing setup for a plugin with custom initialization requirements</title> + <programlisting> static gboolean parse_custom_at (const gchar *response, const GError *error, @@ -451,25 +724,23 @@ mm_plugin_create (void) /* No post-probing filters */ NULL)); } - </programlisting> - </example> - </section> - </section> - - <section> - <title>Port grabbing and Modem object creation</title> - <para> - 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 - the required Modem object. - </para> - <para> - While preparing to get the Modem object grab the specific port probed, udev-based - port type hints can be used to specify AT port flags (e.g. if a port is to be - considered primary, secondary or for PPP). - </para> + </programlisting> + </example> </section> + </chapter> + <chapter id="ref-overview-modem-object-creation"> + <title>Modem object creation</title> + <para> + 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 + the required Modem object. + </para> + <para> + While preparing to get the Modem object grab the specific port probed, udev-based + port type hints can be used to specify AT port flags (e.g. if a port is to be + considered primary, secondary or for PPP). + </para> </chapter> <chapter id="ref-overview-modem-state-machine"> diff --git a/docs/reference/api/ModemManager-sections.txt b/docs/reference/api/ModemManager-sections.txt index fd551a29..5184503a 100644 --- a/docs/reference/api/ModemManager-sections.txt +++ b/docs/reference/api/ModemManager-sections.txt @@ -10,15 +10,23 @@ MM_CHECK_VERSION <SECTION> <FILE>mm-enums</FILE> <TITLE>Flags and Enumerations</TITLE> +MMBearerType MMBearerIpFamily MMBearerIpMethod MMBearerAllowedAuth +MMBearerMultiplexSupport +MMBearerApnType +MMCallDirection +MMCallState +MMCallStateReason MMFirmwareImageType MMModem3gppFacility MMModem3gppNetworkAvailability MMModem3gppSubscriptionState MMModem3gppRegistrationState MMModem3gppUssdSessionState +MMModem3gppEpsUeModeOperation +MMModem3gppPacketServiceState MMModemAccessTechnology MMModemBand MMModemCapability @@ -27,6 +35,7 @@ MMModemCdmaRegistrationState MMModemCdmaRmProtocol MMModemContactsStorage MMModemLocationSource +MMModemLocationAssistanceDataType MMModemLock MMModemMode MMModemState @@ -34,6 +43,7 @@ MMModemStateFailedReason MMModemStateChangeReason MMModemPowerState MMModemPortType +MMModemFirmwareUpdateMethod MMOmaFeature MMOmaSessionState MMOmaSessionStateFailedReason @@ -50,17 +60,158 @@ MMSmsCdmaServiceCategory <SECTION> <FILE>mm-errors</FILE> <TITLE>Errors</TITLE> -MMConnectionError +MM_CORE_ERROR_DBUS_PREFIX +MM_MOBILE_EQUIPMENT_ERROR_DBUS_PREFIX +MM_CONNECTION_ERROR_DBUS_PREFIX +MM_SERIAL_ERROR_DBUS_PREFIX +MM_MESSAGE_ERROR_DBUS_PREFIX +MM_CDMA_ACTIVATION_ERROR_DBUS_PREFIX MMCoreError -MMMessageError MMMobileEquipmentError +MMConnectionError MMSerialError +MMMessageError MMCdmaActivationError +</SECTION> + +<SECTION> +<FILE>mm-compat</FILE> +MM_MODEM_BAND_U2100 +MM_MODEM_BAND_U1900 +MM_MODEM_BAND_U1800 +MM_MODEM_BAND_U17IV +MM_MODEM_BAND_U850 +MM_MODEM_BAND_U800 +MM_MODEM_BAND_U2600 +MM_MODEM_BAND_U900 +MM_MODEM_BAND_U17IX +MM_MODEM_BAND_EUTRAN_I +MM_MODEM_BAND_EUTRAN_II +MM_MODEM_BAND_EUTRAN_III +MM_MODEM_BAND_EUTRAN_IV +MM_MODEM_BAND_EUTRAN_V +MM_MODEM_BAND_EUTRAN_VI +MM_MODEM_BAND_EUTRAN_VII +MM_MODEM_BAND_EUTRAN_VIII +MM_MODEM_BAND_EUTRAN_IX +MM_MODEM_BAND_EUTRAN_X +MM_MODEM_BAND_EUTRAN_XI +MM_MODEM_BAND_EUTRAN_XII +MM_MODEM_BAND_EUTRAN_XIII +MM_MODEM_BAND_EUTRAN_XIV +MM_MODEM_BAND_EUTRAN_XVII +MM_MODEM_BAND_EUTRAN_XVIII +MM_MODEM_BAND_EUTRAN_XIX +MM_MODEM_BAND_EUTRAN_XX +MM_MODEM_BAND_EUTRAN_XXI +MM_MODEM_BAND_EUTRAN_XXII +MM_MODEM_BAND_EUTRAN_XXIII +MM_MODEM_BAND_EUTRAN_XXIV +MM_MODEM_BAND_EUTRAN_XXV +MM_MODEM_BAND_EUTRAN_XXVI +MM_MODEM_BAND_EUTRAN_XXXIII +MM_MODEM_BAND_EUTRAN_XXXIV +MM_MODEM_BAND_EUTRAN_XXXV +MM_MODEM_BAND_EUTRAN_XXXVI +MM_MODEM_BAND_EUTRAN_XXXVII +MM_MODEM_BAND_EUTRAN_XXXVIII +MM_MODEM_BAND_EUTRAN_XXXIX +MM_MODEM_BAND_EUTRAN_XL +MM_MODEM_BAND_EUTRAN_XLI +MM_MODEM_BAND_EUTRAN_XLII +MM_MODEM_BAND_EUTRAN_XLIII +MM_MODEM_BAND_EUTRAN_XLIV +MM_MODEM_BAND_CDMA_BC0_CELLULAR_800 +MM_MODEM_BAND_CDMA_BC1_PCS_1900 +MM_MODEM_BAND_CDMA_BC2_TACS +MM_MODEM_BAND_CDMA_BC3_JTACS +MM_MODEM_BAND_CDMA_BC4_KOREAN_PCS +MM_MODEM_BAND_CDMA_BC5_NMT450 +MM_MODEM_BAND_CDMA_BC6_IMT2000 +MM_MODEM_BAND_CDMA_BC7_CELLULAR_700 +MM_MODEM_BAND_CDMA_BC8_1800 +MM_MODEM_BAND_CDMA_BC9_900 +MM_MODEM_BAND_CDMA_BC10_SECONDARY_800 +MM_MODEM_BAND_CDMA_BC11_PAMR_400 +MM_MODEM_BAND_CDMA_BC12_PAMR_800 +MM_MODEM_BAND_CDMA_BC13_IMT2000_2500 +MM_MODEM_BAND_CDMA_BC14_PCS2_1900 +MM_MODEM_BAND_CDMA_BC15_AWS +MM_MODEM_BAND_CDMA_BC16_US_2500 +MM_MODEM_BAND_CDMA_BC17_US_FLO_2500 +MM_MODEM_BAND_CDMA_BC18_US_PS_700 +MM_MODEM_BAND_CDMA_BC19_US_LOWER_700 +MM_MODEM_LOCATION_SOURCE_AGPS +MM_MODEM_CAPABILITY_LTE_ADVANCED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_ACTIVATION_REJECTED_BY_GGSN_OR_GW +MM_MOBILE_EQUIPMENT_ERROR_GPRS_ACTIVATION_REJECTED_UNSPECIFIED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_AND_NON_GPRS_SERVICES_NOT_ALLOWED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_CONDITIONAL_IE_ERROR +MM_MOBILE_EQUIPMENT_ERROR_GPRS_CONGESTION +MM_MOBILE_EQUIPMENT_ERROR_GPRS_FEATURE_NOT_SUPPORTED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_IE_NOT_IMPLEMENTED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_ILLEGAL_ME +MM_MOBILE_EQUIPMENT_ERROR_GPRS_ILLEGAL_MS +MM_MOBILE_EQUIPMENT_ERROR_GPRS_IMSI_UNKNOWN_IN_HLR +MM_MOBILE_EQUIPMENT_ERROR_GPRS_IMSI_UNKNOWN_IN_VLR +MM_MOBILE_EQUIPMENT_ERROR_GPRS_INSUFFICIENT_RESOURCES +MM_MOBILE_EQUIPMENT_ERROR_GPRS_INVALID_MOBILE_CLASS +MM_MOBILE_EQUIPMENT_ERROR_GPRS_LAST_PDN_DISCONNECTION_NOT_ALLOWED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_LAST_PDN_DISCONNECTION_NOT_ALLOWED_LEGACY +MM_MOBILE_EQUIPMENT_ERROR_GPRS_LOCATION_NOT_ALLOWED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_MANDATORY_IE_ERROR +MM_MOBILE_EQUIPMENT_ERROR_GPRS_MAXIMUM_NUMBER_OF_PDP_CONTEXTS_REACHED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_MISSING_OR_UNKNOWN_APN +MM_MOBILE_EQUIPMENT_ERROR_GPRS_NETWORK_FAILURE +MM_MOBILE_EQUIPMENT_ERROR_GPRS_NOT_AUTHORIZED_FOR_CSG +MM_MOBILE_EQUIPMENT_ERROR_GPRS_NO_CELLS_IN_LOCATION_AREA +MM_MOBILE_EQUIPMENT_ERROR_GPRS_OPERATOR_DETERMINED_BARRING +MM_MOBILE_EQUIPMENT_ERROR_GPRS_PDP_AUTH_FAILURE +MM_MOBILE_EQUIPMENT_ERROR_GPRS_PDP_CONTEXT_WITHOUT_TFT_ALREADY_ACTIVATED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_PLMN_NOT_ALLOWED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_REQUESTED_APN_NOT_SUPPORTED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_REQUEST_REJECTED_BCM_VIOLATION +MM_MOBILE_EQUIPMENT_ERROR_GPRS_ROAMING_NOT_ALLOWED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SEMANTICALLY_INCORRECT_MESSAGE +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SEMANTIC_ERRORS_IN_PACKET_FILTER +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SEMANTIC_ERROR_IN_TFT_OPERATION +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SERVICE_NOT_ALLOWED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SERVICE_OPTION_NOT_SUBSCRIBED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SERVICE_OPTION_NOT_SUPPORTED +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SERVICE_OPTION_OUT_OF_ORDER +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SYNTACTICAL_ERROR_IN_PACKET_FILTER +MM_MOBILE_EQUIPMENT_ERROR_GPRS_SYNTACTICAL_ERROR_IN_TFT_OPERATION +MM_MOBILE_EQUIPMENT_ERROR_GPRS_UNKNOWN_PDP_ADDRESS_OR_TYPE +MM_MOBILE_EQUIPMENT_ERROR_GPRS_UNKNOWN_PDP_CONTEXT +MM_MOBILE_EQUIPMENT_ERROR_GPRS_UNSPECIFIED_PROTOCOL_ERROR +MM_MOBILE_EQUIPMENT_ERROR_GPRS_USER_AUTHENTICATION_FAILED <SUBSECTION Private> -MM_CDMA_ACTIVATION_ERROR_DBUS_PREFIX -MM_CONNECTION_ERROR_DBUS_PREFIX -MM_CORE_ERROR_DBUS_PREFIX -MM_MESSAGE_ERROR_DBUS_PREFIX -MM_MOBILE_EQUIPMENT_ERROR_DBUS_PREFIX -MM_SERIAL_ERROR_DBUS_PREFIX +MMModemBandDeprecated +MMModemLocationSourceDeprecated +MMModemCapabilityDeprecated +MMMobileEquipmentErrorDeprecated +MM_DEPRECATED +</SECTION> + +<SECTION> +<FILE>mm-tags</FILE> +<TITLE>Common udev tags</TITLE> +ID_MM_CANDIDATE +ID_MM_PHYSDEV_UID +ID_MM_DEVICE_PROCESS +ID_MM_DEVICE_IGNORE +ID_MM_PORT_IGNORE +ID_MM_PORT_TYPE_AT_PPP +ID_MM_PORT_TYPE_AT_PRIMARY +ID_MM_PORT_TYPE_AT_SECONDARY +ID_MM_PORT_TYPE_GPS +ID_MM_PORT_TYPE_QCDM +ID_MM_PORT_TYPE_AUDIO +ID_MM_PORT_TYPE_QMI +ID_MM_PORT_TYPE_MBIM +ID_MM_TTY_BAUDRATE +ID_MM_TTY_FLOW_CONTROL +<SUBSECTION Deprecated> +ID_MM_TTY_BLACKLIST +ID_MM_TTY_MANUAL_SCAN_ONLY </SECTION> diff --git a/docs/reference/api/meson.build b/docs/reference/api/meson.build new file mode 100644 index 00000000..d7c420c7 --- /dev/null +++ b/docs/reference/api/meson.build @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2021 IƱigo Martinez <inigomartinez@gmail.com> + +doc_module = mm_name + +private_headers = [ + 'ModemManager.h', + 'ModemManager-names.h', +] + +mm_doc_path = mm_prefix / gnome.gtkdoc_html_dir(doc_module) + +version_xml = configure_file( + input: 'version.xml.in', + output: '@BASENAME@', + configuration: version_conf, +) + +expand_content_files = [ + 'ModemManager-dbus-reference.xml', + 'ModemManager-migration-reference.xml', + 'ModemManager-overview.xml', + # FIXME: workaround because only strings can be included and not custom targets (gen_docs) + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Bearer.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Messaging.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.ProfileManager.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Modem3gpp.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.ModemCdma.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Oma.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Signal.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Simple.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Time.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Sim.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.Sms.xml', + generated_build_dir / 'mm-gdbus-doc-org.freedesktop.ModemManager1.xml', +] + +gnome.gtkdoc( + doc_module, + main_xml: doc_module + '-docs.xml', + src_dir: include_inc, + ignore_headers: private_headers, + include_directories: top_inc, + gobject_typesfile: doc_module + '.types', + dependencies: glib_deps, + namespace: 'mm', + scan_args: '--deprecated-guards="MM_DISABLE_DEPRECATED"', + fixxref_args: '--html-dir=' + mm_doc_path, + html_assets: logos_pngs + diagrams_pngs, + content_files: version_xml, + expand_content_files: expand_content_files, + install: true, +) |