diff --git a/FlippR-Driver/contrib/Output_Config.json b/FlippR-Driver/contrib/Output_Config.json new file mode 100644 index 0000000..4fdd9d2 --- /dev/null +++ b/FlippR-Driver/contrib/Output_Config.json @@ -0,0 +1,45 @@ +{ + "displays" : + { + + }, + "driver_board" : + { + "i2c_address" : 32, + "pin_base" : 65, + "latch-select" : + { + "A" : 0, + "B" : 1, + "C" : 2 + }, + "data" : 3, + "CL" : 4, + "mux-select" : + { + "A" : 5, + "B" : 6, + "C" : 7, + "mux1" : 8, + "mux2" : 9 + } + + }, + "sound_board" : + { + "i2c_address" : 33, + "pin_base" : 81, + "fire" : 7, + "sound_address" : + { + "A" : 0, + "B" : 1, + "C" : 2, + "D" : 3, + "E" : 4, + "F" : 5, + "G" : 6 + } + } + +} \ No newline at end of file diff --git a/FlippR-Driver/contrib/output_item_config.json b/FlippR-Driver/contrib/output_item_config.json new file mode 100644 index 0000000..5a37776 --- /dev/null +++ b/FlippR-Driver/contrib/output_item_config.json @@ -0,0 +1,14 @@ +{ + "sounds" : + { + + }, + "lamps" : + { + + }, + "solenoids" : + { + + } +} \ No newline at end of file diff --git a/FlippR-Driver/src/output/ActivateEvent.h b/FlippR-Driver/src/output/ActivateEvent.h new file mode 100644 index 0000000..afe881f --- /dev/null +++ b/FlippR-Driver/src/output/ActivateEvent.h @@ -0,0 +1,13 @@ +// +// Created by rhetenor on 19.10.18. +// + +#ifndef FLIPPR_DRIVER_ACTIVATEEVENT_H +#define FLIPPR_DRIVER_ACTIVATEEVENT_H + +class ActivateEvent : public Event +{ + +}; + +#endif //FLIPPR_DRIVER_ACTIVATEEVENT_H diff --git a/FlippR-Driver/src/output/CabinetItem.cpp b/FlippR-Driver/src/output/CabinetItem.cpp new file mode 100644 index 0000000..633dbc6 --- /dev/null +++ b/FlippR-Driver/src/output/CabinetItem.cpp @@ -0,0 +1,5 @@ +// +// Created by rhetenor on 19.10.18. +// + +#include "CabinetItem.h" diff --git a/FlippR-Driver/src/output/CabinetItem.h b/FlippR-Driver/src/output/CabinetItem.h index 8b70cd7..36f718c 100644 --- a/FlippR-Driver/src/output/CabinetItem.h +++ b/FlippR-Driver/src/output/CabinetItem.h @@ -1,42 +1,13 @@ -/* - * CabinetItem.h - * - * Created on: Aug 2, 2018 - * Author: rhetenor - */ +// +// Created by rhetenor on 19.10.18. +// -#ifndef _SRC_OUTPUT_CABINETITEM_H_ -#define _SRC_OUTPUT_CABINETITEM_H_ +#ifndef FLIPPR_DRIVER_CABINETITEM_H +#define FLIPPR_DRIVER_CABINETITEM_H -#include "ICabinetItem.h" - -#include "utilities/IOutputGPIOInterface.h" - -#include -#include - -namespace FlippR_Driver -{ -namespace output +class CabinetItem : IOutputItem { -class CabinetItem : public ICabinetItem -{ -public: - CabinetItem(std::shared_ptr output_gpio_interface, int address, std::string name); - virtual ~CabinetItem(); - - virtual bool isActivated(); - virtual bool activate(); - virtual bool deactivate(); - -protected: - int address; - std::string name; - - bool activated; }; -} /* namespace output */ -} -#endif \ No newline at end of file +#endif //FLIPPR_DRIVER_CABINETITEM_H diff --git a/FlippR-Driver/src/output/DeactivateEvent.h b/FlippR-Driver/src/output/DeactivateEvent.h new file mode 100644 index 0000000..7a0a3d4 --- /dev/null +++ b/FlippR-Driver/src/output/DeactivateEvent.h @@ -0,0 +1,13 @@ +// +// Created by rhetenor on 19.10.18. +// + +#ifndef FLIPPR_DRIVER_DEACTIVATEEVENT_H +#define FLIPPR_DRIVER_DEACTIVATEEVENT_H + +class DeactivateEvent +{ + +}; + +#endif //FLIPPR_DRIVER_DEACTIVATEEVENT_H diff --git a/FlippR-Driver/src/output/DisplayController.cpp b/FlippR-Driver/src/output/DisplayController.cpp index 9a96b7e..80b27c8 100644 --- a/FlippR-Driver/src/output/DisplayController.cpp +++ b/FlippR-Driver/src/output/DisplayController.cpp @@ -7,7 +7,7 @@ #include "DisplayController.h" -#include "utilities/config.h" +#include "utility/config.h" namespace FlippR_Driver { diff --git a/FlippR-Driver/src/output/DisplayController.h b/FlippR-Driver/src/output/DisplayController.h index 8168e7a..e55279b 100644 --- a/FlippR-Driver/src/output/DisplayController.h +++ b/FlippR-Driver/src/output/DisplayController.h @@ -24,7 +24,7 @@ namespace output class DisplayController : public IDisplayController { public: - explicit DisplayController(std::vector> displays, std::shared_ptr output_gpio_interface); + DisplayController(std::vector> displays, std::shared_ptr output_gpio_interface); ~DisplayController(); private: diff --git a/FlippR-Driver/src/output/Event.h b/FlippR-Driver/src/output/Event.h new file mode 100644 index 0000000..0706a50 --- /dev/null +++ b/FlippR-Driver/src/output/Event.h @@ -0,0 +1,22 @@ +// +// Created by rhetenor on 19.10.18. +// + +#ifndef FLIPPR_DRIVER_EVENT_H +#define FLIPPR_DRIVER_EVENT_H + +#include "OutputItem.h" + +#include +namespace FlippR_Driver +{ +namespace output +{ +class Event +{ + std::shared_ptr item; + +}; +} +} +#endif //FLIPPR_DRIVER_EVENT_H diff --git a/FlippR-Driver/src/output/ILamp.h b/FlippR-Driver/src/output/ILamp.h index 08b8ec3..95402be 100644 --- a/FlippR-Driver/src/output/ILamp.h +++ b/FlippR-Driver/src/output/ILamp.h @@ -8,12 +8,14 @@ #ifndef _SRC_OUTPUT_ILAMP_H_ #define _SRC_OUTPUT_ILAMP_H_ +#include "IOutputItem.h" + namespace FlippR_Driver { namespace output { -class ILamp +class ILamp : public IOutputItem { }; diff --git a/FlippR-Driver/src/output/ICabinetItem.h b/FlippR-Driver/src/output/IOutputItem.h similarity index 80% rename from FlippR-Driver/src/output/ICabinetItem.h rename to FlippR-Driver/src/output/IOutputItem.h index 5c83b80..b7b68cb 100644 --- a/FlippR-Driver/src/output/ICabinetItem.h +++ b/FlippR-Driver/src/output/IOutputItem.h @@ -1,5 +1,5 @@ /* - * ICabinetItem.h + * IOutputItem.h * * Created on: Aug 7, 2018 * Author: rhetenor @@ -14,9 +14,9 @@ namespace FlippR_Driver namespace output { -class ICabinetItem +class IOutputItem { - virtual ~ICabinetItem(); + virtual ~IOutputItem(); virtual bool isActivated() = 0; virtual bool activate() = 0; virtual bool deactivate() = 0; diff --git a/FlippR-Driver/src/output/ISolenoid.h b/FlippR-Driver/src/output/ISolenoid.h index cd3621e..15b8738 100644 --- a/FlippR-Driver/src/output/ISolenoid.h +++ b/FlippR-Driver/src/output/ISolenoid.h @@ -8,12 +8,14 @@ #ifndef _SRC_OUTPUT_ISOLENOID_H_ #define _SRC_OUTPUT_ISOLENOID_H_ +#include "IOutputItem.h" + namespace FlippR_Driver { namespace output { -class ISolenoid +class ISolenoid : public IOutputItem { }; diff --git a/FlippR-Driver/src/output/ISound.h b/FlippR-Driver/src/output/ISound.h index 2c63f65..37b602d 100644 --- a/FlippR-Driver/src/output/ISound.h +++ b/FlippR-Driver/src/output/ISound.h @@ -8,12 +8,13 @@ #ifndef _SRC_OUTPUT_ISOUND_H_ #define _SRC_OUTPUT_ISOUND_H_ +#include "IOutputItem.h" namespace FlippR_Driver { namespace output { -class ISound +class ISound : public IOutputItem { public: ISound(); diff --git a/FlippR-Driver/src/output/Lamp.h b/FlippR-Driver/src/output/Lamp.h index 0ca3578..a081a37 100644 --- a/FlippR-Driver/src/output/Lamp.h +++ b/FlippR-Driver/src/output/Lamp.h @@ -8,14 +8,14 @@ #ifndef _SRC_OUTPUT_LAMP_H_ #define _SRC_OUTPUT_LAMP_H_ -#include "CabinetItem.h" +#include "OutputItem.h" namespace FlippR_Driver { namespace output { -class Lamp : public CabinetItem +class Lamp : public OutputItem { public: Lamp(); diff --git a/FlippR-Driver/src/output/OutputDriver.cpp b/FlippR-Driver/src/output/OutputDriver.cpp index d3adb83..1036dc9 100644 --- a/FlippR-Driver/src/output/OutputDriver.cpp +++ b/FlippR-Driver/src/output/OutputDriver.cpp @@ -15,13 +15,13 @@ namespace FlippR_Driver namespace output { -OutputDriver::OutputDriver(std::map> cabinet_items, std::map> displays, std::map> sounds) +OutputDriver::OutputDriver(std::map> cabinet_items, std::map> displays, std::map> sounds) : cabinet_items(cabinet_items), displays(displays), sounds(sounds) {} -std::vector> OutputDriver::get_cabinet_items() +std::vector> OutputDriver::get_cabinet_items() { - std::vector> cabinet_items; + std::vector> cabinet_items; boost::copy(this->cabinet_items | boost::adaptors::map_values, std::back_inserter(cabinet_items)); @@ -46,7 +46,7 @@ std::vector> OutputDriver::get_displays() return displays; } -std::shared_ptr OutputDriver::get_cabinet_item(std::string name) +std::shared_ptr OutputDriver::get_cabinet_item(std::string name) { return this->cabinet_items.find(name)->second; } diff --git a/FlippR-Driver/src/output/OutputDriver.h b/FlippR-Driver/src/output/OutputDriver.h index 9b281a3..1864b8c 100644 --- a/FlippR-Driver/src/output/OutputDriver.h +++ b/FlippR-Driver/src/output/OutputDriver.h @@ -13,7 +13,7 @@ #include #include -#include "ICabinetItem.h" +#include "IOutputItem.h" #include "IDisplay.h" #include "ISound.h" @@ -25,20 +25,20 @@ namespace output class OutputDriver : public IOutputDriver { public: - OutputDriver(std::map> cabinet_items, std::map> displays, std::map> sounds); + OutputDriver(std::map> cabinet_items, std::map> displays, std::map> sounds); virtual ~OutputDriver() = default; - std::vector> get_cabinet_items(); + std::vector> get_cabinet_items(); std::vector> get_sounds(); std::vector> get_displays(); - std::shared_ptr get_cabinet_item(std::string name); + std::shared_ptr get_cabinet_item(std::string name); std::shared_ptr get_sound(std::string name); std::shared_ptr get_display(char number); private: - std::map> cabinet_items; + std::map> cabinet_items; std::map> displays; std::map> sounds; }; diff --git a/FlippR-Driver/src/output/OutputItem.h b/FlippR-Driver/src/output/OutputItem.h new file mode 100644 index 0000000..d853dee --- /dev/null +++ b/FlippR-Driver/src/output/OutputItem.h @@ -0,0 +1,45 @@ +/* + * OutputItem.h + * + * Created on: Aug 2, 2018 + * Author: rhetenor + */ + +#ifndef _SRC_OUTPUT_CABINETITEM_H_ +#define _SRC_OUTPUT_CABINETITEM_H_ + +#include "IOutputItem.h" + +#include "utility/IOutputGPIOInterface.h" + +#include +#include + +namespace FlippR_Driver +{ +namespace output +{ + +using namespace utility; + +class OutputItem : public IOutputItem +{ +public: + OutputItem(std::shared_ptr output_gpio_interface, int address, std::string name); + virtual ~OutputItem(); + + bool isActivated(); + +public: + int address; + int priority; + std::string name; + +protected: + bool activated; + std::shared_ptr output_gpio_interface; +}; + +} /* namespace output */ +} +#endif \ No newline at end of file diff --git a/FlippR-Driver/src/output/Solenoid.h b/FlippR-Driver/src/output/Solenoid.h index 6d8b137..e7cd4a5 100644 --- a/FlippR-Driver/src/output/Solenoid.h +++ b/FlippR-Driver/src/output/Solenoid.h @@ -8,14 +8,14 @@ #ifndef _SRC_OUTPUT_SOLENOID_H_ #define _SRC_OUTPUT_SOLENOID_H_ -#include "CabinetItem.h" +#include "ISolenoid.h.h" namespace FlippR_Driver { namespace output { -class Solenoid : public CabinetItem +class Solenoid : public ISolenoid { public: Solenoid(); diff --git a/FlippR-Driver/src/utility/OutputGPIOInterface.h b/FlippR-Driver/src/utility/OutputGPIOInterface.h index 0c5e86e..9f53c70 100644 --- a/FlippR-Driver/src/utility/OutputGPIOInterface.h +++ b/FlippR-Driver/src/utility/OutputGPIOInterface.h @@ -9,6 +9,9 @@ #define SRC_UTILITIES_OUTPUTGPIOINTERFACE_H_ #include "GPIOInterface.h" + +#include "output/Event.h" + #include namespace FlippR_Driver @@ -19,13 +22,22 @@ class OutputGPIOInterface : GPIOInterface { public: - void activate_cabinet_item(CabinetItem &item); + OutputGPIOInterface(); + + ~OutputGPIOInterface() = default; + + void queue_output_item(shared_ptr item); void write_display(Display &display); private: - void + void cycle_output_items(); + + void activate_sounds(OutputItem &item); + void activate_cabinet_item(OutputItem &item); + + private: - IBlockingQueue event_queue; + IBlockingQueue event_queue; }; } diff --git a/FlippR-Driver/src/utility/config.h b/FlippR-Driver/src/utility/config.h index 9815755..547a4e9 100644 --- a/FlippR-Driver/src/utility/config.h +++ b/FlippR-Driver/src/utility/config.h @@ -12,8 +12,6 @@ #define LOGGER_FILE "driver.log" - - #define DRIVER_CONF_FILE "/var/log/flippr_driver.conf" #define HIGHEST_LOG_VERBOSITY 10 diff --git a/FlippR-Driver/tests/output/TestCabinetItem.cpp b/FlippR-Driver/tests/output/TestCabinetItem.cpp index e5b4da5..c41c579 100644 --- a/FlippR-Driver/tests/output/TestCabinetItem.cpp +++ b/FlippR-Driver/tests/output/TestCabinetItem.cpp @@ -17,7 +17,7 @@ // testing purposes #define private public -#include "output/CabinetItem.h" +#include "output/OutputItem.h" using namespace output; using namespace fakeit;