added update_frequency
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"update_frequency": 1000,
|
||||||
"row": {
|
"row": {
|
||||||
"A": 15,
|
"A": 15,
|
||||||
"B": 16,
|
"B": 16,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"update_frequency": 1000,
|
||||||
"display_board" :
|
"display_board" :
|
||||||
{
|
{
|
||||||
"segment_select" :
|
"segment_select" :
|
||||||
|
|||||||
@@ -47,7 +47,10 @@ std::shared_ptr<OutputDriver> get_OutputDriver(const std::string & solenoid_conf
|
|||||||
auto display_board_pin_controller = std::make_shared<detail::DisplayBoardPinController>();
|
auto display_board_pin_controller = std::make_shared<detail::DisplayBoardPinController>();
|
||||||
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);
|
nlohmann::json display_config;
|
||||||
|
std::ifstream(display_config_path) >> display_config;
|
||||||
|
std::chrono::milliseconds update_frequency(1/display_config.at(config_path::display_update_frequency).get<uint>());
|
||||||
|
auto display_controller = std::make_unique<detail::DisplayController>(displays, display_board_pin_controller, update_frequency);
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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::shared_ptr<DisplayBoardPinController> pin_controller, std::chrono::milliseconds update_frequency
|
||||||
)
|
)
|
||||||
: pin_controller{pin_controller}, is_running(true)
|
: pin_controller{pin_controller}, update_frequency(update_frequency), is_running(true)
|
||||||
{
|
{
|
||||||
for (auto display : displays)
|
for (auto display : displays)
|
||||||
{
|
{
|
||||||
@@ -45,6 +45,7 @@ void DisplayController::cycle_displays() const
|
|||||||
{
|
{
|
||||||
while (is_running)
|
while (is_running)
|
||||||
{
|
{
|
||||||
|
std::this_thread::sleep_for(update_frequency);
|
||||||
for (auto &display : this->displays)
|
for (auto &display : this->displays)
|
||||||
{
|
{
|
||||||
pin_controller->write_display(*display);
|
pin_controller->write_display(*display);
|
||||||
|
|||||||
@@ -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);
|
DisplayController(std::map<std::string, std::shared_ptr<items::Display>> &displays, std::shared_ptr<DisplayBoardPinController> pin_controller, std::chrono::milliseconds update_frequency);
|
||||||
~DisplayController() override;
|
~DisplayController() override;
|
||||||
|
|
||||||
void activate_displays() const override;
|
void activate_displays() const override;
|
||||||
@@ -40,6 +40,7 @@ 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::milliseconds update_frequency;
|
||||||
bool is_running;
|
bool is_running;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace config_path
|
|||||||
|
|
||||||
const char display_board[] = "display_board";
|
const char display_board[] = "display_board";
|
||||||
const char run_pin[] = "run";
|
const char run_pin[] = "run";
|
||||||
|
const char display_update_frequency[] = "update_frequency";
|
||||||
const char display_select[] = "display_select";
|
const char display_select[] = "display_select";
|
||||||
const char display_segement_select[] = "segment_select";
|
const char display_segement_select[] = "segment_select";
|
||||||
const char display_digit_select[] = "digit_select";
|
const char display_digit_select[] = "digit_select";
|
||||||
|
|||||||
Reference in New Issue
Block a user