From 38578f13b5b07f9a57b9407a2e2b8b34a8671f8e Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Mon, 16 Jan 2012 15:58:16 +0100 Subject: docs: include initial state machine documentation --- docs/reference/api/Makefile.am | 3 + docs/reference/api/ModemManager-states.dia | 1210 ++++++++++++++++++++++++++++ docs/reference/api/ModemManager-states.png | Bin 0 -> 28305 bytes docs/reference/api/mm-overview.xml | 79 +- 4 files changed, 1272 insertions(+), 20 deletions(-) create mode 100644 docs/reference/api/ModemManager-states.dia create mode 100644 docs/reference/api/ModemManager-states.png (limited to 'docs/reference') diff --git a/docs/reference/api/Makefile.am b/docs/reference/api/Makefile.am index 69c11548..ea657d75 100644 --- a/docs/reference/api/Makefile.am +++ b/docs/reference/api/Makefile.am @@ -38,6 +38,7 @@ MKDB_OPTIONS = --output-format=xml --sgml-mode --name-space=mm # Images to copy into HTML directory HTML_IMAGES = \ + ModemManager-states.png \ $(NULL) content_files = \ @@ -75,6 +76,8 @@ EXTRA_DIST += \ mm-overview.xml \ mm-dbus-reference.xml \ version.xml.in \ + ModemManager-states.dia \ + ModemManager-states.png \ $(NULL) CLEANFILES += \ diff --git a/docs/reference/api/ModemManager-states.dia b/docs/reference/api/ModemManager-states.dia new file mode 100644 index 00000000..21e59479 --- /dev/null +++ b/docs/reference/api/ModemManager-states.dia @@ -0,0 +1,1210 @@ + + + + + + + + + + + + + #Letter# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #LOCKED# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #INITIALIZED# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #DISABLING# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SEARCHING# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #REGISTERED# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #DISCONNECTING# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #CONNECTING# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #CONNECTED# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ENABLED# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ENABLING# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #INITIALIZING# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ENABLE# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #CONNECT# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #DISCONNECT# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #DISABLE# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #INITIALIZE# + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/reference/api/ModemManager-states.png b/docs/reference/api/ModemManager-states.png new file mode 100644 index 00000000..9ac1529a Binary files /dev/null and b/docs/reference/api/ModemManager-states.png differ diff --git a/docs/reference/api/mm-overview.xml b/docs/reference/api/mm-overview.xml index 675acabe..95764795 100644 --- a/docs/reference/api/mm-overview.xml +++ b/docs/reference/api/mm-overview.xml @@ -1,56 +1,95 @@ ]> - + ModemManager Overview - - ModemManager + + Introduction 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. - 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, a command line client (mmcli) is provided, which + may be used to test the different functionality provided during plugin + development. - 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. + 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. - 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 + 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. 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! + classes and just add (or override) operations which are not standard. Writing + new plugins is highly encouraged! + + + State machine + + ModemManager implements support for each Modem by controlling their + behaviour following the steps given in the following state machine. + +
+ ModemManager states + +
+ + The state machine of a modem can be summarized in 5 main sequences: + initialization, enabling, connection, disconnection and disabling. + +
+ Initialization + + + +
+
+ Enabling + + + +
+
+ Connection + + + +
+
+ Disconnection + + + +
+
+ Disabling + + + +
-- cgit v1.2.3-70-g09d2