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
@startuml
skinparam BackgroundColor F0F0F0
enum GSM::SIM
{
SIM1
SIM2
NONE
}
enum ActionId
{
RequestPin1
RequestPuk1
SimUnlocked
UnhandledCMEError
ChangePin1
SimBlocked
}
abstract class ActionParams
{
}
abstract class Message
{
}
class PinData
{
std::vector<unsigned int> pinValue
}
class ReplacePinData
{
std::vector<unsigned int> oldPinValue
std::vector<unsigned int> newPinValue
}
class PukData
{
std::vector<unsigned int> pukValue
std::vector<unsigned int> newPinValue
}
class Abort
{
}
class ActionMessage
{
ActionId action
ActionParams
}
class RequestPinParams
{
GSM::SIM sim
unsigned int attempts
}
class RequestPukParams
{
GSM::SIM sim
unsigned int attempts
}
class UnlockedParams
{
GSM::SIM sim
}
class CMEErrorParams
{
unsigned int cme_code
}
class ChangePinParams
{
GSM::SIM sim
unsigned int attempts
}
class SimBlockedParams
{
GSM::SIM sim
}
Message <|-- PinData
Message <|-- ReplacePinData
Message <|-- PukData
Message <|-- Abort
Message <|-- ActionMessage
ActionParams <|-- RequestPinParams
ActionParams <|-- RequestPukParams
ActionParams <|-- UnlockedParams
ActionParams <|-- CMEErrorParams
ActionParams <|-- ChangePinParams
ActionParams <|-- SimBlockedParams
interface SrvCellularMessageHandler
{
handle(Message)
}
interface APMActions
{
setAction(ActionMessage)
}
SrvCellularMessageHandler *-- Message : use
APMActions *-- ActionMessage : use
ActionMessage *-- ActionParams : use
@enduml