Device_controller_abstract_activity_diag.pu
4.89 KB
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
@startuml
' UML class Diagram : can be displayed with PlantUML (plugin for Eclipse or for PyCharm)
' PlantUML:
' - How to install : https://projects.irap.omp.eu/projects/pyros/wiki/Project_Development#PlantUML
' - Eclipse plugin : http://plantuml.com/eclipse
' - class diagrams : http://plantuml.com/class-diagram
' - sequence diagrams : http://plantuml.com/sequence-diagram
' - state diagrams : http://plantuml.com/state-diagram
' - Use Case diagrams : http://plantuml.com/use-case-diagram
' - OLD Activity diagrams : http://plantuml.com/activity-diagram-legacy
' - NEW Activity diagrams : http://plantuml.com/activity-diagram-beta
' - Pre-processing (include...) : http://plantuml.com/preprocessing
' - GANTT diagrams : http://plantuml.com/gantt-diagram
' - REAL WORLD EXAMPLES !!! : https://real-world-plantuml.com/
' - For Python:
' - https://github.com/SamuelMarks/python-plantuml
' - https://pythonhosted.org/plantuml/
' UML diagrams theory : https://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/index.html
title
__**DeviceController and ClientChannel classes diagram (1 - composition)**__
<i>(ClientChannel is a COMPONENT of DeviceController)</i>
end title
/' Channels '/
ClientChannel <|-- ClientSerial
ClientChannel <|-- ClientSocket
ClientChannel <|-- ClientUSB
abstract class ClientChannel {
my_channel # socket or serial or usb...
{abstract} connect_to_server()
{abstract} read()
{abstract} put()
put_read()
{abstract} send_data()
{abstract} receive_data()
{abstract} close()
}
class ClientSocket {
my_channel # (socket)
--
connect_to_server()
send_data()
receive_data()
close()
}
/' Abstract Devices Controllers '/
DeviceControllerAbstract o-- ClientChannel
DeviceControllerAbstract <|-- TelescopeControllerAbstract
DeviceControllerAbstract <|-- PLCControllerAbstract
DeviceControllerAbstract <|-- CameraControllerAbstract
abstract class DeviceControllerAbstract {
my_channel # socket or serial or usb...
_cmd = {start, stop, park...}
class GenericResult
--
{abstract} connect_to_device()
{abstract} _format_data_to_send()
{abstract} _unformat_received_data()
available_commands()
execute()
execute_generic_cmd()
execute_native_cmd()
execute_native_cmd()
send_data()
receive_data()
---
**Abstract GET/SET/DO commands :**
{abstract} get_timezone(), set_timezone()
{abstract} get_date(), set_date()
{abstract} get_time(), set_time()
{abstract} do_park()
{abstract} do_start()
{abstract} do_stop()
{abstract} do_init()
}
abstract class TelescopeControllerAbstract {
_cmd = {get_ra, get_dec, do_goto...}
----
**Abstract GET/SET/DO commands :**
{abstract} get_ack()
{abstract} get_ra(), set_ra()
{abstract} get_dec(), set_dec()
get_radec(), set_radec()
{abstract} get_lat(), set_lat()
{abstract} get_long(), set_long()
{abstract} set_speed()
{abstract} do_warm_start()
{abstract} do_prec_refr()
----
**Generic MACRO commands:**
do_init()
do_goto()
do_move()
}
abstract class PLCControllerAbstract {
_cmd = {get_status, set_light...}
}
abstract class CameraControllerAbstract {
_cmd = {set_pose, do_start_acq...}
}
/' Concrete Devices Controllers '/
TelescopeControllerAbstract <|-- TelescopeControllerMeade
TelescopeControllerAbstract <|-- TelescopeControllerGemini
TelescopeControllerAbstract <|-- TelescopeControllerColibri
PLCControllerAbstract <|-- PLCControllerAK
PLCControllerAbstract <|-- PLCControllerColibri
CameraControllerAbstract <|-- CameraControllerVIS_AK
CameraControllerAbstract <|-- CameraControllerCAGIRE
CameraControllerAbstract <|-- CameraControllerDDRAGO
class TelescopeControllerGemini {
_cmd = {get_ra, get_dec, do_goto...}
format_data_to_send()
unformat_received_data()
}
TelescopeControllerMeade : _cmd = {get_ra, get_dec, do_goto...}
@enduml
'''
'''
@startuml
title
__**DeviceController and ClientChannel classes diagram (2 - multi-inheritance)**__
<i>(TelescopeGemini heritates both from DeviceController and ClientChannel)</i>
end title
/' Abstract Devices Controllers '/
DeviceControllerAbstract <|-- PLCControllerAbstract
DeviceControllerAbstract <|-- CameraControllerAbstract
DeviceControllerAbstract <|-- TelescopeControllerAbstract
/' Concrete Devices Controllers '/
TelescopeControllerAbstract <|-- TelescopeControllerMeade
TelescopeControllerAbstract <|-- TelescopeControllerGemini
ClientSocket <|-- TelescopeControllerGemini
TelescopeControllerAbstract <|-- TelescopeControllerColibri
PLCControllerAbstract <|-- PLCControllerAK
PLCControllerAbstract <|-- PLCControllerColibri
CameraControllerAbstract <|-- CameraControllerVIS_AK
CameraControllerAbstract <|-- CameraControllerCAGIRE
CameraControllerAbstract <|-- CameraControllerDDRAGO
/' Channels '/
ClientChannel <|-- ClientSocket
ClientChannel <|-- ClientSerial
ClientChannel <|-- ClientUSB
@enduml