-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtopology.fpp
185 lines (145 loc) · 5.92 KB
/
topology.fpp
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
module OsrDeployment {
# ----------------------------------------------------------------------
# Symbolic constants for port numbers
# ----------------------------------------------------------------------
enum Ports_RateGroups {
rateGroup1
rateGroup2
rateGroup3
}
topology OsrDeployment {
# ----------------------------------------------------------------------
# Instances used in the topology
# ----------------------------------------------------------------------
instance $health
instance blockDrv
instance tlmSend
instance cmdDisp
instance cmdSeq
instance comDriver
instance comQueue
instance comStub
instance deframer
instance eventLogger
instance fatalAdapter
instance fatalHandler
instance fileDownlink
instance fileManager
instance fileUplink
instance bufferManager
instance framer
instance linuxTime
instance polyDb
instance prmDb
instance rateGroup1
instance rateGroup2
instance rateGroup3
instance rateGroupDriver
instance textLogger
instance systemResources
# Roboclaw
instance osr
instance roboclaw1
instance roboclaw2
instance roboclaw3
instance roboclaw4
instance roboclaw5
instance roboclawCommDriver
# ----------------------------------------------------------------------
# Pattern graph specifiers
# ----------------------------------------------------------------------
command connections instance cmdDisp
event connections instance eventLogger
param connections instance prmDb
telemetry connections instance tlmSend
text event connections instance textLogger
time connections instance linuxTime
health connections instance $health
# ----------------------------------------------------------------------
# Direct graph specifiers
# ----------------------------------------------------------------------
connections Downlink {
eventLogger.PktSend -> comQueue.comQueueIn[0]
tlmSend.PktSend -> comQueue.comQueueIn[1]
fileDownlink.bufferSendOut -> comQueue.buffQueueIn[0]
comQueue.comQueueSend -> framer.comIn
comQueue.buffQueueSend -> framer.bufferIn
framer.framedAllocate -> bufferManager.bufferGetCallee
framer.framedOut -> comStub.comDataIn
framer.bufferDeallocate -> fileDownlink.bufferReturn
comDriver.deallocate -> bufferManager.bufferSendIn
comDriver.ready -> comStub.drvConnected
comStub.comStatus -> framer.comStatusIn
framer.comStatusOut -> comQueue.comStatusIn
comStub.drvDataOut -> comDriver.send
}
connections FaultProtection {
eventLogger.FatalAnnounce -> fatalHandler.FatalReceive
}
connections RateGroups {
# Block driver
blockDrv.CycleOut -> rateGroupDriver.CycleIn
# Rate group 1
rateGroupDriver.CycleOut[Ports_RateGroups.rateGroup1] -> rateGroup1.CycleIn
rateGroup1.RateGroupMemberOut[0] -> tlmSend.Run
rateGroup1.RateGroupMemberOut[1] -> fileDownlink.Run
rateGroup1.RateGroupMemberOut[2] -> systemResources.run
rateGroup1.RateGroupMemberOut[3] -> roboclaw1.run
rateGroup1.RateGroupMemberOut[4] -> roboclaw2.run
rateGroup1.RateGroupMemberOut[5] -> roboclaw3.run
rateGroup1.RateGroupMemberOut[6] -> roboclaw4.run
rateGroup1.RateGroupMemberOut[7] -> roboclaw5.run
# Rate group 2
rateGroupDriver.CycleOut[Ports_RateGroups.rateGroup2] -> rateGroup2.CycleIn
rateGroup2.RateGroupMemberOut[0] -> cmdSeq.schedIn
# Rate group 3
rateGroupDriver.CycleOut[Ports_RateGroups.rateGroup3] -> rateGroup3.CycleIn
rateGroup3.RateGroupMemberOut[0] -> $health.Run
rateGroup3.RateGroupMemberOut[1] -> blockDrv.Sched
rateGroup3.RateGroupMemberOut[2] -> bufferManager.schedIn
}
connections Sequencer {
cmdSeq.comCmdOut -> cmdDisp.seqCmdBuff
cmdDisp.seqCmdStatus -> cmdSeq.cmdResponseIn
}
connections Uplink {
comDriver.allocate -> bufferManager.bufferGetCallee
comDriver.$recv -> comStub.drvDataIn
comStub.comDataOut -> deframer.framedIn
deframer.framedDeallocate -> bufferManager.bufferSendIn
deframer.comOut -> cmdDisp.seqCmdBuff
cmdDisp.seqCmdStatus -> deframer.cmdResponseIn
deframer.bufferAllocate -> bufferManager.bufferGetCallee
deframer.bufferOut -> fileUplink.bufferSendIn
deframer.bufferDeallocate -> bufferManager.bufferSendIn
fileUplink.bufferSendOut -> bufferManager.bufferSendIn
}
connections Roboclaw {
roboclawCommDriver.allocate -> bufferManager.bufferGetCallee
roboclawCommDriver.$recv -> roboclaw1.comDataIn # TODO: Change to serial hub
roboclaw1.deallocate -> bufferManager.bufferSendIn # TODO: Change to serial hub
roboclaw1.allocate -> bufferManager.bufferGetCallee
roboclaw1.comDataOut -> roboclawCommDriver.send
roboclaw2.allocate -> bufferManager.bufferGetCallee
roboclaw2.comDataOut -> roboclawCommDriver.send
roboclaw3.allocate -> bufferManager.bufferGetCallee
roboclaw3.comDataOut -> roboclawCommDriver.send
roboclaw4.allocate -> bufferManager.bufferGetCallee
roboclaw4.comDataOut -> roboclawCommDriver.send
roboclaw5.allocate -> bufferManager.bufferGetCallee
roboclaw5.comDataOut -> roboclawCommDriver.send
roboclawCommDriver.deallocate -> bufferManager.bufferSendIn
osr.motorControlOut1 -> roboclaw1.motorControlIn
osr.motorControlOut2 -> roboclaw2.motorControlIn
osr.motorControlOut3 -> roboclaw3.motorControlIn
osr.motorControlOut4 -> roboclaw4.motorControlIn
osr.motorControlOut5 -> roboclaw5.motorControlIn
osr.getPolyDbVal -> polyDb.getValue
roboclaw1.setPolyDbVal -> polyDb.setValue
roboclaw2.setPolyDbVal -> polyDb.setValue
roboclaw3.setPolyDbVal -> polyDb.setValue
roboclaw4.setPolyDbVal -> polyDb.setValue
roboclaw5.setPolyDbVal -> polyDb.setValue
}
}
}