Blame view

src/device_controller/doc/Device_controller_class_diag.pu 4.49 KB
ac0e5c70   Etienne Pallier   nouveau devices_c...
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

@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

0b90ec67   Etienne Pallier   Updated diagram c...
61
62
63
64
65
66
DeviceControllerAbstract <|-- MountPointingControllerAbstract
DeviceControllerAbstract <|-- SecurityManagementControllerAbstract
DeviceControllerAbstract <|-- DetectorSensorControllerAbstract
DeviceControllerAbstract <|-- DetectorShutterControllerAbstract
DeviceControllerAbstract <|-- DetectorFocusControllerAbstract
DeviceControllerAbstract <|-- FilterSelectorControllerAbstract
ac0e5c70   Etienne Pallier   nouveau devices_c...
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

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()
}

0b90ec67   Etienne Pallier   Updated diagram c...
94
abstract class MountPointingControllerAbstract {
ac0e5c70   Etienne Pallier   nouveau devices_c...
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
    _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()
}

0b90ec67   Etienne Pallier   Updated diagram c...
114
abstract class SecurityManagementControllerAbstract {
ac0e5c70   Etienne Pallier   nouveau devices_c...
115
116
117
    _cmd = {get_status, set_light...}
}

0b90ec67   Etienne Pallier   Updated diagram c...
118
abstract class DetectorSensorControllerAbstract {
ac0e5c70   Etienne Pallier   nouveau devices_c...
119
120
121
122
123
    _cmd = {set_pose, do_start_acq...}
}

/' Concrete Devices Controllers '/

0b90ec67   Etienne Pallier   Updated diagram c...
124
125
126
MountPointingControllerAbstract <|-- TelescopeControllerMeade
MountPointingControllerAbstract <|-- TelescopeControllerGemini
MountPointingControllerAbstract <|-- TelescopeControllerColibri
ac0e5c70   Etienne Pallier   nouveau devices_c...
127

0b90ec67   Etienne Pallier   Updated diagram c...
128
129
SecurityManagementControllerAbstract <|-- PLCControllerAK
SecurityManagementControllerAbstract <|-- PLCControllerColibri
ac0e5c70   Etienne Pallier   nouveau devices_c...
130

0b90ec67   Etienne Pallier   Updated diagram c...
131
132
133
134
135
DetectorSensorControllerAbstract <|-- CameraControllerCAGIRE
DetectorSensorControllerAbstract <|-- CameraControllerDDRAGO

DetectorSensorControllerAbstract <|-- SBIGController
DetectorShutterControllerAbstract <|-- SBIGController
0a509265   Etienne Pallier   update class diagram
136
FilterSelectorControllerAbstract <|-- SBIGController
0b90ec67   Etienne Pallier   Updated diagram c...
137

005f5745   Etienne Pallier   new AgentMajordom...
138
139
140
SBIGController o-> SBIGSimulator
SBIGController <-- AgentDeviceSBIG

0b90ec67   Etienne Pallier   Updated diagram c...
141
142
143
MountPointingControllerAbstract <|-- DeltaTauController
DetectorFocusControllerAbstract <|-- DeltaTauController
FilterSelectorControllerAbstract <|-- DeltaTauController
ac0e5c70   Etienne Pallier   nouveau devices_c...
144
145
146
147
148
149
150
151
152
153

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