From eba6bb402ae1ef4f3202b435ffa024cce1144ab0 Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Fri, 23 Nov 2018 17:04:55 +0100 Subject: [PATCH] works now? --- .../contrib/uml/output_umldiagramm.xcore | 14 +++++++------- .../src/output/DisplayController.cpp | 2 +- FlippR-Driver/src/output/items/IItem.h | 2 -- FlippR-Driver/src/output/items/Item.cpp | 6 +++--- FlippR-Driver/src/output/items/Item.h | 7 ++----- FlippR-Driver/src/output/items/Lamp.cpp | 8 ++++---- FlippR-Driver/src/output/items/Lamp.h | 2 +- FlippR-Driver/src/output/items/Solenoid.cpp | 8 ++++---- FlippR-Driver/src/output/items/Solenoid.h | 2 +- FlippR-Driver/src/output/items/Sound.cpp | 4 ++-- .../src/utility/IOutputGPIOInterface.h | 19 +++++++++++-------- .../src/utility/OutputGPIOInterface.h | 16 +++++++--------- 12 files changed, 43 insertions(+), 47 deletions(-) diff --git a/FlippR-Driver/contrib/uml/output_umldiagramm.xcore b/FlippR-Driver/contrib/uml/output_umldiagramm.xcore index c2179e3..2580658 100644 --- a/FlippR-Driver/contrib/uml/output_umldiagramm.xcore +++ b/FlippR-Driver/contrib/uml/output_umldiagramm.xcore @@ -23,10 +23,10 @@ namespace flippR_driver::output::items { namespace flippR_driver::output { class DisplayController { - +DisplayController(std::vector > displays, std::shared_ptr output_gpio_interface) + +DisplayController(std::vector > displays, std::shared_ptr gpio_interface) +~DisplayController() -is_running : bool - -output_gpio_interface : std::shared_ptr + -gpio_interface : std::shared_ptr -display_cycle_thread : std::thread -displays : std::vector > -cycle_displays() : void @@ -130,7 +130,7 @@ namespace flippR_driver::utility { namespace flippR_driver::output::items { class Lamp { - +Lamp(std::shared_ptr output_gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin, std::string name) + +Lamp(std::shared_ptr gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin, std::string name) +~Lamp() -activated : bool +is_activated() : bool @@ -180,9 +180,9 @@ namespace flippR_driver::utility { namespace flippR_driver::output::items { class Item { - +Item(std::shared_ptr output_gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin_address, std::string name) + +Item(std::shared_ptr gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin_address, std::string name) +~Item() - #output_gpio_interface : const std::shared_ptr + #gpio_interface : const std::shared_ptr +name : const std::string +address : const unsigned int +data_pin_address : const unsigned int @@ -195,7 +195,7 @@ namespace flippR_driver::output::items { namespace flippR_driver::output::items { class Solenoid { - +Solenoid(std::shared_ptr output_gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin, std::string name, std::chrono::milliseconds deactivation_time) + +Solenoid(std::shared_ptr gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin, std::string name, std::chrono::milliseconds deactivation_time) +~Solenoid() -deactivation_time : std::chrono::milliseconds -trigger_task : std::future @@ -207,7 +207,7 @@ namespace flippR_driver::output::items { namespace flippR_driver::output::items { class Sound { - +Sound(std::shared_ptr output_gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin, std::string name, std::chrono::milliseconds deactivation_time) + +Sound(std::shared_ptr gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin, std::string name, std::chrono::milliseconds deactivation_time) +~Sound() -deactivation_time : std::chrono::milliseconds -play_task : std::future diff --git a/FlippR-Driver/src/output/DisplayController.cpp b/FlippR-Driver/src/output/DisplayController.cpp index 2c1858e..071399d 100644 --- a/FlippR-Driver/src/output/DisplayController.cpp +++ b/FlippR-Driver/src/output/DisplayController.cpp @@ -36,7 +36,7 @@ void DisplayController::cycle_displays() { for(auto& display : this->displays) { - output_gpio_interface.write_display(display); + output_gpio_interface->write_display(display); } } } diff --git a/FlippR-Driver/src/output/items/IItem.h b/FlippR-Driver/src/output/items/IItem.h index 24875a0..32613ca 100644 --- a/FlippR-Driver/src/output/items/IItem.h +++ b/FlippR-Driver/src/output/items/IItem.h @@ -21,8 +21,6 @@ class IItem { public: virtual ~IItem(); - virtual void activate() = 0; - virtual void deactivate() = 0; virtual uint8_t get_address() = 0; }; diff --git a/FlippR-Driver/src/output/items/Item.cpp b/FlippR-Driver/src/output/items/Item.cpp index 6b414c2..6086bfa 100644 --- a/FlippR-Driver/src/output/items/Item.cpp +++ b/FlippR-Driver/src/output/items/Item.cpp @@ -14,7 +14,7 @@ namespace items Item::Item(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) : address(address), name(name), - output_gpio_interface(output_gpio_interface) + gpio_interface(output_gpio_interface) {} uint8_t Item::get_address() @@ -24,12 +24,12 @@ uint8_t Item::get_address() void Item::activate() { - output_gpio_interface->activate_output_item(this); + gpio_interface->activate(this); } void Item::deactivate() { - output_gpio_interface->deactivate_output_item(this); + gpio_interface->deactivate(this); } } diff --git a/FlippR-Driver/src/output/items/Item.h b/FlippR-Driver/src/output/items/Item.h index 6997297..05d0a1e 100644 --- a/FlippR-Driver/src/output/items/Item.h +++ b/FlippR-Driver/src/output/items/Item.h @@ -28,17 +28,14 @@ public: Item(std::shared_ptr output_gpio_interface, uint8_t address, std::string name); virtual ~Item(); - virtual uint8_t get_address(); + uint8_t get_address() override; protected: const uint8_t address; const std::string name; - const std::shared_ptr output_gpio_interface; + const std::shared_ptr gpio_interface; -protected: - virtual void activate(); - virtual void deactivate(); }; } diff --git a/FlippR-Driver/src/output/items/Lamp.cpp b/FlippR-Driver/src/output/items/Lamp.cpp index fb24f53..a91bd51 100644 --- a/FlippR-Driver/src/output/items/Lamp.cpp +++ b/FlippR-Driver/src/output/items/Lamp.cpp @@ -14,20 +14,20 @@ namespace output namespace items { -Lamp::Lamp(std::shared_ptr output_gpio_interface, unsigned int i2c_address, unsigned int address, unsigned int data_pin, std::string name) +Lamp::Lamp(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) : -Item(output_gpio_interface, address, i2c_address, data_pin, name), +Item(output_gpio_interface, address, name), activated(false) {} void Lamp::activate() { - Item::activate(); + gpio_interface->activate(this); } void Lamp::deactivate() { - Item::deactivate(); + gpio_interface->deactivate(this); } } diff --git a/FlippR-Driver/src/output/items/Lamp.h b/FlippR-Driver/src/output/items/Lamp.h index 8970509..cbd5a5d 100644 --- a/FlippR-Driver/src/output/items/Lamp.h +++ b/FlippR-Driver/src/output/items/Lamp.h @@ -22,7 +22,7 @@ namespace items class Lamp : public Item, ILamp, IDriverBoardItem { public: - Lamp(std::shared_ptr output_gpio_interface, uint8_t address, std::string name); + Lamp(std::shared_ptr output_gpio_interface, uint8_t address, std::string name); virtual ~Lamp() = default; void activate(); diff --git a/FlippR-Driver/src/output/items/Solenoid.cpp b/FlippR-Driver/src/output/items/Solenoid.cpp index db2506c..220f055 100644 --- a/FlippR-Driver/src/output/items/Solenoid.cpp +++ b/FlippR-Driver/src/output/items/Solenoid.cpp @@ -16,18 +16,18 @@ namespace output namespace items { -Solenoid::Solenoid(std::shared_ptr output_gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin, std::string name, std::chrono::milliseconds deactivation_time): - Item(output_gpio_interface, address, i2c_address, data_pin, name), +Solenoid::Solenoid(std::shared_ptr output_gpio_interface, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time): + Item(output_gpio_interface, address, name), deactivation_time(deactivation_time) {} void Solenoid::triggerTask() { - Item::activate(); + gpio_interface->activate(this); std::this_thread::sleep_for(deactivation_time); - Item::deactivate(); + gpio_interface->deactivate(this); } void Solenoid::trigger() diff --git a/FlippR-Driver/src/output/items/Solenoid.h b/FlippR-Driver/src/output/items/Solenoid.h index 2bde6cc..e796d6e 100644 --- a/FlippR-Driver/src/output/items/Solenoid.h +++ b/FlippR-Driver/src/output/items/Solenoid.h @@ -25,7 +25,7 @@ namespace items class Solenoid : public Item, ISolenoid, IDriverBoardItem { public: - Solenoid(std::shared_ptr output_gpio_interface, unsigned int address, unsigned int i2c_address, unsigned int data_pin, std::string name, std::chrono::milliseconds deactivation_time); + Solenoid(std::shared_ptr output_gpio_interface, u_int8_t address, std::string name, std::chrono::milliseconds deactivation_time); virtual ~Solenoid() = default; void trigger(); diff --git a/FlippR-Driver/src/output/items/Sound.cpp b/FlippR-Driver/src/output/items/Sound.cpp index f5cc097..a3f3f03 100644 --- a/FlippR-Driver/src/output/items/Sound.cpp +++ b/FlippR-Driver/src/output/items/Sound.cpp @@ -28,11 +28,11 @@ void Sound::play() void Sound::playTask() { - Item::activate(); + gpio_interface->activate(this); std::this_thread::sleep_for(deactivation_time); - Item::deactivate(); + gpio_interface->deactivate(this); } } diff --git a/FlippR-Driver/src/utility/IOutputGPIOInterface.h b/FlippR-Driver/src/utility/IOutputGPIOInterface.h index a04d196..24112e0 100644 --- a/FlippR-Driver/src/utility/IOutputGPIOInterface.h +++ b/FlippR-Driver/src/utility/IOutputGPIOInterface.h @@ -7,8 +7,9 @@ #include "IOutputGPIOInterface.h" -#include "output/items/IItem.h" - +#include "output/items/IDriverBoardItem.h" +#include "output/items/ISoundItem.h" +#include "output/items/IDisplay.h" #include namespace flippR_driver @@ -19,15 +20,17 @@ namespace utility class IOutputGPIOInterface { public: - //muss alles geschützt sein - void set_address(int i2c_address, int address); - void activate_pin(int i2c_address, int pin); - void deactivate_pin(int i2c_address, int pin); + virtual ~IOutputGPIOInterface(){}; - void activate_output_item(output::items::IItem *item); - void deactivate_output_item(output::items::IItem *item); + virtual void activate(output::items::IDriverBoardItem *driver_board_item) = 0; + virtual void activate(output::items::ISoundItem *sound) = 0; + virtual void deactivate(output::items::IDriverBoardItem *driver_board_item) = 0; + virtual void deactivate(output::items::ISoundItem *sound) = 0; + + virtual void write_display(output::items::IDisplay *display) = 0; //Display gpio interface! + }; } diff --git a/FlippR-Driver/src/utility/OutputGPIOInterface.h b/FlippR-Driver/src/utility/OutputGPIOInterface.h index 007f222..2c4b31a 100644 --- a/FlippR-Driver/src/utility/OutputGPIOInterface.h +++ b/FlippR-Driver/src/utility/OutputGPIOInterface.h @@ -8,12 +8,10 @@ #ifndef SRC_UTILITIES_OUTPUTGPIOINTERFACE_H_ #define SRC_UTILITIES_OUTPUTGPIOINTERFACE_H_ +#include "IOutputGPIOInterface.h" #include "GPIOInterface.h" #include "output/items/IItem.h" -#include "output/items/IDriverBoardItem.h" -#include "output/items/ISoundItem.h" -#include "output/items/IDisplay.h" #include "json/json.hpp" @@ -25,7 +23,7 @@ namespace flippR_driver namespace utility { -class OutputGPIOInterface : public GPIOInterface +class OutputGPIOInterface : public GPIOInterface, IOutputGPIOInterface { public: @@ -33,13 +31,13 @@ public: virtual ~OutputGPIOInterface() = default; - void activate(output::items::IDriverBoardItem *driver_board_item); - void activate(output::items::ISoundItem *sound); + virtual void activate(output::items::IDriverBoardItem *driver_board_item); + virtual void activate(output::items::ISoundItem *sound); - void deactivate(output::items::IDriverBoardItem *driver_board_item); - void deactivate(output::items::ISoundItem *sound); + virtual void deactivate(output::items::IDriverBoardItem *driver_board_item); + virtual void deactivate(output::items::ISoundItem *sound); - void write_display(output::items::IDisplay &display); + virtual void write_display(output::items::IDisplay *display); private: void parse_output_config(nlohmann::json &output_config);