diff --git a/devices_channel/doc/device_controller class diagram - COMPOSITION.png b/devices_channel/doc/device_controller class diagram - COMPOSITION.png
deleted file mode 100644
index bf28368..0000000
Binary files a/devices_channel/doc/device_controller class diagram - COMPOSITION.png and /dev/null differ
diff --git a/devices_channel/doc/device_controller class diagram - MULTI-INHERITANCE.png b/devices_channel/doc/device_controller class diagram - MULTI-INHERITANCE.png
deleted file mode 100644
index 3d794bc..0000000
Binary files a/devices_channel/doc/device_controller class diagram - MULTI-INHERITANCE.png and /dev/null differ
diff --git a/devices_channel/doc/device_controller_class_diagram.png b/devices_channel/doc/device_controller_class_diagram.png
new file mode 100644
index 0000000..55aeaa7
Binary files /dev/null and b/devices_channel/doc/device_controller_class_diagram.png differ
diff --git a/devices_channel/doc/device_controller_class_diagram.txt b/devices_channel/doc/device_controller_class_diagram.txt
new file mode 100644
index 0000000..7fc68ce
--- /dev/null
+++ b/devices_channel/doc/device_controller_class_diagram.txt
@@ -0,0 +1,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)**__
+(ClientChannel is a COMPONENT of DeviceController)
+
+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
diff --git a/devices_channel/doc/device_controller_class_diagram_multiinheritance.png b/devices_channel/doc/device_controller_class_diagram_multiinheritance.png
new file mode 100644
index 0000000..bc3d208
Binary files /dev/null and b/devices_channel/doc/device_controller_class_diagram_multiinheritance.png differ
diff --git a/devices_channel/doc/device_controller_class_diagram_multiinheritance.txt b/devices_channel/doc/device_controller_class_diagram_multiinheritance.txt
new file mode 100644
index 0000000..076221b
--- /dev/null
+++ b/devices_channel/doc/device_controller_class_diagram_multiinheritance.txt
@@ -0,0 +1,34 @@
+@startuml
+
+title
+__**DeviceController and ClientChannel classes diagram (2 - multi-inheritance)**__
+(TelescopeGemini heritates both from DeviceController and ClientChannel)
+
+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
diff --git a/devices_channel/doc/generate_diagrams.sh b/devices_channel/doc/generate_diagrams.sh
new file mode 100755
index 0000000..a9bd5b5
--- /dev/null
+++ b/devices_channel/doc/generate_diagrams.sh
@@ -0,0 +1 @@
+python3 -m plantuml device_controller_class_diagram*.txt
diff --git a/devices_channel/src_device/client/device_controller_abstract.py b/devices_channel/src_device/client/device_controller_abstract.py
index 0293466..30cbea1 100755
--- a/devices_channel/src_device/client/device_controller_abstract.py
+++ b/devices_channel/src_device/client/device_controller_abstract.py
@@ -8,11 +8,25 @@ To be used as a base class (interface) for any concrete socket client telescope
'''
UML class Diagram : can be displayed with PlantUML (plugin for Eclipse or for PyCharm)
-How to install PlantUML : https://projects.irap.omp.eu/projects/pyros/wiki/Project_Development#PlantUML
-PlantUML class diagrams : http://plantuml.com/class-diagram
-PlantUML sequence diagrams : http://plantuml.com/sequence-diagram
+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
@@ -21,12 +35,13 @@ __**DeviceController and ClientChannel classes diagram (1 - composition)**__
end title
+
/' Channels '/
ClientChannel <|-- ClientSerial
ClientChannel <|-- ClientSocket
ClientChannel <|-- ClientUSB
-class ClientChannel {
+abstract class ClientChannel {
my_channel # socket or serial or usb...
{abstract} connect_to_server()
{abstract} read()
@@ -54,7 +69,7 @@ DeviceControllerAbstract <|-- TelescopeControllerAbstract
DeviceControllerAbstract <|-- PLCControllerAbstract
DeviceControllerAbstract <|-- CameraControllerAbstract
-class DeviceControllerAbstract {
+abstract class DeviceControllerAbstract {
my_channel # socket or serial or usb...
_cmd = {start, stop, park...}
class GenericResult
@@ -80,7 +95,7 @@ class DeviceControllerAbstract {
{abstract} do_init()
}
-class TelescopeControllerAbstract {
+abstract class TelescopeControllerAbstract {
_cmd = {get_ra, get_dec, do_goto...}
----
**Abstract GET/SET/DO commands :**
@@ -100,9 +115,13 @@ class TelescopeControllerAbstract {
do_move()
}
-PLCControllerAbstract : _cmd = {get_status, set_light...}
+abstract class PLCControllerAbstract {
+ _cmd = {get_status, set_light...}
+}
-CameraControllerAbstract : _cmd = {set_pose, do_start_acq...}
+abstract class CameraControllerAbstract {
+ _cmd = {set_pose, do_start_acq...}
+}
/' Concrete Devices Controllers '/
--
libgit2 0.21.2