// // Created by rhetenor on 14.12.18. // #ifndef FLIPPR_DRIVER_OUTPUT_IMPL_SOUNDBOARDPINCONTROLLER_H #define FLIPPR_DRIVER_OUTPUT_IMPL_SOUNDBOARDPINCONTROLLER_H #include "output/SoundBoardPinController.h" #include "output/OutputPinController.h" #include #include namespace flippR_driver { namespace output { namespace impl { class SoundBoardPinController : public OutputPinController, public output::SoundBoardPinController { public: SoundBoardPinController(std::map pins_sound, std::shared_ptr output_item_mutex); ~SoundBoardPinController() override = default; void activate(const items::impl::Sound &sound) override; void deactivate(const items::impl::Sound &sound) override; private: void write_sound_address(uint8_t address) const; void fire_sound(bool fire) const; void write_pin(uint8_t pin, bool value) const; private: std::shared_ptr output_item_mutex; const std::map pins_sound; }; } } } #endif //FLIPPR_DRIVER_SOUNDBOARDPINCONTROLLER_H