diff --git a/FlippR-Driver/src/output/items/IDriverBoardItem.h b/FlippR-Driver/src/output/items/IDriverBoardItem.h index 5854a97..a3586e6 100644 --- a/FlippR-Driver/src/output/items/IDriverBoardItem.h +++ b/FlippR-Driver/src/output/items/IDriverBoardItem.h @@ -18,6 +18,7 @@ namespace items class IDriverBoardItem : public IItem { +public: virtual ~IDriverBoardItem(){}; }; diff --git a/FlippR-Driver/src/output/items/Item.cpp b/FlippR-Driver/src/output/items/Item.cpp index 6086bfa..d979089 100644 --- a/FlippR-Driver/src/output/items/Item.cpp +++ b/FlippR-Driver/src/output/items/Item.cpp @@ -22,16 +22,6 @@ uint8_t Item::get_address() return this->address; } -void Item::activate() -{ - gpio_interface->activate(this); -} - -void Item::deactivate() -{ - gpio_interface->deactivate(this); -} - } } } diff --git a/FlippR-Driver/src/output/items/Sound.h b/FlippR-Driver/src/output/items/Sound.h index fbb01ee..01ab9c5 100644 --- a/FlippR-Driver/src/output/items/Sound.h +++ b/FlippR-Driver/src/output/items/Sound.h @@ -39,6 +39,7 @@ public: private: std::chrono::milliseconds deactivation_time; + std::future play_task; private: virtual void playTask(); }; diff --git a/FlippR-Driver/src/utility/IOutputGPIOInterface.h b/FlippR-Driver/src/utility/IOutputGPIOInterface.h index 24112e0..00e5dd1 100644 --- a/FlippR-Driver/src/utility/IOutputGPIOInterface.h +++ b/FlippR-Driver/src/utility/IOutputGPIOInterface.h @@ -28,7 +28,7 @@ public: 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; + virtual void write_display(std::shared_ptr display) = 0; //Display gpio interface! }; diff --git a/FlippR-Driver/src/utility/OutputGPIOInterface.cpp b/FlippR-Driver/src/utility/OutputGPIOInterface.cpp index ce51302..3e5c90c 100644 --- a/FlippR-Driver/src/utility/OutputGPIOInterface.cpp +++ b/FlippR-Driver/src/utility/OutputGPIOInterface.cpp @@ -97,16 +97,11 @@ void OutputGPIOInterface::initialize_i2c_addresses() mcp23017Setup(pins_display["pin_base"], pins_display["i2c_address"]); } -void OutputGPIOInterface::write_display(IDisplay &display) -{ - -} - -void OutputGPIOInterface::activate(output::items::ISound *sound) +void OutputGPIOInterface::activate(output::items::ISoundItem *sound) { std::lock_guard guard(output_item_mutex); - write_sound_address(sound->); + write_sound_address(sound->get_address()); fire_sound(1); } @@ -129,11 +124,11 @@ void OutputGPIOInterface::deactivate(output::items::IDriverBoardItem *driver_boa write_data(0); } -void OutputGPIOInterface::deactivate(output::items::ISound *sound) +void OutputGPIOInterface::deactivate(output::items::ISoundItem *sound) { std::lock_guard guard(output_item_mutex); - write_sound_address(sound->address); + write_sound_address(sound->get_address()); fire_sound(0); } @@ -164,9 +159,9 @@ void OutputGPIOInterface::select_latch(uint8_t latch) if(latch > 8) latch -= 8; - write_pin(pins_driver_board["latch-select-A"], latch & 0b001) - write_pin(pins_driver_board["latch-select-B"], latch & 0b010) - write_pin(pins_driver_board["latch-select-C"], latch & 0b100) + write_pin(pins_driver_board["latch-select-A"], latch & 0b001); + write_pin(pins_driver_board["latch-select-B"], latch & 0b010); + write_pin(pins_driver_board["latch-select-C"], latch & 0b100); } @@ -177,20 +172,20 @@ void OutputGPIOInterface::write_data(bool data) void OutputGPIOInterface::select_pin(uint8_t pin) { - write_pin(pins_driver_board["pin-select-A"], pin & 0b001) - write_pin(pins_driver_board["pin-select-B"], pin & 0b010) - write_pin(pins_driver_board["pin-select-C"], pin & 0b100) + write_pin(pins_driver_board["pin-select-A"], pin & 0b001); + write_pin(pins_driver_board["pin-select-B"], pin & 0b010); + write_pin(pins_driver_board["pin-select-C"], pin & 0b100); } void OutputGPIOInterface::write_sound_address(uint8_t address) { - write_pin(pins_sound["A"], address & 0b0000001) - write_pin(pins_sound["B"], address & 0b0000010) - write_pin(pins_sound["C"], address & 0b0000100) - write_pin(pins_sound["D"], address & 0b0001000) - write_pin(pins_sound["E"], address & 0b0010000) - write_pin(pins_sound["F"], address & 0b0100000) - write_pin(pins_sound["G"], address & 0b1000000) + write_pin(pins_sound["A"], address & 0b0000001); + write_pin(pins_sound["B"], address & 0b0000010); + write_pin(pins_sound["C"], address & 0b0000100); + write_pin(pins_sound["D"], address & 0b0001000); + write_pin(pins_sound["E"], address & 0b0010000); + write_pin(pins_sound["F"], address & 0b0100000); + write_pin(pins_sound["G"], address & 0b1000000); } void OutputGPIOInterface::fire_sound(bool fire) diff --git a/FlippR-Driver/src/utility/OutputGPIOInterface.h b/FlippR-Driver/src/utility/OutputGPIOInterface.h index 2c4b31a..18299b5 100644 --- a/FlippR-Driver/src/utility/OutputGPIOInterface.h +++ b/FlippR-Driver/src/utility/OutputGPIOInterface.h @@ -62,9 +62,9 @@ private: private: std::mutex output_item_mutex; - std::map pins_driver_board = {{"i2c_address", 0}, {"pin_base", 0}, {"data", 0}. {"CL", 0}, {"latch-select-A", "0"}, {"latch-select-B", "0"}, {"latch-select-C", 0}, {"mux1", 0}, {"mux2", 0}, {"pin-select-A", 0}, {"pin-select-B", 0}, {"pin-select-C", 0}}; - std::map pins_sound = {{"i2c_address", 0}, {"pin_base", 0}, {"fire", 0}. {"A", 0}, {"B", "0"}, {"C", "0"}, {"D", 0}, {"E", 0}, {"F", 0}, {"G", 0}}; - std::map pins_display = {{"i2c_address", 0}, {"pin_base", 0}, {"fire", 0}. {"A", 0}, {"B", "0"}, {"C", "0"}, {"D", 0}, {"E", 0}, {"F", 0}, {"G", 0}}; + std::map pins_driver_board {{"i2c_address", 0}, {"pin_base", 0}, {"data", 0}, {"CL", 0}, {"latch-select-A", "0"}, {"latch-select-B", "0"}, {"latch-select-C", 0}, {"mux1", 0}, {"mux2", 0}, {"pin-select-A", 0}, {"pin-select-B", 0}, {"pin-select-C", 0}}; + std::map pins_sound {{"i2c_address", 0}, {"pin_base", 0}, {"fire", 0}, {"A", 0}, {"B", "0"}, {"C", "0"}, {"D", 0}, {"E", 0}, {"F", 0}, {"G", 0}}; + std::map pins_display {{"i2c_address", 0}, {"pin_base", 0}, {"fire", 0}, {"A", 0}, {"B", "0"}, {"C", "0"}, {"D", 0}, {"E", 0}, {"F", 0}, {"G", 0}}; }; }