docs: include initial state machine documentation
This commit is contained in:
@@ -38,6 +38,7 @@ MKDB_OPTIONS = --output-format=xml --sgml-mode --name-space=mm
|
|||||||
|
|
||||||
# Images to copy into HTML directory
|
# Images to copy into HTML directory
|
||||||
HTML_IMAGES = \
|
HTML_IMAGES = \
|
||||||
|
ModemManager-states.png \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
content_files = \
|
content_files = \
|
||||||
@@ -75,6 +76,8 @@ EXTRA_DIST += \
|
|||||||
mm-overview.xml \
|
mm-overview.xml \
|
||||||
mm-dbus-reference.xml \
|
mm-dbus-reference.xml \
|
||||||
version.xml.in \
|
version.xml.in \
|
||||||
|
ModemManager-states.dia \
|
||||||
|
ModemManager-states.png \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
CLEANFILES += \
|
CLEANFILES += \
|
||||||
|
1210
docs/reference/api/ModemManager-states.dia
Normal file
1210
docs/reference/api/ModemManager-states.dia
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/reference/api/ModemManager-states.png
Normal file
BIN
docs/reference/api/ModemManager-states.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
@@ -1,56 +1,95 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||||
<!ENTITY version SYSTEM "version.xml">
|
|
||||||
]>
|
]>
|
||||||
<part id="overview">
|
<part id="ref-overview">
|
||||||
<title>ModemManager Overview</title>
|
<title>ModemManager Overview</title>
|
||||||
|
|
||||||
<chapter id="overview-modemmanager">
|
<chapter id="ref-overview-introduction">
|
||||||
<title>ModemManager</title>
|
<title>Introduction</title>
|
||||||
<para>
|
<para>
|
||||||
ModemManager provides a unified high level API for communicating with
|
ModemManager provides a unified high level API for communicating with
|
||||||
(mobile broadband) modems. While the basic commands are standardized,
|
(mobile broadband) modems. While the basic commands are standardized,
|
||||||
the more advanced operations (like signal quality monitoring while
|
the more advanced operations (like signal quality monitoring while
|
||||||
connected) varies a lot.
|
connected) varies a lot.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<formalpara>
|
<formalpara>
|
||||||
<title>Using</title>
|
<title>Using</title>
|
||||||
<para>
|
<para>
|
||||||
ModemManager is a system daemon and is not meant to be used directly from
|
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
|
the command line. However, a command line client (mmcli) is provided, which
|
||||||
'dbus-send' command to control it from the terminal. There's an example
|
may be used to test the different functionality provided during plugin
|
||||||
program (tests/mm-test.py) that demonstrates the basic API usage.
|
development.
|
||||||
</para>
|
</para>
|
||||||
</formalpara>
|
</formalpara>
|
||||||
|
|
||||||
<formalpara>
|
<formalpara>
|
||||||
<title>Implementation</title>
|
<title>Implementation</title>
|
||||||
<para>
|
<para>
|
||||||
ModemManager is a DBus system bus activated service (meaning it's started
|
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
|
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
|
queried from udev and automatically updated based on hardware events. There are
|
||||||
a GInterface (MMModem) that defines the modem interface and any device specific
|
DBus-interface specific GInterfaces, which should be implemented by any device
|
||||||
implementation must implement it. There are two generic MMModem implementations
|
specific implementation. There is a generic MMBroadbandModem implementation that
|
||||||
to support the basic operations (one for GSM, one for CDMA,) which are common
|
provides a generic implementation of the most common operations in both GSM and
|
||||||
for all cards.
|
CDMA modems.
|
||||||
</para>
|
</para>
|
||||||
</formalpara>
|
</formalpara>
|
||||||
|
|
||||||
<formalpara>
|
<formalpara>
|
||||||
<title>Plugins</title>
|
<title>Plugins</title>
|
||||||
<para>
|
<para>
|
||||||
Plugins are loaded on startup, and must implement the MMPlugin interface. It
|
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
|
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
|
supports a port and to create custom modem implementations. It most likely
|
||||||
makes sense to derive custom modem implementations from one of the generic
|
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
|
classes and just add (or override) operations which are not standard. Writing
|
||||||
fully working plugin in the plugins/ directory for Huawei cards that can be
|
new plugins is highly encouraged!
|
||||||
used as an example for writing new plugins. Writing new plugins is highly
|
|
||||||
encouraged!
|
|
||||||
</para>
|
</para>
|
||||||
</formalpara>
|
</formalpara>
|
||||||
|
</chapter>
|
||||||
|
|
||||||
|
<chapter id="ref-overview-states">
|
||||||
|
<title>State machine</title>
|
||||||
|
<para>
|
||||||
|
ModemManager implements support for each Modem by controlling their
|
||||||
|
behaviour following the steps given in the following state machine.
|
||||||
|
</para>
|
||||||
|
<figure id="mm-modemmanager-states">
|
||||||
|
<title>ModemManager states</title>
|
||||||
|
<graphic fileref="../ModemManager-states.png" format="PNG"></graphic>
|
||||||
|
</figure>
|
||||||
|
<para>
|
||||||
|
The state machine of a modem can be summarized in 5 main sequences:
|
||||||
|
initialization, enabling, connection, disconnection and disabling.
|
||||||
|
</para>
|
||||||
|
<section>
|
||||||
|
<title>Initialization</title>
|
||||||
|
<para>
|
||||||
|
<!-- TODO -->
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<title>Enabling</title>
|
||||||
|
<para>
|
||||||
|
<!-- TODO -->
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<title>Connection</title>
|
||||||
|
<para>
|
||||||
|
<!-- TODO -->
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<title>Disconnection</title>
|
||||||
|
<para>
|
||||||
|
<!-- TODO -->
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<title>Disabling</title>
|
||||||
|
<para>
|
||||||
|
<!-- TODO -->
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
</part>
|
</part>
|
||||||
|
Reference in New Issue
Block a user