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