blob: d42c6d1a16ac19e5f2837b9c5bd0b67a331c4e92 (
plain)
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
|
Session API
***********
Connection management algorithm basics
======================================
When a session is created, a sorted list of services is added to the
session. The services are filtered and sorted according AllowedBearers.
There are three triggers which lead to evaluate the connect
algorithm:
- Session.Connect()
- Offline
Connect algorithm:
Session.Connect()
|
+------+-------+
+-----+ECall Session ?+-----+
Yes| +--------------+ |No
| |
Connect to +--------------+
first available +---+AvoidHandover?+---+
Service | +--------------+ |
Yes| |No
+----------------+ |
+---+In service_list +---+ |
Yes| |and online? | |No |
| +----------------+ | |
| | |
Take that one Take first in
the service list
Disconnect algorithm
- Session.Disconnect()
Disconnect algorithm:
Session.Disconnect()
|
+--- Session.Change()
|
+-----------------+ Yes
|service not used +-------------+
|by other session?| |
+------.----------+ |
|No |
| |
Service.Disconnect() Do nothing
Session.Disconnect() will be blocked whenever a ongoing
emergency call is active.
Session States and Transitions
==============================
There is only one state which is called Free Ride.
The Free Ride state means that a session will go online if a matching
service goes online without calling Service.Connect() itself. The idea
behind this is that a session doesn't request a connection for itself
instead waits until another session actively requires to go online.
This is comparable to piggy-backing.
Connnect()
+------+
| v
+------------+
| Free Ride |
+------------+
| ^
+-----+
Disconnect()
|