work with parameter
This commit is contained in:
@@ -46,10 +46,10 @@ std::shared_ptr<OutputDriver> get_OutputDriver(const std::string & solenoid_conf
|
|||||||
auto sound_board_pin_controller = std::make_shared<detail::SoundBoardPinController>(output_pin_mutex);
|
auto sound_board_pin_controller = std::make_shared<detail::SoundBoardPinController>(output_pin_mutex);
|
||||||
auto sounds = get_items<SoundFactory, detail::SoundBoardPinController, items::Sound>(sound_config_path, sound_board_pin_controller);
|
auto sounds = get_items<SoundFactory, detail::SoundBoardPinController, items::Sound>(sound_config_path, sound_board_pin_controller);
|
||||||
|
|
||||||
auto display_board_pin_controller = std::make_shared<detail::DisplayBoardPinController>();
|
auto display_board_pin_controller = std::make_shared<detail::DisplayBoardPinController>(get_update_frequency(display_config_path));
|
||||||
auto displays = get_items<DisplayFactory, detail::DisplayBoardPinController, items::Display>(display_config_path, display_board_pin_controller);
|
auto displays = get_items<DisplayFactory, detail::DisplayBoardPinController, items::Display>(display_config_path, display_board_pin_controller);
|
||||||
|
|
||||||
auto display_controller = std::make_unique<detail::DisplayController>(displays, display_board_pin_controller, get_update_frequency(display_config_path));
|
auto display_controller = std::make_unique<detail::DisplayController>(displays, display_board_pin_controller);
|
||||||
|
|
||||||
return std::make_shared<OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, flippers, displays);
|
return std::make_shared<OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, flippers, displays);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,16 +18,16 @@ namespace output
|
|||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
|
|
||||||
DisplayBoardPinController::DisplayBoardPinController(std::map<std::string, uint8_t> & pins_display) :
|
DisplayBoardPinController::DisplayBoardPinController(std::map<std::string, uint8_t> & pins_display, std::chrono::microseconds update_time) :
|
||||||
pins_display_board{}
|
pins_display_board{}, update_time{update_time}
|
||||||
{
|
{
|
||||||
this->set_pin_map(pins_display);
|
this->set_pin_map(pins_display);
|
||||||
initialize_pins_output();
|
initialize_pins_output();
|
||||||
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayBoardPinController";
|
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayBoardPinController";
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayBoardPinController::DisplayBoardPinController() :
|
DisplayBoardPinController::DisplayBoardPinController(std::chrono::microseconds update_time) :
|
||||||
pins_display_board{}
|
pins_display_board{}, update_time{update_time}
|
||||||
{
|
{
|
||||||
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayBoardPinController without pin map";
|
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayBoardPinController without pin map";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ namespace detail
|
|||||||
class DisplayBoardPinController : public output::DisplayBoardPinController
|
class DisplayBoardPinController : public output::DisplayBoardPinController
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit DisplayBoardPinController(std::map<std::string, uint8_t> & pins_display);
|
DisplayBoardPinController(std::map<std::string, uint8_t> & pins_display, std::chrono::microseconds update_time);
|
||||||
explicit DisplayBoardPinController();
|
DisplayBoardPinController(std::chrono::microseconds update_time);
|
||||||
~DisplayBoardPinController() override = default;
|
~DisplayBoardPinController() override = default;
|
||||||
|
|
||||||
void initDisplay(const items::OutputDisplay &display) const;
|
void initDisplay(const items::OutputDisplay &display) const;
|
||||||
@@ -42,6 +42,7 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<std::string, uint8_t> pins_display_board;
|
std::map<std::string, uint8_t> pins_display_board;
|
||||||
|
std::chrono::microseconds update_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ namespace detail
|
|||||||
{
|
{
|
||||||
|
|
||||||
DisplayController::DisplayController(std::map<std::string, std::shared_ptr<items::Display>> & displays,
|
DisplayController::DisplayController(std::map<std::string, std::shared_ptr<items::Display>> & displays,
|
||||||
std::shared_ptr<DisplayBoardPinController> pin_controller, std::chrono::microseconds update_frequency
|
std::shared_ptr<DisplayBoardPinController> pin_controller
|
||||||
)
|
)
|
||||||
: pin_controller{pin_controller}, update_frequency(update_frequency), is_running(true)
|
: pin_controller{pin_controller}, is_running(true)
|
||||||
{
|
{
|
||||||
for (auto display : displays)
|
for (auto display : displays)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace detail
|
|||||||
class DisplayController : public output::DisplayController
|
class DisplayController : public output::DisplayController
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DisplayController(std::map<std::string, std::shared_ptr<items::Display>> &displays, std::shared_ptr<DisplayBoardPinController> pin_controller, std::chrono::microseconds update_frequency);
|
DisplayController(std::map<std::string, std::shared_ptr<items::Display>> &displays, std::shared_ptr<DisplayBoardPinController> pin_controller);
|
||||||
~DisplayController() override;
|
~DisplayController() override;
|
||||||
|
|
||||||
void activate_displays() const override;
|
void activate_displays() const override;
|
||||||
@@ -40,7 +40,6 @@ private:
|
|||||||
const std::shared_ptr<DisplayBoardPinController> pin_controller;
|
const std::shared_ptr<DisplayBoardPinController> pin_controller;
|
||||||
|
|
||||||
std::thread display_cycle_thread;
|
std::thread display_cycle_thread;
|
||||||
std::chrono::microseconds update_frequency;
|
|
||||||
bool is_running;
|
bool is_running;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user