diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 487d46d..33ef3ef 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -10,15 +10,39 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -33,7 +57,7 @@
-
+
@@ -60,11 +84,11 @@
-
+
-
-
+
+
@@ -72,8 +96,8 @@
-
-
+
+
@@ -82,7 +106,7 @@
-
+
@@ -156,10 +180,10 @@
-
+
@@ -344,12 +368,12 @@
-
+
-
+
@@ -663,13 +687,6 @@
-
-
-
-
-
-
-
@@ -710,14 +727,14 @@
-
+
-
-
+
+
@@ -728,5 +745,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FlippR-Driver/CMakeLists.txt b/FlippR-Driver/CMakeLists.txt
index 380c4db..119b909 100644
--- a/FlippR-Driver/CMakeLists.txt
+++ b/FlippR-Driver/CMakeLists.txt
@@ -90,7 +90,7 @@ file(GLOB_RECURSE SOURCES src/*.cpp)
if(BUILD_SHARED_LIB)
add_library(${PROJECT_NAME} SHARED ${SOURCES})
else()
- add_library(${PROJECT_NAME} STATIC ${SOURCES} cli/OutputInterpreter.cpp cli/OutputInterpreter.h)
+ add_library(${PROJECT_NAME} STATIC ${SOURCES} cli/OutputInterpreter.cpp cli/OutputInterpreter.h src/output/items/detail/DriverBoardItem.cpp src/output/items/detail/DriverBoardItem.h)
endif(BUILD_SHARED_LIB)
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)
diff --git a/FlippR-Driver/contrib/json_example/output/Display_Config.json b/FlippR-Driver/contrib/json_example/output/Display_Config.json
index 3214a62..4fa52ea 100644
--- a/FlippR-Driver/contrib/json_example/output/Display_Config.json
+++ b/FlippR-Driver/contrib/json_example/output/Display_Config.json
@@ -1,10 +1,11 @@
{
"displays" :
[
+ // todo add name!
{
"digits" : 8,
"id" : 1,
"address" : 1
}
]
-}
\ No newline at end of file
+}
diff --git a/FlippR-Driver/contrib/json_example/output/Output_Pin_Config.json b/FlippR-Driver/contrib/json_example/output/Output_Pin_Config.json
index 697e403..bae61e5 100644
--- a/FlippR-Driver/contrib/json_example/output/Output_Pin_Config.json
+++ b/FlippR-Driver/contrib/json_example/output/Output_Pin_Config.json
@@ -25,7 +25,7 @@
"run" : 0
},
"driver_board" :
- {
+ { // todo new layout!
"i2c_address" : 32,
"pin_base" : 65,
"pin-select" :
diff --git a/FlippR-Driver/contrib/json_example/output/Solenoid_Config.json b/FlippR-Driver/contrib/json_example/output/Solenoid_Config.json
index 25a255f..da4319d 100644
--- a/FlippR-Driver/contrib/json_example/output/Solenoid_Config.json
+++ b/FlippR-Driver/contrib/json_example/output/Solenoid_Config.json
@@ -3,57 +3,57 @@
"solenoids" :
[
{ // todo is this solenoid?
- "address" : 68,
+ "address" : 61,
"name" : "Flipper Relay"
},
{
- "address" : 88,
+ "address" : 79,
"name" : "Out Hole",
"deactivation_time_milliseconds" : 15
},
{
- "address" : 91,
+ "address" : 82,
"name" : "Bottom Right Pop"
},
{ // todo
- "address" : 100,
+ "address" : 91,
"name" : "Top Flipper Relay"
},
{
- "address" : 101,
+ "address" : 92,
"name" : "Right Kicker"
},
{
- "address" : 103,
+ "address" : 94,
"name" : "Top Central Bank"
},
{
- "address" : 104,
+ "address" : 95,
"name" : "Coin Mechanism Coil"
},
{
- "address" : 105,
+ "address" : 96,
"name" : "Top Left Pop"
},
{
- "address" : 106,
+ "address" : 97,
"name" : "Bottom Right Bank"
},
{
- "address" : 107,
+ "address" : 98,
"name" : "Bottom Left Bank"
},
{
- "address" : 108,
+ "address" : 99,
"name" : "Knocker"
},
{
- "address" : 109,
+ "address" : 100,
"name" : "Right Flap"
},
{
- "address" : 110,
+ "address" : 101,
"name" : "Left Flap"
}
]
-}
\ No newline at end of file
+}
diff --git a/FlippR-Driver/include/output/items/Display.h b/FlippR-Driver/include/output/items/Display.h
index f76684c..66e2e12 100644
--- a/FlippR-Driver/include/output/items/Display.h
+++ b/FlippR-Driver/include/output/items/Display.h
@@ -8,7 +8,7 @@
#ifndef FLIPPR_DRIVER_OUTPUT_ITEMS_DISPLAY_H_
#define FLIPPR_DRIVER_OUTPUT_ITEMS_DISPLAY_H_
-#include
+#include // todo wtf?
namespace flippR_driver
{
diff --git a/FlippR-Driver/src/output/items/Item.h b/FlippR-Driver/include/output/items/Item.h
similarity index 86%
rename from FlippR-Driver/src/output/items/Item.h
rename to FlippR-Driver/include/output/items/Item.h
index fdc2f7e..01dd0d1 100644
--- a/FlippR-Driver/src/output/items/Item.h
+++ b/FlippR-Driver/include/output/items/Item.h
@@ -8,7 +8,6 @@
#ifndef _SRC_OUTPUT_ICABINETITEM_H_
#define _SRC_OUTPUT_ICABINETITEM_H_
-#include
#include
namespace flippR_driver
@@ -23,7 +22,6 @@ class Item
public:
virtual ~Item() = default;
- virtual uint8_t get_address() const = 0;
virtual std::string get_name() const = 0;
};
diff --git a/FlippR-Driver/include/output/items/Lamp.h b/FlippR-Driver/include/output/items/Lamp.h
index d6f580b..7c9c9a7 100644
--- a/FlippR-Driver/include/output/items/Lamp.h
+++ b/FlippR-Driver/include/output/items/Lamp.h
@@ -8,6 +8,8 @@
#ifndef _SRC_OUTPUT_ILAMP_H_
#define _SRC_OUTPUT_ILAMP_H_
+#include "Item.h"
+
namespace flippR_driver
{
namespace output
@@ -15,7 +17,7 @@ namespace output
namespace items
{
-class Lamp
+class Lamp : public Item
{
public:
virtual ~Lamp() = default;
diff --git a/FlippR-Driver/include/output/items/Solenoid.h b/FlippR-Driver/include/output/items/Solenoid.h
index 80dfda6..c509ba0 100644
--- a/FlippR-Driver/include/output/items/Solenoid.h
+++ b/FlippR-Driver/include/output/items/Solenoid.h
@@ -9,14 +9,16 @@
#define _SRC_OUTPUT_ISOLENOID_H_
+#include "Item.h"
+
namespace flippR_driver
{
namespace output
{
namespace items
{
-
-class Solenoid
+// todo get name? parent calss output_item?
+class Solenoid : public Item
{
public:
virtual ~Solenoid() = default;
diff --git a/FlippR-Driver/include/output/items/Sound.h b/FlippR-Driver/include/output/items/Sound.h
index 00a6ebb..bcde888 100644
--- a/FlippR-Driver/include/output/items/Sound.h
+++ b/FlippR-Driver/include/output/items/Sound.h
@@ -8,6 +8,8 @@
#ifndef _SRC_OUTPUT_ISOUND_H_
#define _SRC_OUTPUT_ISOUND_H_
+#include "Item.h"
+
namespace flippR_driver
{
namespace output
@@ -15,7 +17,7 @@ namespace output
namespace items
{
-class Sound
+class Sound : public Item
{
public:
virtual ~Sound() = default;
diff --git a/FlippR-Driver/src/output/DriverBoardPinController.h b/FlippR-Driver/src/output/DriverBoardPinController.h
index 8e108a1..a35de2f 100644
--- a/FlippR-Driver/src/output/DriverBoardPinController.h
+++ b/FlippR-Driver/src/output/DriverBoardPinController.h
@@ -5,6 +5,7 @@
#ifndef FLIPPR_DRIVER_DRIVERBOARDPINCONTROLLER_H
#define FLIPPR_DRIVER_DRIVERBOARDPINCONTROLLER_H
+#include "OutputPinController.h"
namespace flippR_driver
{
@@ -16,13 +17,11 @@ namespace items
class DriverBoardItem;
}
-class DriverBoardPinController
+class DriverBoardPinController : public OutputPinController
{
public:
virtual ~DriverBoardPinController() = default;
- virtual void activate(items::DriverBoardItem &driver_board_item) = 0;
- virtual void deactivate(items::DriverBoardItem &driver_board_item) = 0;
};
}
diff --git a/FlippR-Driver/src/output/OutputPinController.h b/FlippR-Driver/src/output/OutputPinController.h
index bb3481c..c58e6bb 100644
--- a/FlippR-Driver/src/output/OutputPinController.h
+++ b/FlippR-Driver/src/output/OutputPinController.h
@@ -17,12 +17,19 @@ namespace flippR_driver
namespace output
{
+namespace items
+{
+ class DriverBoardItem;
+}
class OutputPinController : public PinController
{
public:
virtual ~OutputPinController() = default;
+ virtual void activate(items::DriverBoardItem &driver_board_item) = 0;
+ virtual void deactivate(items::DriverBoardItem &driver_board_item) = 0;
+
protected:
static void initialize_i2c_address(uint8_t i2c_address, uint8_t pin_base);
static void initialize_pins_output(uint8_t pin_base, std::map::iterator begin, std::map::iterator end);
diff --git a/FlippR-Driver/src/output/SoundBoardPinController.h b/FlippR-Driver/src/output/SoundBoardPinController.h
index 3833a2c..fe67655 100644
--- a/FlippR-Driver/src/output/SoundBoardPinController.h
+++ b/FlippR-Driver/src/output/SoundBoardPinController.h
@@ -5,6 +5,7 @@
#ifndef FLIPPR_DRIVER_OUTPUT_SOUNDBOARDPINCONTROLLER_H
#define FLIPPR_DRIVER_OUTPUT_SOUNDBOARDPINCONTROLLER_H
+#include "output/OutputPinController.h"
#include "output/items/detail/Sound.h"
namespace flippR_driver
@@ -12,13 +13,16 @@ namespace flippR_driver
namespace output
{
-namespace items
+namespace items // todo include + fw decl??
{
class Sound;
}
-class SoundBoardPinController
+class SoundBoardPinController : public OutputPinController
{
public:
+
+ virtual void deactivate(items::DriverBoardItem &driver_board_item) = 0;
+
virtual void activate(const items::detail::Sound &sound) = 0;
virtual void deactivate(const items::detail::Sound &sound) = 0;
};
diff --git a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp
index c0e7557..a64247f 100644
--- a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp
+++ b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp
@@ -45,6 +45,7 @@ void DriverBoardPinController::deactivate(items::DriverBoardItem &driver_board_i
write_data(false);
}
+// todo new layout without mux!
void DriverBoardPinController::write_driver_board_address(uint8_t address) const
{
diff --git a/FlippR-Driver/src/output/detail/DriverBoardPinController.h b/FlippR-Driver/src/output/detail/DriverBoardPinController.h
index e23c1d5..6068404 100644
--- a/FlippR-Driver/src/output/detail/DriverBoardPinController.h
+++ b/FlippR-Driver/src/output/detail/DriverBoardPinController.h
@@ -19,7 +19,7 @@ namespace output
namespace detail
{
-class DriverBoardPinController : public OutputPinController, public output::DriverBoardPinController
+class DriverBoardPinController : public output::DriverBoardPinController
{
public:
DriverBoardPinController(std::map pins_driver_board, std::shared_ptr output_item_mutex);
diff --git a/FlippR-Driver/src/output/detail/OutputDriver.h b/FlippR-Driver/src/output/detail/OutputDriver.h
index e6c2a8e..dd95f45 100644
--- a/FlippR-Driver/src/output/detail/OutputDriver.h
+++ b/FlippR-Driver/src/output/detail/OutputDriver.h
@@ -32,10 +32,15 @@ public:
void activate_displays() const override;
void deactivate_displays() const override;
- void deactivate_all_lamps() const override;
void activate_all_lamps() const override;
+ void deactivate_all_lamps() const override;
void rotate_all_lamps() const override;
+ void activate_flipper_relay();
+ void activate_top_flipper_relay();
+ void deactivate_flipper_relay();
+ void deactivate_top_flipper_relay();
+
// todo driver board run for activate/deactivate?
// todo what is flipper_relay ?
std::vector> get_lamps() const override;
diff --git a/FlippR-Driver/src/output/detail/SoundBoardPinController.h b/FlippR-Driver/src/output/detail/SoundBoardPinController.h
index 552b687..e433381 100644
--- a/FlippR-Driver/src/output/detail/SoundBoardPinController.h
+++ b/FlippR-Driver/src/output/detail/SoundBoardPinController.h
@@ -18,14 +18,15 @@ namespace output
namespace detail
{
-class SoundBoardPinController : public OutputPinController, public output::SoundBoardPinController
+class SoundBoardPinController : public output::SoundBoardPinController
{
public:
SoundBoardPinController(std::map pins_sound, std::shared_ptr output_item_mutex);
~SoundBoardPinController() override = default;
- void activate(const items::detail::Sound &sound) override;
- void deactivate(const items::detail::Sound &sound) override;
+
+ void activate(const items::detail::Sound &sound);
+ void deactivate(const items::detail::Sound &sound);
private:
void write_sound_address(uint8_t address) const;
diff --git a/FlippR-Driver/src/output/items/DriverBoardItem.h b/FlippR-Driver/src/output/items/DriverBoardItem.h
index ed46736..5c5a8d5 100644
--- a/FlippR-Driver/src/output/items/DriverBoardItem.h
+++ b/FlippR-Driver/src/output/items/DriverBoardItem.h
@@ -18,16 +18,12 @@ namespace output
namespace items
{
-class DriverBoardItem : public detail::Item
+class DriverBoardItem
{
public:
- DriverBoardItem(std::shared_ptr pin_controller, uint8_t address, std::string name) :
- pin_controller(std::move(pin_controller)), detail::Item(address, std::move(name)) {}
+ virtual ~DriverBoardItem() = default;
- ~DriverBoardItem() override = default;
-
-protected:
- const std::shared_ptr pin_controller;
+ virtual uint8_t get_address() const = 0;
};
}
diff --git a/FlippR-Driver/src/output/items/detail/DriverBoardItem.cpp b/FlippR-Driver/src/output/items/detail/DriverBoardItem.cpp
new file mode 100644
index 0000000..0e42f43
--- /dev/null
+++ b/FlippR-Driver/src/output/items/detail/DriverBoardItem.cpp
@@ -0,0 +1,16 @@
+//
+// Created by rhetenor on 5/6/19.
+//
+
+#include "DriverBoardItem.h"
+
+using namespace flippR_driver::output;
+
+items::detail::DriverBoardItem::DriverBoardItem(std::shared_ptr pin_controller, const uint8_t address) :
+ pin_controller(std::move(pin_controller)), address(address)
+{}
+
+uint8_t items::detail::DriverBoardItem::get_address() const
+{
+ return this->address;
+}
diff --git a/FlippR-Driver/src/output/items/detail/DriverBoardItem.h b/FlippR-Driver/src/output/items/detail/DriverBoardItem.h
new file mode 100644
index 0000000..0e56f9e
--- /dev/null
+++ b/FlippR-Driver/src/output/items/detail/DriverBoardItem.h
@@ -0,0 +1,43 @@
+//
+// Created by rhetenor on 5/6/19.
+//
+
+#ifndef FLIPPR_DRIVER_DRIVERBOARDITEM_H
+#define FLIPPR_DRIVER_DRIVERBOARDITEM_H
+
+#include "output/items/DriverBoardItem.h"
+
+#include "output/OutputPinController.h"
+
+#include
+namespace flippR_driver
+{
+namespace output
+{
+namespace items
+{
+namespace detail
+{
+
+class DriverBoardItem : public output::items::DriverBoardItem
+{
+public:
+ DriverBoardItem(std::shared_ptr pin_controller, const uint8_t address);
+
+ ~DriverBoardItem() override = default;
+
+ uint8_t get_address() const override;
+
+protected:
+ const uint8_t address;
+
+ const std::shared_ptr pin_controller;
+};
+
+
+}
+}
+}
+}
+
+#endif //FLIPPR_DRIVER_DRIVERBOARDITEM_H
diff --git a/FlippR-Driver/src/output/items/detail/Item.h b/FlippR-Driver/src/output/items/detail/Item.h
index 6b83118..f14aeaf 100644
--- a/FlippR-Driver/src/output/items/detail/Item.h
+++ b/FlippR-Driver/src/output/items/detail/Item.h
@@ -25,14 +25,12 @@ namespace detail
class Item : public items::Item
{
public:
- Item(uint8_t address, std::string name);
+ Item(std::string name);
~Item() override = default;
- uint8_t get_address() const override;
std::string get_name() const override;
protected:
- uint8_t address;
const std::string name;
};
diff --git a/FlippR-Driver/src/output/items/detail/Lamp.cpp b/FlippR-Driver/src/output/items/detail/Lamp.cpp
index 228b8ba..cee0d49 100644
--- a/FlippR-Driver/src/output/items/detail/Lamp.cpp
+++ b/FlippR-Driver/src/output/items/detail/Lamp.cpp
@@ -7,6 +7,7 @@
#include "Lamp.h"
+#include