device_controller_class_diagram.txt
3.86 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
/'
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
'/
@startuml
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