blob: ec42cc43ed5c56861f8262585cc0ab1ce3e07ae9 (
plain) (
blame)
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
|
RoomModel PingPong {
import room.basic.service.timing.* from "../../../org.eclipse.etrice.modellib/models/TimingService.room"
LogicalSystem System_PingPong {
SubSystemRef subsystem: SubSystem_PingPong
}
SubSystemClass SubSystem_PingPong {
ActorRef application: PingPongTop
ActorRef services: ATimingService
LayerConnection ref application satisfied_by services.timer
LayerConnection ref application satisfied_by services.timeout
LogicalThread mrPingThread prio=5 {application.MrPing}
LogicalThread mrPong1Thread prio=5 {application.MrPong1}
// LogicalThread mrPong2Thread prio=5 {application.MrPong2}
}
// automatically inserted App_SubSystem_PedLightController
ActorClass PingPongTop {
Structure {
ActorRef MrPing: MrPingActor
ActorRef MrPong1: MrPongActor1
// ActorRef MrPong2: MrPongActor2
Binding MrPing.PingPongPort and MrPong1.PingPongPort
}
}
ActorClass MrPingActor {
Interface {
conjugated Port PingPongPort [2]: PingPongProtocol
}
Structure {
external Port PingPongPort
SAP timer: PTimeout
}
Behavior {
StateMachine {
Transition tr0: initial -> waitForTimer {
action {
"timer.Start(1000);"
}
}
Transition tr1: waitForTimer -> waitForPong {
triggers {
<timeoutTick: timer>
}
action {
"PingPongPort.ping();"
}
}
Transition tr2: waitForPong -> waitForTimer {
triggers {
<pong: PingPongPort>
}
action {
"timer.Start(1000);"
}
}
State waitForTimer { }
State waitForPong { }
}
}
}
ActorClass MrPongActor1 {
Interface {
Port PingPongPort: PingPongProtocol
}
Structure {
external Port PingPongPort
}
Behavior {
StateMachine {
Transition tr0: initial -> waitForPing { }
Transition myTrigger: waitForPing -> waitForPing {
triggers {
<ping: PingPongPort>
}
action {
"PingPongPort.pong();"
}
}
State waitForPing { }
}
}
}
/* ActorClass MrPongActor2 {
Interface {
Port PingPongPort: PingPongProtocol
}
Structure {
external Port PingPongPort
}
Behavior {
StateMachine {
Transition tr0: initial -> waitForPing { }
Transition myTrigger: waitForPing -> waitForPing {
triggers {
<ping: PingPongPort>
}
action {
"PingPongPort.pong();"
}
}
State waitForPing { }
}
}
}*/
ProtocolClass PingPongProtocol {
incoming {
Message ping()
}
outgoing {
Message pong()
}
}
}
|