docs: setup generation of gtk-doc based DBus API documentation

It includes gdbus-codegen generated API documentation, plus the common Enums,
Flags and Errors, which will also be used in libmm-glib.
This commit is contained in:
Aleksander Morgado
2011-11-22 11:33:35 +01:00
parent a57c3bcf36
commit 09f40c8369
12 changed files with 360 additions and 1 deletions

13
.gitignore vendored
View File

@@ -12,6 +12,7 @@ ltmain.sh
intltool-* intltool-*
missing missing
stamp-h1 stamp-h1
gtk-doc.make
*~ *~
*.o *.o
*.lo *.lo
@@ -61,6 +62,18 @@ po/insert-header.sin
po/quot.sed po/quot.sed
po/remove-potcdate.sin po/remove-potcdate.sin
docs/reference/api/version.xml
docs/reference/api/mm.args
docs/reference/api/mm.hierarchy
docs/reference/api/mm.interfaces
docs/reference/api/mm.prerequisites
docs/reference/api/mm.signals
docs/reference/api/*.stamp
docs/reference/api/*.txt
docs/reference/api/html
docs/reference/api/tmpl
docs/reference/api/xml
m4/gtk-doc.m4 m4/gtk-doc.m4
m4/intltool.m4 m4/intltool.m4
m4/libtool.m4 m4/libtool.m4

View File

@@ -1,5 +1,5 @@
SUBDIRS = . marshallers build-aux include libmm-common libqcdm libwmc src plugins introspection po test SUBDIRS = . marshallers build-aux include libmm-common libqcdm libwmc src plugins introspection po test docs
if WITH_POLKIT if WITH_POLKIT
SUBDIRS += policy SUBDIRS += policy

View File

@@ -14,6 +14,7 @@ PKG_NAME=ModemManager
} }
(cd $srcdir; (cd $srcdir;
gtkdocize || exit 1
autopoint --force autopoint --force
AUTOPOINT='intltoolize --automake --copy' autoreconf --force --install --verbose AUTOPOINT='intltoolize --automake --copy' autoreconf --force --install --verbose
if test -z "$NOCONFIGURE"; then if test -z "$NOCONFIGURE"; then

View File

@@ -21,6 +21,23 @@ dnl Initialize libtool
LT_PREREQ([2.2]) LT_PREREQ([2.2])
LT_INIT LT_INIT
dnl
dnl Documentation
dnl
AC_ARG_WITH(docs, AS_HELP_STRING([--with-docs], [Build ModemManager documentation]))
AM_CONDITIONAL(WITH_DOCS, test "x$with_docs" = "xyes")
case $with_docs in
yes)
enable_gtk_doc=yes
;;
*)
with_docs=no
;;
esac
GTK_DOC_CHECK(1.0)
dnl dnl
dnl translation support dnl translation support
dnl dnl
@@ -172,6 +189,10 @@ test/Makefile
introspection/Makefile introspection/Makefile
po/Makefile.in po/Makefile.in
policy/Makefile policy/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/api/Makefile
docs/reference/api/version.xml
]) ])
AC_OUTPUT AC_OUTPUT

2
docs/Makefile.am Normal file
View File

@@ -0,0 +1,2 @@
SUBDIRS = reference

View File

@@ -0,0 +1,2 @@
SUBDIRS = api

View File

@@ -0,0 +1,93 @@
# The name of the module.
DOC_MODULE = mm
# The top-level SGML file.
DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml
# Extra options to supply to gtkdoc-scan
SCAN_OPTIONS =
# The directory containing the source code.
DOC_SOURCE_DIR = $(top_srcdir)/include
HFILE_GLOB =
CFILE_GLOB =
# Headers to ignore
IGNORE_HFILES = \
ModemManager.h \
ModemManager-names.h \
$(NULL)
# CFLAGS and LDFLAGS for compiling scan program. Only needed
# if $(DOC_MODULE).types is non-empty.
INCLUDES = \
-I$(srcdir) \
-I$(top_srcdir) \
-I$(top_builddir) \
$(MM_CFLAGS) \
$(NULL)
GTKDOC_LIBS = \
$(MM_LIBS) \
$(NULL)
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS = --output-format=xml --sgml-mode --name-space=mm
# Images to copy into HTML directory
HTML_IMAGES = \
$(NULL)
content_files = \
$(NULL)
expand_content_files = \
mm-overview.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Sim.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Sms.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Bearer.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Messaging.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Cdma.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.3gpp.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.3gpp.Ussd.xml \
$(top_builddir)/libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Simple.xml \
$(NULL)
extra_files = \
$(NULL)
if ENABLE_GTK_DOC
include $(top_srcdir)/gtk-doc.make
else
EXTRA_DIST =
CLEANFILES =
endif
EXTRA_DIST += \
mm-overview.xml \
version.xml.in \
$(NULL)
CLEANFILES += \
$(DOC_MODULE)-decl-list.txt \
$(DOC_MODULE)-decl.txt \
$(DOC_MODULE)-overrides.txt \
$(DOC_MODULE)-undeclared.txt \
$(DOC_MODULE)-undocumented.txt \
$(DOC_MODULE)-overrides.txt \
$(DOC_MODULE)-unused.txt \
$(DOC_MODULE).args \
$(DOC_MODULE).hierarchy \
$(DOC_MODULE).interfaces \
$(DOC_MODULE).prerequisites \
$(DOC_MODULE).signals \
*.stamp \
-rf xml html tmpl \
$(NULL)

View File

@@ -0,0 +1,138 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY version SYSTEM "version.xml">
]>
<book id="mm" xmlns:xi="http://www.w3.org/2003/XInclude">
<bookinfo>
<title>ModemManager Reference Manual</title>
<releaseinfo>Version &version;</releaseinfo>
<copyright>
<year>2008</year>
<holder>Novell, Inc.</holder>
</copyright>
<copyright>
<year>2008</year>
<year>2009</year>
<year>2010</year>
<year>2011</year>
<holder>Red Hat, Inc.</holder>
</copyright>
<copyright>
<year>2011</year>
<holder>The Chromium OS Authors</holder>
</copyright>
<copyright>
<year>2011</year>
<holder>Google, Inc.</holder>
</copyright>
<legalnotice>
<para>
Permission is granted to copy, distribute and/or modify this
document under the terms of the <citetitle>GNU Free
Documentation License</citetitle>, Version 1.1 or any later
version published by the Free Software Foundation with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. You may obtain a copy of the <citetitle>GNU Free
Documentation License</citetitle> from the Free Software
Foundation by visiting <ulink type="http"
url="http://www.fsf.org">their Web site</ulink> or by writing
to:
<address>
<street>51 Franklin Street</street>, Suite 500
<city>Boston</city>, <state>MA</state> <postcode>02110-1335</postcode>
<country>USA</country>
</address>
</para>
</legalnotice>
</bookinfo>
<xi:include href="xml/mm-overview.xml"/>
<part id="ref-dbus">
<title>D-Bus API Reference</title>
<chapter id="ref-dbus-objects-names">
<title>Objects &amp; Names</title>
<sect1 id="ref-dbus-well-known-name">
<title>The <literal>org.freedesktop.ModemManager1</literal> bus name</title>
<para>
The D-Bus name <literal>org.freedesktop.ModemManager1</literal>
on the system bus is used by the ModemManager daemon. If this daemon
isn't running, it will be started if D-Bus messages are sent to the
name.
</para>
</sect1>
<sect1 id="ref-dbus-well-known-object">
<title>
The <literal>/org/freedesktop/ModemManager</literal>
and <literal>/org/freedesktop/ModemManager/Modems</literal> objects
</title>
<para>
The ModemManager process will export an object at the well-known
path <literal>/org/freedesktop/ModemManager1</literal>. This object can
be used to list available modem objects, which will also be exposed
on paths with the folowing pattern
<literal>/org/freedesktop/ModemManager1/Modems/#</literal>.
</para>
</sect1>
</chapter>
<chapter>
<title>Common types</title>
<xi:include href="xml/mm-enums.xml"/>
<xi:include href="xml/mm-errors.xml"/>
</chapter>
<chapter>
<title>Manager interface</title>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.xml"/>
</chapter>
<chapter>
<title>SIM interface</title>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Sim.xml"/>
</chapter>
<chapter>
<title>SMS interface</title>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Sms.xml"/>
</chapter>
<chapter>
<title>Bearer interface</title>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Bearer.xml"/>
</chapter>
<chapter>
<title>Modem interfaces</title>
<section>
<title>Generic</title>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.xml"/>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Simple.xml"/>
</section>
<section>
<title>3GPP specific</title>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.3gpp.xml"/>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.3gpp.Ussd.xml"/>
</section>
<section>
<title>CDMA specific</title>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Cdma.xml"/>
</section>
<section>
<title>Other</title>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Messaging.xml"/>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Location.xml"/>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Firmware.xml"/>
<xi:include href="../../../libmm-common/mm-gdbus-doc-org.freedesktop.ModemManager1.Modem.Contacts.xml"/>
</section>
</chapter>
</part>
<index>
<title>Index</title>
</index>
<chapter id="mm-hierarchy">
<title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/>
</chapter>
</book>

View File

@@ -0,0 +1,56 @@
<?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" [
<!ENTITY version SYSTEM "version.xml">
]>
<part id="overview">
<title>ModemManager Overview</title>
<chapter id="overview-modemmanager">
<title>ModemManager</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.
</para>
<formalpara>
<title>Using</title>
<para>
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.
</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'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.
</para>
</formalpara>
<formalpara>
<title>Plugins</title>
<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 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
used as an example for writing new plugins. Writing new plugins is highly
encouraged!
</para>
</formalpara>
</chapter>
</part>

View File

@@ -0,0 +1,32 @@
<SECTION>
<FILE>mm-enums</FILE>
<TITLE>Flags and Enumerations</TITLE>
MMBearerIpMethod
MMModem3gppFacility
MMModem3gppNetworkAvailability
MMModem3gppRegistrationState
MMModem3gppUssdSessionState
MMModemAccessTech
MMModemBand
MMModemCapability
MMModemCdmaActivationError
MMModemCdmaActivationState
MMModemCdmaRegistrationState
MMModemContactsStorage
MMModemLocationSource
MMModemLock
MMModemMode
MMModemSmsState
MMModemState
MMModemStateChangeReason
</SECTION>
<SECTION>
<FILE>mm-errors</FILE>
<TITLE>Errors</TITLE>
MMConnectionError
MMCoreError
MMMessageError
MMMobileEquipmentError
MMSerialError
</SECTION>

View File

View File

@@ -0,0 +1 @@
@VERSION@