From 8e12b3f3fa6f00aa71248cd6dc82117a283615eb Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Fri, 14 Dec 2018 02:44:53 +0100 Subject: [PATCH] still the biggest refactor --- .../src/output/DriverBoardPinController.h | 6 ++- .../src/output/OutputDriverFactory.cpp | 51 +++++++++---------- .../src/output/OutputDriverFactory.h | 17 +++---- .../src/output/OutputPinController.cpp | 34 +++++++++++++ .../output/{impl => }/OutputPinController.h | 14 +---- .../src/output/SoundBoardPinController.h | 10 ++-- .../src/output/impl/DisplayController.cpp | 4 +- .../src/output/impl/DisplayController.h | 2 +- .../output/impl/DriverBoardPinController.h | 4 +- .../src/output/impl/OutputDriver.cpp | 4 +- FlippR-Driver/src/output/impl/OutputDriver.h | 5 +- .../src/output/impl/OutputPinController.cpp | 51 ------------------- .../output/impl/SoundBoardPinController.cpp | 10 ++-- .../src/output/impl/SoundBoardPinController.h | 14 ++--- .../src/output/items/DriverBoardItem.h | 9 +++- FlippR-Driver/src/output/items/Item.cpp | 6 +-- FlippR-Driver/src/output/items/Item.h | 6 +-- 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 | 10 ++-- FlippR-Driver/src/output/items/Sound.h | 7 ++- 23 files changed, 137 insertions(+), 147 deletions(-) create mode 100644 FlippR-Driver/src/output/OutputPinController.cpp rename FlippR-Driver/src/output/{impl => }/OutputPinController.h (67%) delete mode 100644 FlippR-Driver/src/output/impl/OutputPinController.cpp diff --git a/FlippR-Driver/src/output/DriverBoardPinController.h b/FlippR-Driver/src/output/DriverBoardPinController.h index 2626db6..8e108a1 100644 --- a/FlippR-Driver/src/output/DriverBoardPinController.h +++ b/FlippR-Driver/src/output/DriverBoardPinController.h @@ -5,13 +5,17 @@ #ifndef FLIPPR_DRIVER_DRIVERBOARDPINCONTROLLER_H #define FLIPPR_DRIVER_DRIVERBOARDPINCONTROLLER_H -#include namespace flippR_driver { namespace output { +namespace items +{ + class DriverBoardItem; +} + class DriverBoardPinController { public: diff --git a/FlippR-Driver/src/output/OutputDriverFactory.cpp b/FlippR-Driver/src/output/OutputDriverFactory.cpp index 0b9f2b4..5b50531 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.cpp +++ b/FlippR-Driver/src/output/OutputDriverFactory.cpp @@ -2,15 +2,18 @@ // Created by rhetenor on 04.10.18. // +#include +#include #include "OutputDriverFactory.h" #include "utility/LoggerFactory.h" #include "output/impl/OutputDriver.h" -#include "output/impl/OutputPinController.h" +#include "output/impl/DisplayController.h" + +#include "output/impl/DisplayBoardPinController.h" #include "output/impl/DriverBoardPinController.h" #include "output/impl/SoundBoardPinController.h" -#include "DisplayBoardPinController.h" namespace flippR_driver { @@ -28,37 +31,30 @@ std::shared_ptr get_OutputDriver(std::istream &output_pin_config, { utility::LoggerFactory::CreateOutputLogger(); - std::shared_ptr output_pin_mutex(); + std::shared_ptr output_pin_mutex; json output_config; output_pin_config >> output_config; json driver_board_config = output_config.at("driver_board"); std::shared_ptr driver_board_pin_controller(new impl::DriverBoardPinController(parse_pins_driver_board(driver_board_config), output_pin_mutex)); + auto solenoids = create_solenoids(solenoid_config, driver_board_pin_controller); + auto lamps = create_lamps(lamp_config, driver_board_pin_controller); json sound_board_config = output_config.at("sound_board"); std::shared_ptr sound_board_pin_controller(new impl::SoundBoardPinController(parse_pins_sound_board(sound_board_config), output_pin_mutex)); + auto sounds = create_sounds(sound_config, sound_board_pin_controller); json display_board_config = output_config.at("display_board"); - std::shared_ptr display_board_pin_controller(new impl::DisplayBoardPinController(parse_pins_display_board(display_board_config))); + std::unique_ptr display_board_pin_controller(new impl::DisplayBoardPinController(parse_pins_display_board(display_board_config))); + auto displays = create_displays(display_config); - auto solenoids = create_solenoids(solenoid_config, output_gpio_interface); - auto lamps = create_lamps(lamp_config, output_gpio_interface); - auto sounds = create_sounds(sound_config, output_gpio_interface); + // todo + std::vector> displays_vec; + boost::copy(displays | boost::adaptors::map_values, std::back_inserter(displays_vec)); + std::unique_ptr display_controller(new impl::DisplayController(displays_vec, std::move(display_board_pin_controller))); - auto displays = create_displays(display_config, output_gpio_interface); - - return std::make_shared(solenoids, lamps, sounds, displays); -} - -OutputPinController* create_OutputGPIOInterface(std::istream &output_pin_config) -{ - json output_config; - output_pin_config >> output_config; - - return new OutputGPIOInterface(parse_pins_driver_board(output_config.at("driver_board")), - parse_pins_sound(output_config.at("sound_board")), - parse_pins_sound(output_config.at("display_board"))); + return std::make_shared(display_controller, solenoids, lamps, sounds, displays); } std::map parse_pins_driver_board(json &driver_board_config) @@ -124,12 +120,15 @@ std::map parse_pins_display(json &display_board_config) try { pins_display["run"] = display_board_config.at("run"); + //todo } catch(json::exception &e) { CLOG(ERROR, OUTPUT_LOGGER) << "Output pin config file at display_board corrupted: " << e.what(); exit(EXIT_FAILURE); } + + return pins_display; } std::map> create_solenoids(std::istream &solenoid_config, std::shared_ptr output_gpio_interface) @@ -197,7 +196,7 @@ std::chrono::milliseconds get_deactivation_time(nlohmann::json &json) } } -std::shared_ptr create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr output_gpio_interface, std::chrono::milliseconds deactivation_time) +std::shared_ptr create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr &pin_controller, std::chrono::milliseconds deactivation_time) { try { @@ -209,7 +208,7 @@ std::shared_ptr create_solenoid(nlohmann::json &solenoid_json, deactivation_time = get_deactivation_time(solenoid_json); } - return std::make_shared(output_gpio_interface, address, name, deactivation_time); + return std::make_shared(pin_controller, address, name, deactivation_time); } catch(json::type_error &e) { @@ -218,13 +217,13 @@ std::shared_ptr create_solenoid(nlohmann::json &solenoid_json, } } -std::shared_ptr create_lamp(nlohmann::json &lamp_json, std::shared_ptr output_gpio_interface) +std::shared_ptr create_lamp(nlohmann::json &lamp_json, std::shared_ptr &pin_controller) { try { std::string name = lamp_json.at("name"); auto address = lamp_json.at("address").get(); - return std::make_shared(output_gpio_interface, address, name); + return std::make_shared(pin_controller, address, name); } catch(json::type_error &e) { @@ -233,14 +232,14 @@ std::shared_ptr create_lamp(nlohmann::json &lamp_json, std::shared_ } } -std::shared_ptr create_sound(nlohmann::json &sound_json, std::shared_ptr &output_gpio_interface, std::chrono::milliseconds deactivation_time) +std::shared_ptr create_sound(nlohmann::json &sound_json, std::shared_ptr &pin_controller, std::chrono::milliseconds deactivation_time) { try { auto id = sound_json.at("id").get(); std::string description = sound_json.at("description"); auto address = sound_json.at("address").get(); - return std::make_shared(output_gpio_interface, address, description, deactivation_time, id); + return std::make_shared(pin_controller, address, description, deactivation_time, id); } catch(json::type_error &e) { diff --git a/FlippR-Driver/src/output/OutputDriverFactory.h b/FlippR-Driver/src/output/OutputDriverFactory.h index 583e573..1dba88e 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.h +++ b/FlippR-Driver/src/output/OutputDriverFactory.h @@ -9,7 +9,7 @@ #include "output/items/Solenoid.h" #include "output/items/Lamp.h" #include "output/items/Sound.h" -#include "OutputPinController.h" +#include "output/DisplayBoardPinController.h" #include "json/json.hpp" @@ -25,20 +25,19 @@ namespace OutputDriverFactory namespace { - std::map> create_solenoids(std::istream &solenoid_config, std::shared_ptr output_gpio_interface); - std::shared_ptr create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr output_gpio_interface, std::chrono::milliseconds deactivation_time); + std::map> create_solenoids(std::istream &solenoid_config, std::shared_ptr &pin_controller); + std::shared_ptr create_solenoid(nlohmann::json &solenoid_json, std::shared_ptr pin_controller, std::chrono::milliseconds deactivation_time); - std::map> create_lamps(std::istream &lamp_config, std::shared_ptr output_gpio_interface); - std::shared_ptr create_lamp(nlohmann::json &lamp_json, std::shared_ptr output_gpio_interface); + std::map> create_lamps(std::istream &lamp_config, std::shared_ptr &pin_controller); + std::shared_ptr create_lamp(nlohmann::json &lamp_json, std::shared_ptr pin_controller); - std::map> create_sounds(std::istream &sound_config, std::shared_ptr output_gpio_interface); - std::shared_ptr create_sound(nlohmann::json &sound_json, std::shared_ptr output_gpio_interface, std::chrono::milliseconds deactivation_time); + std::map> create_sounds(std::istream &sound_config, std::shared_ptr &pin_controller); + std::shared_ptr create_sound(nlohmann::json &sound_json, std::shared_ptr pin_controller, std::chrono::milliseconds deactivation_time); std::chrono::milliseconds get_deactivation_time(nlohmann::json &json); - std::map> create_displays(std::istream &display_config, std::shared_ptr output_gpio_interface); + std::map> create_displays(std::istream &display_config); - OutputPinController* create_OutputGPIOInterface(std::istream &output_pin_config); std::map parse_pins_driver_board(nlohmann::json &driver_board_config); std::map parse_pins_sound_board(nlohmann::json &sound_board_config); std::map parse_pins_display_board(nlohmann::json &display_board_config); diff --git a/FlippR-Driver/src/output/OutputPinController.cpp b/FlippR-Driver/src/output/OutputPinController.cpp new file mode 100644 index 0000000..8f9daf6 --- /dev/null +++ b/FlippR-Driver/src/output/OutputPinController.cpp @@ -0,0 +1,34 @@ +/* + * OutputGPIOInterface.h + * + * Created on: May 31, 2018 + * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert + */ + +#include "OutputPinController.h" + +#include "utility/config.h" + +#include + +namespace flippR_driver +{ +namespace output +{ + +void OutputPinController::initialize_i2c_address(const uint8_t &i2c_address, const uint8_t &pin_base) +{ + mcp23017Setup(pin_base, i2c_address); +} + +void OutputPinController::initialize_pins_output(const uint8_t &pin_base) +{ + // Since this are all outputs we just initialize everything as output conveniently + for(int i = 0; i < 16; i++) + { + PinController::initialize_output_pin(pin_base + i); + } +} + +} +} diff --git a/FlippR-Driver/src/output/impl/OutputPinController.h b/FlippR-Driver/src/output/OutputPinController.h similarity index 67% rename from FlippR-Driver/src/output/impl/OutputPinController.h rename to FlippR-Driver/src/output/OutputPinController.h index c5669cd..4f12359 100644 --- a/FlippR-Driver/src/output/impl/OutputPinController.h +++ b/FlippR-Driver/src/output/OutputPinController.h @@ -8,34 +8,24 @@ #ifndef SRC_UTILITIES_OUTPUTGPIOINTERFACE_H_ #define SRC_UTILITIES_OUTPUTGPIOINTERFACE_H_ -#include "output/OutputPinController.h" #include "PinController.h" -#include -#include -#include - namespace flippR_driver { namespace output { -namespace impl -{ -class OutputGPIOInterface : public PinController +class OutputPinController : public PinController { public: - OutputGPIOInterface(); - - ~OutputGPIOInterface() override = default; + virtual ~OutputPinController() = default; protected: static void initialize_i2c_address(const uint8_t &i2c_address, const uint8_t &pin_base); static void initialize_pins_output(const uint8_t &pin_base); }; -} } } diff --git a/FlippR-Driver/src/output/SoundBoardPinController.h b/FlippR-Driver/src/output/SoundBoardPinController.h index e8f62d9..438a227 100644 --- a/FlippR-Driver/src/output/SoundBoardPinController.h +++ b/FlippR-Driver/src/output/SoundBoardPinController.h @@ -2,16 +2,20 @@ // Created by rhetenor on 14.12.18. // -#ifndef FLIPPR_DRIVER_SOUNDPINCONTROLLER_H -#define FLIPPR_DRIVER_SOUNDPINCONTROLLER_H +#ifndef FLIPPR_DRIVER_OUTPUT_SOUNDBOARDPINCONTROLLER_H +#define FLIPPR_DRIVER_OUTPUT_SOUNDBOARDPINCONTROLLER_H -#include +#include "output/items/Sound.h" namespace flippR_driver { namespace output { +namespace items +{ + class Sound; +} class SoundBoardPinController { public: diff --git a/FlippR-Driver/src/output/impl/DisplayController.cpp b/FlippR-Driver/src/output/impl/DisplayController.cpp index 142077f..fd14ceb 100644 --- a/FlippR-Driver/src/output/impl/DisplayController.cpp +++ b/FlippR-Driver/src/output/impl/DisplayController.cpp @@ -16,8 +16,8 @@ namespace output namespace impl { -DisplayController::DisplayController(std::vector> displays, std::shared_ptr output_gpio_interface) -: displays(std::move(displays)), pin_controller(std::move(output_gpio_interface)), is_running(true) +DisplayController::DisplayController(std::vector> displays, std::unique_ptr pin_controller) +: displays(std::move(displays)), pin_controller(std::move(pin_controller)), is_running(true) { this->display_cycle_thread = std::thread(&DisplayController::cycle_displays, this); diff --git a/FlippR-Driver/src/output/impl/DisplayController.h b/FlippR-Driver/src/output/impl/DisplayController.h index 5a5109e..cfad46c 100644 --- a/FlippR-Driver/src/output/impl/DisplayController.h +++ b/FlippR-Driver/src/output/impl/DisplayController.h @@ -26,7 +26,7 @@ namespace impl class DisplayController : public output::DisplayController { public: - explicit DisplayController(std::vector> displays, std::shared_ptr output_gpio_interface); + explicit DisplayController(std::vector> displays, std::unique_ptr pin_controller); ~DisplayController() override; private: diff --git a/FlippR-Driver/src/output/impl/DriverBoardPinController.h b/FlippR-Driver/src/output/impl/DriverBoardPinController.h index 7d32ad6..e02ce3e 100644 --- a/FlippR-Driver/src/output/impl/DriverBoardPinController.h +++ b/FlippR-Driver/src/output/impl/DriverBoardPinController.h @@ -7,7 +7,9 @@ #include "output/DriverBoardPinController.h" -#include "OutputPinController.h" +#include "output/OutputPinController.h" + +#include #include #include diff --git a/FlippR-Driver/src/output/impl/OutputDriver.cpp b/FlippR-Driver/src/output/impl/OutputDriver.cpp index b7a18fe..dbc137c 100644 --- a/FlippR-Driver/src/output/impl/OutputDriver.cpp +++ b/FlippR-Driver/src/output/impl/OutputDriver.cpp @@ -19,8 +19,8 @@ namespace impl using namespace items; -OutputDriver::OutputDriver(std::map> solenoids, std::map> lamps, std::map> sounds, std::map> displays) -: solenoids(std::move(solenoids)), lamps(std::move(lamps)), sounds(std::move(sounds)), displays(std::move(displays)) +OutputDriver::OutputDriver(std::unique_ptr display_controller, std::map> solenoids, std::map> lamps, std::map> sounds, std::map> displays) +: display_controller(std::move(display_controller)), solenoids(std::move(solenoids)), lamps(std::move(lamps)), sounds(std::move(sounds)), displays(std::move(displays)) {} std::vector> OutputDriver::get_sounds() diff --git a/FlippR-Driver/src/output/impl/OutputDriver.h b/FlippR-Driver/src/output/impl/OutputDriver.h index fca6bdf..2fdac6a 100644 --- a/FlippR-Driver/src/output/impl/OutputDriver.h +++ b/FlippR-Driver/src/output/impl/OutputDriver.h @@ -9,6 +9,7 @@ #define _SRC_OUTPUT_OUTPUTDRIVER_H_ #include "output/OutputDriver.h" +#include "output/DisplayController.h" #include @@ -22,7 +23,7 @@ namespace impl class OutputDriver : public output::OutputDriver { public: - OutputDriver(std::map> solenoids, std::map> lamps, std::map> sounds, std::map> displays); + OutputDriver(std::unique_ptr display_controller, std::map> solenoids, std::map> lamps, std::map> sounds, std::map> displays); ~OutputDriver() override = default; // todo what is flipper_relay ? @@ -37,6 +38,8 @@ public: boost::optional> get_display(char number) override; private: + std::unique_ptr display_controller; + const std::map> lamps; const std::map> solenoids; const std::map> sounds; diff --git a/FlippR-Driver/src/output/impl/OutputPinController.cpp b/FlippR-Driver/src/output/impl/OutputPinController.cpp deleted file mode 100644 index 5a2ff45..0000000 --- a/FlippR-Driver/src/output/impl/OutputPinController.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * OutputGPIOInterface.h - * - * Created on: May 31, 2018 - * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert - */ - -#include "OutputPinController.h" - -#include "utility/config.h" - -namespace flippR_driver -{ -namespace output -{ -namespace impl -{ - -using namespace output::items; - -OutputGPIOInterface::OutputGPIOInterface(std::map pins_driver_board, std::map pins_sound, std::map pins_display) - : pins_driver_board(std::move(pins_driver_board)), pins_sound(std::move(pins_sound)), pins_display(std::move(pins_display)) -{ - initialize_i2c_addresses(); - - initialize_pins(); -} - -void OutputGPIOInterface::initialize_i2c_address(const uint8_t &i2c_address, const uint8_t &pin_base) -{ - mcp23017Setup(pin_base, i2c_address); -} - -void OutputGPIOInterface::initialize_pins_output(const uint8_t &pin_base) -{ - // Since this are all outputs we just initialize everything as output conveniently - for(int i = 0; i < 16; i++) - { - PinController::initialize_output_pin(pin_base + i); - } -} - - - - - - - - -} -} diff --git a/FlippR-Driver/src/output/impl/SoundBoardPinController.cpp b/FlippR-Driver/src/output/impl/SoundBoardPinController.cpp index 57859d7..9056a02 100644 --- a/FlippR-Driver/src/output/impl/SoundBoardPinController.cpp +++ b/FlippR-Driver/src/output/impl/SoundBoardPinController.cpp @@ -17,7 +17,7 @@ SoundBoardPinController::SoundBoardPinController(std::map } -void SoundBoardPinController::activate(items::Sound &sound) +void SoundBoardPinController::activate(const items::Sound &sound) { std::lock_guard guard(*output_item_mutex); @@ -26,7 +26,7 @@ void SoundBoardPinController::activate(items::Sound &sound) fire_sound(true); } -void SoundBoardPinController::deactivate(items::Sound &sound) +void SoundBoardPinController::deactivate(const items::Sound &sound) { std::lock_guard guard(*output_item_mutex); @@ -36,7 +36,7 @@ void SoundBoardPinController::deactivate(items::Sound &sound) } -void SoundBoardPinController::write_sound_address(uint8_t address) +void SoundBoardPinController::write_sound_address(const uint8_t address) { write_pin(pins_sound.at("A"), address & 0b0000001u); write_pin(pins_sound.at("B"), address & 0b0000010u); @@ -47,12 +47,12 @@ void SoundBoardPinController::write_sound_address(uint8_t address) write_pin(pins_sound.at("G"), address & 0b1000000u); } -void SoundBoardPinController::fire_sound(bool fire) +void SoundBoardPinController::fire_sound(const bool fire) { PinController::write_pin(pins_sound.at("fire"), fire); } -void SoundBoardPinController::write_pin(uint8_t pin, bool value) +void SoundBoardPinController::write_pin(const uint8_t pin, const bool value) { PinController::write_pin(pins_sound.at("pin_base") + pin, value); } diff --git a/FlippR-Driver/src/output/impl/SoundBoardPinController.h b/FlippR-Driver/src/output/impl/SoundBoardPinController.h index 6275d4d..079b96c 100644 --- a/FlippR-Driver/src/output/impl/SoundBoardPinController.h +++ b/FlippR-Driver/src/output/impl/SoundBoardPinController.h @@ -2,12 +2,14 @@ // Created by rhetenor on 14.12.18. // -#ifndef FLIPPR_DRIVER_SOUNDBOARDPINCONTROLLER_H -#define FLIPPR_DRIVER_SOUNDBOARDPINCONTROLLER_H +#ifndef FLIPPR_DRIVER_OUTPUT_IMPL_SOUNDBOARDPINCONTROLLER_H +#define FLIPPR_DRIVER_OUTPUT_IMPL_SOUNDBOARDPINCONTROLLER_H #include "output/SoundBoardPinController.h" -#include "OutputPinController.h" +#include "output/OutputPinController.h" + +#include #include namespace flippR_driver @@ -27,10 +29,10 @@ public: void deactivate(const items::Sound &sound) override; private: - void write_sound_address(uint8_t address); - void fire_sound(bool fire); + void write_sound_address(const uint8_t address); + void fire_sound(const bool fire); - void write_pin(uint8_t pin, bool value); + void write_pin(const uint8_t pin, const bool value); private: std::shared_ptr output_item_mutex; diff --git a/FlippR-Driver/src/output/items/DriverBoardItem.h b/FlippR-Driver/src/output/items/DriverBoardItem.h index ff16abe..8cfc7f8 100644 --- a/FlippR-Driver/src/output/items/DriverBoardItem.h +++ b/FlippR-Driver/src/output/items/DriverBoardItem.h @@ -7,6 +7,8 @@ #include "output/items/Item.h" +#include + #include namespace flippR_driver @@ -19,10 +21,13 @@ namespace items class DriverBoardItem : public Item { public: - DriverBoardItem(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) : - Item(std::move(output_gpio_interface), address, std::move(name)) {} + DriverBoardItem(std::shared_ptr pin_controller, uint8_t address, std::string name) : + pin_controller(std::move(pin_controller)), Item(address, std::move(name)) {} ~DriverBoardItem() override = default; + +protected: + const std::shared_ptr pin_controller; }; } diff --git a/FlippR-Driver/src/output/items/Item.cpp b/FlippR-Driver/src/output/items/Item.cpp index b1fbaf5..5b463e9 100644 --- a/FlippR-Driver/src/output/items/Item.cpp +++ b/FlippR-Driver/src/output/items/Item.cpp @@ -12,10 +12,8 @@ namespace output namespace items { -Item::Item(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) : - address(address), - name(std::move(name)), - gpio_interface(std::move(output_gpio_interface)) +Item::Item(uint8_t address, std::string name) : + address(address), name(std::move(name)) {} uint8_t Item::get_address() diff --git a/FlippR-Driver/src/output/items/Item.h b/FlippR-Driver/src/output/items/Item.h index 072c0a4..d25cdf0 100644 --- a/FlippR-Driver/src/output/items/Item.h +++ b/FlippR-Driver/src/output/items/Item.h @@ -18,15 +18,13 @@ namespace flippR_driver namespace output { -class OutputPinController; - namespace items { class Item : public IItem { public: - Item(std::shared_ptr output_gpio_interface, uint8_t address, std::string name); + Item(uint8_t address, std::string name); ~Item() override = default; uint8_t get_address() override; @@ -36,8 +34,6 @@ protected: const uint8_t address; const std::string name; - const std::shared_ptr gpio_interface; - }; } diff --git a/FlippR-Driver/src/output/items/Lamp.cpp b/FlippR-Driver/src/output/items/Lamp.cpp index f9a9ca3..51b60b8 100644 --- a/FlippR-Driver/src/output/items/Lamp.cpp +++ b/FlippR-Driver/src/output/items/Lamp.cpp @@ -15,18 +15,18 @@ namespace output namespace items { -Lamp::Lamp(std::shared_ptr output_gpio_interface, uint8_t address, std::string name) : -DriverBoardItem(std::move(output_gpio_interface), address, std::move(name)), activated(false) +Lamp::Lamp(std::shared_ptr pin_controller, uint8_t address, std::string name) : +DriverBoardItem(std::move(pin_controller), address, std::move(name)), activated(false) {} void Lamp::activate() { - gpio_interface->activate(this); + pin_controller->activate(this); } void Lamp::deactivate() { - gpio_interface->deactivate(this); + pin_controller->deactivate(this); } } diff --git a/FlippR-Driver/src/output/items/Lamp.h b/FlippR-Driver/src/output/items/Lamp.h index 5eae076..1be67ac 100644 --- a/FlippR-Driver/src/output/items/Lamp.h +++ b/FlippR-Driver/src/output/items/Lamp.h @@ -21,7 +21,7 @@ namespace items class Lamp : public DriverBoardItem, public ILamp { public: - Lamp(std::shared_ptr output_gpio_interface, uint8_t address, std::string name); + Lamp(std::shared_ptr pin_controller, uint8_t address, std::string name); ~Lamp() override = default; void activate() override; diff --git a/FlippR-Driver/src/output/items/Solenoid.cpp b/FlippR-Driver/src/output/items/Solenoid.cpp index 0e60ed3..a30103e 100644 --- a/FlippR-Driver/src/output/items/Solenoid.cpp +++ b/FlippR-Driver/src/output/items/Solenoid.cpp @@ -16,17 +16,17 @@ namespace output namespace items { -Solenoid::Solenoid(std::shared_ptr output_gpio_interface, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time): - DriverBoardItem(std::move(output_gpio_interface), address, std::move(name)), deactivation_time(deactivation_time) +Solenoid::Solenoid(std::shared_ptr pin_controller, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time): + DriverBoardItem(std::move(pin_controller), address, std::move(name)), deactivation_time(deactivation_time) {} void Solenoid::triggerTask() { - gpio_interface->activate(this); + pin_controller->activate(this); std::this_thread::sleep_for(deactivation_time); - gpio_interface->deactivate(this); + pin_controller->deactivate(this); } void Solenoid::trigger() diff --git a/FlippR-Driver/src/output/items/Solenoid.h b/FlippR-Driver/src/output/items/Solenoid.h index ad51702..f977057 100644 --- a/FlippR-Driver/src/output/items/Solenoid.h +++ b/FlippR-Driver/src/output/items/Solenoid.h @@ -24,7 +24,7 @@ namespace items class Solenoid : public DriverBoardItem, public ISolenoid { public: - Solenoid(std::shared_ptr output_gpio_interface, u_int8_t address, std::string name, std::chrono::milliseconds deactivation_time); + Solenoid(std::shared_ptr pin_controller, u_int8_t address, std::string name, std::chrono::milliseconds deactivation_time); ~Solenoid() override = default; void trigger() override; diff --git a/FlippR-Driver/src/output/items/Sound.cpp b/FlippR-Driver/src/output/items/Sound.cpp index 118e340..ab431d6 100644 --- a/FlippR-Driver/src/output/items/Sound.cpp +++ b/FlippR-Driver/src/output/items/Sound.cpp @@ -7,7 +7,7 @@ #include "Sound.h" -#include "output/OutputPinController.h" +#include namespace flippR_driver { @@ -16,8 +16,8 @@ namespace output namespace items { -Sound::Sound(std::shared_ptr output_gpio_interface, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time, u_int id) : - Item(std::move(output_gpio_interface), address, std::move(name)), deactivation_time(deactivation_time), id(id) +Sound::Sound(std::shared_ptr pin_controller, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time, u_int id) : + pin_controller(std::move(pin_controller)), Item(address, std::move(name)), deactivation_time(deactivation_time), id(id) {} void Sound::play() @@ -27,11 +27,11 @@ void Sound::play() void Sound::playTask() { - gpio_interface->activate(this); + pin_controller->activate(this); std::this_thread::sleep_for(deactivation_time); - gpio_interface->deactivate(this); + pin_controller->deactivate(this); } } diff --git a/FlippR-Driver/src/output/items/Sound.h b/FlippR-Driver/src/output/items/Sound.h index 4954669..0686f01 100644 --- a/FlippR-Driver/src/output/items/Sound.h +++ b/FlippR-Driver/src/output/items/Sound.h @@ -20,6 +20,9 @@ namespace flippR_driver { namespace output { + +class SoundBoardPinController; + namespace items { @@ -29,12 +32,14 @@ public: u_int id; public: - Sound(std::shared_ptr output_gpio_interface, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time, u_int id); + Sound(std::shared_ptr pin_controller, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time, u_int id); ~Sound() override = default; void play() override; private: + const std::shared_ptr pin_controller; + std::chrono::milliseconds deactivation_time; std::future play_task;