1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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>Modem state machine: ModemManager Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<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="ref-overview-modem-object-creation.html" title="Modem object creation">
<link rel="next" href="ch06s02.html" title="Enabling">
<meta name="generator" content="GTK-Doc V1.29 (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="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ref-overview.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="ref-overview-modem-object-creation.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="ch06s02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter">
<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#id-1.2.7.5">Initialization</a></span></dt>
<dt><span class="section"><a href="ch06s02.html">Enabling</a></span></dt>
<dt><span class="section"><a href="ch06s03.html">Connection & disconnection</a></span></dt>
<dt><span class="section"><a href="ch06s04.html">Disabling</a></span></dt>
</dl></div>
<p>
Once all ports of a given modem have been probed and grabbed by a newly created
Modem object, ModemManager will start the global state machine for the modem, as
defined in the picture below.
</p>
<div class="figure">
<a name="mm-modemmanager-states"></a><p class="title"><b>Figure 1. ModemManager states</b></p>
<div class="figure-contents"><div><img src="ModemManager-states.png" alt="ModemManager states"></div></div>
</div>
<br class="figure-break"><p>
The state machine of a modem can be summarized in 5 main sequences:
initialization, enabling, connection, disconnection and disabling.
</p>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id-1.2.7.5"></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
AT port (that suggested to be Primary) is used as control port.
</p>
<p>
The global initialization sequence is itself splitted into N per-interface
initialization steps (being N the number of interfaces implemented by the
modem object). The following list provides the steps required in the
initialization sequence of a Broadband modem object.
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p><span class="emphasis"><em>Modem interface initialization</em></span></p>
<p>
The <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.html" title="org.freedesktop.ModemManager1.Modem">Modem interface</a>
provides common actions and information available in the majority of the modems
(including Broadband-specific items which won't be implemented by POTS modems).
</p>
<p>
One of the key things done during the initialization of this interface is the
<span class="emphasis"><em>checking of supported capabilities</em></span>. Broadband modem objects
are able to handle 3GPP-only, CDMA-only and mixed 3GPP+CDMA modems, but in order
to properly handle the distinctions required in these, ModemManager first needs
to know exactly which is the current set of capabilities.
</p>
<p>
The other key step in this sequence involves <span class="emphasis"><em>checking the lock status
of the modem and/or SIM </em></span>. If the modem/SIM is found to be locked, the
whole initialization sequence is halted and the modem is left in a locked state
until unlocked by the user. Note, therefore, that modems that are locked will not
expose additional feature-specific DBus interfaces until they get unlocked.
</p>
<div class="note"><p>
It may be the case that some of the steps in the initialization of the Modem
interface require the modem itself to be unlocked. If the modem is found locked
during the first initialization attempt, as soon as it gets unlocked the
initialization sequence will be re-executed.
</p></div>
</li>
<li class="listitem">
<span class="emphasis"><em>3GPP interface initialization</em></span><p>
The <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html" title="org.freedesktop.ModemManager1.Modem.Modem3gpp">3GPP interface</a>
provides common actions and setup for modems which provide 3GPP capabilities. Therefore,
this interface initialization sequence will only be run in 3GPP-enabled modems.
</p>
</li>
<li class="listitem">
<span class="emphasis"><em>CDMA interface initialization</em></span><p>
The <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html" title="org.freedesktop.ModemManager1.Modem.ModemCdma">CDMA interface</a>
provides common actions and setup for modems which provide CDMA capabilities. Therefore,
this interface initialization sequence will only be run in CDMA-enabled modems.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Additional feature-specific interface initializations</em></span></p>
<p>
Modems with additional features will export feature-specific interfaces, such as
the <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Location.html" title="org.freedesktop.ModemManager1.Modem.Location">Location</a> or
the <a class="link" href="gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html" title="org.freedesktop.ModemManager1.Modem.Messaging">Messaging</a>
ones.
</p>
<p>
These interfaces also have their own initialization sequences, where the first step
in the sequence is always the check of whether the given modem supports the given feature.
In other words, modems will only end up exporting the interfaces for the features they
support.
</p>
</li>
</ul></div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.29</div>
</body>
</html>
|