Device_controller_class_diag.pu
4.49 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
@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 (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 <|-- MountPointingControllerAbstract
DeviceControllerAbstract <|-- SecurityManagementControllerAbstract
DeviceControllerAbstract <|-- DetectorSensorControllerAbstract
DeviceControllerAbstract <|-- DetectorShutterControllerAbstract
DeviceControllerAbstract <|-- DetectorFocusControllerAbstract
DeviceControllerAbstract <|-- FilterSelectorControllerAbstract
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 MountPointingControllerAbstract {
_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 SecurityManagementControllerAbstract {
_cmd = {get_status, set_light...}
}
abstract class DetectorSensorControllerAbstract {
_cmd = {set_pose, do_start_acq...}
}
/' Concrete Devices Controllers '/
MountPointingControllerAbstract <|-- TelescopeControllerMeade
MountPointingControllerAbstract <|-- TelescopeControllerGemini
MountPointingControllerAbstract <|-- TelescopeControllerColibri
SecurityManagementControllerAbstract <|-- PLCControllerAK
SecurityManagementControllerAbstract <|-- PLCControllerColibri
DetectorSensorControllerAbstract <|-- CameraControllerCAGIRE
DetectorSensorControllerAbstract <|-- CameraControllerDDRAGO
DetectorSensorControllerAbstract <|-- SBIGController
DetectorShutterControllerAbstract <|-- SBIGController
FilterSelectorControllerAbstract <|-- SBIGController
SBIGController o-> SBIGSimulator
SBIGController <-- AgentDeviceSBIG
MountPointingControllerAbstract <|-- DeltaTauController
DetectorFocusControllerAbstract <|-- DeltaTauController
FilterSelectorControllerAbstract <|-- DeltaTauController
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