From 9e51cbb31f385f13e50702fbc315ff818565e292 Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Tue, 11 Dec 2018 14:48:19 +0100 Subject: [PATCH] added new uml --- FlippR-Driver/contrib/uml/uml.puml | 256 +++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 FlippR-Driver/contrib/uml/uml.puml diff --git a/FlippR-Driver/contrib/uml/uml.puml b/FlippR-Driver/contrib/uml/uml.puml new file mode 100644 index 0000000..e7e3e6b --- /dev/null +++ b/FlippR-Driver/contrib/uml/uml.puml @@ -0,0 +1,256 @@ +@startuml + + + + + +/' Objects '/ + +namespace flippR_driver::output::items { + class Display > { + +Display(int address, int id) + +~Display() + -address : int + +content : std::array + -fit_string(std::string& score_string) : std::string + +get_content() : std::vector + +write_content(std::array content) : void + +write_score(int score) : void + } +} + + +namespace flippR_driver::output { + class DisplayController { + +DisplayController(std::vector > displays, std::shared_ptr output_gpio_interface) + +~DisplayController() + -is_running : bool + -output_gpio_interface : std::shared_ptr + -display_cycle_thread : std::thread + -displays : std::vector > + -cycle_displays() : void + } +} + + +namespace flippR_driver::output::items { + class DriverBoardItem { + +DriverBoardItem(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) + +~DriverBoardItem() + } +} + + +namespace flippR_driver::output::items { + abstract class IDisplay { + +~IDisplay() + +{abstract} get_content() : std::vector + } +} + + +namespace flippR_driver::output { + class IDisplayController { + +~IDisplayController() + } +} + + +namespace flippR_driver::output::items { + abstract class IItem { + +~IItem() + +{abstract} get_name() : std::string + +{abstract} get_address() : uint8_t + } +} + + +namespace flippR_driver::output { + abstract class IOutputGPIOInterface { + +~IOutputGPIOInterface() + +{abstract} activate(items::DriverBoardItem* driver_board_item) : void + +{abstract} activate(items::SoundItem* sound) : void + +{abstract} deactivate(items::DriverBoardItem* driver_board_item) : void + +{abstract} deactivate(items::SoundItem* sound) : void + +{abstract} write_display(std::shared_ptr display) : void + } +} + + +namespace flippR_driver::output::items { + class Item { + +Item(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) + +~Item() + #gpio_interface : const std::shared_ptr + #name : const std::string + #address : const uint8_t + +get_name() : std::string + +get_address() : uint8_t + } +} + + +namespace flippR_driver::output::items { + class Lamp { + +Lamp(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) + +~Lamp() + -activated : bool + +is_activated() : bool + +activate() : void + +deactivate() : void + } +} + + +namespace flippR_driver::output { + class OutputDriver { + +OutputDriver(std::map > solenoids, std::map > lamps, std::map > sounds, std::map > displays) + +~OutputDriver() + +get_display(char number) : boost::optional > + +get_lamp(std::string name) : boost::optional > + +get_solenoid(std::string name) : boost::optional > + +get_sound(std::string name) : boost::optional > + -displays : const std::map > + -lamps : const std::map > + -solenoids : const std::map > + -sounds : const std::map > + +get_displays() : std::vector > + +get_lamps() : std::vector > + +get_solenoids() : std::vector > + +get_sounds() : std::vector > + } +} + + +namespace flippR_driver::output { + class OutputGPIOInterface { + +OutputGPIOInterface(std::map pins_driver_board, std::map pins_sound, std::map pins_display) + +~OutputGPIOInterface() + -pins_display : const std::map + -pins_driver_board : const std::map + -pins_sound : const std::map + -output_item_mutex : std::mutex + +activate(items::DriverBoardItem* driver_board_item) : void + +activate(items::SoundItem* sound) : void + +deactivate(items::DriverBoardItem* driver_board_item) : void + +deactivate(items::SoundItem* sound) : void + -fire_sound(bool fire) : void + -initialize_all_pins(uint8_t pin_base) : void + -initialize_i2c_addresses() : void + -initialize_pins() : void + -select_latch(uint8_t latch) : void + -select_mux(uint8_t latch) : void + -select_pin(uint8_t pin) : void + -write_data(bool data) : void + +write_display(std::shared_ptr display) : void + -write_driver_board_address(uint8_t address) : void + -write_sound_address(uint8_t address) : void + } +} + + +namespace flippR_driver::output::items { + class Solenoid { + +Solenoid(std::shared_ptr output_gpio_interface, u_int8_t address, std::string name, std::chrono::milliseconds deactivation_time) + +~Solenoid() + -deactivation_time : std::chrono::milliseconds + -trigger_task : std::future + +trigger() : void + -triggerTask() : void + } +} + + +namespace flippR_driver::output::items { + class Sound { + +Sound(std::shared_ptr output_gpio_interface, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time, u_int id) + +~Sound() + -deactivation_time : std::chrono::milliseconds + -play_task : std::future + +id : u_int + +play() : void + -playTask() : void + } +} + + +namespace flippR_driver::output::items { + class SoundItem { + +SoundItem(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) + +~SoundItem() + } +} + + + + + +/' Inheritance relationships '/ + +namespace flippR_driver::output::items { + DriverBoardItem <|-- Lamp +} + + +namespace flippR_driver::output::items { + DriverBoardItem <|-- Solenoid +} + + +namespace flippR_driver::output::items { + IDisplay <|-- Display +} + + +namespace flippR_driver::output { + IDisplayController <|-- DisplayController +} + + +namespace flippR_driver::output::items { + IItem <|-- Item +} + + +namespace flippR_driver::output { + IOutputGPIOInterface <|-- OutputGPIOInterface +} + + +namespace flippR_driver::output::items { + Item <|-- DriverBoardItem +} + + +namespace flippR_driver::output::items { + Item <|-- SoundItem +} + + +namespace flippR_driver::output::items { + SoundItem <|-- Sound +} + + + + + +/' Aggregation relationships '/ + +flippR_driver::output.DisplayController o-- flippR_driver::output::items.IDisplay + + +namespace flippR_driver::output { + DisplayController o-- IOutputGPIOInterface +} + + +flippR_driver::output::items.Item o-- flippR_driver::output.IOutputGPIOInterface + + +flippR_driver::output.OutputDriver o-- flippR_driver::output::items.IDisplay + + + + +@enduml