Files
flippr-code/FlippR-Driver/src/output/detail/DisplayController.cpp
Johannes Wendel 5fe28d46d9 fuuuuuuuu
2019-07-16 22:12:46 +02:00

64 lines
1.3 KiB
C++

/*
* DisplayController.cpp
*
* Created on: Aug 7, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
*/
#include "output/detail/DisplayController.h"
#include "utility/config.h"
namespace flippR_driver
{
namespace output
{
namespace detail
{
DisplayController::DisplayController(std::vector<std::shared_ptr<items::OutputDisplay>> displays,
std::unique_ptr<DisplayBoardPinController> pin_controller
)
: displays(std::move(displays)), pin_controller(std::move(pin_controller)), is_running(true)
{
this->display_cycle_thread = std::thread(&DisplayController::cycle_displays, this);
CLOG(INFO, OUTPUT_LOGGER) << "Created DisplayController and started cycling them.";
activate_displays();
}
DisplayController::~DisplayController()
{
this->is_running = false;
this->display_cycle_thread.join();
}
void DisplayController::cycle_displays() const
{
while (is_running)
{
for (auto &display : this->displays)
{
pin_controller->write_display(*display);
}
}
}
void DisplayController::activate_displays() const
{
pin_controller->activate_displays();
CLOG(INFO, OUTPUT_LOGGER) << "Activated all displays!";
}
void DisplayController::deactivate_displays() const
{
pin_controller->deactivate_displays();
CLOG(INFO, OUTPUT_LOGGER) << "Deactivated all displays!";
}
}
}
}