added display init

This commit is contained in:
Jonas Zeunert
2020-01-10 23:26:35 +01:00
parent 46db4bd17b
commit 0fe36f3775
4 changed files with 18 additions and 1 deletions

View File

@@ -21,6 +21,8 @@ public:
virtual void activate_displays() const = 0; virtual void activate_displays() const = 0;
virtual void deactivate_displays() const = 0; virtual void deactivate_displays() const = 0;
virtual void initDisplay(const items::OutputDisplay &display) const = 0;
virtual void write_display(const items::OutputDisplay &display) const = 0; virtual void write_display(const items::OutputDisplay &display) const = 0;
virtual void set_pin_map(std::map<std::string, uint8_t> & pins_display) = 0; virtual void set_pin_map(std::map<std::string, uint8_t> & pins_display) = 0;

View File

@@ -30,6 +30,13 @@ void DisplayBoardPinController::clear()
std::for_each(this->pins_display_board.begin(), this->pins_display_board.end(), [](auto& pin) { write_pin(pin.second, 0); }); std::for_each(this->pins_display_board.begin(), this->pins_display_board.end(), [](auto& pin) { write_pin(pin.second, 0); });
} }
void DisplayBoardPinController::initDisplay(const items::OutputDisplay &display) const
{
initialize_output_pin(display.get_address());
write_pin(display.get_address(), 0);
}
DisplayBoardPinController::DisplayBoardPinController() : DisplayBoardPinController::DisplayBoardPinController() :
pins_display_board{} pins_display_board{}
{ {
@@ -92,6 +99,7 @@ void DisplayBoardPinController::set_pin_map(std::map<std::string, uint8_t> & pin
{ {
this->pins_display_board.insert(pins_display.begin(), pins_display.end()); this->pins_display_board.insert(pins_display.begin(), pins_display.end());
initialize_pins_output(0, pins_display.begin(), pins_display.end()); initialize_pins_output(0, pins_display.begin(), pins_display.end());
clear();
} }
} }

View File

@@ -8,6 +8,7 @@
#include "output/DisplayBoardPinController.h" #include "output/DisplayBoardPinController.h"
#include <map> #include <map>
#include <memory>
namespace flippR_driver namespace flippR_driver
{ {
@@ -23,6 +24,7 @@ public:
explicit DisplayBoardPinController(); explicit DisplayBoardPinController();
~DisplayBoardPinController() override = default; ~DisplayBoardPinController() override = default;
void initDisplay(const items::OutputDisplay &display) const;
void activate_displays() const; void activate_displays() const;
void deactivate_displays() const; void deactivate_displays() const;

View File

@@ -28,9 +28,14 @@ DisplayController::DisplayController(std::map<std::string, std::shared_ptr<items
this->displays.push_back(std::dynamic_pointer_cast<items::OutputDisplay>(display.second)); this->displays.push_back(std::dynamic_pointer_cast<items::OutputDisplay>(display.second));
} }
this->display_cycle_thread = std::thread(&DisplayController::cycle_displays, this); for(auto &display : this->displays) {
pin_controller->initDisplay(*display);
}
activate_displays(); activate_displays();
this->display_cycle_thread = std::thread(&DisplayController::cycle_displays, this);
CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayController and started cycling them."; CLOG(DEBUG, OUTPUT_LOGGER) << "Created DisplayController and started cycling them.";
} }